# FreeType 2 src/autofit Jamfile
#
# Copyright 2003, 2004, 2005, 2006, 2007 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 src autofit ;

{
  local  _sources ;

  # define FT2_AUTOFIT2 do enable to experimental latin hinter replacement
  if $(FT2_AUTOFIT2)
  {
    DEFINES += FT_OPTION_AUTOFIT2 ;
  }
  if $(FT2_MULTI)
  {
    _sources = afangles afglobal afhints aflatin afcjk afindic afloader afmodule afdummy afwarp ;

    if $(FT2_AUTOFIT2)
    {
      _sources += aflatin2 ;
    }
  }
  else
  {
    _sources = autofit ;
  }

  Library  $(FT2_LIB) : $(_sources).c ;
}

# end of src/autofit Jamfile
