#   File:       FreeType.m68k_far.make
#   Target:     FreeType.m68k_far
#   Created:    Tuesday, October 25, 2005 03:34:05 PM


MAKEFILE        = FreeType.m68k_far.make
\xA5MondoBuild\xA5    = {MAKEFILE}  # Make blank to avoid rebuilds when makefile is modified

ObjDir          = :objs:
Includes        =  \xB6
				  -includes unix \xB6
				  -i :include: \xB6
				  -i :src: \xB6
				  -i :include:freetype:config:

Sym-68K         = -sym off

COptions        = \xB6
			-d FT_MACINTOSH=1 \xB6
			-d HAVE_FSSPEC=1 \xB6
			-d HAVE_FSREF=0 \xB6
			-d HAVE_QUICKDRAW_TOOLBOX=1 \xB6
			-d HAVE_QUICKDRAW_CARBON=0 \xB6
			-d HAVE_ATS=0 \xB6
			-d FT2_BUILD_LIBRARY \xB6
			-d FT_CONFIG_CONFIG_H="<ftconfig.h>" \xB6
			-d FT_CONFIG_MODULES_H="<ftmodule.h>" \xB6
			{Includes} {Sym-68K} -model far


### Source Files ###

SrcFiles        =  \xB6
				  :src:autofit:autofit.c \xB6
				  :builds:mac:ftbase.c \xB6
				  :src:base:ftbbox.c \xB6
				  :src:base:ftbdf.c \xB6
				  :src:base:ftbitmap.c \xB6
				  :src:base:ftdebug.c \xB6
				  :src:base:ftfntfmt.c \xB6
				  :src:base:ftfstype.c \xB6
				  :src:base:ftglyph.c \xB6
				  :src:base:ftgxval.c \xB6
				  :src:base:ftinit.c \xB6
				  :src:base:ftmm.c \xB6
				  :src:base:ftotval.c \xB6
				  :src:base:ftpfr.c \xB6
				  :src:base:ftstroke.c \xB6
				  :src:base:ftsynth.c \xB6
				  :src:base:ftsystem.c \xB6
				  :src:base:fttype1.c \xB6
				  :src:base:ftwinfnt.c \xB6
				  :src:cache:ftcache.c \xB6
				  :src:bdf:bdf.c \xB6
				  :src:cff:cff.c \xB6
				  :src:cid:type1cid.c \xB6
				  :src:gxvalid:gxvalid.c \xB6
				  :src:gzip:ftgzip.c \xB6
				  :src:bzip2:ftbzip2.c \xB6
				  :src:lzw:ftlzw.c \xB6
				  :src:otvalid:otvalid.c \xB6
				  :src:pcf:pcf.c \xB6
				  :src:pfr:pfr.c \xB6
				  :src:psaux:psaux.c \xB6
				  :src:pshinter:pshinter.c \xB6
				  :src:psnames:psmodule.c \xB6
				  :src:raster:raster.c \xB6
				  :src:sfnt:sfnt.c \xB6
				  :src:smooth:smooth.c \xB6
				  :src:truetype:truetype.c \xB6
				  :src:type1:type1.c \xB6
				  :src:type42:type42.c \xB6
				  :src:winfonts:winfnt.c


### Object Files ###

ObjFiles-68K    =  \xB6
				  "{ObjDir}autofit.c.o" \xB6
				  "{ObjDir}ftbase.c.o" \xB6
				  "{ObjDir}ftbbox.c.o" \xB6
				  "{ObjDir}ftbdf.c.o" \xB6
				  "{ObjDir}ftbitmap.c.o" \xB6
				  "{ObjDir}ftdebug.c.o" \xB6
				  "{ObjDir}ftfntfmt.c.o" \xB6
				  "{ObjDir}ftfstype.c.o" \xB6
				  "{ObjDir}ftglyph.c.o" \xB6
				  "{ObjDir}ftgxval.c.o" \xB6
				  "{ObjDir}ftinit.c.o" \xB6
				  "{ObjDir}ftmm.c.o" \xB6
				  "{ObjDir}ftotval.c.o" \xB6
				  "{ObjDir}ftpfr.c.o" \xB6
				  "{ObjDir}ftstroke.c.o" \xB6
				  "{ObjDir}ftsynth.c.o" \xB6
				  "{ObjDir}ftsystem.c.o" \xB6
				  "{ObjDir}fttype1.c.o" \xB6
				  "{ObjDir}ftwinfnt.c.o" \xB6
				  "{ObjDir}ftcache.c.o" \xB6
				  "{ObjDir}bdf.c.o" \xB6
				  "{ObjDir}cff.c.o" \xB6
				  "{ObjDir}type1cid.c.o" \xB6
				  "{ObjDir}gxvalid.c.o" \xB6
				  "{ObjDir}ftgzip.c.o" \xB6
				  "{ObjDir}ftbzip2.c.o" \xB6
				  "{ObjDir}ftlzw.c.o" \xB6
				  "{ObjDir}otvalid.c.o" \xB6
				  "{ObjDir}pcf.c.o" \xB6
				  "{ObjDir}pfr.c.o" \xB6
				  "{ObjDir}psaux.c.o" \xB6
				  "{ObjDir}pshinter.c.o" \xB6
				  "{ObjDir}psmodule.c.o" \xB6
				  "{ObjDir}raster.c.o" \xB6
				  "{ObjDir}sfnt.c.o" \xB6
				  "{ObjDir}smooth.c.o" \xB6
				  "{ObjDir}truetype.c.o" \xB6
				  "{ObjDir}type1.c.o" \xB6
				  "{ObjDir}type42.c.o" \xB6
				  "{ObjDir}winfnt.c.o"


