Please follow the instructions  in INSTALL.UNIX to install FreeType on
Mac OS X.

Currently FreeType2 functions based on some deprecated Carbon APIs
return FT_Err_Unimplemented_Feature always, even if FreeType2 is
configured and built on the system that deprecated Carbon APIs are
available. To enable deprecated FreeType2 functions as far as possible,
replace src/base/ftmac.c by builds/mac/ftmac.c.

Starting with Mac OS X 10.5, gcc defaults the deployment target
to 10.5. In previous versions of Mac OS X, this defaulted to 10.1.
If you want your built binaries to run only on 10.5, this change
does not concern you.  If you want them to also run on older versions
of Mac OS X, then you must either set the MACOSX_DEPLOYMENT_TARGET
environment variable or pass -mmacosx-version-min to gcc. You should
specify the oldest version of Mac OS you want the code to run on.
For example, if you use Bourne shell:

	export MACOSX_DEPLOYMENT_TARGET=10.2

or, if you use C shell:

	setenv MACOSX_DEPLOYMENT_TARGET 10.2

Alternatively, you could pass "-mmacosx-version-min=10.2" to gcc.

Here the number 10.2 is the lowest version that the built binaries
can run on. In the cases in above, the built binaries will run on
Mac OS X 10.2 and later, but _not_ earlier. If you want to run on
earlier, you have to set lower version, e.g. 10.0.

For classic Mac OS (Mac OS 7, 8, 9) please refer to builds/mac/README.
