diff --git a/build.jam b/build.jam index 0f39f9d..4236ebe 100644 --- a/build.jam +++ b/build.jam @@ -1,38 +1,32 @@ -# Copyright René Ferdinand Rivera Morell 2014-2019 +# Copyright René Ferdinand Rivera Morell 2014-2023 # 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) #| This B2 project provides support for using the Predef library externally as -a standalone project or by embedding in your B2 project tree. To use -externally you would need a `use-project` declaration and to use the -project as a dependency where needed: +a standalone project. To use externally you would need a `use-project` +declaration and to use the project as a dependency where needed: ---- -use-project /hash-predef : /path/to/hash-predef/root ; +use-project /boost/predef : /path/to/boost_predef/root ; -exe my_thing : main.cpp : /hash-predef ; ----- - -To use in your project tree you would only need to place the Predef tree -in a subdirectory and reference the project location as a dependency where -needed. - ----- -exe my_thin : main.cpp : libs/hash-predef ; +exe my_thing : main.cpp : /boost/predef ; ---- |# import project ; +import modules ; -path-constant BOOST_PREDEF_ROOT : . ; -path-constant BOOST_PREDEF_INCLUDE : include ; -constant PREDEF_DIST : boost ; +path-constant PREDEF_ROOT : . ; + +modules.poke : BOOST_BUILD_PATH + : $(PREDEF_ROOT)/tools/check [ modules.peek : BOOST_BUILD_PATH ] ; project /boost/predef - : usage-requirements - $(BOOST_PREDEF_INCLUDE) ; + : common-requirements + include + ; if [ project.is-jamroot-module $(__name__) ] { @@ -40,4 +34,11 @@ if [ project.is-jamroot-module $(__name__) ] $(attributes).set "build-dir" : .bin ; } -alias libs ; +explicit + [ alias boost_predef ] + [ alias all : boost_predef test//all tools/check ] + ; + +call-if + : boost-library predef + ; diff --git a/doc/build.jam b/doc/build.jam index 3a87acc..cb3212f 100644 --- a/doc/build.jam +++ b/doc/build.jam @@ -14,7 +14,7 @@ project predefdoc ; doc-dir = [ MATCH "--doc-dir=(.*)" : [ modules.peek : ARGV ] ] ; doc-dir ?= . ; -local headers = [ glob-tree-ex $(BOOST_PREDEF_INCLUDE) : *.h ] ; +local headers = [ glob-tree-ex ../include/boost : *.h ] ; html index : predef.adoc : : diff --git a/test/build.jam b/test/build.jam index beebe6e..d67d932 100644 --- a/test/build.jam +++ b/test/build.jam @@ -1,28 +1,18 @@ -# Copyright Rene Rivera 2011-2019 +# Copyright Rene Rivera 2011-2023 # 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) -import ../tools/check/predef : require check : predef-require predef-check ; +import predef : require check : predef-require predef-check ; import common ; import path ; import regex ; -# This deals with the unfortunate aspect of a Boost monolithic release -# not having the modular include dirs. This is a kludge that just removes -# the direct dependency to the header if it can't find it. -local PREDEF_H = $(BOOST_PREDEF_INCLUDE)/boost/predef.h ; -if ! [ path.exists $(PREDEF_H) ] -{ - PREDEF_H = ; -} - project : requirements - $(BOOST_PREDEF_INCLUDE) # Add explicit dependency since we don't have header scanner for # .m and .mm files. - $(PREDEF_H) + ../include/boost/predef.h ; using testing ; @@ -53,34 +43,13 @@ test-suite predef : [ compile workaround_strict_config.cpp ] [ run tested_at.cpp ] [ compile-fail tested_at_outdated.cpp : always_show_run_output ] - [ compile platform_windows.cpp ] + [ compile platform_windows.cpp ] ; -local HEADERS = [ path.glob - $(BOOST_PREDEF_INCLUDE)/predef - $(BOOST_PREDEF_INCLUDE)/predef/architecture - $(BOOST_PREDEF_INCLUDE)/predef/architecture/x86 - $(BOOST_PREDEF_INCLUDE)/predef/compiler - $(BOOST_PREDEF_INCLUDE)/predef/hardware - $(BOOST_PREDEF_INCLUDE)/predef/hardware/simd - $(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/arm - $(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/ppc - $(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/x86 - $(BOOST_PREDEF_INCLUDE)/predef/hardware/simd/x86_amd - $(BOOST_PREDEF_INCLUDE)/predef/language - $(BOOST_PREDEF_INCLUDE)/predef/library - $(BOOST_PREDEF_INCLUDE)/predef/library/c - $(BOOST_PREDEF_INCLUDE)/predef/library/std - $(BOOST_PREDEF_INCLUDE)/predef/os - $(BOOST_PREDEF_INCLUDE)/predef/os/bsd - $(BOOST_PREDEF_INCLUDE)/predef/other - $(BOOST_PREDEF_INCLUDE)/predef/platform - : *.h - ] ; local single_header_cpp ; -for local h in $(HEADERS) +for local h in [ glob-tree-ex ../include/boost/predef : *.h ] { - local header_include = [ path.relative $(h) [ path.make $(BOOST_PREDEF_INCLUDE) ] ] ; + local header_include = [ path.relative $(h) ../include ] ; local header_cpp = [ regex.replace $(header_include:S=.cpp) "/" "_" ] ; .HEADER($(header_cpp:B:S=)) = $(header_include) ; make $(header_cpp) : : @gen_single_header_cpp ; @@ -113,5 +82,8 @@ alias full : predef predef-info ; # Extra's target. alias extra : predef-headers ; +alias all : predef predef-info predef-headers ; + explicit minimal ; explicit extra ; +explicit all ; diff --git a/tools/check/build.jam b/tools/check/build.jam index 1ce4f11..38c83bc 100644 --- a/tools/check/build.jam +++ b/tools/check/build.jam @@ -1,9 +1,17 @@ -# Copyright Rene Rivera 2015 +# Copyright Rene Rivera 2015-2023 # 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) -exe predef_check_as_c : predef_check_as_c.c : ../include ; -exe predef_check_as_cpp : predef_check_as_cpp.cpp : ../include ; -exe predef_check_as_objc : predef_check_as_objc.m : ../include ; -exe predef_check_as_objcpp : predef_check_as_objcpp.mm : ../include ; +exe predef_check_as_c : predef_check_as_c.c ; +exe predef_check_as_cpp : predef_check_as_cpp.cpp ; +exe predef_check_as_objc : predef_check_as_objc.m : @objc ; +exe predef_check_as_objcpp : predef_check_as_objcpp.mm : @objc ; + +rule objc ( props * ) +{ + if ! ( darwin in $(props) ) + { + return no ; + } +} diff --git a/tools/check/predef.jam b/tools/check/predef.jam index dd18bfb..d91df7b 100644 --- a/tools/check/predef.jam +++ b/tools/check/predef.jam @@ -88,7 +88,7 @@ local rule check_target ( language key : requirements * ) local source_path = $(predef_jam:D)/predef_check_cc_as_$(language).$(.$(language).ext) ; local include_path - = $(predef_jam:D)/../../include $(BOOST_ROOT) ; + = $(predef_jam:D)/../../include ; obj predef_check_cc_$(key) : $(source_path) : $(include_path) $(requirements) ;