blob: 37b4d58c7c8d856ed963270239875889ad025a4c [file] [log] [blame]
Werner Lemberg60a04df2005-06-04 23:04:30 +00001# FreeType 2 top Jamfile.
David Turner5bf0a392001-03-24 17:10:09 +00002#
Werner Lemberg75859972019-02-23 10:07:09 +01003# Copyright (C) 2001-2019 by
Werner Lemberg60a04df2005-06-04 23:04:30 +00004# 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
David Turner5bf0a392001-03-24 17:10:09 +000012
David Turner60b32e12002-11-06 22:32:54 +000013# 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#
Werner Lemberga16c4a72003-04-21 13:30:27 +000017# We can compile FreeType 2 with classic Jam however thanks to
David Turner60b32e12002-11-06 22:32:54 +000018# the following code
19#
20if ! $(JAM_TOOLSET)
21{
22 rule HDRMACRO
23 {
Werner Lemberga16c4a72003-04-21 13:30:27 +000024 # nothing
David Turner60b32e12002-11-06 22:32:54 +000025 }
26}
27
Werner Lemberga16c4a72003-04-21 13:30:27 +000028
Werner Lemberga1844e02001-04-03 21:07:36 +000029# 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.
David Turner5bf0a392001-03-24 17:10:09 +000032#
33if $(FT2_TOP) != $(DOT)
34{
Werner Lemberga1844e02001-04-03 21:07:36 +000035 SubDir FT2_TOP ;
David Turner5bf0a392001-03-24 17:10:09 +000036}
37
Werner Lemberga16c4a72003-04-21 13:30:27 +000038
39# The following macros define the include directory, the source directory,
40# and the final library name (without library extensions). They can be
David Turner60b32e12002-11-06 22:32:54 +000041# replaced by other definitions when the library is compiled as part of
42# a larger project.
43#
David Turner5bf0a392001-03-24 17:10:09 +000044
Werner Lemberga16c4a72003-04-21 13:30:27 +000045# Name of FreeType include directory during compilation.
46# This is relative to FT2_TOP.
David Turner60b32e12002-11-06 22:32:54 +000047#
48FT2_INCLUDE_DIR ?= include ;
David Turner5bf0a392001-03-24 17:10:09 +000049
Werner Lemberga16c4a72003-04-21 13:30:27 +000050# Name of FreeType source directory during compilation.
51# This is relative to FT2_TOP.
David Turner60b32e12002-11-06 22:32:54 +000052#
53FT2_SRC_DIR ?= src ;
54
Werner Lemberga16c4a72003-04-21 13:30:27 +000055# Name of final library, without extension.
David Turner60b32e12002-11-06 22:32:54 +000056#
57FT2_LIB ?= $(LIBPREFIX)freetype ;
58
59
Werner Lemberga16c4a72003-04-21 13:30:27 +000060# 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
David Turner60b32e12002-11-06 22:32:54 +000062# the location of a custom <ft2build.h> which will point to custom
Werner Lemberg8e6c56f2005-10-18 06:09:13 +000063# versions of `ftmodule.h' and `ftoption.h', for example.
David Turner60b32e12002-11-06 22:32:54 +000064#
65FT2_BUILD_INCLUDE ?= ;
66
Werner Lemberga16c4a72003-04-21 13:30:27 +000067# 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.
David Turner60b32e12002-11-06 22:32:54 +000069#
Werner Lemberg8e6c56f2005-10-18 06:09:13 +000070# IMPORTANT: You'll need to change the content of `ftmodule.h' as well
David Turner60b32e12002-11-06 22:32:54 +000071# if you modify this list or provide your own.
72#
David Turnercf2c49c2003-12-24 18:42:04 +000073FT2_COMPONENTS ?= autofit # auto-fitter
David Turner60b32e12002-11-06 22:32:54 +000074 base # base component (public APIs)
75 bdf # BDF font driver
Werner Lemberg31d97df2015-06-21 19:12:12 +020076 bzip2 # support for bzip2-compressed PCF font
David Turner60b32e12002-11-06 22:32:54 +000077 cache # cache sub-system
78 cff # CFF/CEF font driver
Werner Lemberga16c4a72003-04-21 13:30:27 +000079 cid # PostScript CID-keyed font driver
suzuki toshiya34f4b202011-01-06 11:19:50 +090080 gzip # support for gzip-compressed PCF font
81 lzw # support for LZW-compressed PCF font
Werner Lemberg31d97df2015-06-21 19:12:12 +020082 pcf # PCF font driver
David Turner60b32e12002-11-06 22:32:54 +000083 pfr # PFR/TrueDoc font driver
Werner Lemberga16c4a72003-04-21 13:30:27 +000084 psaux # common PostScript routines module
85 pshinter # PostScript hinter module
86 psnames # PostScript names handling
87 raster # monochrome rasterizer
David Turner60b32e12002-11-06 22:32:54 +000088 sfnt # SFNT-based format support routines
Werner Lemberg31d97df2015-06-21 19:12:12 +020089 smooth # anti-aliased rasterizer
David Turner60b32e12002-11-06 22:32:54 +000090 truetype # TrueType font driver
Werner Lemberga16c4a72003-04-21 13:30:27 +000091 type1 # PostScript Type 1 font driver
92 type42 # PostScript Type 42 (embedded TrueType) driver
David Turner60b32e12002-11-06 22:32:54 +000093 winfonts # Windows FON/FNT font driver
94 ;
95
96
Werner Lemberga16c4a72003-04-21 13:30:27 +000097# Don't touch.
David Turner60b32e12002-11-06 22:32:54 +000098#
99FT2_INCLUDE = $(FT2_BUILD_INCLUDE)
100 [ FT2_SubDir $(FT2_INCLUDE_DIR) ] ;
101
102FT2_SRC = [ FT2_SubDir $(FT2_SRC_DIR) ] ;
103
David Turner3c40d732003-08-17 22:31:23 +0000104# Location of API Reference Documentation
105#
106if $(DOC_DIR)
107{
108 DOC_DIR = $(DOCDIR:T) ;
109}
110else
111{
112 DOC_DIR = docs/reference ;
113}
114
115
Werner Lemberga16c4a72003-04-21 13:30:27 +0000116# Only used by FreeType developers.
David Turner60b32e12002-11-06 22:32:54 +0000117#
David Turnerc9349c92001-10-18 11:59:08 +0000118if $(DEBUG_HINTER)
119{
120 CCFLAGS += -DDEBUG_HINTER ;
121}
122
123
Werner Lemberg31d97df2015-06-21 19:12:12 +0200124# We need `include' in the current include path in order to
Werner Lemberga1844e02001-04-03 21:07:36 +0000125# compile any part of FreeType 2.
Werner Lemberg31d97df2015-06-21 19:12:12 +0200126#
David Turnercce3c802003-01-08 09:10:53 +0000127HDRS += $(FT2_INCLUDE) ;
128
David Turner2ce92032006-03-23 20:58:20 +0000129
David Turnerff0e9e62006-01-27 09:15:53 +0000130# We need to #define FT2_BUILD_LIBRARY so that our sources find the
131# internal headers
132#
Werner Lemberg31d97df2015-06-21 19:12:12 +0200133CCFLAGS += -DFT2_BUILD_LIBRARY ;
David Turnercce3c802003-01-08 09:10:53 +0000134
Werner Lemberga1844e02001-04-03 21:07:36 +0000135# Uncomment the following line if you want to build individual source files
Werner Lemberga16c4a72003-04-21 13:30:27 +0000136# for each FreeType 2 module. This is only useful during development, and
137# is better defined as an environment variable anyway!
David Turner5bf0a392001-03-24 17:10:09 +0000138#
Werner Lemberg1429db62001-04-02 23:54:01 +0000139# FT2_MULTI = true ;
David Turner5bf0a392001-03-24 17:10:09 +0000140
Werner Lemberga16c4a72003-04-21 13:30:27 +0000141
Werner Lemberg31d97df2015-06-21 19:12:12 +0200142# The files `ftheader.h', `internal.h', and `ftserv.h' are used to define
143# macros that are later used in #include statements. They need to be parsed
144# in order to record these definitions.
David Turner5bf0a392001-03-24 17:10:09 +0000145#
Werner Lemberg392cf222015-06-25 13:04:57 +0200146HDRMACRO [ FT2_SubDir $(FT2_INCLUDE_DIR) freetype config ftheader.h ] ;
147HDRMACRO [ FT2_SubDir $(FT2_INCLUDE_DIR) freetype internal internal.h ] ;
148HDRMACRO [ FT2_SubDir $(FT2_INCLUDE_DIR) freetype internal ftserv.h ] ;
David Turner5bf0a392001-03-24 17:10:09 +0000149
Werner Lemberga16c4a72003-04-21 13:30:27 +0000150
Werner Lemberg8e6c56f2005-10-18 06:09:13 +0000151# Now include the Jamfile in `freetype2/src', used to drive the compilation
Werner Lemberga1844e02001-04-03 21:07:36 +0000152# of each FreeType 2 component and/or module.
David Turner5bf0a392001-03-24 17:10:09 +0000153#
David Turner60b32e12002-11-06 22:32:54 +0000154SubInclude FT2_TOP $(FT2_SRC_DIR) ;
David Turner5bf0a392001-03-24 17:10:09 +0000155
Werner Lemberg31d97df2015-06-21 19:12:12 +0200156# Handle the generation of the `ftexport.sym' file, which contains the list
Werner Lemberg8e6c56f2005-10-18 06:09:13 +0000157# of exported symbols. This can be used on Unix by libtool.
David Turner6c5299e2005-10-16 08:29:12 +0000158#
159SubInclude FT2_TOP $(FT2_SRC_DIR) tools ;
160
161rule GenExportSymbols
162{
David Turner9fbd2ab2005-10-28 16:14:14 +0000163 local apinames = apinames$(SUFEXE) ;
suzuki toshiya83c877f2016-07-09 13:36:27 +0900164 local aheader ;
165 local headers ;
166
167 for aheader in [ Glob $(2) : *.h ]
168 {
169 switch $(aheader)
170 {
171 case */ftmac.h :
172 if ( $(MAC) || $(OS) = MACOSX ) {
173 headers += $(aheader) ;
174 }
175 case *.h : headers += $(aheader) ;
176 }
177 }
David Turner6c5299e2005-10-16 08:29:12 +0000178
David Turner8def3c82005-12-14 16:38:31 +0000179 LOCATE on $(1) = $(ALL_LOCATE_TARGET) ;
180
David Turner6c5299e2005-10-16 08:29:12 +0000181 APINAMES on $(1) = apinames$(SUFEXE) ;
182
David Turner9fbd2ab2005-10-28 16:14:14 +0000183 Depends $(1) : $(apinames) $(headers) ;
David Turner6c5299e2005-10-16 08:29:12 +0000184 GenExportSymbols1 $(1) : $(headers) ;
David Turner9fbd2ab2005-10-28 16:14:14 +0000185 Clean clean : $(1) ;
David Turner6c5299e2005-10-16 08:29:12 +0000186}
187
188actions GenExportSymbols1 bind APINAMES
189{
190 $(APINAMES) $(2) > $(1)
191}
192
suzuki toshiya83c877f2016-07-09 13:36:27 +0900193GenExportSymbols ftexport.sym : include/freetype ;
David Turner5bf0a392001-03-24 17:10:09 +0000194
Werner Lemberga16c4a72003-04-21 13:30:27 +0000195# Test files (hinter debugging). Only used by FreeType developers.
David Turnerc9349c92001-10-18 11:59:08 +0000196#
197if $(DEBUG_HINTER)
198{
199 SubInclude FT2_TOP tests ;
200}
201
David Turnere6bb9532005-12-23 13:32:06 +0000202rule RefDoc
203{
204 Depends $1 : all ;
205 NotFile $1 ;
206 Always $1 ;
207}
208
David Turner3c40d732003-08-17 22:31:23 +0000209actions RefDoc
210{
Nikhil Ramakrishnanc962db22018-08-25 12:22:23 +0530211 python -m docwriter
Werner Lemberg31d97df2015-06-21 19:12:12 +0200212 --prefix=ft2
Werner Lemberg8cf046c2019-07-01 13:54:54 +0200213 --title=FreeType-2.10.1
Werner Lemberg31d97df2015-06-21 19:12:12 +0200214 --output=$(DOC_DIR)
Werner Lemberg392cf222015-06-25 13:04:57 +0200215 $(FT2_INCLUDE)/freetype/*.h
216 $(FT2_INCLUDE)/freetype/config/*.h
Nikhil Ramakrishnanc962db22018-08-25 12:22:23 +0530217 $(FT2_INCLUDE)/freetype/cache/*.h
David Turner3c40d732003-08-17 22:31:23 +0000218}
219
220RefDoc refdoc ;
221
222
Werner Lemberga1844e02001-04-03 21:07:36 +0000223# end of top Jamfile