modules/freetype2/Jamfile

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:f2363ade3a47
1 # FreeType 2 top Jamfile.
2 #
3 # Copyright 2001-2014 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 <config/ftheader.h> is used to define macros that are later used
144 # in #include statements. It needs to be parsed in order to record these
145 # 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 include/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.5.3 --output=$(DOC_DIR) $(FT2_INCLUDE)/*.h $(FT2_INCLUDE)/config/*.h
199 }
200
201 RefDoc refdoc ;
202
203
204 # end of top Jamfile

mercurial