#  Boost.Bind Library test Jamfile
#
#  Copyright (c) 2003-2006, 2017 Peter Dimov
#
#  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)

# bring in rules for testing
import testing ;

local gcc-flags = -Wundef ;

project
  : default-build

    <warnings>pedantic

  : requirements

    <toolset>msvc:<warnings-as-errors>on
    <toolset>gcc:<warnings-as-errors>on
    <toolset>clang:<warnings-as-errors>on

    <toolset>gcc:<cxxflags>$(gcc-flags)
    <toolset>clang:<cxxflags>$(gcc-flags)

    <library>/boost/bind//boost_bind
    <library>/boost/core//boost_core
    <library>/boost/function//boost_function
    <library>/boost/smart_ptr//boost_smart_ptr
    ;

# quick test (for CI)
run quick.cpp ;

# full test suite
run bind_test.cpp ;
run bind_dm_test.cpp ;
run bind_eq_test.cpp ;
run bind_const_test.cpp ;
run bind_cv_test.cpp ;
run bind_stateful_test.cpp ;
run bind_dm2_test.cpp ;
run bind_not_test.cpp ;
run bind_rel_test.cpp ;
run bind_function_test.cpp ;
run bind_lookup_problem_test.cpp ;
run bind_rv_sp_test.cpp
  : : : <toolset>msvc-12.0:<build>no ;
compile bind_unary_addr.cpp ;
run bind_dm3_test.cpp ;
run bind_visit_test.cpp ;
run bind_placeholder_test.cpp ;
run bind_rvalue_test.cpp ;
run bind_and_or_test.cpp ;
run bind_void_test.cpp ;
run bind_void_dm_test.cpp ;
run bind_void_mf_test.cpp ;
run mem_fn_test.cpp
  : : : <toolset>msvc-12.0:<build>no ;
run mem_fn_void_test.cpp
  : : : <toolset>msvc-12.0:<build>no ;
run mem_fn_derived_test.cpp
  : : : <toolset>msvc-12.0:<build>no ;
run mem_fn_eq_test.cpp ;
run mem_fn_dm_test.cpp
  : : : <toolset>msvc-12.0:<build>no ;
run mem_fn_rv_test.cpp
  : : : <toolset>msvc-12.0:<build>no ;
run ref_fn_test.cpp ;
run bind_fnobj2_test.cpp ;
run bind_fn2_test.cpp ;
run bind_mf2_test.cpp ;
run bind_eq2_test.cpp ;
run mem_fn_ref_test.cpp ;
run bind_ref_test.cpp ;
run bind_eq3_test.cpp
  : : : <toolset>msvc-12.0:<build>no ;
run protect_test.cpp ;
run mem_fn_unary_addr_test.cpp ;
run bind_function2_test.cpp ;
run bind_fwd_test.cpp ;
run bind_fwd2_test.cpp ;
run bind_no_placeholders_test.cpp ;
run placeholder_const_ref_test.cpp ;
run bind_function_ap_test.cpp ;
run bind_type_test.cpp ;
run bind_unique_ptr_test.cpp ;
run bind_nested_rv_test.cpp
  : : : <toolset>gcc-4.7:<build>no <toolset>msvc-12.0:<build>no ;
compile arg_copy_test.cpp ;
compile-fail arg_copy_fail.cpp
  : <warnings>off ;
run placeholder_std_bind_test.cpp ;
run bind_fastcall_test.cpp ;
run bind_stdcall_test.cpp ;
run bind_cdecl_mf_test.cpp ;
run bind_fastcall_mf_test.cpp ;
run bind_stdcall_mf_test.cpp ;
run mem_fn_cdecl_test.cpp
  : : : <toolset>msvc-12.0:<build>no ;
run mem_fn_fastcall_test.cpp
  : : : <toolset>msvc-12.0:<build>no ;
run mem_fn_stdcall_test.cpp
  : : : <toolset>msvc-12.0:<build>no ;
run bind_noexcept_test.cpp ;
run bind_noexcept_mf_test.cpp ;
run global_placeholders.cpp ;
run mem_fn_noexcept_test.cpp
  : : : <toolset>msvc-12.0:<build>no ;
run bind_cpp20_test.cpp ;
run protect_test2.cpp ;
run protect_cpp20_test.cpp ;
run bind_noexcept_mf2_test.cpp ;
run std_placeholders_test.cpp ;
run apply_test.cpp ;
run apply_test2.cpp ;
run apply_rv_test.cpp ;
run apply_rv_test2.cpp ;
run bind_over_test.cpp ;
run bind_over_mf_test.cpp ;
run bind_over_mf2_test.cpp ;
run mem_fn_cdecl_ref_test.cpp ;
run mem_fn_stdcall_ref_test.cpp ;
run mem_fn_fastcall_ref_test.cpp ;
