diff options
author | Jürgen Hunold <jhunold@gmx.eu> | 2015-02-20 18:16:38 +0100 |
---|---|---|
committer | Vladimir Prus <vladimir@codesourcery.com> | 2015-04-04 20:47:51 +0300 |
commit | e3bc35f7891e72ad74e57dc216db899d162373f5 (patch) | |
tree | d217081c787d6746dff53f1e69e43b6f8f3ea450 | |
parent | e99236cf4f146c9e38b0e308c03f0b6357e34a56 (diff) | |
download | boost-e3bc35f7891e72ad74e57dc216db899d162373f5.tar.gz |
Lift architecture detection
-rw-r--r-- | Jamroot | 7 | ||||
-rw-r--r-- | boostcpp.jam | 68 |
2 files changed, 73 insertions, 2 deletions
@@ -136,7 +136,8 @@ constant BOOST_JAMROOT_MODULE : $(__name__) ; boostcpp.set-version $(BOOST_VERSION) ; - +use-project /boost/architecture : libs/config/checks/architecture ; + local all-headers = [ MATCH .*libs/(.*)/include/boost : [ glob libs/*/include/boost ] ] ; @@ -162,6 +163,10 @@ if $(all-headers) project boost : requirements <include>. + + [ boostcpp.architecture ] + [ boostcpp.address-model ] + # Disable auto-linking for all targets here, primarily because it caused # troubles with V2. <define>BOOST_ALL_NO_LIB=1 diff --git a/boostcpp.jam b/boostcpp.jam index 257e70d459..9c2e28d30b 100644 --- a/boostcpp.jam +++ b/boostcpp.jam @@ -22,7 +22,7 @@ import project ; import regex ; import set ; import targets ; - +import property ; ############################################################################## # @@ -553,3 +553,69 @@ rule declare-targets ( all-libraries * : headers * ) declare_top_level_targets $(libraries) : $(headers) ; } + +rule deduce-address-model ( properties * ) +{ + local result = [ property.select <address-model> : $(properties) ] ; + if $(result) + { + return $(result) ; + } + else + { + if [ configure.builds /boost/architecture//32 : $(properties) : 32-bit ] + { + return <address-model>32 ; + } + else if [ configure.builds /boost/architecture//64 : $(properties) : 64-bit ] + { + return <address-model>64 ; + } + } +} + +rule address-model ( ) +{ + return <conditional>@boostcpp.deduce-address-model ; +} + +rule deduce-architecture ( properties * ) +{ + local result = [ property.select <architecture> : $(properties) ] ; + if $(result) + { + return $(result) ; + } + else + { + if [ configure.builds /boost/architecture//arm : $(properties) : arm ] + { + return <architecture>arm ; + } + else if [ configure.builds /boost/architecture//mips1 : $(properties) : mips1 ] + { + return <architecture>mips1 ; + } + else if [ configure.builds /boost/architecture//power : $(properties) : power ] + { + return <architecture>power ; + } + else if [ configure.builds /boost/architecture//sparc : $(properties) : sparc ] + { + return <architecture>sparc ; + } + else if [ configure.builds /boost/architecture//x86 : $(properties) : x86 ] + { + return <architecture>x86 ; + } + else if [ configure.builds /boost/architecture//combined : $(properties) : combined ] + { + return <architecture>combined ; + } + } +} + +rule architecture ( ) +{ + return <conditional>@boostcpp.deduce-architecture ; +} |