# Copyright René Ferdinand Rivera Morell 2023-2024 # 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 feature ; import os ; feature.feature segmented-stacks : on : optional propagated composite ; feature.compose on : BOOST_USE_SEGMENTED_STACKS ; feature.feature htm : tsx : optional propagated composite ; feature.compose tsx : BOOST_USE_TSX ; feature.feature valgrind : on : optional propagated composite ; feature.compose on : BOOST_USE_VALGRIND ; local rule default_binary_format ( ) { local tmp = elf ; if [ os.name ] = "NT" { tmp = pe ; } else if [ os.name ] = "CYGWIN" { tmp = pe ; } else if [ os.name ] = "AIX" { tmp = xcoff ; } else if [ os.name ] = "MACOSX" { tmp = mach-o ; } return $(tmp) ; } feature.feature binary-format : elf mach-o pe xcoff : propagated ; feature.set-default binary-format : [ default_binary_format ] ; local rule default_abi ( ) { local tmp = sysv ; # Avoid using "in" operator here: it returns true if its left # part is empty, which happens e.g. with os.platform on # some uncommon architectures. if [ os.name ] = "NT" { tmp = ms ; } else if [ os.name ] = "CYGWIN" { tmp = ms ; } else if [ os.platform ] = "ARM" { tmp = aapcs ; } else if [ os.platform ] = "ARM64" { tmp = aapcs ; } else if [ os.platform ] = "MIPS32" { tmp = o32 ; } else if [ os.platform ] = "MIPS64" { tmp = n64 ; } return $(tmp) ; } feature.feature abi : aapcs eabi ms n32 n64 o32 o64 sysv x32 : propagated ; feature.set-default abi : [ default_abi ] ; feature.feature context-impl : fcontext ucontext winfib : propagated composite ; feature.set-default context-impl : fcontext ; feature.compose ucontext : BOOST_USE_UCONTEXT ; feature.compose winfib : BOOST_USE_WINFIB ;