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 ---