# 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 ; import ../../config/checks/config : requires ; 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 ; project boost/context : requirements windows:_WIN32_WINNT=0x0601 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" intel,shared:BOOST_CONTEXT_EXPORT=EXPORT intel,static:BOOST_CONTEXT_EXPORT= msvc,shared:BOOST_CONTEXT_EXPORT=EXPORT msvc,static:BOOST_CONTEXT_EXPORT= clang-win,shared:BOOST_CONTEXT_EXPORT=EXPORT clang-win,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 ] = "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 ; if [ os.name ] = "NT" { tmp = ms ; } else if [ os.name ] = "CYGWIN" { 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 ] ; 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 ; # ARM # ARM/AAPCS/ELF alias asm_sources : asm/make_arm_aapcs_elf_gas.S asm/jump_arm_aapcs_elf_gas.S asm/ontop_arm_aapcs_elf_gas.S : aapcs 32 arm elf clang ; alias asm_sources : asm/make_arm_aapcs_elf_gas.S asm/jump_arm_aapcs_elf_gas.S asm/ontop_arm_aapcs_elf_gas.S : aapcs 32 arm elf gcc ; alias asm_sources : asm/make_arm_aapcs_elf_gas.S asm/jump_arm_aapcs_elf_gas.S asm/ontop_arm_aapcs_elf_gas.S : aapcs 32 arm elf qcc ; # ARM/AAPCS/MACH-O alias asm_sources : asm/make_arm_aapcs_macho_gas.S asm/jump_arm_aapcs_macho_gas.S asm/ontop_arm_aapcs_macho_gas.S : aapcs 32 arm mach-o clang ; alias asm_sources : asm/make_arm_aapcs_macho_gas.S asm/jump_arm_aapcs_macho_gas.S asm/ontop_arm_aapcs_macho_gas.S : aapcs 32 arm mach-o darwin ; # ARM/AAPCS/PE alias asm_sources : asm/make_arm_aapcs_pe_armasm.asm asm/jump_arm_aapcs_pe_armasm.asm asm/ontop_arm_aapcs_pe_armasm.asm untested.cpp : aapcs 32 arm pe msvc ; # ARM64 # ARM64/AAPCS/ELF alias asm_sources : asm/make_arm64_aapcs_elf_gas.S asm/jump_arm64_aapcs_elf_gas.S asm/ontop_arm64_aapcs_elf_gas.S : aapcs 64 arm elf clang ; alias asm_sources : asm/make_arm64_aapcs_elf_gas.S asm/jump_arm64_aapcs_elf_gas.S asm/ontop_arm64_aapcs_elf_gas.S : aapcs 64 arm elf gcc ; # ARM64/AAPCS/MACH-O alias asm_sources : asm/make_arm64_aapcs_macho_gas.S asm/jump_arm64_aapcs_macho_gas.S asm/ontop_arm64_aapcs_macho_gas.S : aapcs 64 arm mach-o clang ; alias asm_sources : asm/make_arm64_aapcs_macho_gas.S asm/jump_arm64_aapcs_macho_gas.S asm/ontop_arm64_aapcs_macho_gas.S : aapcs 64 arm mach-o darwin ; # MIPS # MIPS32/O32/ELF alias asm_sources : asm/make_mips32_o32_elf_gas.S asm/jump_mips32_o32_elf_gas.S asm/ontop_mips32_o32_elf_gas.S : o32 32 mips1 elf clang ; alias asm_sources : asm/make_mips32_o32_elf_gas.S asm/jump_mips32_o32_elf_gas.S asm/ontop_mips32_o32_elf_gas.S : o32 32 mips1 elf gcc ; # MIPS64/N64/ELF alias asm_sources : asm/make_mips64_n64_elf_gas.S asm/jump_mips64_n64_elf_gas.S asm/ontop_mips64_n64_elf_gas.S : n64 64 mips1 elf clang ; alias asm_sources : asm/make_mips64_n64_elf_gas.S asm/jump_mips64_n64_elf_gas.S asm/ontop_mips64_n64_elf_gas.S : n64 64 mips1 elf gcc ; # POWERPC_32 # POWERPC_32/SYSV/ELF alias asm_sources : asm/make_ppc32_sysv_elf_gas.S asm/jump_ppc32_sysv_elf_gas.S asm/ontop_ppc32_sysv_elf_gas.S asm/tail_ppc32_sysv_elf_gas.cpp : sysv 32 power elf clang ; alias asm_sources : asm/make_ppc32_sysv_elf_gas.S asm/jump_ppc32_sysv_elf_gas.S asm/ontop_ppc32_sysv_elf_gas.S asm/tail_ppc32_sysv_elf_gas.cpp : sysv 32 power elf gcc ; alias asm_sources : asm/make_ppc32_sysv_macho_gas.S asm/jump_ppc32_sysv_macho_gas.S asm/ontop_ppc32_sysv_macho_gas.S : sysv 32 power mach-o darwin ; #POWERPC_32/SYSV/XCOFF alias asm_sources : asm/make_ppc32_sysv_xcoff_gas.S asm/jump_ppc32_sysv_xcoff_gas.S asm/ontop_ppc32_sysv_xcoff_gas.S : sysv 32 power xcoff clang ; alias asm_sources : asm/make_ppc32_sysv_xcoff_gas.S asm/jump_ppc32_sysv_xcoff_gas.S asm/ontop_ppc32_sysv_xcoff_gas.S : sysv 32 power xcoff gcc ; # POWERPC_64 # POWERPC_64/SYSV/ELF alias asm_sources : asm/make_ppc64_sysv_elf_gas.S asm/jump_ppc64_sysv_elf_gas.S asm/ontop_ppc64_sysv_elf_gas.S : sysv 64 power elf clang ; alias asm_sources : asm/make_ppc64_sysv_elf_gas.S asm/jump_ppc64_sysv_elf_gas.S asm/ontop_ppc64_sysv_elf_gas.S : sysv 64 power elf gcc ; # POWERPC_64/SYSV/MACH-O alias asm_sources : asm/make_ppc64_sysv_macho_gas.S asm/jump_ppc64_sysv_macho_gas.S asm/ontop_ppc64_sysv_macho_gas.S untested.cpp : sysv 64 power mach-o clang ; alias asm_sources : asm/make_ppc64_sysv_macho_gas.S asm/jump_ppc64_sysv_macho_gas.S asm/ontop_ppc64_sysv_macho_gas.S untested.cpp : sysv 64 power mach-o darwin ; # POWERPC_64/SYSV/XCOFF alias asm_sources : asm/make_ppc64_sysv_xcoff_gas.S asm/jump_ppc64_sysv_xcoff_gas.S asm/ontop_ppc64_sysv_xcoff_gas.S : sysv 64 power xcoff clang ; alias asm_sources : asm/make_ppc64_sysv_xcoff_gas.S asm/jump_ppc64_sysv_xcoff_gas.S asm/ontop_ppc64_sysv_xcoff_gas.S : sysv 64 power xcoff gcc ; # POWERPC universal # POWERPC_32_64/SYSV/MACH-O alias asm_sources : asm/make_ppc32_ppc64_sysv_macho_gas.S asm/jump_ppc32_ppc64_sysv_macho_gas.S asm/ontop_ppc32_ppc64_sysv_macho_gas.S : sysv 32_64 power mach-o ; # RISCV64 # RISCV64/SYSV/ELF alias asm_sources : asm/make_riscv64_sysv_elf_gas.S asm/jump_riscv64_sysv_elf_gas.S asm/ontop_riscv64_sysv_elf_gas.S : sysv 64 riscv elf gcc ; # S390X # S390X/SYSV/ELF alias asm_sources : asm/make_s390x_sysv_elf_gas.S asm/jump_s390x_sysv_elf_gas.S asm/ontop_s390x_sysv_elf_gas.S : sysv 64 s390x elf gcc ; # X86 # X86/SYSV/ELF alias asm_sources : asm/make_i386_sysv_elf_gas.S asm/jump_i386_sysv_elf_gas.S asm/ontop_i386_sysv_elf_gas.S : sysv 32 x86 elf clang ; alias asm_sources : asm/make_i386_sysv_elf_gas.S asm/jump_i386_sysv_elf_gas.S asm/ontop_i386_sysv_elf_gas.S : sysv 32 x86 elf gcc ; alias asm_sources : asm/make_i386_sysv_elf_gas.S asm/jump_i386_sysv_elf_gas.S asm/ontop_i386_sysv_elf_gas.S : sysv 32 x86 elf intel ; # X86/SYSV/MACH-O alias asm_sources : asm/make_i386_sysv_macho_gas.S asm/jump_i386_sysv_macho_gas.S asm/ontop_i386_sysv_macho_gas.S : sysv 32 x86 mach-o clang ; alias asm_sources : asm/make_i386_sysv_macho_gas.S asm/jump_i386_sysv_macho_gas.S asm/ontop_i386_sysv_macho_gas.S : sysv 32 x86 mach-o darwin ; # X86/MS/PE alias asm_sources : asm/make_i386_ms_pe_gas.asm asm/jump_i386_ms_pe_gas.asm asm/ontop_i386_ms_pe_gas.asm dummy.cpp : ms 32 x86 pe clang ; alias asm_sources : asm/make_i386_ms_pe_masm.asm asm/jump_i386_ms_pe_masm.asm asm/ontop_i386_ms_pe_masm.asm dummy.cpp : ms 32 x86 pe clang-win ; alias asm_sources : asm/make_i386_ms_pe_gas.asm asm/jump_i386_ms_pe_gas.asm asm/ontop_i386_ms_pe_gas.asm dummy.cpp : ms 32 x86 pe gcc ; alias asm_sources : asm/make_i386_ms_pe_masm.asm asm/jump_i386_ms_pe_masm.asm asm/ontop_i386_ms_pe_masm.asm dummy.cpp : ms 32 x86 pe intel ; alias asm_sources : asm/make_i386_ms_pe_masm.asm asm/jump_i386_ms_pe_masm.asm asm/ontop_i386_ms_pe_masm.asm dummy.cpp : ms 32 x86 pe msvc ; # X86_64 # X86_64/SYSV/ELF alias asm_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S asm/ontop_x86_64_sysv_elf_gas.S : sysv 64 x86 elf clang ; alias asm_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S asm/ontop_x86_64_sysv_elf_gas.S : sysv 64 x86 elf gcc ; alias asm_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S asm/ontop_x86_64_sysv_elf_gas.S : sysv 64 x86 elf intel ; # X86_64/SYSV/MACH-O alias asm_sources : asm/make_x86_64_sysv_macho_gas.S asm/jump_x86_64_sysv_macho_gas.S asm/ontop_x86_64_sysv_macho_gas.S : sysv 64 x86 mach-o clang ; alias asm_sources : asm/make_x86_64_sysv_macho_gas.S asm/jump_x86_64_sysv_macho_gas.S asm/ontop_x86_64_sysv_macho_gas.S : sysv 64 x86 mach-o darwin ; alias asm_sources : asm/make_x86_64_sysv_macho_gas.S asm/jump_x86_64_sysv_macho_gas.S asm/ontop_x86_64_sysv_macho_gas.S : sysv 64 x86 mach-o intel ; # X86_64/MS/PE alias asm_sources : asm/make_x86_64_ms_pe_gas.asm asm/jump_x86_64_ms_pe_gas.asm asm/ontop_x86_64_ms_pe_gas.asm dummy.cpp : ms 64 x86 pe clang ; alias asm_sources : asm/make_x86_64_ms_pe_masm.asm asm/jump_x86_64_ms_pe_masm.asm asm/ontop_x86_64_ms_pe_masm.asm dummy.cpp : ms 64 x86 pe clang-win ; alias asm_sources : asm/make_x86_64_ms_pe_gas.asm asm/jump_x86_64_ms_pe_gas.asm asm/ontop_x86_64_ms_pe_gas.asm dummy.cpp : ms 64 x86 pe gcc ; alias asm_sources : asm/make_x86_64_ms_pe_masm.asm asm/jump_x86_64_ms_pe_masm.asm asm/ontop_x86_64_ms_pe_masm.asm dummy.cpp : ms 64 x86 pe intel ; alias asm_sources : asm/make_x86_64_ms_pe_masm.asm asm/jump_x86_64_ms_pe_masm.asm asm/ontop_x86_64_ms_pe_masm.asm dummy.cpp : ms 64 x86 pe msvc ; # X86_64/SYSV/X32 alias asm_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S asm/ontop_x86_64_sysv_elf_gas.S : x32 64 x86 elf clang ; alias asm_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S asm/ontop_x86_64_sysv_elf_gas.S : x32 64 x86 elf gcc ; alias asm_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S asm/ontop_x86_64_sysv_elf_gas.S : x32 64 x86 elf intel ; #X86 universal alias asm_sources : asm/make_i386_x86_64_sysv_macho_gas.S asm/jump_i386_x86_64_sysv_macho_gas.S asm/ontop_i386_x86_64_sysv_macho_gas.S : sysv 32_64 x86 mach-o ; # COMBINED alias asm_sources : asm/make_combined_sysv_macho_gas.S asm/jump_combined_sysv_macho_gas.S asm/ontop_combined_sysv_macho_gas.S : sysv combined mach-o ; explicit asm_sources ; # fcontext_t alias impl_sources : asm_sources : fcontext ; # ucontext_t alias impl_sources : continuation.cpp fiber.cpp : ucontext [ requires cxx11_auto_declarations cxx11_constexpr cxx11_defaulted_functions cxx11_final cxx11_hdr_thread cxx11_hdr_tuple cxx11_lambdas cxx11_noexcept cxx11_nullptr cxx11_rvalue_references cxx11_template_aliases cxx11_thread_local cxx11_variadic_templates ] ; # WinFiber alias impl_sources : continuation.cpp fiber.cpp : winfib [ requires cxx11_auto_declarations cxx11_constexpr cxx11_defaulted_functions cxx11_final cxx11_hdr_thread cxx11_hdr_tuple cxx11_lambdas cxx11_noexcept cxx11_nullptr cxx11_rvalue_references cxx11_template_aliases cxx11_thread_local cxx11_variadic_templates ] ; explicit impl_sources ; obj cxx11_hdr_mutex_check : ../build/cxx11_hdr_mutex.cpp ; explicit cxx11_hdr_mutex_check ; local cxx11_mutex = [ check-target-builds cxx11_hdr_mutex_check "C++11 mutex" : : /boost/thread//boost_thread ] ; alias stack_traits_sources : windows/stack_traits.cpp : windows : : $(cxx11_mutex) ; alias stack_traits_sources : posix/stack_traits.cpp : : : $(cxx11_mutex) ; explicit stack_traits_sources ; lib boost_context : impl_sources stack_traits_sources ; boost-install boost_context ;