# Copyright 2008 Lubomir Bourdev and Hailin Jin
#  
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)

# Jamfile for building the GIL test app

project libs/gil/test ;

import testing ;

test-suite gil :
    [ run  image.cpp 
           sample_image.cpp
           error_if.cpp
        :
        :
        : <include>$(BOOST_ROOT) <define>BOOST_GIL_NO_IO <define>_SCL_SECURE_NO_WARNINGS ]
    [ run  channel.cpp 
           error_if.cpp
        :
        :
        : <include>$(BOOST_ROOT) <define>BOOST_GIL_NO_IO <define>_SCL_SECURE_NO_WARNINGS ]
    [ run  pixel.cpp 
           error_if.cpp
        :
        :
        : <include>$(BOOST_ROOT) <define>BOOST_GIL_NO_IO <define>_SCL_SECURE_NO_WARNINGS ]
    [ run  pixel_iterator.cpp 
           error_if.cpp
        :
        :
        : <include>$(BOOST_ROOT) <define>BOOST_GIL_NO_IO <define>_SCL_SECURE_NO_WARNINGS ]
    [ run  image_io.cpp 
           error_if.cpp
        :
        :
        : <include>$(BOOST_ROOT) <define>BOOST_GIL_NO_IO <define>_SCL_SECURE_NO_WARNINGS ]
;
