# 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 architecture ; project boost/context : source-location ../src : requirements SOLARIS:_XOPEN_SOURCE=600 : usage-requirements shared:BOOST_CONTEXT_DYN_LINK=1 ; local rule default_binary_format ( ) { local tmp = elf ; if [ os.name ] = "MACOSX" { tmp = mach-o ; } if [ os.name ] = "NT" { tmp = pe ; } return $(tmp) ; } feature.feature binary-format : elf mach-o pe : 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 : propagated ; feature.set-default abi : [ default_abi ] ; actions gas { 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 alias asm_context_sources : asm/make_arm_aapcs_elf_gas.S asm/jump_arm_aapcs_elf_gas.S : arm elf gcc ; alias asm_context_sources : asm/make_arm_aapcs_elf_gas.S asm/jump_arm_aapcs_elf_gas.S : arm elf qcc ; alias asm_context_sources : asm/make_arm_aapcs_macho_gas.S asm/jump_arm_aapcs_macho_gas.S : arm mach-o darwin ; 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 ] : arm pe ; alias asm_context_sources : [ make asm/make_arm_aapcs_elf_gas.o : asm/make_arm_aapcs_elf_gas.S : @gas ] [ make asm/jump_arm_aapcs_elf_gas.o : asm/jump_arm_aapcs_elf_gas.S : @gas ] : arm elf ; # MIPS alias asm_context_sources : asm/make_mips32_o32_elf_gas.S asm/jump_mips32_o32_elf_gas.S : mips1 elf gcc ; alias asm_context_sources : asm/make_mips32_o32_elf_gas.S asm/jump_mips32_o32_elf_gas.S : mips1 elf qcc ; alias asm_context_sources : [ make asm/make_mips32_o32_elf_gas.o : asm/make_mips32_o32_elf_gas.S : @gas ] [ make asm/jump_mips32_o32_elf_gas.o : asm/jump_mips32_o32_elf_gas.S : @gas ] : mips1 elf ; # POWERPC alias asm_context_sources : asm/make_ppc32_sysv_elf_gas.S asm/jump_ppc32_sysv_elf_gas.S : 32 power elf gcc ; alias asm_context_sources : asm/make_ppc32_sysv_elf_gas.S asm/jump_ppc32_sysv_elf_gas.S : 32 power elf qcc ; alias asm_context_sources : [ make asm/make_ppc32_sysv_elf_gas.o : asm/make_ppc32_sysv_elf_gas.S : @gas ] [ make asm/jump_ppc32_sysv_elf_gas.o : asm/jump_ppc32_sysv_elf_gas.S : @gas ] : 32 power elf ; # POWERPC_64 alias asm_context_sources : asm/make_ppc64_sysv_elf_gas.S asm/jump_ppc64_sysv_elf_gas.S : 64 power elf gcc ; alias asm_context_sources : asm/make_ppc64_sysv_elf_gas.S asm/jump_ppc64_sysv_elf_gas.S : 64 power elf qcc ; alias asm_context_sources : [ make asm/make_ppc64_sysv_elf_gas.o : asm/make_ppc64_sysv_elf_gas.S : @gas ] [ make asm/jump_ppc64_sysv_elf_gas.o : asm/jump_ppc64_sysv_elf_gas.S : @gas ] : 64 power elf ; # SPARC alias asm_context_sources : asm/make_sparc_sysv_elf_gas.S asm/jump_sparc_sysv_elf_gas.S : 32 sparc elf gcc ; alias asm_context_sources : [ make asm/make_sparc_sysv_elf_gas.o : asm/make_sparc_sysv_elf_gas.S : @gas ] [ make asm/jump_sparc_sysv_elf_gas.o : asm/jump_sparc_sysv_elf_gas.S : @gas ] : 32 sparc elf ; # SPARC_64 alias asm_context_sources : asm/make_sparc64_sysv_elf_gas.S asm/jump_sparc64_sysv_elf_gas.S : 64 sparc elf gcc ; alias asm_context_sources : [ make asm/make_sparc64_sysv_elf_gas.o : asm/make_sparc64_sysv_elf_gas.S : @gas ] [ make asm/jump_sparc64_sysv_elf_gas.o : asm/jump_sparc64_sysv_elf_gas.S : @gas ] : 64 sparc elf ; # X86 alias asm_context_sources : asm/make_i386_sysv_elf_gas.S asm/jump_i386_sysv_elf_gas.S : 32 x86 elf gcc ; alias asm_context_sources : asm/make_i386_sysv_elf_gas.S asm/jump_i386_sysv_elf_gas.S : 32 x86 elf qcc ; alias asm_context_sources : asm/make_i386_sysv_elf_gas.S asm/jump_i386_sysv_elf_gas.S : 32 x86 elf intel ; alias asm_context_sources : [ make asm/make_i386_sysv_elf_gas.o : asm/make_i386_sysv_elf_gas.S : @gas ] [ make asm/jump_i386_sysv_elf_gas.o : asm/jump_i386_sysv_elf_gas.S : @gas ] : 32 x86 elf ; alias asm_context_sources : asm/make_i386_sysv_macho_gas.S asm/jump_i386_sysv_macho_gas.S : 32 x86 mach-o darwin darwin ; alias asm_context_sources : asm/make_i386_sysv_macho_gas.S asm/jumjumpysv_macho_gas.S : 32 x86 mach-o darwin intel ; alias asm_context_sources : [ make asm/make_i386_sysv_macho_gas.o : asm/make_i386_sysv_macho_gas.S : @gas ] [ make asm/jump_i386_sysv_macho_gas.o : asm/jump_i386_sysv_macho_gas.S : @gas ] : 32 x86 mach-o darwin ; alias asm_context_sources : asm/make_i386_ms_pe_masm.asm asm/jump_i386_ms_pe_masm.asm dummy.cpp : 32 x86 pe windows intel ; alias asm_context_sources : asm/make_i386_ms_pe_masm.asm asm/jump_i386_ms_pe_masm.asm dummy.cpp : 32 x86 pe windows msvc ; 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 : 32 x86 pe windows ; # X86_64 alias asm_context_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S : 64 x86 elf gcc ; alias asm_context_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S : 64 x86 elf qcc ; alias asm_context_sources : asm/make_x86_64_sysv_elf_gas.S asm/jump_x86_64_sysv_elf_gas.S : 64 x86 elf intel ; alias asm_context_sources : [ make asm/make_x86_64_sysv_elf_gas.o : asm/make_x86_64_sysv_elf_gas.S : @gas ] [ make asm/jump_x86_64_sysv_elf_gas.o : asm/jump_x86_64_sysv_elf_gas.S : @gas ] : 64 x86 elf ; alias asm_context_sources : asm/make_x86_64_sysv_macho_gas.S asm/jump_x86_64_sysv_macho_gas.S : 64 x86 mach-o darwin darwin ; alias asm_context_sources : asm/make_x86_64_sysv_macho_gas.S asm/jump_x86_64_sysv_macho_gas.S : 64 x86 mach-o darwin intel ; alias asm_context_sources : [ make asm/make_x86_64_sysv_macho_gas.o : asm/make_x86_64_sysv_macho_gas.S : @gas ] [ make asm/jump_x86_64_sysv_macho_gas.o : asm/jump_x86_64_sysv_macho_gas.S : @gas ] : 64 x86 mach-o darwin ; alias asm_context_sources : asm/make_x86_64_ms_pe_masm.asm asm/jump_x86_64_ms_pe_masm.asm dummy.cpp : 64 x86 pe windows intel ; alias asm_context_sources : asm/make_x86_64_ms_pe_masm.asm asm/jump_x86_64_ms_pe_masm.asm dummy.cpp : 64 x86 pe windows msvc ; 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 : 64 x86 pe windows ; alias asm_context_sources : unsupported.cpp ; explicit asm_context_sources ; alias select_asm_context_sources : asm_context_sources : [ architecture.architecture ] [ architecture.address-model ] ; lib boost_context : select_asm_context_sources : shared:BOOST_CONTEXT_DYN_LINK=1 ; boost-install boost_context ;