|
1 # FreeType 2 top Jamfile. |
|
2 # |
|
3 # Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by |
|
4 # David Turner, Robert Wilhelm, and Werner Lemberg. |
|
5 # |
|
6 # This file is part of the FreeType project, and may only be used, modified, |
|
7 # and distributed under the terms of the FreeType project license, |
|
8 # LICENSE.TXT. By continuing to use, modify, or distribute this file you |
|
9 # indicate that you have read the license and understand and accept it |
|
10 # fully. |
|
11 |
|
12 |
|
13 # The HDRMACRO is already defined in FTJam and is used to add |
|
14 # the content of certain macros to the list of included header |
|
15 # files. |
|
16 # |
|
17 # We can compile FreeType 2 with classic Jam however thanks to |
|
18 # the following code |
|
19 # |
|
20 if ! $(JAM_TOOLSET) |
|
21 { |
|
22 rule HDRMACRO |
|
23 { |
|
24 # nothing |
|
25 } |
|
26 } |
|
27 |
|
28 |
|
29 # We need to invoke a SubDir rule if the FT2 source directory top is not the |
|
30 # current directory. This allows us to build FreeType 2 as part of a larger |
|
31 # project easily. |
|
32 # |
|
33 if $(FT2_TOP) != $(DOT) |
|
34 { |
|
35 SubDir FT2_TOP ; |
|
36 } |
|
37 |
|
38 |
|
39 # The following macros define the include directory, the source directory, |
|
40 # and the final library name (without library extensions). They can be |
|
41 # replaced by other definitions when the library is compiled as part of |
|
42 # a larger project. |
|
43 # |
|
44 |
|
45 # Name of FreeType include directory during compilation. |
|
46 # This is relative to FT2_TOP. |
|
47 # |
|
48 FT2_INCLUDE_DIR ?= include ; |
|
49 |
|
50 # Name of FreeType source directory during compilation. |
|
51 # This is relative to FT2_TOP. |
|
52 # |
|
53 FT2_SRC_DIR ?= src ; |
|
54 |
|
55 # Name of final library, without extension. |
|
56 # |
|
57 FT2_LIB ?= $(LIBPREFIX)freetype ; |
|
58 |
|
59 |
|
60 # Define FT2_BUILD_INCLUDE to point to your build-specific directory. |
|
61 # This is prepended to FT2_INCLUDE_DIR. It can be used to specify |
|
62 # the location of a custom <ft2build.h> which will point to custom |
|
63 # versions of `ftmodule.h' and `ftoption.h', for example. |
|
64 # |
|
65 FT2_BUILD_INCLUDE ?= ; |
|
66 |
|
67 # The list of modules to compile on any given build of the library. |
|
68 # By default, this will contain _all_ modules defined in FT2_SRC_DIR. |
|
69 # |
|
70 # IMPORTANT: You'll need to change the content of `ftmodule.h' as well |
|
71 # if you modify this list or provide your own. |
|
72 # |
|
73 FT2_COMPONENTS ?= autofit # auto-fitter |
|
74 base # base component (public APIs) |
|
75 bdf # BDF font driver |
|
76 cache # cache sub-system |
|
77 cff # CFF/CEF font driver |
|
78 cid # PostScript CID-keyed font driver |
|
79 pcf # PCF font driver |
|
80 bzip2 # support for bzip2-compressed PCF font |
|
81 gzip # support for gzip-compressed PCF font |
|
82 lzw # support for LZW-compressed PCF font |
|
83 pfr # PFR/TrueDoc font driver |
|
84 psaux # common PostScript routines module |
|
85 pshinter # PostScript hinter module |
|
86 psnames # PostScript names handling |
|
87 raster # monochrome rasterizer |
|
88 smooth # anti-aliased rasterizer |
|
89 sfnt # SFNT-based format support routines |
|
90 truetype # TrueType font driver |
|
91 type1 # PostScript Type 1 font driver |
|
92 type42 # PostScript Type 42 (embedded TrueType) driver |
|
93 winfonts # Windows FON/FNT font driver |
|
94 ; |
|
95 |
|
96 |
|
97 # Don't touch. |
|
98 # |
|
99 FT2_INCLUDE = $(FT2_BUILD_INCLUDE) |
|
100 [ FT2_SubDir $(FT2_INCLUDE_DIR) ] ; |
|
101 |
|
102 FT2_SRC = [ FT2_SubDir $(FT2_SRC_DIR) ] ; |
|
103 |
|
104 # Location of API Reference Documentation |
|
105 # |
|
106 if $(DOC_DIR) |
|
107 { |
|
108 DOC_DIR = $(DOCDIR:T) ; |
|
109 } |
|
110 else |
|
111 { |
|
112 DOC_DIR = docs/reference ; |
|
113 } |
|
114 |
|
115 |
|
116 # Only used by FreeType developers. |
|
117 # |
|
118 if $(DEBUG_HINTER) |
|
119 { |
|
120 CCFLAGS += -DDEBUG_HINTER ; |
|
121 } |
|
122 |
|
123 |
|
124 # We need `freetype2/include' in the current include path in order to |
|
125 # compile any part of FreeType 2. |
|
126 #: updating documentation for upcoming release |
|
127 |
|
128 HDRS += $(FT2_INCLUDE) ; |
|
129 |
|
130 |
|
131 # We need to #define FT2_BUILD_LIBRARY so that our sources find the |
|
132 # internal headers |
|
133 # |
|
134 DEFINES += FT2_BUILD_LIBRARY ; |
|
135 |
|
136 # Uncomment the following line if you want to build individual source files |
|
137 # for each FreeType 2 module. This is only useful during development, and |
|
138 # is better defined as an environment variable anyway! |
|
139 # |
|
140 # FT2_MULTI = true ; |
|
141 |
|
142 |
|
143 # The file <freetype/config/ftheader.h> is used to define macros that are |
|
144 # later used in #include statements. It needs to be parsed in order to |
|
145 # record these definitions. |
|
146 # |
|
147 HDRMACRO [ FT2_SubDir include freetype config ftheader.h ] ; |
|
148 HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ; |
|
149 |
|
150 |
|
151 # Now include the Jamfile in `freetype2/src', used to drive the compilation |
|
152 # of each FreeType 2 component and/or module. |
|
153 # |
|
154 SubInclude FT2_TOP $(FT2_SRC_DIR) ; |
|
155 |
|
156 # Handle the generation of the `ftexport.sym' file which contain the list |
|
157 # of exported symbols. This can be used on Unix by libtool. |
|
158 # |
|
159 SubInclude FT2_TOP $(FT2_SRC_DIR) tools ; |
|
160 |
|
161 rule GenExportSymbols |
|
162 { |
|
163 local apinames = apinames$(SUFEXE) ; |
|
164 local headers = [ Glob $(2) : *.h ] ; |
|
165 |
|
166 LOCATE on $(1) = $(ALL_LOCATE_TARGET) ; |
|
167 |
|
168 APINAMES on $(1) = apinames$(SUFEXE) ; |
|
169 |
|
170 Depends $(1) : $(apinames) $(headers) ; |
|
171 GenExportSymbols1 $(1) : $(headers) ; |
|
172 Clean clean : $(1) ; |
|
173 } |
|
174 |
|
175 actions GenExportSymbols1 bind APINAMES |
|
176 { |
|
177 $(APINAMES) $(2) > $(1) |
|
178 } |
|
179 |
|
180 GenExportSymbols ftexport.sym : include/freetype include/freetype/cache ; |
|
181 |
|
182 # Test files (hinter debugging). Only used by FreeType developers. |
|
183 # |
|
184 if $(DEBUG_HINTER) |
|
185 { |
|
186 SubInclude FT2_TOP tests ; |
|
187 } |
|
188 |
|
189 rule RefDoc |
|
190 { |
|
191 Depends $1 : all ; |
|
192 NotFile $1 ; |
|
193 Always $1 ; |
|
194 } |
|
195 |
|
196 actions RefDoc |
|
197 { |
|
198 python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.4.4 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h |
|
199 } |
|
200 |
|
201 RefDoc refdoc ; |
|
202 |
|
203 |
|
204 # end of top Jamfile |