Hash :
59939244
        
        Author :
  
        
        Date :
2006-01-31T20:17:42
        
      
Implement new, simplified module selection.  With GNU make it is now
sufficient to modify a single file, `modules.cfg', to control the
inclusion of modules and base extension files.
This change also fixes the creation of ftmodule.h; it now depends on
`modules.cfg' and thus is rebuilt only if necessary.
Finally, a version of `ftoption.h' in OBJ_DIR is preferred over the
default location.
* modules.cfg: New file.
* builds/freetype.mk: Don't include `modules.mk'.
Include all `rules.mk' files as specified in `modules.cfg'.
(FTOPTION_FLAG, FTOPTION_H): New variables.
(FT_CFLAGS): Add macro definition for FT_CONFIG_MODULES_H.
Add FTOPTION_FLAG.
($(FT_INIT_OBJ)): Don't use FT_MODULE_LIST.
(CONFIG_H): Add FTMODULE_H and FTOPTION_H.
(INCLUDES): Add DEVEL_DIR.
(INCLUDE_FLAGS, FTSYS_SRC, FTSYS_OBJ, FTDEBUG_SRC, FTDEBUG_OBJ,
OBJ_M, OBJ_S): Use `:=', not `='.
(remove_ftmodule_h): New phony target to delete `ftmodule.h'.
(distclean): Add remove_ftmodule_h.
* builds/modules.mk: (MODULE_LIST): Removed.
(make_module_list, clean_module_list): Replace targets
with...
(FTMODULE_H_INIT, FTMODULE_H_CREATE, FTMODULE_H_DONE): New
variables.  Reason for the change is that it is not possible to have
a phony prerequisite which is run only if the target file must be
rebuilt (phony prerequisites act like subroutines and are *always*
executed).  We only want to rebuild `ftmodule.h' if `module.cfg' is
changed.
Update all callers.
($FTMODULE_H)): Rule to create `ftmodule.h', depending on
`modules.cfg'.
* builds/toplevel.mk: Rewrite and simplify module handling.
(MODULES_CFG, FTMODULE_H): New variables.
Include MODULES_CFG.
(MODULES): New variable to include all `module.mk' and `rules.mk'
files.  We no longer use make's `wildcard' function for this.
* Makefile (USE_MODULES): Remove.  Update all users.
(OBJ_DIR): Define it here.
* src/*/module.mk: Change
    make_module_list: foo
    foo: ...
to
    FTMODULE_H_COMMANDS += FOO
    define FOO
    ...
    endef
in all files.  `FTMODULE_H_COMMANDS' is used in `FTMODULE_H_CREATE'.
* src/base/rules.mk (BASE_EXT_SRC): Use BASE_EXTENSIONS.
* builds/unix/detect.mk (setup): Always execute `configure' script.
(have_mk): Rename to...
(have_Makefile): This.
Don't use `strip' function.
* builds/unix/unix.mk: Include `install.mk' only if BUILD_PROJECT is
defined.
(have_mk): Don't use `strip' function.
Test for unix-def.mk in OBJ_DIR, not BUILD_DIR (and invert the test
accordingly).
* builds/unix/install.mk (install, uninstall): Handle `ftmodule.h'.
* builds/os2/os2-dev.mk, builds/unix/unix-dev.mk,
builds/win32/w32-bccd.mk, builds/win32/w32-dev.mk: Don't define
BUILD_DIR but DEVEL_DIR for development header files.
* builds/ansi/ansi-def.mk (TOP_DIR, OBJ_DIR),
builds/beos/beos-def.mk (TOP_DIR, OBJ_DIR), builds/unix/unix-def.in
(TOP_DIR, OBJ_DIR): Removed.  Defined elsewhere.
* builds/dos/dos-def.mk (OBJ_DIR), builds/os2/os2-def.mk (OBJ_DIR),
builds/win32/win32-def.mk (OBJ_DIR): Removed.  Defined elsewhere.
* builds/unix/unixddef.mk: Don't define BUILD_DIR but DEVEL_DIR for
development header files.
Don't define PLATFORM.
* configure: Copy `modules.cfg' to builddir if builddir != srcdir.
Update snippet taken from autoconf's m4sh.m4 to current CVS version.
Be more verbose.
* include/freetype/config/ftmodule.h: Add comments -- this file is
no longer used if FreeType is built with GNU make.
* docs/CHANGES, docs/CUSTOMIZE, docs/INSTALL, docs/INSTALL.ANY,
docs/INSTALL.GNU, docs/INSTALL.UNX: Document new build mechanism.
Other minor updates.
* modules.txt: Removed.  Contents included in `modules.cfg'.
* include/freetype/internal/ftmemory.h (FT_QAlloc_Debug,
FT_Free_Debug) [FT_STRICT_ALIASING]: Fix typos.
* src/base/ftdbgmem.c (FT_Alloc_Debug, FT_Realloc_Debug,
FT_QAlloc_Debug, FT_QRealloc_Debug, FT_Free_Debug)
[FT_STRICT_ALIASING]: Implement.
      
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
Instructions on how to build FreeType with your own build tool
==============================================================
See  the  file `CUSTOMIZE'  to  learn  how  to customize  FreeType  to
specific environments.
I. Standard procedure
---------------------
  * DISABLE PRE-COMPILED  HEADERS!  This is very  important for Visual
    C++, because FreeType uses lines like:
    
      #include FT_FREETYPE_H
    
    which are not correctly supported by this compiler while being ISO
    C compliant!
  * You  need  to  add  the directories  `freetype2/include'  to  your
    include path when compiling the library.
  * FreeType 2 is made of  several components; each of them is located
    in    a   subdirectory    of   `freetype2/src'.     For   example,
    `freetype2/src/truetype/' contains the TrueType font driver.
  * DO NOT COMPILE ALL C FILES!  Rather, compile the following ones.
    -- base components (required)
      src/base/ftsystem.c
      src/base/ftinit.c
      src/base/ftdebug.c
      src/base/ftbase.c
      src/base/ftbbox.c       -- recommended, see <freetype/ftbbox.h>
      src/base/ftglyph.c      -- recommended, see <freetype/ftglyph.h>
      src/base/ftbdf.c        -- optional, see <freetype/ftbdf.h>
      src/base/ftbitmap.c     -- optional, see <freetype/ftbitmap.h>
      src/base/ftgxval.c      -- optional, see <freetype/ftgxval.h>
      src/base/ftmm.c         -- optional, see <freetype/ftmm.h>
      src/base/ftotval.c      -- optional, see <freetype/ftotval.h>
      src/base/ftpfr.c        -- optional, see <freetype/ftpfr.h>
      src/base/ftstroke.c     -- optional, see <freetype/ftstroke.h>
      src/base/ftsynth.c      -- optional, see <freetype/ftsynth.h>
      src/base/fttype1.c      -- optional, see <freetype/t1tables.h>
      src/base/ftwinfnt.c     -- optional, see <freetype/ftwinfnt.h>
      src/base/ftmac.c        -- only on the Macintosh
    -- font drivers (optional; at least one is needed)
      src/bdf/bdf.c           -- BDF font driver
      src/cff/cff.c           -- CFF/OpenType font driver
      src/cid/type1cid.c      -- Type 1 CID-keyed font driver
      src/pcf/pcf.c           -- PCF font driver
      src/pfr/pfr.c           -- PFR/TrueDoc font driver
      src/sfnt/sfnt.c         -- SFNT files support
                                 (TrueType & OpenType)
      src/truetype/truetype.c -- TrueType font driver
      src/type1/type1.c       -- Type 1 font driver
      src/type42/type42.c     -- Type 42 font driver
      src/winfonts/winfnt.c   -- Windows FONT / FNT font driver
    -- rasterizers (optional; at least one is needed for
       vector formats)
      src/raster/raster.c     -- monochrome rasterizer
      src/smooth/smooth.c     -- anti-aliasing rasterizer
    -- auxiliary modules (optional)
      src/autofit/autofit.c   -- auto hinting module
      src/cache/ftcache.c     -- cache sub-system (in beta)
      src/gzip/ftgzip.c       -- support for compressed fonts (.gz)
      src/lzw/ftlzw.c         -- support for compressed fonts (.Z)
      src/gxvalid/gxvalid.c   -- TrueTypeGX/AAT table validation
      src/otvalid/otvalid.c   -- OpenType table validation
      src/psaux/psaux.c       -- PostScript Type 1 parsing
      src/pshinter/pshinter.c -- PS hinting module
      src/psnames/psnames.c   -- PostScript glyph names support
    Notes:
      `cff.c'      needs `sfnt.c', `pshinter.c', and `psnames.c'
      `truetype.c' needs `sfnt.c' and `psnames.c'
      `type1.c'    needs `psaux.c' `pshinter.c', and `psnames.c'
      `type1cid.c' needs `psaux.c', `pshinter.c', and `psnames.c'
      `type42.c'   needs `truetype.c'
  Read the file `CUSTOMIZE' in case  you want to compile only a subset
  of  the  drivers,  renderers,   and  optional  modules;  a  detailed
  description of the various base  extension is given in the top-level
  file `modules.cfg'.
  You are done.  In case of problems, see the archives of the FreeType
  development mailing list.
II. Support for flat-directory compilation
------------------------------------------
  It is  possible to  put all  FreeType 2 source  files into  a single
  directory, with the *exception* of the `include' hierarchy.
  1. Copy all files in current directory
      cp freetype2/src/base/*.[hc] .
      cp freetype2/src/raster1/*.[hc] .
      cp freetype2/src/smooth/*.[hc] .
      etc.
  2. Compile sources
      cc -c -Ifreetype2/include ftsystem.c
      cc -c -Ifreetype2/include ftinit.c
      cc -c -Ifreetype2/include ftdebug.c
      cc -c -Ifreetype2/include ftbase.c
      etc.
    You don't  need to define  the FT_FLAT_COMPILATION macro  (as this
    was required in previous releases of FreeType 2).
----------------------------------------------------------------------
Copyright 2003, 2005, 2006 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.
--- end of INSTALL.ANY ---