201 lines
5.9 KiB
Plaintext
201 lines
5.9 KiB
Plaintext
The FreeType OS/2 Compilation HowTo
|
|
|
|
Contents
|
|
|
|
Introduction
|
|
I. Building the library
|
|
1. Quick Compilation
|
|
2. Manual compilation
|
|
3. Notes
|
|
II. Building other parts of the package
|
|
1. Test programs
|
|
2. Other contribs
|
|
III. Troubleshooting
|
|
|
|
|
|
|
|
Introduction
|
|
============
|
|
|
|
This file describes the compilation of the FreeType package on an
|
|
OS/2 system. It comes with makefiles for the following compilers:
|
|
|
|
- gcc/emx with GNU make
|
|
|
|
- icc with nmake (Visual Age C++)
|
|
|
|
- wcc386 with wmake (Watcom -- tried with 10.6)
|
|
|
|
- gcc/emx with dmake
|
|
|
|
|
|
NOTE:
|
|
|
|
You're advised to jump to section II.1 if you want to run the
|
|
FreeType test/demo programs as quick as possible.
|
|
|
|
|
|
|
|
I. Building the library
|
|
=======================
|
|
|
|
|
|
1. Quick Compilation
|
|
--------------------
|
|
|
|
The easiest way to compile the library on OS/2 is to go to the
|
|
directory `freetype/lib'. Then type, depending on your compiler,
|
|
|
|
gcc/emx: make -f arch/os2/makefile.emx
|
|
gcc/dmake: dmake -f arch/os2/makefile.dm
|
|
|
|
icc: nmake -f arch\os2\makefile.icc
|
|
wcc386: wmake -f=arch\os2\makefile.wat
|
|
|
|
This should build the `libttf.a' or `libttf.lib' library files.
|
|
|
|
You can also use the following targets:
|
|
|
|
debug - Makes a development version of the library. Only
|
|
useful for FreeType developers and hackers.
|
|
|
|
clean - Cleans all intermediate object files created during
|
|
compilation. Keeps all library and executables in
|
|
place.
|
|
|
|
distclean - Cleans everything, leaving the directories as they
|
|
were before the compilation.
|
|
|
|
|
|
2. Manual compilation
|
|
---------------------
|
|
|
|
Here are explained the steps that are required to compile the
|
|
FreeType _library_ (and only this one) by hand.
|
|
|
|
Unlike previous versions, FreeType 1.1 and above can be compiled
|
|
in two modes, called `debug mode' and `single object mode'.
|
|
|
|
Debug mode is simply the normal way of compiling C programs, i.e.,
|
|
each `*.c' file is compiled into an individual `*.obj' object
|
|
file, and all of them are linked together into an archive (i.e.,
|
|
`*.lib' library).
|
|
|
|
Single object mode is slightly different: all C files are included
|
|
in a single source during compilation, resulting in a single final
|
|
object file for the core library. This has the advantage of
|
|
letting optimizing compilers do more global work, as well as
|
|
getting rid of all external symbols which are used solely for the
|
|
purpose of components interfacing.
|
|
|
|
In both modes, you need to include the following paths to your
|
|
makefile/command line:
|
|
|
|
the location of all `tt*.[hc]' files
|
|
the location of system-specific files
|
|
|
|
For example, if you are compiling from the `freetype/lib'
|
|
directory, you can type for debug mode something like
|
|
|
|
gcc -c -I. -Iarch/os2 tt*.c arch/os2/os2file.c
|
|
|
|
to compile all required files into object ones. Then assemble
|
|
them in a library with `ar' or `implib'.
|
|
|
|
In single object mode, you only need to compile the file named
|
|
`freetype.c' which is located in `freetype/lib/arch/os2'. From
|
|
the same directory as before, one would type:
|
|
|
|
gcc -c -I. -Iarch/os2 arch/os2/freetype.c
|
|
|
|
You can also compile the extensions located in
|
|
`freetype/lib/extend' separately from the base engine. You will
|
|
need to include the same paths as before, though; be sure to add
|
|
the path to the `extend' directory, like in
|
|
|
|
gcc -c -I. -Iarch/os2 -Iextend extend/*.c
|
|
|
|
|
|
|
|
II. Building other parts of the package
|
|
=======================================
|
|
|
|
|
|
1. Test programs
|
|
----------------
|
|
|
|
The test programs are located in `freetype/test'. Most of them
|
|
use a tiny graphics sub-system which is simply used to display
|
|
bitmaps and pixmaps in a windows on a variety of platforms. The
|
|
OS/2 version comes in two flavors: PM and full-screen.
|
|
|
|
To compile them, you must be in the `freetype/test' directory, and
|
|
invoke the makefile in arch/os2. For example:
|
|
|
|
nmake -f arch\os2\makefile.os2
|
|
|
|
|
|
NOTE 1:
|
|
|
|
This will automatically invoke the library makefile for you!
|
|
|
|
NOTE 2:
|
|
|
|
The test programs come in two flavors, distinguished by the `fs'
|
|
suffix appended to their name. For example:
|
|
|
|
ftview (PM version)
|
|
ftviewfs (Full Screen version)
|
|
|
|
The full-screen version is there mainly for debugging purposes.
|
|
|
|
NOTE 3:
|
|
|
|
For now, the graphical test programs only run on the following
|
|
platforms: Unix, OS/2, Dos, Amiga, and Windows.
|
|
|
|
The library, being pure ANSI-C, can be used on any system to
|
|
generate bitmaps and pixmaps.
|
|
|
|
|
|
2. Other contributions
|
|
----------------------
|
|
|
|
You may find some other contributions to the FreeType project in
|
|
the `freetype/contrib' directory. Each of these programs should
|
|
have its own Makefiles and documentations. Also check their
|
|
licenses, as the programs not necessarily distributed under the
|
|
FreeType one. You are invited to port the non-OS/2 applications
|
|
to OS/2.
|
|
|
|
For OS/2, you will find the source code for the FreeType/2 font
|
|
driver in `freetype/contrib/os2'. Read its documentation
|
|
carefully before trying to compile it, as it certainly won't be
|
|
easy.
|
|
|
|
|
|
|
|
III. Troubleshooting
|
|
====================
|
|
|
|
There is only one important point on OS/2:
|
|
|
|
`The test program crashes with anti-aliasing on!'
|
|
|
|
It has been discovered that some versions of Visual Age C++
|
|
contain a bug which miscompiles the anti-aliasing source in
|
|
ttraster.c, hence resulting in a page fault when trying to render
|
|
a pixmap in the engine. Apparently, not all levels/versions of
|
|
the compiler contain the bug. You'll notice the problem
|
|
immediately (page fault :-).
|
|
|
|
Please apply the most recent fixpack to your Visual Age C++ copy
|
|
in order to get rid of it (newer fixpacks seem to solve the
|
|
issue).
|
|
|
|
|
|
Good luck!
|
|
|
|
|
|
--- end of os2.txt ---
|