| 1 |
|
|---|
| 2 | # Boost.Context Library Build Jamfile
|
|---|
| 3 |
|
|---|
| 4 | # Copyright Oliver Kowalke 2009.
|
|---|
| 5 | # Distributed under the Boost Software License, Version 1.0.
|
|---|
| 6 | # (See accompanying file LICENSE_1_0.txt or copy at
|
|---|
| 7 | # http://www.boost.org/LICENSE_1_0.txt)
|
|---|
| 8 |
|
|---|
| 9 | import common ;
|
|---|
| 10 | import feature ;
|
|---|
| 11 | import indirect ;
|
|---|
| 12 | import modules ;
|
|---|
| 13 | import os ;
|
|---|
| 14 | import toolset ;
|
|---|
| 15 | import architecture ;
|
|---|
| 16 |
|
|---|
| 17 | project boost/context
|
|---|
| 18 | : requirements
|
|---|
| 19 | <os>SOLARIS:<define>_XOPEN_SOURCE=600
|
|---|
| 20 | <link>shared:<define>BOOST_CONTEXT_DYN_LINK=1
|
|---|
| 21 | <define>BOOST_CONTEXT_SOURCE
|
|---|
| 22 | : usage-requirements
|
|---|
| 23 | <link>shared:<define>BOOST_CONTEXT_DYN_LINK=1
|
|---|
| 24 | : source-location ../src
|
|---|
| 25 | ;
|
|---|
| 26 |
|
|---|
| 27 | local rule default_binary_format ( )
|
|---|
| 28 | {
|
|---|
| 29 | local tmp = elf ;
|
|---|
| 30 | if [ os.name ] = "MACOSX" { tmp = mach-o ; }
|
|---|
| 31 | if [ os.name ] = "NT" { tmp = pe ; }
|
|---|
| 32 | if [ os.name ] = "AIX" { tmp = xcoff ; }
|
|---|
| 33 | return $(tmp) ;
|
|---|
| 34 | }
|
|---|
| 35 |
|
|---|
| 36 | feature.feature binary-format
|
|---|
| 37 | : elf
|
|---|
| 38 | mach-o
|
|---|
| 39 | pe
|
|---|
| 40 | xcoff
|
|---|
| 41 | : propagated
|
|---|
| 42 | ;
|
|---|
| 43 | feature.set-default binary-format : [ default_binary_format ] ;
|
|---|
| 44 |
|
|---|
| 45 |
|
|---|
| 46 | local rule default_abi ( )
|
|---|
| 47 | {
|
|---|
| 48 | local tmp = sysv ;
|
|---|
| 49 | if [ os.name ] = "NT" { tmp = ms ; }
|
|---|
| 50 | else if [ os.platform ] = "ARM" { tmp = aapcs ; }
|
|---|
| 51 | else if [ os.platform ] = "MIPS" { tmp = o32 ; }
|
|---|
| 52 | return $(tmp) ;
|
|---|
| 53 | }
|
|---|
| 54 |
|
|---|
| 55 | feature.feature abi
|
|---|
| 56 | : aapcs
|
|---|
| 57 | eabi
|
|---|
| 58 | ms
|
|---|
| 59 | n32
|
|---|
| 60 | n64
|
|---|
| 61 | o32
|
|---|
| 62 | o64
|
|---|
| 63 | sysv
|
|---|
| 64 | x32
|
|---|
| 65 | : propagated
|
|---|
| 66 | ;
|
|---|
| 67 | feature.set-default abi : [ default_abi ] ;
|
|---|
| 68 |
|
|---|
| 69 |
|
|---|
| 70 | actions gas
|
|---|
| 71 | {
|
|---|
| 72 | cpp -x assembler-with-cpp "$(>)" | as -am -o "$(<)"
|
|---|
| 73 | }
|
|---|
| 74 |
|
|---|
| 75 | actions armasm
|
|---|
| 76 | {
|
|---|
| 77 | armasm "$(>)" "$(<)"
|
|---|
| 78 | }
|
|---|
| 79 |
|
|---|
| 80 | actions masm
|
|---|
| 81 | {
|
|---|
| 82 | ml /c /Fo"$(<)" "$(>)"
|
|---|
| 83 | }
|
|---|
| 84 |
|
|---|
| 85 | actions masm64
|
|---|
| 86 | {
|
|---|
| 87 | ml64 /c /Fo"$(<)" "$(>)"
|
|---|
| 88 | }
|
|---|
| 89 |
|
|---|
| 90 |
|
|---|
| 91 | rule configure ( properties * )
|
|---|
| 92 | {
|
|---|
| 93 | local result ;
|
|---|
| 94 |
|
|---|
| 95 | # if ( ! ( <toolset>gcc in $(properties)
|
|---|
| 96 | # || <toolset>intel in $(properties)
|
|---|
| 97 | # || <toolset>msvc in $(properties) ) )
|
|---|
| 98 | # {
|
|---|
| 99 | # result = <build>no ;
|
|---|
| 100 | # ECHO "toolset not supported" ;
|
|---|
| 101 | # }
|
|---|
| 102 |
|
|---|
| 103 | return $(result) ;
|
|---|
| 104 | }
|
|---|
| 105 |
|
|---|
| 106 | # ARM
|
|---|
| 107 | alias asm_context_sources
|
|---|
| 108 | : [ make asm/make_arm_aapcs_elf_gas.o : asm/make_arm_aapcs_elf_gas.S : @gas ]
|
|---|
| 109 | [ make asm/jump_arm_aapcs_elf_gas.o : asm/jump_arm_aapcs_elf_gas.S : @gas ]
|
|---|
| 110 | : <architecture>arm
|
|---|
| 111 | <binary-format>elf
|
|---|
| 112 | ;
|
|---|
| 113 |
|
|---|
| 114 | alias asm_context_sources
|
|---|
| 115 | : [ make asm/make_arm_aapcs_macho_gas.o : asm/make_arm_aapcs_macho_gas.S : @gas ]
|
|---|
| 116 | [ make asm/jump_arm_aapcs_macho_gas.o : asm/jump_arm_aapcs_macho_gas.S : @gas ]
|
|---|
| 117 | : <architecture>arm
|
|---|
| 118 | <binary-format>mach-o
|
|---|
| 119 | ;
|
|---|
| 120 |
|
|---|
| 121 | alias asm_context_sources
|
|---|
| 122 | : [ make asm/make_arm_aapcs_pe_armasm.o : asm/make_arm_aapcs_pe_armasm.asm : @armasm ]
|
|---|
| 123 | [ make asm/jump_arm_aapcs_pe_armasm.o : asm/jump_arm_aapcs_pe_armasm.asm : @armasm ]
|
|---|
| 124 | untested.cpp
|
|---|
| 125 | : <architecture>arm
|
|---|
| 126 | <binary-format>pe
|
|---|
| 127 | ;
|
|---|
| 128 |
|
|---|
| 129 | # MIPS
|
|---|
| 130 | alias asm_context_sources
|
|---|
| 131 | : [ make asm/make_mips32_o32_elf_gas.o : asm/make_mips32_o32_elf_gas.S : @gas ]
|
|---|
| 132 | [ make asm/jump_mips32_o32_elf_gas.o : asm/jump_mips32_o32_elf_gas.S : @gas ]
|
|---|
| 133 | : <architecture>mips1
|
|---|
| 134 | <binary-format>elf
|
|---|
| 135 | ;
|
|---|
| 136 |
|
|---|
| 137 | # POWERPC_32
|
|---|
| 138 | alias asm_context_sources
|
|---|
| 139 | : [ make asm/make_ppc32_sysv_elf_gas.o : asm/make_ppc32_sysv_elf_gas.S : @gas ]
|
|---|
| 140 | [ make asm/jump_ppc32_sysv_elf_gas.o : asm/jump_ppc32_sysv_elf_gas.S : @gas ]
|
|---|
| 141 | : <address-model>32
|
|---|
| 142 | <architecture>power
|
|---|
| 143 | <binary-format>elf
|
|---|
| 144 | ;
|
|---|
| 145 |
|
|---|
| 146 | alias asm_context_sources
|
|---|
| 147 | : [ make asm/make_ppc32_sysv_macho_gas.o : asm/make_ppc32_sysv_macho_gas.S : @gas ]
|
|---|
| 148 | [ make asm/jump_ppc32_sysv_macho_gas.o : asm/jump_ppc32_sysv_macho_gas.S : @gas ]
|
|---|
| 149 | : <address-model>32
|
|---|
| 150 | <architecture>power
|
|---|
| 151 | <binary-format>mach-o
|
|---|
| 152 | ;
|
|---|
| 153 |
|
|---|
| 154 | alias asm_context_sources
|
|---|
| 155 | : [ make asm/make_ppc32_sysv_xcoff_gas.o : asm/make_ppc32_sysv_xcoff_gas.S : @gas ]
|
|---|
| 156 | [ make asm/jump_ppc32_sysv_xcoff_gas.o : asm/jump_ppc32_sysv_xcoff_gas.S : @gas ]
|
|---|
| 157 | untested.cpp
|
|---|
| 158 | : <address-model>32
|
|---|
| 159 | <architecture>power
|
|---|
| 160 | <binary-format>xcoff
|
|---|
| 161 | ;
|
|---|
| 162 |
|
|---|
| 163 | # POWERPC_64
|
|---|
| 164 | alias asm_context_sources
|
|---|
| 165 | : [ make asm/make_ppc64_sysv_elf_gas.o : asm/make_ppc64_sysv_elf_gas.S : @gas ]
|
|---|
| 166 | [ make asm/jump_ppc64_sysv_elf_gas.o : asm/jump_ppc64_sysv_elf_gas.S : @gas ]
|
|---|
| 167 | : <address-model>64
|
|---|
| 168 | <architecture>power
|
|---|
| 169 | <binary-format>elf
|
|---|
| 170 | ;
|
|---|
| 171 |
|
|---|
| 172 | alias asm_context_sources
|
|---|
| 173 | : [ make asm/make_ppc64_sysv_macho_gas.o : asm/make_ppc64_sysv_macho_gas.S : @gas ]
|
|---|
| 174 | [ make asm/jump_ppc64_sysv_macho_gas.o : asm/jump_ppc64_sysv_macho_gas.S : @gas ]
|
|---|
| 175 | untested.cpp
|
|---|
| 176 | : <address-model>64
|
|---|
| 177 | <architecture>power
|
|---|
| 178 | <binary-format>mach-o
|
|---|
| 179 | ;
|
|---|
| 180 |
|
|---|
| 181 | alias asm_context_sources
|
|---|
| 182 | : [ make asm/make_ppc64_sysv_xcoff_gas.o : asm/make_ppc64_sysv_xcoff_gas.S : @gas ]
|
|---|
| 183 | [ make asm/jump_ppc64_sysv_xcoff_gas.o : asm/jump_ppc64_sysv_xcoff_gas.S : @gas ]
|
|---|
| 184 | untested.cpp
|
|---|
| 185 | : <address-model>64
|
|---|
| 186 | <architecture>power
|
|---|
| 187 | <binary-format>xcoff
|
|---|
| 188 | ;
|
|---|
| 189 |
|
|---|
| 190 | # POWERPC universal
|
|---|
| 191 | alias asm_context_sources
|
|---|
| 192 | : [ make asm/make_ppc32_ppc64_sysv_macho_gas.o : asm/make_ppc32_ppc64_sysv_macho_gas.S : @gas ]
|
|---|
| 193 | [ make asm/jump_ppc32_ppc64_sysv_macho_gas.o : asm/jump_ppc32_ppc64_sysv_macho_gas.S : @gas ]
|
|---|
| 194 | untested.cpp
|
|---|
| 195 | : <address-model>32_64
|
|---|
| 196 | <architecture>power
|
|---|
| 197 | <binary-format>mach-o
|
|---|
| 198 | ;
|
|---|
| 199 |
|
|---|
| 200 | # SPARC
|
|---|
| 201 | alias asm_context_sources
|
|---|
| 202 | : [ make asm/make_sparc_sysv_elf_gas.o : asm/make_sparc_sysv_elf_gas.S : @gas ]
|
|---|
| 203 | [ make asm/jump_sparc_sysv_elf_gas.o : asm/jump_sparc_sysv_elf_gas.S : @gas ]
|
|---|
| 204 | unsupported.cpp
|
|---|
| 205 | : <address-model>32
|
|---|
| 206 | <architecture>sparc
|
|---|
| 207 | <binary-format>elf
|
|---|
| 208 | ;
|
|---|
| 209 |
|
|---|
| 210 | # SPARC_64
|
|---|
| 211 | alias asm_context_sources
|
|---|
| 212 | : [ make asm/make_sparc64_sysv_elf_gas.o : asm/make_sparc64_sysv_elf_gas.S : @gas ]
|
|---|
| 213 | [ make asm/jump_sparc64_sysv_elf_gas.o : asm/jump_sparc64_sysv_elf_gas.S : @gas ]
|
|---|
| 214 | unsupported.cpp
|
|---|
| 215 | : <address-model>64
|
|---|
| 216 | <architecture>sparc
|
|---|
| 217 | <binary-format>elf
|
|---|
| 218 | ;
|
|---|
| 219 |
|
|---|
| 220 | # X86
|
|---|
| 221 | alias asm_context_sources
|
|---|
| 222 | : [ make asm/make_i386_sysv_elf_gas.o : asm/make_i386_sysv_elf_gas.S : @gas ]
|
|---|
| 223 | [ make asm/jump_i386_sysv_elf_gas.o : asm/jump_i386_sysv_elf_gas.S : @gas ]
|
|---|
| 224 | : <address-model>32
|
|---|
| 225 | <architecture>x86
|
|---|
| 226 | <binary-format>elf
|
|---|
| 227 | ;
|
|---|
| 228 |
|
|---|
| 229 | alias asm_context_sources
|
|---|
| 230 | : [ make asm/make_i386_sysv_macho_gas.o : asm/make_i386_sysv_macho_gas.S : @gas ]
|
|---|
| 231 | [ make asm/jump_i386_sysv_macho_gas.o : asm/jump_i386_sysv_macho_gas.S : @gas ]
|
|---|
| 232 | : <address-model>32
|
|---|
| 233 | <architecture>x86
|
|---|
| 234 | <binary-format>mach-o
|
|---|
| 235 | ;
|
|---|
| 236 |
|
|---|
| 237 | alias asm_context_sources
|
|---|
| 238 | : [ make asm/make_i386_ms_pe_masm.o : asm/make_i386_ms_pe_masm.asm : @masm ]
|
|---|
| 239 | [ make asm/jump_i386_ms_pe_masm.o : asm/jump_i386_ms_pe_masm.asm : @masm ]
|
|---|
| 240 | dummy.cpp
|
|---|
| 241 | : <address-model>32
|
|---|
| 242 | <architecture>x86
|
|---|
| 243 | <binary-format>pe
|
|---|
| 244 | ;
|
|---|
| 245 |
|
|---|
| 246 | # X86_64
|
|---|
| 247 | alias asm_context_sources
|
|---|
| 248 | : [ make asm/make_x86_64_sysv_elf_gas.o : asm/make_x86_64_sysv_elf_gas.S : @gas ]
|
|---|
| 249 | [ make asm/jump_x86_64_sysv_elf_gas.o : asm/jump_x86_64_sysv_elf_gas.S : @gas ]
|
|---|
| 250 | : <address-model>64
|
|---|
| 251 | <architecture>x86
|
|---|
| 252 | <binary-format>elf
|
|---|
| 253 | ;
|
|---|
| 254 |
|
|---|
| 255 | alias asm_context_sources
|
|---|
| 256 | : [ make asm/make_x86_64_x32_elf_gas.o : asm/make_x86_64_x32_elf_gas.S : @gas ]
|
|---|
| 257 | [ make asm/jump_x86_64_x32_elf_gas.o : asm/jump_x86_64_x32_elf_gas.S : @gas ]
|
|---|
| 258 | untested.cpp
|
|---|
| 259 | : <address-model>32
|
|---|
| 260 | <architecture>x86
|
|---|
| 261 | <binary-format>elf
|
|---|
| 262 | <abi>x32
|
|---|
| 263 | ;
|
|---|
| 264 |
|
|---|
| 265 | alias asm_context_sources
|
|---|
| 266 | : [ make asm/make_x86_64_sysv_macho_gas.o : asm/make_x86_64_sysv_macho_gas.S : @gas ]
|
|---|
| 267 | [ make asm/jump_x86_64_sysv_macho_gas.o : asm/jump_x86_64_sysv_macho_gas.S : @gas ]
|
|---|
| 268 | : <address-model>64
|
|---|
| 269 | <architecture>x86
|
|---|
| 270 | <binary-format>mach-o
|
|---|
| 271 | ;
|
|---|
| 272 |
|
|---|
| 273 | alias asm_context_sources
|
|---|
| 274 | : [ make asm/make_x86_64_ms_pe_masm.o : asm/make_x86_64_ms_pe_masm.asm : @masm64 ]
|
|---|
| 275 | [ make asm/jump_x86_64_ms_pe_masm.o : asm/jump_x86_64_ms_pe_masm.asm : @masm64 ]
|
|---|
| 276 | dummy.cpp
|
|---|
| 277 | : <address-model>64
|
|---|
| 278 | <architecture>x86
|
|---|
| 279 | <binary-format>pe
|
|---|
| 280 | ;
|
|---|
| 281 |
|
|---|
| 282 | #X86 universal
|
|---|
| 283 | alias asm_context_sources
|
|---|
| 284 | : [ make asm/make_i386_x86_64_sysv_macho_gas.o : asm/make_i386_x86_64_sysv_macho_gas.S : @gas ]
|
|---|
| 285 | [ make asm/jump_i386_x86_64_sysv_macho_gas.o : asm/jump_i386_x86_64_sysv_macho_gas.S : @gas ]
|
|---|
| 286 | untested.cpp
|
|---|
| 287 | : <address-model>32_64
|
|---|
| 288 | <architecture>x86
|
|---|
| 289 | <binary-format>mach-o
|
|---|
| 290 | ;
|
|---|
| 291 |
|
|---|
| 292 | # COMBINED
|
|---|
| 293 | alias asm_context_sources
|
|---|
| 294 | : [ make asm/make_combined_sysv_macho_gas.o : asm/make_combined_sysv_macho_gas.S : @gas ]
|
|---|
| 295 | [ make asm/jump_combined_sysv_macho_gas.o : asm/jump_combined_sysv_macho_gas.S : @gas ]
|
|---|
| 296 | untested.cpp
|
|---|
| 297 | : <architecture>combined
|
|---|
| 298 | <binary-format>mach-o
|
|---|
| 299 | ;
|
|---|
| 300 |
|
|---|
| 301 | alias asm_context_sources
|
|---|
| 302 | : unsupported.cpp
|
|---|
| 303 | ;
|
|---|
| 304 |
|
|---|
| 305 | explicit asm_context_sources ;
|
|---|
| 306 |
|
|---|
| 307 | alias select_asm_context_sources
|
|---|
| 308 | : asm_context_sources
|
|---|
| 309 | : [ architecture.architecture ]
|
|---|
| 310 | [ architecture.address-model ]
|
|---|
| 311 | ;
|
|---|
| 312 |
|
|---|
| 313 | lib boost_context
|
|---|
| 314 | : select_asm_context_sources
|
|---|
| 315 | ;
|
|---|
| 316 |
|
|---|
| 317 | boost-install boost_context ;
|
|---|