msvc: use our version of the .vcproj
[crawl:crawl-freetype.git] / Jamfile
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                   gzip       # support for gzip-compressed files
80                   lzw        # support for LZW-compressed files
81                   pcf        # PCF font driver
82                   pfr        # PFR/TrueDoc font driver
83                   psaux      # common PostScript routines module
84                   pshinter   # PostScript hinter module
85                   psnames    # PostScript names handling
86                   raster     # monochrome rasterizer
87                   smooth     # anti-aliased rasterizer
88                   sfnt       # SFNT-based format support routines
89                   truetype   # TrueType font driver
90                   type1      # PostScript Type 1 font driver
91                   type42     # PostScript Type 42 (embedded TrueType) driver
92                   winfonts   # Windows FON/FNT font driver
93                   ;
94
95
96 # Don't touch.
97 #
98 FT2_INCLUDE  = $(FT2_BUILD_INCLUDE)
99                [ FT2_SubDir $(FT2_INCLUDE_DIR) ] ;
100
101 FT2_SRC      = [ FT2_SubDir $(FT2_SRC_DIR) ] ;
102
103 # Location of API Reference Documentation
104 #
105 if $(DOC_DIR)
106 {
107   DOC_DIR = $(DOCDIR:T) ;
108 }
109 else
110 {
111   DOC_DIR = docs/reference ;
112 }
113
114
115 # Only used by FreeType developers.
116 #
117 if $(DEBUG_HINTER)
118 {
119   CCFLAGS += -DDEBUG_HINTER ;
120 }
121
122
123 # We need `freetype2/include' in the current include path in order to
124 # compile any part of FreeType 2.
125 #: updating documentation for upcoming release
126
127 HDRS += $(FT2_INCLUDE) ;
128
129
130 # We need to #define FT2_BUILD_LIBRARY so that our sources find the
131 # internal headers
132 #
133 DEFINES += FT2_BUILD_LIBRARY ;
134
135 # Uncomment the following line if you want to build individual source files
136 # for each FreeType 2 module.  This is only useful during development, and
137 # is better defined as an environment variable anyway!
138 #
139 # FT2_MULTI = true ;
140
141
142 # The file <freetype/config/ftheader.h> is used to define macros that are
143 # later used in #include statements.  It needs to be parsed in order to
144 # record these definitions.
145 #
146 HDRMACRO  [ FT2_SubDir  include freetype config ftheader.h ] ;
147 HDRMACRO  [ FT2_SubDir  include freetype internal internal.h ] ;
148
149
150 # Now include the Jamfile in `freetype2/src', used to drive the compilation
151 # of each FreeType 2 component and/or module.
152 #
153 SubInclude  FT2_TOP $(FT2_SRC_DIR) ;
154
155 # Handle the generation of the `ftexport.sym' file which contain the list
156 # of exported symbols.  This can be used on Unix by libtool.
157 #
158 SubInclude FT2_TOP $(FT2_SRC_DIR) tools ;
159
160 rule GenExportSymbols
161 {
162   local  apinames = apinames$(SUFEXE) ;
163   local  headers  = [ Glob $(2) : *.h ] ;
164
165   LOCATE on $(1) = $(ALL_LOCATE_TARGET) ;
166
167   APINAMES on $(1) = apinames$(SUFEXE) ;
168
169   Depends            $(1) : $(apinames) $(headers) ;
170   GenExportSymbols1  $(1) : $(headers) ;
171   Clean              clean : $(1) ;
172 }
173
174 actions GenExportSymbols1 bind APINAMES
175 {
176   $(APINAMES) $(2) > $(1)
177 }
178
179 GenExportSymbols  ftexport.sym : include/freetype include/freetype/cache ;
180
181 # Test files (hinter debugging).  Only used by FreeType developers.
182 #
183 if $(DEBUG_HINTER)
184 {
185   SubInclude FT2_TOP tests ;
186 }
187
188 rule RefDoc
189 {
190   Depends  $1 : all ;
191   NotFile  $1 ;
192   Always   $1 ;
193 }
194
195 actions RefDoc
196 {
197   python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.4.3 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h
198 }
199
200 RefDoc  refdoc ;
201
202
203 # end of top Jamfile