### Libraries ###

LibFiles-68K    =


### Default Rules ###

.c.o  \xC4  .c  {\xA5MondoBuild\xA5}
	{C} {depDir}{default}.c -o {targDir}{default}.c.o {COptions} \xB6
	-ansi strict

### Build Rules ###

:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c
	Duplicate :src:base:ftbase.c :builds:mac:ftbase.c

"{ObjDir}ftbase.c.o" \xC4\xC4 :builds:mac:ftbase.c
	{C} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.o" \xB6
				-i :builds:mac: \xB6
				-i :src:base: \xB6
				{COptions}

FreeType.m68k_far    \xC4\xC4  FreeType.m68k_far.o

FreeType.m68k_far.o  \xC4\xC4  {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5}
	Lib \xB6
		-o {Targ} \xB6
		{ObjFiles-68K} \xB6
		{LibFiles-68K} \xB6
		{Sym-68K} \xB6
		-mf -d



### Required Dependencies ###

"{ObjDir}autofit.c.o" \xC4 :src:autofit:autofit.c
# "{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c
"{ObjDir}ftbbox.c.o" \xC4 :src:base:ftbbox.c
"{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c
"{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c
"{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c
"{ObjDir}ftfntfmt.c.o" \xC4 :src:base:ftfntfmt.c
"{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c
"{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c
"{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c
"{ObjDir}ftinit.c.o" \xC4 :src:base:ftinit.c
"{ObjDir}ftmm.c.o" \xC4 :src:base:ftmm.c
"{ObjDir}ftotval.c.o" \xC4 :src:base:ftotval.c
"{ObjDir}ftpfr.c.o" \xC4 :src:base:ftpfr.c
"{ObjDir}ftstroke.c.o" \xC4 :src:base:ftstroke.c
"{ObjDir}ftsynth.c.o" \xC4 :src:base:ftsynth.c
"{ObjDir}ftsystem.c.o" \xC4 :src:base:ftsystem.c
"{ObjDir}fttype1.c.o" \xC4 :src:base:fttype1.c
"{ObjDir}ftwinfnt.c.o" \xC4 :src:base:ftwinfnt.c
"{ObjDir}ftcache.c.o" \xC4 :src:cache:ftcache.c
"{ObjDir}bdf.c.o" \xC4 :src:bdf:bdf.c
"{ObjDir}cff.c.o" \xC4 :src:cff:cff.c
"{ObjDir}type1cid.c.o" \xC4 :src:cid:type1cid.c
"{ObjDir}gxvalid.c.o" \xC4 :src:gxvalid:gxvalid.c
"{ObjDir}ftgzip.c.o" \xC4 :src:gzip:ftgzip.c
"{ObjDir}ftbzip2.c.o" \xC4 :src:bzip2:ftbzip2.c
"{ObjDir}ftlzw.c.o" \xC4 :src:lzw:ftlzw.c
"{ObjDir}otvalid.c.o" \xC4 :src:otvalid:otvalid.c
"{ObjDir}pcf.c.o" \xC4 :src:pcf:pcf.c
"{ObjDir}pfr.c.o" \xC4 :src:pfr:pfr.c
"{ObjDir}psaux.c.o" \xC4 :src:psaux:psaux.c
"{ObjDir}pshinter.c.o" \xC4 :src:pshinter:pshinter.c
"{ObjDir}psmodule.c.o" \xC4 :src:psnames:psmodule.c
"{ObjDir}raster.c.o" \xC4 :src:raster:raster.c
"{ObjDir}sfnt.c.o" \xC4 :src:sfnt:sfnt.c
"{ObjDir}smooth.c.o" \xC4 :src:smooth:smooth.c
"{ObjDir}truetype.c.o" \xC4 :src:truetype:truetype.c
"{ObjDir}type1.c.o" \xC4 :src:type1:type1.c
"{ObjDir}type42.c.o" \xC4 :src:type42:type42.c
"{ObjDir}winfnt.c.o" \xC4 :src:winfonts:winfnt.c


### Optional Dependencies ###
### Build this target to generate "include file" dependencies. ###

Dependencies  \xC4  $OutOfDate
	MakeDepend \xB6
		-append {MAKEFILE} \xB6
		-ignore "{CIncludes}" \xB6
		-objdir "{ObjDir}" \xB6
		-objext .o \xB6
		{Includes} \xB6
		{SrcFiles}


