# # Copyright Renato Tegon Forti, Antony Polukhin 2011 - 2019. # 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) # # For more information, see http://www.boost.org # bring in rules for testing import testing ; import path ; local RDYNAMIC = freebsd:"-rdynamic" solaris:"-Bdynamic" aix:"-rdynamic" qnxnto,qcc:"-Bdynamic" qnxnto,gcc:"-rdynamic" android:"-rdynamic" linux:"-rdynamic" darwin,gcc:"-dynamic" darwin,clang:"-rdynamic" iphone:"-rdynamic" ; # Static library that is not linked with any of the boost libs lib static_plugin : ../example/tutorial4/static_plugin.cpp : static BOOST_SYSTEM_NO_DEPRECATED $(RDYNAMIC) ; lib static_refcounting_plugin : ../example/tutorial8/refcounting_plugin.cpp : static BOOST_SYSTEM_NO_DEPRECATED release $(RDYNAMIC) ; project : source-location . : requirements # linux linux:"-ldl" gcc:"-Wall -Wextra -pedantic -Wno-long-long" # others hidden /boost/filesystem//boost_filesystem /boost/system//boost_system multi BOOST_SYSTEM_NO_DEPRECATED ; { # our test lib for shared library tests lib test_library : test_library.cpp : shared ; lib empty_library : empty_library.cpp : shared ; lib getting_started_library : ../example/getting_started_library.cpp : shared ; lib my_plugin_sum : ../example/tutorial1/my_plugin_sum.cpp : shared ; lib my_plugin_aggregator : ../example/tutorial2/my_plugin_aggregator.cpp : shared ; lib on_unload_lib : ../example/tutorial6/on_unload_lib.cpp : shared ; lib library1 : ../example/tutorial7/library1.cpp : shared ; lib library2 : ../example/tutorial7/library2.cpp : shared ; lib refcounting_plugin : ../example/tutorial8/refcounting_plugin.cpp : shared ; lib cpp_plugin : cpp_test_library.cpp : shared ; lib cpp_mangle_plugin : cpp_ctti_type_name_parser_lib.cpp : shared _GLIBCXX_USE_CXX11_ABI=1 ; test-suite boostdll : [ run link1.cpp link2.cpp : : : : validate_link ] [ run shared_library_load_test.cpp : : library1 test_library : shared ] [ run shared_library_search_symbol_test.cpp : : test_library : $(RDYNAMIC) shared ] [ run shared_library_get_symbol_test.cpp : : test_library : $(RDYNAMIC) shared ] [ run shared_library_get_symbol_test.cpp : : test_library : $(RDYNAMIC) windows:BOOST_USE_WINDOWS_H shared : get_symbol_windows_h_forced ] [ run symbol_runtime_info_test.cpp : : test_library : $(RDYNAMIC) shared ] [ run shared_library_errors.cpp : : test_library : always_show_run_output shared ] [ run structures_tests.cpp ] [ run library_info_test.cpp ../example/tutorial4/static_plugin.cpp : : test_library : always_show_run_output shared ] [ run empty_library_info_test.cpp : : empty_library : always_show_run_output shared ] [ run ../example/getting_started.cpp : : getting_started_library : shared ] [ run ../example/tutorial1/tutorial1.cpp : : my_plugin_sum : shared ] [ run ../example/tutorial2/tutorial2.cpp : : my_plugin_aggregator : shared ] [ run ../example/tutorial3/tutorial3.cpp : : my_plugin_aggregator my_plugin_sum : shared ] [ run ../example/tutorial4/load_self.cpp ../example/tutorial4/static_plugin.cpp : : : release $(RDYNAMIC) ] [ run ../example/tutorial5/load_all.cpp ../example/tutorial4/static_plugin.cpp : : getting_started_library my_plugin_aggregator my_plugin_sum : $(RDYNAMIC) shared ] [ run ../example/tutorial6/tutorial6.cpp : : on_unload_lib : shared ] [ run ../example/tutorial7/tutorial7.cpp : : library1 library2 : shared ] [ run ../example/tutorial8/tutorial8.cpp : : refcounting_plugin : shared ] [ run ../example/tutorial8/tutorial8_static.cpp : : : static release $(RDYNAMIC) always_show_run_output static_refcounting_plugin # Known problem: unsupported __dllexport__ with weak symbols + GNU linker features (no non-weak unresolved symbols in executable => no need to link libraries) windows,gcc:no ] [ run ../example/tutorial9/tutorial9.cpp ] # test for shared libraries [ compile-fail section_name_too_big.cpp ] [ run shared_library_concurrent_load_test.cpp /boost/thread//boost_thread : : library1 library2 my_plugin_aggregator refcounting_plugin : shared ] [ run cpp_mangle_test.cpp : : cpp_plugin ] [ run cpp_load_test.cpp : : cpp_plugin ] [ run cpp_import_test.cpp : : cpp_plugin ] [ run template_method_linux_test.cpp : : cpp_plugin ] # TODO: uncomment (fails on some MSVCs and Clang-5) #[ run ctti_type_name_parser_test.cpp : : cpp_mangle_plugin ] ; }