misc/libfreetype/Jamfile
changeset 5172 88f2e05288ba
equal deleted inserted replaced
5171:f9283dc4860d 5172:88f2e05288ba
       
     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                   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 <freetype/config/ftheader.h> is used to define macros that are
       
   144 # later used in #include statements.  It needs to be parsed in order to
       
   145 # record these 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/freetype include/freetype/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.4.4 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h
       
   199 }
       
   200 
       
   201 RefDoc  refdoc ;
       
   202 
       
   203 
       
   204 # end of top Jamfile