# FreeType 2 src/truetype Jamfile
#
# Copyright 2001, 2004 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) truetype ;

{
  local  _sources ;

  if $(FT2_MULTI)
  {
    _sources = ttdriver ttobjs ttpload ttgload ttinterp ttgxvar ;
  }
  else
  {
    _sources = truetype ;
  }

  Library  $(FT2_LIB) : $(_sources).c ;
}

# end of src/truetype Jamfile
