# FreeType 2 src/base Jamfile
#
# Copyright 2001-2015 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.

SubDir  FT2_TOP $(FT2_SRC_DIR) base ;


{
  local  _sources ;

  if $(FT2_MULTI)
  {
    _sources = ftadvanc ftcalc   ftdbgmem ftgloadr
               ftobjs   ftoutln  ftrfork  ftsnames
               ftstream fttrigon ftutil
               basepic  ftpic
               ;
  }
  else
  {
    _sources = ftbase ;
  }

  Library  $(FT2_LIB) : $(_sources).c ;
}

# Add the optional/replaceable files.
#
{
  local  _sources = bbox   bdf    bitmap debug  gasp
                    glyph  gxval  init   lcdfil mm
                    otval  pfr    stroke synth  system
                    type1  winfnt xf86   patent
                    ;

  Library  $(FT2_LIB) : ft$(_sources).c ;
}

# Add Macintosh-specific file to the library when necessary.
#
if $(MAC)
{
  Library  $(FT2_LIB) : ftmac.c ;
}
else if $(OS) = MACOSX
{
  if $(FT2_MULTI)
  {
    Library  $(FT2_LIB) : ftmac.c ;
  }
}

# end of src/base Jamfile
