#   File:       Makefile.MPW
#   Targets:    All, Dynamic, Static (and Clean, Clean-All)
#   Created:    Tuesday, July 02, 2002
#
#   MPW Makefile for building expat under the "classic" (i.e. pre-X) Mac OS
#   Copyright © 2002 Daryle Walker
#   Portions Copyright © 2002 Thomas Wegner
#   See the COPYING file for distribution information
#
#   Description: 
#   This Makefile lets you build static, dynamic (i.e. shared) and stub 
#   versions of the expat library as well as the elements.c and outline.c 
#   examples (built as tools for MPW). This is for PPC only; it should be 
#   no problem to build a 68K version of the expat library, though.
#
# 	Usage: 
#			       Buildprogram All
#			 or    Buildprogram Dynamic
#			 or    Buildprogram Static
#
#   Note: You first have to rename this file to "Makefile", or the Buildprogram 
#         commando will not recognize it.
#

MAKEFILE        = Makefile
¥MondoBuild¥    = {MAKEFILE}  # Make blank to avoid rebuilds when makefile is modified

ObjDir          = :
SrcDir          = :
HdrDir          = :

ToolDir         = ::examples:

Includes        = -i {HdrDir}

Sym-PPC         = -sym off

Defines         = -d MACOS_CLASSIC

PPCCOptions     = {Includes} {Sym-PPC} -w 35 {Defines}

FragName        = libexpat


### Source Files ###

SrcFiles        =  ¶
				  "{SrcDir}xmlparse.c" ¶
				  "{SrcDir}xmlrole.c" ¶
				  "{SrcDir}xmltok.c"

ToolSrcFiles    =  ¶
				  "{ToolDir}elements.c" ¶
				  "{ToolDir}outline.c"


### Object Files ###

ObjFiles-PPC    =  ¶
				  "{ObjDir}xmlparse.c.o" ¶
				  "{ObjDir}xmlrole.c.o" ¶
				  "{ObjDir}xmltok.c.o"

ElementToolObjFile   =  "{ObjDir}elements.c.o"

OutlineToolObjFile   =  "{ObjDir}outline.c.o"


### Libraries ###

StLibFiles-PPC    =  ¶
				  "{PPCLibraries}StdCRuntime.o" ¶
				  "{PPCLibraries}PPCCRuntime.o" ¶
				  "{PPCLibraries}PPCToolLibs.o"

ShLibFiles-PPC    =  ¶
				  "{SharedLibraries}InterfaceLib" ¶
				  "{SharedLibraries}StdCLib" ¶
				  "{SharedLibraries}MathLib"

LibFiles-PPC    =  ¶
				  {StLibFiles-PPC} ¶
				  {ShLibFiles-PPC}


### Special Files ###

ExportFile      = "{ObjDir}{FragName}.exp"

StLibFile       = "{ObjDir}{FragName}.MrC.o"

ShLibFile       = "{ObjDir}{FragName}"

StubFile        = "{ObjDir}{FragName}.stub"

ElementsTool    = "{ToolDir}elements"

OutlineTool     = "{ToolDir}outline"


### Default Rules ###

.c.o  Ä  .c  {¥MondoBuild¥}
	{PPCC} {depDir}{default}.c -o {targDir}{default}.c.o {PPCCOptions}


### Build Rules ###

All  Ä  Dynamic {ElementsTool} {OutlineTool}

Static  Ä  {StLibFile}

Dynamic  Ä  Static {ShLibFile} {StubFile}

{StLibFile}  ÄÄ  {ObjFiles-PPC} {StLibFiles-PPC} {¥MondoBuild¥}
	PPCLink ¶
		-o {Targ} ¶
		{ObjFiles-PPC} ¶
		{StLibFiles-PPC} ¶
		{Sym-PPC} ¶
		-mf -d ¶
		-t 'XCOF' ¶
		-c 'MPS ' ¶
		-xm l

{ShLibFile}  ÄÄ  {StLibFile} {ShLibFiles-PPC} {ExportFile} {¥MondoBuild¥}
	PPCLink ¶
		-o {Targ} ¶
		{StLibFile} ¶
		{ShLibFiles-PPC} ¶
		{Sym-PPC} ¶
		-@export {ExportFile} ¶
		-fragname {FragName} ¶
		-mf -d ¶
		-t 'shlb' ¶
		-c '????' ¶
		-xm s

{StubFile}  ÄÄ  {ShLibFile} {¥MondoBuild¥}
	shlb2stub -o {Targ} {ShLibFile}

{ElementsTool}  ÄÄ  {ElementToolObjFile} {StubFile} {LibFiles-PPC} {¥MondoBuild¥}
	PPCLink ¶
		-o {Targ} ¶
		{ElementToolObjFile} ¶
		{StLibFile} ¶
		{LibFiles-PPC} ¶
		{Sym-PPC} ¶
		-mf -d ¶
		-t 'MPST' ¶
		-c 'MPS '

{OutlineTool}  ÄÄ  {OutlineToolObjFile} {StubFile} {LibFiles-PPC} {¥MondoBuild¥}
	PPCLink ¶
		-o {Targ} ¶
		{OutlineToolObjFile} ¶
		{StLibFile} ¶
		{LibFiles-PPC} ¶
		{Sym-PPC} ¶
		-mf -d ¶
		-t 'MPST' ¶
		-c 'MPS '


### Special Rules ###

{ExportFile}  ÄÄ  "{HdrDir}expat.h" {¥MondoBuild¥}
	StreamEdit -d ¶
		-e "/¥('XMLPARSEAPI('Å') ')Ç0,1È'XML_'([A-Za-z0-9_]+)¨1'('/ Print 'XML_' ¨1" ¶
		"{HdrDir}expat.h" > {Targ}


### Required Dependencies ###

"{ObjDir}xmlparse.c.o"  Ä  "{SrcDir}xmlparse.c"
"{ObjDir}xmlrole.c.o"  Ä  "{SrcDir}xmlrole.c"
"{ObjDir}xmltok.c.o"  Ä  "{SrcDir}xmltok.c"

"{ObjDir}elements.c.o"  Ä "{ToolDir}elements.c"
"{ObjDir}outline.c.o"  Ä "{ToolDir}outline.c"


### Optional Dependencies ###
### Build this target to clean out generated intermediate files. ###

Clean  Ä
	Delete {ObjFiles-PPC} {ExportFile} {ElementToolObjFile} {OutlineToolObjFile}

### Build this target to clean out all generated files. ###

Clean-All  Ä  Clean
	Delete {StLibFile} {ShLibFile} {StubFile} {ElementsTool} {OutlineTool}

### Build this target to generate "include file" dependencies. ###

Dependencies  Ä  $OutOfDate
	MakeDepend ¶
		-append {MAKEFILE} ¶
		-ignore "{CIncludes}" ¶
		-objdir "{ObjDir}" ¶
		-objext .o ¶
		{Defines} ¶
		{Includes} ¶
		{SrcFiles}