# 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=1 SOLARIS:_XOPEN_SOURCE_EXTENDED=1 : 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 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 : aapcs arm elf gcc ; alias asm_context_sources : asm/make_arm_aapcs_elf_gas.S asm/jump_arm_aapcs_elf_gas.S : aapcs arm elf qcc ; 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 ] : aapcs arm elf ; # MIPS 32bit alias asm_context_sources : asm/make_mips32_o32_elf_gas.S asm/jump_mips32_o32_elf_gas.S : o32 mips1 elf gcc ; alias asm_context_sources : asm/make_mips32_o32_elf_gas.S asm/jump_mips32_o32_elf_gas.S : o32 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 ] : o32 mips1 elf ; # POWERPC 32bit alias asm_context_sources : asm/make_ppc32_sysv_elf_gas.S asm/jump_ppc32_sysv_elf_gas.S : sysv 32 power elf gcc ; alias asm_context_sources : asm/make_ppc32_sysv_elf_gas.S asm/jump_ppc32_sysv_elf_gas.S : sysv 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 ] : sysv 32 power elf ; # POWERPC 64bit alias asm_context_sources : asm/make_ppc64_sysv_elf_gas.S asm/jump_ppc64_sysv_elf_gas.S : sysv 64 power elf gcc ; alias asm_context_sources : asm/make_ppc64_sysv_elf_gas.S asm/jump_ppc64_sysv_elf_gas.S : sysv 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 ] : sysv 64 power elf ; # I386 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 qcc ; alias asm_context_sources : asm/make_i386_sysv_elf_gas.S asm/jump_i386_sysv_elf_gas.S : sysv 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 ] : sysv 32 x86 elf ; alias asm_context_sources : asm/make_i386_sysv_macho_gas.S asm/jump_i386_sysv_macho_gas.S : sysv 32 x86 mach-o darwin gcc ; alias asm_context_sources : asm/make_i386_sysv_macho_gas.S asm/jump_i386_sysv_macho_gas.S : sysv 32 x86 mach-o darwin darwin ; alias asm_context_sources : asm/make_i386_sysv_macho_gas.S asm/jumjumpysv_macho_gas.S : sysv 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 ] : sysv 32 x86 mach-o darwin ; alias asm_context_sources : asm/make_i386_ms_pe_masm.asm asm/jump_i386_ms_pe_masm.asm : ms 32 x86 pe windows intel ; alias asm_context_sources : asm/make_i386_ms_pe_masm.asm asm/jump_i386_ms_pe_masm.asm : ms 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 ] : ms 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 : 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 qcc ; 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 ; 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 ] : sysv 64 x86 elf ; 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 gcc ; 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 darwin ; 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 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 ] : sysv 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 : ms 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 : ms 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 ] : ms 64 x86 pe windows ; explicit asm_context_sources ; alias select_asm_context_sources : asm_context_sources : [ architecture.architecture ] [ architecture.address-model ] ; alias context_sources : fcontext.cpp seh.cpp guarded_stack_allocator_windows.cpp utils_windows.cpp : windows ; alias context_sources : fcontext.cpp guarded_stack_allocator_posix.cpp utils_posix.cpp ; explicit context_sources ; lib boost_context : select_asm_context_sources context_sources : shared:BOOST_CONTEXT_DYN_LINK=1 ; boost-install boost_context ;