The FreeType Unix 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. Successful Build Reports Introduction ============ This file describes the compilation of the FreeType package on a Unix system. Using the `configure' script it should be rather easy to build the library. However, detailed instructions on how to compile the library manually are given later in this document. I. Building the library ======================= 1. Quick Compilation -------------------- The easiest way to compile the library on a Unix system is by using the `configure' script that comes with it. Simply go to the root directory of the FreeType package, then type ./configure to run a script that will probe your system and detect various configuration issues, which are explained later in this document. From there, you can simply type make to invoke compilation of the whole package. You can also use the following commands: make debug - Make a development version of the library. Only useful for FreeType developers and hackers. The default build should come with `-g' (i.e., debug info in the object file) already. make clean - Clean all intermediate object files created during compilation. Keeps all library and executables in place. make distclean - Clean everything, leaving the directories as they were before the compilation. You'll need to run `./configure' again to be able to re-build it. make install - Install the library files libttf.a, libttf.la or libttf.so to your system library path (`/usr/local/lib' by default). The path can be set manually with ./configure. make uninstall - Undo a `make install'. 2. Trouble-shooting and simple customization -------------------------------------------- The make build seems to fail on some Solaris systems. This is mainly due to the fact that the test programs (not the font library itself) try to use certain libraries and/or utilities if they find them on your system. In some cases, the Sun versions are incompatible to the GNU ones. If you encounter such problems, please report them to us so we can try to fix it. The configure script and makefiles that it generates can/make use of the following things: - gettext - In order to compile the internationalized error message string extension, which isn't part of the core library. You can disable this and get a clean compile with ./configure --disable-nls - libtool - Used to generate shared libraries. You can disable it by typing ./configure --disable-shared which will generate and link the FreeType engine as a static library. By default, static compilation is disabled if the configure script detects that your compiler and/or operating system supports shared libraries. You can ask for static libraries with ./configure --enable-static For more configuration options, type `./configure --help' to see a summary of what is possible. The option to change the library installation path for `make install' is, as usual, `--prefix='. Example: ./configure --prefix=${HOME}/local/lib --disable-shared to install a static library (libttf.a) in `~/local/lib' (after a `make install') 3. Manual compilation --------------------- Here are explained the steps that are required to compile the FreeType _library_ (and only this one) by hand. a. Generate a configuration file named `ft_conf.h' This file contains a certain number of configuration macro declarations which must fit your system. The configure script generates it automatically for you, but you can also take the template file `freetype/ft_conf.h.in' and change it by hand, then save it as `freetype/ft_conf.h'. b. Choose your compilation mode 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 *.o object file, and all of them are linked together into an archive (i.e., a *.a library). Single object mode is slightly different: All C files are included in a single source file 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 the `ft_conf.h' file . the location of all `tt*.[hc]' files . the location of system-specific files, i.e., `ttmmap.c' on Unix. For example, if you are compiling from the `freetype/lib' directory, you can type for debug mode something like gcc -c -I.. -I. -Iarch/unix tt*.c arch/unix/ttmmap.c to compile all required files. Then assemble them in a library with `ar' (and run `runlib' if necessary). In single object mode, you only need to compile the file named `freetype.c' which is located in `freetype/lib/arch/unix'. From the same directory as before, one would type: gcc -c -I.. -I. -Iarch/unix arch/unix/freetype.c You can also compile the extensions located in `freetype/lib/extend' separately from the base engine. You'll need to include the same paths as before, though. II. Building other parts of the package ======================================= 1. Test programs ---------------- All test programs are located in `freetype/test'. Most of them use a tiny graphics sub-system which simply display bitmaps and pixmaps in a windows on a variety of platforms. Of course, the Unix version uses X11. The default `make' builds all tests programs automatically. Just go the `freetype/test' and launch the programs when you are there. Documentation on the test programs can be found in the file `freetype/README'. NOTE: 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 their own makefiles and documentations. Also check their licenses, as they are not necessarily distributed under the FreeType one. III. Successful Build Reports ============================= Nelson H. F. Beebe and others report the following successfully builds (with gcc 2.8.1) of freetype-1.1 on DEC Alpha 2100-5/250: OSF/1 3.2 HP 9000/735: HP-UX 10.01 Intel Pentium (200MHz MMX): Linux 2.0.30 SGI Challenge L: IRIX 5.3 Sun SPARC 20/512: Solaris 2.6 Sun SPARC Ultra-2: SunOS 5.5.1 IBM RS/6000: AIX 4.1 Chances are good the the current release will build on the same machines and platforms. There are build problems reported on SunOs 4.x which have the form ld: /usr/tmp/cca07291.o: assert pure-text failed: reference to [offset] at f754 in /usr/tmp/cca07291.o This may be a compiler bug in gcc 2.8.1. You can work around by just building a static library with ./configure --disable-shared --enable-static --disable-nls Maybe `make debug' will help here too (untested). Other successful builds: Sun SPARC Solaris 2.5 with Sun C compiler+linker For updated build reports, please consult our web site: http://www.freetype.org --- end of unix.txt ---