# Boost.Context Library Build Jamfile # Copyright Oliver Kowalke 2009. # 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 common ; import feature ; import indirect ; import modules ; import os ; import toolset ; feature.feature segmented-stacks : on : optional propagated composite ; feature.compose on : BOOST_USE_SEGMENTED_STACKS ; feature.feature valgrind : on : optional propagated composite ; feature.compose on : BOOST_USE_VALGRIND ; project boost/context : requirements /boost/thread//boost_thread gcc,on:-fsplit-stack gcc,on:-DBOOST_USE_SEGMENTED_STACKS gcc,on:"-static-libgcc" clang,on:-fsplit-stack clang,on:-DBOOST_USE_SEGMENTED_STACKS clang,on:"-static-libgcc" msvc,shared:BOOST_CONTEXT_EXPORT=EXPORT msvc,static:BOOST_CONTEXT_EXPORT= shared:BOOST_CONTEXT_DYN_LINK=1 BOOST_CONTEXT_SOURCE multi : usage-requirements shared:BOOST_CONTEXT_DYN_LINK=1 speed:BOOST_DISABLE_ASSERTS release:BOOST_DISABLE_ASSERTS : source-location ../src ; local rule default_binary_format ( ) { local tmp = elf ; if [ os.name ] = "MACOSX" { tmp = mach-o ; } if [ os.name ] = "NT" { tmp = pe ; } if [ os.name ] = "AIX" { tmp = xcoff ; } 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 ; if [ os.name ] = "NT" { tmp = ms ; } else if [ os.platform ] = "ARM" { tmp = aapcs ; } else if [ os.platform ] = "MIPS" { tmp = o32 ; } return $(tmp) ; } feature.feature abi : aapcs eabi ms n32 n64 o32 o64 sysv x32 : propagated ; feature.set-default abi : [ default_abi ] ; actions gas32 { cpp -x assembler-with-cpp "$(>)" | as --32 -o "$(<)" } actions gas64 { cpp -x assembler-with-cpp "$(>)" | as --64 -o "$(<)" } actions gasx32 { cpp -x assembler-with-cpp "$(>)" | as --x32 -o "$(<)" } actions gas { cpp -x assembler-with-cpp "$(>)" | as -o "$(<)" } actions armasm { armasm "$(>)" "$(<)" } actions masm { ml /c /Fo"$(<)" "$(>)" } actions masm64 { ml64 /c /Fo"$(<)" "$(>)" } rule configure ( properties * ) { local result ; # if ( ! ( gcc in $(properties) # || intel in $(properties) # || msvc in $(properties) ) ) # { # result = no ; # ECHO "toolset not supported" ; # } return $(result) ; } # ARM # ARM/AAPCS/ELF alias asm_context_sources : [ make asm/make_arm_aapcs_elf_gas.o : asm/make_arm_aapcs_elf_gas.S : @gas32 ] [ make asm/jump_arm_aapcs_elf_gas.o : asm/jump_arm_aapcs_elf_gas.S : @gas32 ] : aapcs 32 arm elf ; alias asm_context_sources : asm/make_arm_aapcs_elf_gas.S asm/jump_arm_aapcs_elf_gas.S : aapcs 32 arm elf clang ; alias asm_context_sources : asm/make_arm_aapcs_elf_gas.S asm/jump_arm_aapcs_elf_gas.S : aapcs 32 arm elf gcc ; alias asm_context_sources : asm/make_arm_aapcs_elf_gas.S asm/jump_arm_aapcs_elf_gas.S : aapcs 32 arm elf qcc ; # ARM/AAPCS/MACH-O alias asm_context_sources : [ make asm/make_arm_aapcs_macho_gas.o : asm/make_arm_aapcs_macho_gas.S : @gas32 ] [ make asm/jump_arm_aapcs_macho_gas.o : asm/jump_arm_aapcs_macho_gas.S : @gas32 ] : aapcs 32 arm mach-o ; alias asm_context_sources : asm/make_arm_aapcs_macho_gas.S asm/jump_arm_aapcs_macho_gas.S : aapcs 32 arm mach-o clang ; alias asm_context_sources : asm/make_arm_aapcs_macho_gas.S asm/jump_arm_aapcs_macho_gas.S : aapcs 32 arm mach-o darwin ; # ARM/AAPCS/PE alias asm_context_sources : [ make asm/make_arm_aapcs_pe_armasm.o : asm/make_arm_aapcs_pe_armasm.asm : @armasm ] [ make asm/jump_arm_aapcs_pe_armasm.o : asm/jump_arm_aapcs_pe_armasm.asm : @armasm ] untested.cpp : aapcs 32 arm pe ; alias asm_context_sources : asm/make_arm_aapcs_pe_armasm.asm asm/jump_arm_aapcs_pe_armasm.asm untested.cpp : aapcs 32 arm pe msvc ; # ARM64 # ARM64/AAPCS/ELF alias asm_context_sources : [ make asm/make_arm64_aapcs_elf_gas.o : asm/make_arm64_aapcs_elf_gas.S : @gas64 ] [ make asm/jump_arm64_aapcs_elf_gas.o : asm/jump_arm64_aapcs_elf_gas.S : @gas64 ] : aapcs 64 arm elf ; alias asm_context_sources : asm/make_arm64_aapcs_elf_gas.S asm/jump_arm64_aapcs_elf_gas.S : aapcs 64 arm elf clang ; alias asm_context_sources : asm/make_arm64_aapcs_elf_gas.S asm/jump_arm64_aapcs_elf_gas.S : aapcs 64 arm elf gcc ; # ARM64/AAPCS/MACH-O alias asm_context_sources : [ make asm/make_arm64_aapcs_macho_gas.o : asm/make_arm64_aapcs_macho_gas.S : @gas64 ] [ make asm/jump_arm64_aapcs_macho_gas.o : asm/jump_arm64_aapcs_macho_gas.S : @gas64 ] : aapcs 64 arm mach-o ; alias asm_context_sources : asm/make_arm64_aapcs_macho_gas.S asm/jump_arm64_aapcs_macho_gas.S : aapcs 64 arm mach-o clang ; alias asm_context_sources : asm/make_arm64_aapcs_macho_gas.S asm/jump_arm64_aapcs_macho_gas.S : aapcs 64 arm mach-o darwin ; # MIPS # MIPS/O32/ELF alias asm_context_sources : [ make asm/make_mips32_o32_elf_gas.o : asm/make_mips32_o32_elf_gas.S : @gas32 ] [ make asm/jump_mips32_o32_elf_gas.o : asm/jump_mips32_o32_elf_gas.S : @gas32 ] : o32 32 mips1 elf ; alias asm_context_sources : asm/make_mips32_o32_elf_gas.S asm/jump_mips32_o32_elf_gas.S : o32 32 mips1 elf clang ; alias asm_context_sources : asm/make_mips32_o32_elf_gas.S asm/jump_mips32_o32_elf_gas.S : o32 32 mips1 elf gcc ; # POWERPC_32 # POWERPC_32/SYSV/ELF alias asm_context_sources : [ make asm/make_ppc32_sysv_elf_gas.o : asm/make_ppc32_sysv_elf_gas.S : @gas32 ] [ make asm/jump_ppc32_sysv_elf_gas.o : asm/jump_ppc32_sysv_elf_gas.S : @gas32 ] : sysv 32 power elf ; alias asm_context_sources : asm/make_ppc32_sysv_elf_gas.S asm/jump_ppc32_sysv_elf_gas.S : sysv 32 power elf clang ; alias asm_context_sources : asm/make_ppc32_sysv_elf_gas.S asm/jump_ppc32_sysv_elf_gas.S : sysv 32 power elf gcc ; # POWERPC_32/SYSV/MACH-O alias asm_context_sources : [ make asm/make_ppc32_sysv_macho_gas.o : asm/make_ppc32_sysv_macho_gas.S : @gas32 ] [ make asm/jump_ppc32_sysv_macho_gas.o : asm/jump_ppc32_sysv_macho_gas.S : @gas32 ] : sysv 32 power mach-o ; alias asm_context_sources : asm/make_ppc32_sysv_macho_gas.S asm/jump_ppc32_sysv_macho_gas.S : sysv 32 power mach-o clang ; alias asm_context_sources : asm/make_ppc32_sysv_macho_gas.S asm/jump_ppc32_sysv_macho_gas.S : sysv 32 power mach-o darwin ; #POWERPC_32/SYSV/XCOFF alias asm_context_sources : [ make asm/make_ppc32_sysv_xcoff_gas.o : asm/make_ppc32_sysv_xcoff_gas.S : @gas ] [ make asm/jump_ppc32_sysv_xcoff_gas.o : asm/jump_ppc32_sysv_xcoff_gas.S : @gas ] : sysv 32 power xcoff ; alias asm_context_sources : asm/make_ppc32_sysv_xcoff_gas.S asm/jump_ppc32_sysv_xcoff_gas.S : sysv 32 power xcoff clang ; alias asm_context_sources : asm/make_ppc32_sysv_xcoff_gas.S asm/jump_ppc32_sysv_xcoff_gas.S : sysv 32 power xcoff gcc ; # POWERPC_64 # POWERPC_64/SYSV/ELF alias asm_context_sources : [ make asm/make_ppc64_sysv_elf_gas.o : asm/make_ppc64_sysv_elf_gas.S : @gas64 ] [ make asm/jump_ppc64_sysv_elf_gas.o : asm/jump_ppc64_sysv_elf_gas.S : @gas64 ] : sysv 64 power elf ; alias asm_context_sources : asm/make_ppc64_sysv_elf_gas.S asm/jump_ppc64_sysv_elf_gas.S : sysv 64 power elf clang ; alias asm_context_sources : asm/make_ppc64_sysv_elf_gas.S asm/jump_ppc64_sysv_elf_gas.S : sysv 64 power elf gcc ; # POWERPC_64/SYSV/MACH-O alias asm_context_sources : [ make asm/make_ppc64_sysv_macho_gas.o : asm/make_ppc64_sysv_macho_gas.S : @gas ] [ make asm/jump_ppc64_sysv_macho_gas.o : asm/jump_ppc64_sysv_macho_gas.S : @gas ] untested.cpp : sysv 64 power mach-o ; alias asm_context_sources : asm/make_ppc64_sysv_macho_gas.S asm/jump_ppc64_sysv_macho_gas.S untested.cpp : sysv 64 power mach-o clang ; alias asm_context_sources : asm/make_ppc64_sysv_macho_gas.S asm/jump_ppc64_sysv_macho_gas.S untested.cpp : sysv 64 power mach-o darwin ; # POWERPC_64/SYSV/XCOFF alias asm_context_sources : [ make asm/make_ppc64_sysv_xcoff_gas.o : asm/make_ppc64_sysv_xcoff_gas.S : @gas ] [ make asm/jump_ppc64_sysv_xcoff_gas.o : asm/jump_ppc64_sysv_xcoff_gas.S : @gas ] : sysv 64 power xcoff ; alias asm_context_sources : asm/make_ppc64_sysv_xcoff_gas.S asm/jump_ppc64_sysv_xcoff_gas.S : sysv 64 power xcoff clang ; alias asm_context_sources : asm/make_ppc64_sysv_xcoff_gas.S asm/jump_ppc64_sysv_xcoff_gas.S : sysv 64 power xcoff gcc ; # POWERPC universal # POWERPC_32_64/SYSV/MACH-O alias asm_context_sources : asm/make_ppc32_ppc64_sysv_macho_gas.S asm/jump_ppc32_ppc64_sysv_macho_gas.S : sysv 32_64 power mach-o ; # SPARC # SPARC/SYSV/ELF alias asm_context_sources : [ make asm/make_sparc_sysv_elf_gas.o : asm/make_sparc_sysv_elf_gas.S : @gas32 ] [ make asm/jump_sparc_sysv_elf_gas.o : asm/jump_sparc_sysv_elf_gas.S : @gas32 ] unsupported.cpp : sysv 32 sparc elf ; alias asm_context_sources : asm/make_sparc_sysv_elf_gas.S asm/jump_sparc_sysv_elf_gas.S unsupported.cpp : sysv 32 sparc elf clang ; alias asm_context_sources : asm/make_sparc_sysv_elf_gas.S asm/jump_sparc_sysv_elf_gas.S unsupported.cpp : sysv 32 sparc elf gcc ; # SPARC_64 # SPARC_64/SYSV/ELF alias asm_context_sources : [ make asm/make_sparc64_sysv_elf_gas.o : asm/make_sparc64_sysv_elf_gas.S : @gas64 ] [ make asm/jump_sparc64_sysv_elf_gas.o : asm/jump_sparc64_sysv_elf_gas.S : @gas64 ] unsupported.cpp : sysv 64 sparc elf ; alias asm_context_sources : asm/make_sparc64_sysv_elf_gas.S asm/jump_sparc64_sysv_elf_gas.S unsupported.cpp : sysv 64 sparc elf clang ; alias asm_context_sources : asm/make_sparc64_sysv_elf_gas.S asm/jump_sparc64_sysv_elf_gas.S unsupported.cpp : sysv 64 sparc elf gcc ; # X86 # X86/SYSV/ELF alias asm_context_sources : [ make asm/make_i386_sysv_elf_gas.o : asm/make_i386_sysv_elf_gas.S : @gas32 ] [ make asm/jump_i386_sysv_elf_gas.o : asm/jump_i386_sysv_elf_gas.S : @gas32 ] : sysv 32 x86 elf ; alias asm_context_sources : asm/make_i386_sysv_elf_gas.S asm/jump_i386_sysv_elf_gas.S : sysv 32 x86 elf clang ; alias asm_context_sources : asm/make_i386_sysv_elf_gas.S asm/jump_i386_sysv_elf_gas.S : sysv 32 x86 elf gcc ; alias asm_context_sources : asm/make_i386_sysv_elf_gas.S asm/jump_i386_sysv_elf_gas.S : sysv 32 x86 elf intel ; # X86/SYSV/MACH-O alias asm_context_sources : [ make asm/make_i386_sysv_macho_gas.o : asm/make_i386_sysv_macho_gas.S : @gas32 ] [ make asm/jump_i386_sysv_macho_gas.o : asm/jump_i386_sysv_macho_gas.S : @gas32 ] : sysv 32 x86 mach-o ; alias asm_context_sources : asm/make_i386_sysv_macho_gas.S asm/jump_i386_sysv_macho_gas.S : sysv 32 x86 mach-o clang ; alias asm_context_sources : asm/make_i386_sysv_macho_gas.S asm/jump_i386_sysv_macho_gas.S : sysv 32 x86 mach-o darwin ; # X86/MS/PE alias asm_context_sources : [ make asm/make_i386_ms_pe_masm.o : asm/make_i386_ms_pe_masm.asm : @masm ] [ make asm/jump_i386_ms_pe_masm.o : asm/jump_i386_ms_pe_masm.asm : @masm ] dummy.cpp : ms 32 x86 pe ; alias asm_context_sources : asm/make_i386_ms_pe_gas.asm asm/jump_i386_ms_pe_gas.asm dummy.cpp : ms 32 x86 pe gcc ; alias asm_context_sources : asm/make_i386_ms_pe_masm.asm asm/jump_i386_ms_pe_masm.asm dummy.cpp : ms 32 x86 pe intel ; alias asm_context_sources : asm/make_i386_ms_pe_masm.asm asm/jump_i386_ms_pe_masm.asm dummy.cpp : ms 32 x86 pe msvc ; # X86_64 # X86_64/SYSV/ELF alias asm_context_sources : [ make asm/make_x86_64_sysv_elf_gas.o : asm/make_x86_64_sysv_elf_gas.S : @gas64 ] [ make asm/jump_x86_64_sysv_elf_gas.o : asm/jump_x86_64_sysv_elf_gas.S : @gas64 ] : sysv 64 x86 elf ; alias asm_context_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S : sysv 64 x86 elf clang ; alias asm_context_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S : sysv 64 x86 elf gcc ; alias asm_context_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S : sysv 64 x86 elf intel ; # X86_64/X32/ELF alias asm_context_sources : [ make asm/make_x86_64_x32_elf_gas.o : asm/make_x86_64_x32_elf_gas.S : @gasx32 ] [ make asm/jump_x86_64_x32_elf_gas.o : asm/jump_x86_64_x32_elf_gas.S : @gasx32 ] untested.cpp : x32 32 x86 elf ; alias asm_context_sources : asm/make_x86_64_x32_elf_gas.S asm/jump_x86_64_x32_elf_gas.S untested.cpp : x32 32 x86 elf clang ; alias asm_context_sources : asm/make_x86_64_x32_elf_gas.S asm/jump_x86_64_x32_elf_gas.S untested.cpp : x32 32 x86 elf gcc ; # X86_64/SYSV/MACH-O alias asm_context_sources : [ make asm/make_x86_64_sysv_macho_gas.o : asm/make_x86_64_sysv_macho_gas.S : @gas64 ] [ make asm/jump_x86_64_sysv_macho_gas.o : asm/jump_x86_64_sysv_macho_gas.S : @gas64 ] : sysv 64 x86 mach-o ; alias asm_context_sources : asm/make_x86_64_sysv_macho_gas.S asm/jump_x86_64_sysv_macho_gas.S : sysv 64 x86 mach-o clang ; alias asm_context_sources : asm/make_x86_64_sysv_macho_gas.S asm/jump_x86_64_sysv_macho_gas.S : sysv 64 x86 mach-o darwin ; # X86_64/MS/PE alias asm_context_sources : [ make asm/make_x86_64_ms_pe_masm.o : asm/make_x86_64_ms_pe_masm.asm : @masm64 ] [ make asm/jump_x86_64_ms_pe_masm.o : asm/jump_x86_64_ms_pe_masm.asm : @masm64 ] dummy.cpp : ms 64 x86 pe ; alias asm_context_sources : asm/make_x86_64_ms_pe_gas.asm asm/jump_x86_64_ms_pe_gas.asm dummy.cpp : ms 64 x86 pe gcc ; alias asm_context_sources : asm/make_x86_64_ms_pe_masm.asm asm/jump_x86_64_ms_pe_masm.asm dummy.cpp : ms 64 x86 pe intel ; alias asm_context_sources : asm/make_x86_64_ms_pe_masm.asm asm/jump_x86_64_ms_pe_masm.asm dummy.cpp : ms 64 x86 pe msvc ; #X86 universal alias asm_context_sources : asm/make_i386_x86_64_sysv_macho_gas.S asm/jump_i386_x86_64_sysv_macho_gas.S : sysv 32_64 x86 mach-o ; # COMBINED alias asm_context_sources : asm/make_combined_sysv_macho_gas.S asm/jump_combined_sysv_macho_gas.S : sysv combined mach-o ; alias asm_context_sources : unsupported.cpp ; explicit asm_context_sources ; alias stack_traits_sources : windows/stack_traits.cpp : windows ; alias stack_traits_sources : posix/stack_traits.cpp ; explicit stack_traits_sources ; lib boost_context : asm_context_sources stack_traits_sources execution_context.cpp ; boost-install boost_context ;