diff -urN a/boostcpp.jam b/boostcpp.jam --- a/boostcpp.jam 2018-04-11 15:48:55.000000000 +0200 +++ b/boostcpp.jam 2018-08-07 19:11:42.157340430 +0200 @@ -676,17 +676,19 @@ return [ property.select $(toolset-version-property) : $(properties) ] ; } -feature.feature deduced-address-model : 32 64 : propagated optional composite hidden ; +feature.feature deduced-address-model : 32 32_64 64 : propagated optional composite hidden ; feature.compose 32 : 32 ; +feature.compose 32_64 : 32_64 ; feature.compose 64 : 64 ; rule deduce-address-model ( properties * ) { local result ; local filtered = [ toolset-properties $(properties) ] ; - local names = 32 64 ; + local names = 32 32_64 64 ; local idx = [ configure.find-builds "default address-model" : $(filtered) : /boost/architecture//32 "32-bit" + : /boost/architecture//32_64 "64-bit x32" : /boost/architecture//64 "64-bit" ] ; result = $(names[$(idx)]) ; diff -urN a/libs/config/checks/architecture/32_64.cpp b/libs/config/checks/architecture/32_64.cpp --- a/libs/config/checks/architecture/32_64.cpp 1970-01-01 01:00:00.000000000 +0100 +++ b/libs/config/checks/architecture/32_64.cpp 2018-08-07 19:06:34.208470887 +0200 @@ -0,0 +1,3 @@ +#if !defined(__x86_64__) || !defined(__ILP32__) +#error "Not x86_64 x32 abi" +#endif diff -urN a/libs/config/checks/architecture/32.cpp b/libs/config/checks/architecture/32.cpp --- a/libs/config/checks/architecture/32.cpp 2018-04-11 15:49:01.000000000 +0200 +++ b/libs/config/checks/architecture/32.cpp 2018-08-07 19:04:52.287247594 +0200 @@ -6,4 +6,7 @@ // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#ifdef __x86_64__ +#error +#endif int test[sizeof(void*) == 4? 1 : -1]; diff -urN a/libs/config/checks/architecture/64.cpp b/libs/config/checks/architecture/64.cpp --- a/libs/config/checks/architecture/64.cpp 2018-04-11 15:49:01.000000000 +0200 +++ b/libs/config/checks/architecture/64.cpp 2018-08-07 19:03:53.235201959 +0200 @@ -6,4 +6,7 @@ // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#ifdef __ILP32__ +#error +#endif int test[sizeof(void*) == 8? 1 : -1]; diff -urN a/libs/config/checks/architecture/Jamroot.jam b/libs/config/checks/architecture/Jamroot.jam --- a/libs/config/checks/architecture/Jamroot.jam 2018-04-11 15:49:01.000000000 +0200 +++ b/libs/config/checks/architecture/Jamroot.jam 2018-08-07 18:56:34.360302080 +0200 @@ -13,6 +13,7 @@ ; obj 32 : 32.cpp ; +obj 32_64 : 32_64.cpp ; obj 64 : 64.cpp ; obj arm : arm.cpp ;