| # |
| # Copyright Andrey Semashev 2007 - 2015. |
| # 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) |
| # |
| # The file was adapted from libs/tr2/test/Jamfile.v2 by John Maddock. |
| |
| import testing ; |
| import path ; |
| import regex ; |
| |
| project |
| : requirements |
| <include>common |
| |
| # Disable warnings about using 'insecure' standard C functions |
| <toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS |
| <toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE |
| <toolset>msvc:<define>_CRT_SECURE_NO_WARNINGS |
| <toolset>msvc:<define>_CRT_SECURE_NO_DEPRECATE |
| <toolset>intel-win:<define>_SCL_SECURE_NO_WARNINGS |
| <toolset>intel-win:<define>_SCL_SECURE_NO_DEPRECATE |
| <toolset>intel-win:<define>_CRT_SECURE_NO_WARNINGS |
| <toolset>intel-win:<define>_CRT_SECURE_NO_DEPRECATE |
| |
| <toolset>msvc:<cxxflags>/bigobj |
| <toolset>msvc:<cxxflags>/wd4503 # decorated name length exceeded, name was truncated |
| <toolset>msvc:<cxxflags>/wd4456 # declaration of 'A' hides previous local declaration |
| <toolset>msvc:<cxxflags>/wd4459 # declaration of 'A' hides global declaration |
| |
| # Disable Intel warnings: |
| # warning #177: function "X" was declared but never referenced |
| # warning #780: using-declaration ignored -- it refers to the current namespace |
| # warning #2196: routine is both "inline" and "noinline" |
| # remark #1782: #pragma once is obsolete. Use #ifndef guard instead. |
| # remark #193: zero used for undefined preprocessing identifier "X" |
| # remark #304: access control not specified ("public" by default) |
| # remark #981: operands are evaluated in unspecified order |
| # remark #1418: external function definition with no prior declaration |
| # Mostly comes from Boost.Phoenix: warning #411: class "X" defines no constructor to initialize the following: reference member "Y"... |
| # warning #734: "X" (declared at line N of "file.hpp"), required for copy that was eliminated, is inaccessible |
| # warning #279: controlling expression is constant |
| <toolset>intel-win:<cxxflags>"/Qwd177,780,2196,1782,193,304,981,1418,411,734,279" |
| <toolset>intel-linux:<cxxflags>"-wd177,780,2196,1782,193,304,981,1418,411,734,279" |
| <toolset>intel-darwin:<cxxflags>"-wd177,780,2196,1782,193,304,981,1418,411,734,279" |
| |
| <toolset>darwin:<cxxflags>-ftemplate-depth-1024 |
| <toolset>gcc:<cxxflags>-ftemplate-depth-1024 |
| |
| <toolset>gcc:<cxxflags>-fno-strict-aliasing # avoids strict aliasing violations in other Boost components |
| |
| <library>/boost/log//boost_log |
| <library>/boost/log//boost_log_setup |
| <library>/boost/date_time//boost_date_time |
| <library>/boost/regex//boost_regex |
| <library>/boost/filesystem//boost_filesystem |
| <library>/boost/system//boost_system |
| <library>/boost/test//boost_unit_test_framework |
| <threading>single:<define>BOOST_LOG_NO_THREADS |
| <threading>multi:<library>/boost/thread//boost_thread |
| : default-build |
| # Testers typically don't specify threading environment and the library can be built and tested for single and multi. I'm more interested in multi though. |
| <threading>multi |
| # <link>static |
| ; |
| |
| # this rule enumerates through all the sources and invokes |
| # the run rule for each source, the result is a list of all |
| # the run rules, which we can pass on to the test_suite rule: |
| rule test_all |
| { |
| local all_rules = ; |
| local file ; |
| local headers_path = [ path.make $(BOOST_ROOT)/libs/log/include/boost/log ] ; |
| for file in [ path.glob-tree $(headers_path) : *.hpp : detail ] |
| { |
| local rel_file = [ path.relative-to $(headers_path) $(file) ] ; |
| # Note: The test name starts with '~' in order to group these tests in the test report table, preferably at the end. |
| # All '/' are replaced with '-' because apparently test scripts have a problem with test names containing slashes. |
| local test_name = [ regex.replace ~hdr/$(rel_file) "/" "-" ] ; |
| #ECHO $(rel_file) ; |
| all_rules += [ compile compile/self_contained_header.cpp : <define>"BOOST_LOG_TEST_HEADER=$(rel_file)" <dependency>$(file) : $(test_name) ] ; |
| } |
| for file in [ glob compile/*.cpp ] |
| { |
| if [ path.basename $(file) ] != "self_contained_header.cpp" |
| { |
| all_rules += [ compile $(file) ] ; |
| } |
| } |
| for file in [ glob compile_fail/*.cpp ] |
| { |
| all_rules += [ compile-fail $(file) ] ; |
| } |
| for file in [ glob run/*.cpp ] |
| { |
| all_rules += [ run $(file) ] ; |
| } |
| |
| #ECHO All rules: $(all_rules) ; |
| return $(all_rules) ; |
| } |
| |
| test-suite log : [ test_all r ] [ build-project ../example ] ; |