# FreeType 2 top Jamfile. # # Copyright 2001-2018 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, # and distributed under the terms of the FreeType project license, # LICENSE.TXT. By continuing to use, modify, or distribute this file you # indicate that you have read the license and understand and accept it # fully. # The HDRMACRO is already defined in FTJam and is used to add # the content of certain macros to the list of included header # files. # # We can compile FreeType 2 with classic Jam however thanks to # the following code # if ! $(JAM_TOOLSET) { rule HDRMACRO { # nothing } } # We need to invoke a SubDir rule if the FT2 source directory top is not the # current directory. This allows us to build FreeType 2 as part of a larger # project easily. # if $(FT2_TOP) != $(DOT) { SubDir FT2_TOP ; } # The following macros define the include directory, the source directory, # and the final library name (without library extensions). They can be # replaced by other definitions when the library is compiled as part of # a larger project. # # Name of FreeType include directory during compilation. # This is relative to FT2_TOP. # FT2_INCLUDE_DIR ?= include ; # Name of FreeType source directory during compilation. # This is relative to FT2_TOP. # FT2_SRC_DIR ?= src ; # Name of final library, without extension. # FT2_LIB ?= $(LIBPREFIX)freetype ; # Define FT2_BUILD_INCLUDE to point to your build-specific directory. # This is prepended to FT2_INCLUDE_DIR. It can be used to specify # the location of a custom <ft2build.h> which will point to custom # versions of `ftmodule.h' and `ftoption.h', for example. # FT2_BUILD_INCLUDE ?= ; # The list of modules to compile on any given build of the library. # By default, this will contain _all_ modules defined in FT2_SRC_DIR. # # IMPORTANT: You'll need to change the content of `ftmodule.h' as well # if you modify this list or provide your own. # FT2_COMPONENTS ?= autofit # auto-fitter base # base component (public APIs) bdf # BDF font driver bzip2 # support for bzip2-compressed PCF font cache # cache sub-system cff # CFF/CEF font driver cid # PostScript CID-keyed font driver gzip # support for gzip-compressed PCF font lzw # support for LZW-compressed PCF font pcf # PCF font driver pfr # PFR/TrueDoc font driver psaux # common PostScript routines module pshinter # PostScript hinter module psnames # PostScript names handling raster # monochrome rasterizer sfnt # SFNT-based format support routines smooth # anti-aliased rasterizer truetype # TrueType font driver type1 # PostScript Type 1 font driver type42 # PostScript Type 42 (embedded TrueType) driver winfonts # Windows FON/FNT font driver ; # Don't touch. # FT2_INCLUDE = $(FT2_BUILD_INCLUDE) [ FT2_SubDir $(FT2_INCLUDE_DIR) ] ; FT2_SRC = [ FT2_SubDir $(FT2_SRC_DIR) ] ; # Location of API Reference Documentation # if $(DOC_DIR) { DOC_DIR = $(DOCDIR:T) ; } else { DOC_DIR = docs/reference ; } # Only used by FreeType developers. # if $(DEBUG_HINTER) { CCFLAGS += -DDEBUG_HINTER ; } # We need `include' in the current include path in order to # compile any part of FreeType 2. # HDRS += $(FT2_INCLUDE) ; # We need to #define FT2_BUILD_LIBRARY so that our sources find the # internal headers # CCFLAGS += -DFT2_BUILD_LIBRARY ; # Uncomment the following line if you want to build individual source files # for each FreeType 2 module. This is only useful during development, and # is better defined as an environment variable anyway! # # FT2_MULTI = true ; # The files `ftheader.h', `internal.h', and `ftserv.h' are used to define # macros that are later used in #include statements. They need to be parsed # in order to record these definitions. # HDRMACRO [ FT2_SubDir $(FT2_INCLUDE_DIR) freetype config ftheader.h ] ; HDRMACRO [ FT2_SubDir $(FT2_INCLUDE_DIR) freetype internal internal.h ] ; HDRMACRO [ FT2_SubDir $(FT2_INCLUDE_DIR) freetype internal ftserv.h ] ; # Now include the Jamfile in `freetype2/src', used to drive the compilation # of each FreeType 2 component and/or module. # SubInclude FT2_TOP $(FT2_SRC_DIR) ; # Handle the generation of the `ftexport.sym' file, which contains the list # of exported symbols. This can be used on Unix by libtool. # SubInclude FT2_TOP $(FT2_SRC_DIR) tools ; rule GenExportSymbols { local apinames = apinames$(SUFEXE) ; local aheader ; local headers ; for aheader in [ Glob $(2) : *.h ] { switch $(aheader) { case */ftmac.h : if ( $(MAC) || $(OS) = MACOSX ) { headers += $(aheader) ; } case *.h : headers += $(aheader) ; } } LOCATE on $(1) = $(ALL_LOCATE_TARGET) ; APINAMES on $(1) = apinames$(SUFEXE) ; Depends $(1) : $(apinames) $(headers) ; GenExportSymbols1 $(1) : $(headers) ; Clean clean : $(1) ; } actions GenExportSymbols1 bind APINAMES { $(APINAMES) $(2) > $(1) } GenExportSymbols ftexport.sym : include/freetype ; # Test files (hinter debugging). Only used by FreeType developers. # if $(DEBUG_HINTER) { SubInclude FT2_TOP tests ; } rule RefDoc { Depends $1 : all ; NotFile $1 ; Always $1 ; } actions RefDoc { python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.9 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h } RefDoc refdoc ; # end of top Jamfile