# FreeType 2 src/raster 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) raster ;

{
  local  _sources ;

  if $(FT2_MULTI)
  {
    _sources = ftraster
               ftrend1
               rastpic
               ;
  }
  else
  {
    _sources = raster ;
  }

  Library  $(FT2_LIB) : $(_sources).c ;
}

# end of src/raster Jamfile
