| # FreeType 2 top Jamfile. |
| # |
| # Copyright 2001-2017 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.8 |
| --output=$(DOC_DIR) |
| $(FT2_INCLUDE)/freetype/*.h |
| $(FT2_INCLUDE)/freetype/config/*.h |
| } |
| |
| RefDoc refdoc ; |
| |
| |
| # end of top Jamfile |