mirror of
https://github.com/boostorg/type_index.git
synced 2026-01-19 04:42:14 +00:00
93 lines
4.7 KiB
Plaintext
93 lines
4.7 KiB
Plaintext
# Copyright 2012-2026 Antony Polukhin
|
|
#
|
|
# 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)
|
|
#
|
|
|
|
require-b2 5.0.1 ;
|
|
import-search /boost/config/checks ;
|
|
import-search /boost/config/checks ;
|
|
import config : requires ;
|
|
import testing ;
|
|
import feature ;
|
|
import os ;
|
|
|
|
project
|
|
: source-location .
|
|
: requirements
|
|
<library>/boost/type_index//boost_type_index
|
|
[ requires cxx11_rvalue_references ]
|
|
;
|
|
|
|
# Variable that contains all the stuff required for linking together <rtti>on and <rtti>off
|
|
compat = <define>BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY ;
|
|
|
|
# Making own `nortti` that is link compatible.
|
|
# We explicitly define BOOST_NO_RTTI because it sometimes can not be detected by build system.
|
|
nortti = <toolset>gcc:<cxxflags>"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" <toolset>clang:<cxxflags>"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" <toolset>intel:<cxxflags>"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" <toolset>darwin:<cxxflags>"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" <toolset>msvc:<cxxflags>"/GR-" ;
|
|
|
|
norttidefines = <toolset>gcc:<cxxflags>"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" <toolset>clang:<cxxflags>"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" <toolset>intel:<cxxflags>"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" <toolset>darwin:<cxxflags>"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" <toolset>msvc:<cxxflags>"-DBOOST_NO_RTTI" ;
|
|
|
|
|
|
# Making libraries that CANNOT work between rtti-on/rtti-off modules
|
|
obj test_lib_nortti-obj : test_lib.cpp : <link>shared <rtti>off $(norttidefines) ;
|
|
obj test_lib_anonymous_nortti-obj : test_lib_anonymous.cpp : <link>shared <rtti>off $(norttidefines) ;
|
|
lib test_lib_nortti : test_lib_nortti-obj : <link>shared <rtti>off $(norttidefines) ;
|
|
lib test_lib_anonymous_nortti : test_lib_anonymous_nortti-obj : <link>shared <rtti>off $(norttidefines) ;
|
|
|
|
obj test_lib_rtti-obj : test_lib.cpp : <link>shared ;
|
|
obj test_lib_anonymous_rtti-obj : test_lib_anonymous.cpp : <link>shared ;
|
|
lib test_lib_rtti : test_lib_rtti-obj : <link>shared ;
|
|
lib test_lib_anonymous_rtti : test_lib_anonymous_rtti-obj : <link>shared ;
|
|
|
|
# Making libraries that can work between rtti-on/rtti-off modules
|
|
obj test_lib_nortti_compat-obj : test_lib.cpp : <link>shared $(nortti) $(compat) ;
|
|
obj test_lib_rtti_compat-obj : test_lib.cpp : <link>shared $(nortti) $(compat) ;
|
|
lib test_lib_nortti_compat : test_lib_nortti_compat-obj : <link>shared $(nortti) $(compat) ;
|
|
lib test_lib_rtti_compat : test_lib_rtti_compat-obj : <link>shared $(nortti) $(compat) ;
|
|
|
|
exe testing_crossmodule_anonymous_no_rtti : testing_crossmodule_anonymous.cpp test_lib_anonymous_nortti : <rtti>off $(norttidefines) ;
|
|
|
|
test-suite type_index
|
|
:
|
|
[ run type_index_test.cpp ]
|
|
[ run type_index_runtime_cast_test.cpp /boost/smart_ptr//boost_smart_ptr ]
|
|
[ run type_index_constexpr_test.cpp ]
|
|
[ run type_index_test.cpp : : : <rtti>off $(norttidefines) : type_index_test_no_rtti ]
|
|
[ run ctti_print_name.cpp : : : <test-info>always_show_run_output ]
|
|
[ run testing_crossmodule.cpp test_lib_rtti ]
|
|
[ run testing_crossmodule.cpp test_lib_nortti : : : <rtti>off $(norttidefines) : testing_crossmodule_no_rtti ]
|
|
[ run testing_crossmodule_anonymous.cpp test_lib_anonymous_rtti : : : <test-info>always_show_run_output ]
|
|
[ run compare_ctti_stl.cpp ]
|
|
[ run track_13621.cpp ]
|
|
|
|
[ compile-fail type_index_test_ctti_copy_fail.cpp ]
|
|
[ compile-fail type_index_test_ctti_construct_fail.cpp ]
|
|
[ compile type_index_test_ctti_alignment.cpp ]
|
|
|
|
# Mixing RTTI on and off
|
|
|
|
# MSVC sometimes overrides the /GR-, without `detect_missmatch` this test may link.
|
|
# TODO: Disabled on MSVC. Enable again when there'll be an understanding of how to write this test correctly for MSVC.
|
|
[ link-fail testing_crossmodule.cpp test_lib_rtti : $(nortti) <toolset>msvc:<build>no : link_fail_nortti_rtti ]
|
|
[ link-fail testing_crossmodule.cpp test_lib_nortti : <toolset>msvc:<build>no : link_fail_rtti_nortti ]
|
|
|
|
[ run testing_crossmodule.cpp test_lib_rtti_compat : : : $(nortti) $(compat) : testing_crossmodule_nortti_rtti_compat ]
|
|
[ run testing_crossmodule.cpp test_lib_nortti_compat : : : $(compat) : testing_crossmodule_rtti_nortti_compat ]
|
|
;
|
|
|
|
# Assuring that examples compile and run. Adding sources from `examples` directory to the `type_index` test suite.
|
|
for local p in [ glob ../examples/*.cpp ]
|
|
{
|
|
# RTTI on
|
|
type_index += [ run $(p) /boost/unordered//boost_unordered : : : <include>../examples ] ;
|
|
|
|
# RTTI off
|
|
local target_name = $(p[1]:B)_no_rtti ;
|
|
if $(target_name) != "table_of_names_no_rtti"
|
|
{
|
|
type_index += [ run $(p) /boost/unordered//boost_unordered : : : <include>../examples <rtti>off $(norttidefines) : $(target_name) ] ;
|
|
}
|
|
}
|
|
|