1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
|
The FreeType MS-DOS 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. Special issues of 16-bit MS-DOS
Introduction
============
This file describes the compilation of the FreeType package on a
MS-DOS system. It comes with Makefiles for the following compilers:
- gcc/emx and gcc/djgpp with GNU make (32 bit)
- wcc386 with wmake (Watcom -- tried with 10.6)
- gcc/emx with dmake (32 bit)
- cl with nmake (16-bit Microsoft C -- tried with 7 and VC++ 1.5x)
- bcc/tcc with make (16-bit Borland C++ and Turbo C)
NOTE:
You are 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 MS-DOS is to go to the
directory `freetype/lib'. Then type, depending on your compiler:
gcc/emx,
gcc/djgpp: make -f arch/msdos/Makefile.gcc
gcc/dmake: dmake -r -f arch/msdos/Makefile.dm
wcc386: wmake -f=arch\msdos\Makefile.wat
cl: nmake /f arch\msdos\Makefile.MS (for version 7)
cl: nmake /f arch\msdos\Makefile.VC (for Visual C++ 1.x)
tcc: make -farch/msdos/Makefile.TC
bcc: make -farch/msdos/Makefile.BC
This should build the `libttf.a' or `libttf.lib' library files.
You can also use the following targets:
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.
debug - Makes a development version of the library. Only
useful for FreeType developers and hackers.
Note that you can also select to use the `debugging' flags for
your compiler (instead of the `optimizing' ones), by defining
the `DEBUG' symbol, like in
nmake /f arch\msdos\Makefile.MS DEBUG=1
make -farch/msdos/Makefile.BC /DDEBUG
etc.
Doing so will automatically select the debug target instead of
the normal mode.
For 16-bit compilers, you can also try defining the `BIGFONTS'
symbol, to enable the use of the `huge pointers' needed to
handle some big fonts. More on this at the end of this file.
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 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/msdos tt*.c
to compile all required files into object ones. Then assemble
them in a library with `ar', `lib', or `tlib'.
In single object mode, you only need to compile the file named
`freetype.c' which is located in `freetype/lib/arch/msdos'. From
the same directory as before, one would type
gcc -c -I. -Iarch/msdos arch/msdos/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/msdos -Iextend extend/*.c
3. Notes
--------
`char' is always `signed char' in the sources!
`ttconfig.h' relies heavily on a file called `ft_conf.h' that
contains information related to the target platform, located in
the `freetype/lib/arch/msdos/' directory. Depending on your
compiler, you may need to slightly edit it.
We use gcc as our reference compiler for warnings. This means
that we use the `-ansi -pedantic -Wall' flags and try to get rid
of warnings in this situation. If you're compiling with another
compiler, you may encounter warnings, not errors. Note that the
Borland compilers seem to produce lots of irrelevant warnings
(like `potential loss of precision').
II. Building other parts of the package
=======================================
1. Test programs
----------------
These are located in `freetype/test'. Most of them use a tiny
graphics sub-system which is simply used to display bitmaps and
pixmaps on a variety of platforms. The MS-DOS version is a very
basic one that only works in full-screen using standard VGA mode.
To compile them, you must be in the `freetype/test' directory and
invoke the makefile in arch/msdos. For example:
nmake /f arch\msdos\Makefile.VC
NOTE 1:
This will automatically invoke the library makefile for you!
NOTE 2:
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 contribs
-----------------
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 are not necessarily distributed under
the FreeType one.
Most of these contributions are targeted to Unix. You are invited
to port them to MS-DOS, and then contribute your improvements.
III. Special issues of 16-bit MS-DOS
====================================
As usual, 16-bit MS-DOS have some limitations.
First, and mainly, only the large model is usable. The small and
medium models are not usable, because the library uses more than
64kByte of data; and the compact model is unusable as well, since
the code of the library itself is slightly less than 64kByte, thus
leaving very small place for the real work. The net effect of
that limitation is that performances are not very impressive, to
say the least (32-bit DOS extenders perform usually three-time
faster).
Even with the large model, the rasterizer is still limited in
size, particularly with pixmaps (that is, with anti-aliasing gray
levels).
Another annoying limitation exists with some East Asian fonts that
have 16,383 glyphs or more, since an internal table then
overflows. We tried to overcome this using the so-called `huge
pointers', but then good support for these in the run-time library
is needed. To enable this support, try defining the `BIGFONTS'
symbol with the makefile, like using
nmake /f arch\msdos\makefile.MS BIGFONTS=1
make -farch/msdos/makefile.BC /DBIGFONTS
etc.
The Makefiles for both Microsoft and Borland compilers depend on a
special file, `arch/msdos/depend.dos', which is built by a Unix
script named `makedep'. You may consider editing it if you
heavily modify the source files; or better yet, re-run the script,
using any clone of the Bourne shell and gcc, the GNU compiler,
with
arch/msdos/makedep
in both the `lib' and the `test' directories.
Good luck!
--- end of msdos.txt ---
|