2 # Boost.Context Library Build Jamfile
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)
16 feature.feature segmented-stacks : on : optional propagated composite ;
17 feature.compose <segmented-stacks>on : <define>BOOST_USE_SEGMENTED_STACKS ;
19 feature.feature valgrind : on : optional propagated composite ;
20 feature.compose <valgrind>on : <define>BOOST_USE_VALGRIND ;
22 feature.feature context-switch : cc ec : optional propagated composite ;
23 feature.compose <context-switch>ec : <define>BOOST_USE_EXECUTION_CONTEXT ;
27 <toolset>gcc,<segmented-stacks>on:<cxxflags>-fsplit-stack
28 <toolset>gcc,<segmented-stacks>on:<cxxflags>-DBOOST_USE_SEGMENTED_STACKS
29 <toolset>gcc,<segmented-stacks>on:<linkflags>"-static-libgcc"
30 <toolset>clang,<segmented-stacks>on:<cxxflags>-fsplit-stack
31 <toolset>clang,<segmented-stacks>on:<cxxflags>-DBOOST_USE_SEGMENTED_STACKS
32 <toolset>clang,<segmented-stacks>on:<linkflags>"-static-libgcc"
33 <toolset>intel,<link>shared:<define>BOOST_CONTEXT_EXPORT=EXPORT
34 <toolset>intel,<link>static:<define>BOOST_CONTEXT_EXPORT=
35 <toolset>msvc,<link>shared:<define>BOOST_CONTEXT_EXPORT=EXPORT
36 <toolset>msvc,<link>static:<define>BOOST_CONTEXT_EXPORT=
37 <link>shared:<define>BOOST_CONTEXT_DYN_LINK=1
38 <define>BOOST_CONTEXT_SOURCE
41 <link>shared:<define>BOOST_CONTEXT_DYN_LINK=1
42 <optimization>speed:<define>BOOST_DISABLE_ASSERTS
43 <variant>release:<define>BOOST_DISABLE_ASSERTS
44 : source-location ../src
47 local rule default_binary_format ( )
50 if [ os.name ] = "NT" { tmp = pe ; }
51 else if [ os.name ] = "CYGWIN" { tmp = pe ; }
52 else if [ os.name ] = "AIX" { tmp = xcoff ; }
53 else if [ os.name ] = "MACOSX" { tmp = mach-o ; }
57 feature.feature binary-format
64 feature.set-default binary-format : [ default_binary_format ] ;
67 local rule default_abi ( )
70 if [ os.name ] = "NT" { tmp = ms ; }
71 else if [ os.name ] = "CYGWIN" { tmp = ms ; }
72 else if [ os.platform ] = "ARM" { tmp = aapcs ; }
73 else if [ os.platform ] = "MIPS" { tmp = o32 ; }
89 feature.set-default abi : [ default_abi ] ;
94 cpp -x assembler-with-cpp "$(>)" | as --32 -o "$(<)"
99 cpp -x assembler-with-cpp "$(>)" | as --64 -o "$(<)"
104 cpp -x assembler-with-cpp "$(>)" | as --x32 -o "$(<)"
109 cpp -x assembler-with-cpp "$(>)" | as -o "$(<)"
119 ml /c /Fo"$(<)" "$(>)"
124 ml64 /c /Fo"$(<)" "$(>)"
128 rule configure ( properties * )
132 # if ( ! ( <toolset>gcc in $(properties)
133 # || <toolset>intel in $(properties)
134 # || <toolset>msvc in $(properties) ) )
136 # result = <build>no ;
137 # ECHO "toolset not supported" ;
145 alias asm_context_sources
146 : [ make asm/make_arm_aapcs_elf_gas.o : asm/make_arm_aapcs_elf_gas.S : @gas32 ]
147 [ make asm/jump_arm_aapcs_elf_gas.o : asm/jump_arm_aapcs_elf_gas.S : @gas32 ]
148 [ make asm/ontop_arm_aapcs_elf_gas.o : asm/ontop_arm_aapcs_elf_gas.S : @gas32 ]
155 alias asm_context_sources
156 : asm/make_arm_aapcs_elf_gas.S
157 asm/jump_arm_aapcs_elf_gas.S
158 asm/ontop_arm_aapcs_elf_gas.S
166 alias asm_context_sources
167 : asm/make_arm_aapcs_elf_gas.S
168 asm/jump_arm_aapcs_elf_gas.S
169 asm/ontop_arm_aapcs_elf_gas.S
177 alias asm_context_sources
178 : asm/make_arm_aapcs_elf_gas.S
179 asm/jump_arm_aapcs_elf_gas.S
180 asm/ontop_arm_aapcs_elf_gas.S
188 alias asm_context_sources
189 : [ make asm/make_arm_aapcs_macho_gas.o : asm/make_arm_aapcs_macho_gas.S : @gas32 ]
190 [ make asm/jump_arm_aapcs_macho_gas.o : asm/jump_arm_aapcs_macho_gas.S : @gas32 ]
191 [ make asm/ontop_arm_aapcs_macho_gas.o : asm/ontop_arm_aapcs_macho_gas.S : @gas32 ]
195 <binary-format>mach-o
198 alias asm_context_sources
199 : asm/make_arm_aapcs_macho_gas.S
200 asm/jump_arm_aapcs_macho_gas.S
201 asm/ontop_arm_aapcs_macho_gas.S
205 <binary-format>mach-o
209 alias asm_context_sources
210 : asm/make_arm_aapcs_macho_gas.S
211 asm/jump_arm_aapcs_macho_gas.S
212 asm/ontop_arm_aapcs_macho_gas.S
216 <binary-format>mach-o
220 alias asm_context_sources
221 : [ make asm/make_arm_aapcs_pe_armasm.o : asm/make_arm_aapcs_pe_armasm.asm : @armasm ]
222 [ make asm/jump_arm_aapcs_pe_armasm.o : asm/jump_arm_aapcs_pe_armasm.asm : @armasm ]
223 [ make asm/ontop_arm_aapcs_pe_armasm.o : asm/ontop_arm_aapcs_pe_armasm.asm : @armasm ]
231 alias asm_context_sources
232 : asm/make_arm_aapcs_pe_armasm.asm
233 asm/jump_arm_aapcs_pe_armasm.asm
234 asm/ontop_arm_aapcs_pe_armasm.asm
245 alias asm_context_sources
246 : [ make asm/make_arm64_aapcs_elf_gas.o : asm/make_arm64_aapcs_elf_gas.S : @gas64 ]
247 [ make asm/jump_arm64_aapcs_elf_gas.o : asm/jump_arm64_aapcs_elf_gas.S : @gas64 ]
248 [ make asm/ontop_arm64_aapcs_elf_gas.o : asm/ontop_arm64_aapcs_elf_gas.S : @gas64 ]
255 alias asm_context_sources
256 : asm/make_arm64_aapcs_elf_gas.S
257 asm/jump_arm64_aapcs_elf_gas.S
258 asm/ontop_arm64_aapcs_elf_gas.S
266 alias asm_context_sources
267 : asm/make_arm64_aapcs_elf_gas.S
268 asm/jump_arm64_aapcs_elf_gas.S
269 asm/ontop_arm64_aapcs_elf_gas.S
278 alias asm_context_sources
279 : [ make asm/make_arm64_aapcs_macho_gas.o : asm/make_arm64_aapcs_macho_gas.S : @gas64 ]
280 [ make asm/jump_arm64_aapcs_macho_gas.o : asm/jump_arm64_aapcs_macho_gas.S : @gas64 ]
281 [ make asm/ontop_arm64_aapcs_macho_gas.o : asm/ontop_arm64_aapcs_macho_gas.S : @gas64 ]
285 <binary-format>mach-o
288 alias asm_context_sources
289 : asm/make_arm64_aapcs_macho_gas.S
290 asm/jump_arm64_aapcs_macho_gas.S
291 asm/ontop_arm64_aapcs_macho_gas.S
295 <binary-format>mach-o
299 alias asm_context_sources
300 : asm/make_arm64_aapcs_macho_gas.S
301 asm/jump_arm64_aapcs_macho_gas.S
302 asm/ontop_arm64_aapcs_macho_gas.S
306 <binary-format>mach-o
312 alias asm_context_sources
313 : [ make asm/make_mips32_o32_elf_gas.o : asm/make_mips32_o32_elf_gas.S : @gas32 ]
314 [ make asm/jump_mips32_o32_elf_gas.o : asm/jump_mips32_o32_elf_gas.S : @gas32 ]
315 [ make asm/ontop_mips32_o32_elf_gas.o : asm/ontop_mips32_o32_elf_gas.S : @gas32 ]
322 alias asm_context_sources
323 : asm/make_mips32_o32_elf_gas.S
324 asm/jump_mips32_o32_elf_gas.S
325 asm/ontop_mips32_o32_elf_gas.S
333 alias asm_context_sources
334 : asm/make_mips32_o32_elf_gas.S
335 asm/jump_mips32_o32_elf_gas.S
336 asm/ontop_mips32_o32_elf_gas.S
345 # POWERPC_32/SYSV/ELF
346 alias asm_context_sources
347 : [ make asm/make_ppc32_sysv_elf_gas.o : asm/make_ppc32_sysv_elf_gas.S : @gas32 ]
348 [ make asm/jump_ppc32_sysv_elf_gas.o : asm/jump_ppc32_sysv_elf_gas.S : @gas32 ]
349 [ make asm/ontop_ppc32_sysv_elf_gas.o : asm/ontop_ppc32_sysv_elf_gas.S : @gas32 ]
356 alias asm_context_sources
357 : asm/make_ppc32_sysv_elf_gas.S
358 asm/jump_ppc32_sysv_elf_gas.S
359 asm/ontop_ppc32_sysv_elf_gas.S
367 alias asm_context_sources
368 : asm/make_ppc32_sysv_elf_gas.S
369 asm/jump_ppc32_sysv_elf_gas.S
370 asm/ontop_ppc32_sysv_elf_gas.S
377 # POWERPC_32/SYSV/MACH-O
378 alias asm_context_sources
379 : [ make asm/make_ppc32_sysv_macho_gas.o : asm/make_ppc32_sysv_macho_gas.S : @gas32 ]
380 [ make asm/jump_ppc32_sysv_macho_gas.o : asm/jump_ppc32_sysv_macho_gas.S : @gas32 ]
381 [ make asm/ontop_ppc32_sysv_macho_gas.o : asm/ontop_ppc32_sysv_macho_gas.S : @gas32 ]
385 <binary-format>mach-o
388 alias asm_context_sources
389 : asm/make_ppc32_sysv_macho_gas.S
390 asm/jump_ppc32_sysv_macho_gas.S
391 asm/ontop_ppc32_sysv_macho_gas.S
395 <binary-format>mach-o
399 alias asm_context_sources
400 : asm/make_ppc32_sysv_macho_gas.S
401 asm/jump_ppc32_sysv_macho_gas.S
402 asm/ontop_ppc32_sysv_macho_gas.S
406 <binary-format>mach-o
409 #POWERPC_32/SYSV/XCOFF
410 alias asm_context_sources
411 : [ make asm/make_ppc32_sysv_xcoff_gas.o : asm/make_ppc32_sysv_xcoff_gas.S : @gas ]
412 [ make asm/jump_ppc32_sysv_xcoff_gas.o : asm/jump_ppc32_sysv_xcoff_gas.S : @gas ]
413 [ make asm/ontop_ppc32_sysv_xcoff_gas.o : asm/ontop_ppc32_sysv_xcoff_gas.S : @gas ]
420 alias asm_context_sources
421 : asm/make_ppc32_sysv_xcoff_gas.S
422 asm/jump_ppc32_sysv_xcoff_gas.S
423 asm/ontop_ppc32_sysv_xcoff_gas.S
431 alias asm_context_sources
432 : asm/make_ppc32_sysv_xcoff_gas.S
433 asm/jump_ppc32_sysv_xcoff_gas.S
434 asm/ontop_ppc32_sysv_xcoff_gas.S
443 # POWERPC_64/SYSV/ELF
444 alias asm_context_sources
445 : [ make asm/make_ppc64_sysv_elf_gas.o : asm/make_ppc64_sysv_elf_gas.S : @gas64 ]
446 [ make asm/jump_ppc64_sysv_elf_gas.o : asm/jump_ppc64_sysv_elf_gas.S : @gas64 ]
447 [ make asm/ontop_ppc64_sysv_elf_gas.o : asm/ontop_ppc64_sysv_elf_gas.S : @gas64 ]
454 alias asm_context_sources
455 : asm/make_ppc64_sysv_elf_gas.S
456 asm/jump_ppc64_sysv_elf_gas.S
457 asm/ontop_ppc64_sysv_elf_gas.S
465 alias asm_context_sources
466 : asm/make_ppc64_sysv_elf_gas.S
467 asm/jump_ppc64_sysv_elf_gas.S
468 asm/ontop_ppc64_sysv_elf_gas.S
475 # POWERPC_64/SYSV/MACH-O
476 alias asm_context_sources
477 : [ make asm/make_ppc64_sysv_macho_gas.o : asm/make_ppc64_sysv_macho_gas.S : @gas ]
478 [ make asm/jump_ppc64_sysv_macho_gas.o : asm/jump_ppc64_sysv_macho_gas.S : @gas ]
479 [ make asm/ontop_ppc64_sysv_macho_gas.o : asm/ontop_ppc64_sysv_macho_gas.S : @gas ]
484 <binary-format>mach-o
487 alias asm_context_sources
488 : asm/make_ppc64_sysv_macho_gas.S
489 asm/jump_ppc64_sysv_macho_gas.S
490 asm/ontop_ppc64_sysv_macho_gas.S
495 <binary-format>mach-o
499 alias asm_context_sources
500 : asm/make_ppc64_sysv_macho_gas.S
501 asm/jump_ppc64_sysv_macho_gas.S
502 asm/ontop_ppc64_sysv_macho_gas.S
507 <binary-format>mach-o
510 # POWERPC_64/SYSV/XCOFF
511 alias asm_context_sources
512 : [ make asm/make_ppc64_sysv_xcoff_gas.o : asm/make_ppc64_sysv_xcoff_gas.S : @gas ]
513 [ make asm/jump_ppc64_sysv_xcoff_gas.o : asm/jump_ppc64_sysv_xcoff_gas.S : @gas ]
514 [ make asm/ontop_ppc64_sysv_xcoff_gas.o : asm/ontop_ppc64_sysv_xcoff_gas.S : @gas ]
521 alias asm_context_sources
522 : asm/make_ppc64_sysv_xcoff_gas.S
523 asm/jump_ppc64_sysv_xcoff_gas.S
524 asm/ontop_ppc64_sysv_xcoff_gas.S
532 alias asm_context_sources
533 : asm/make_ppc64_sysv_xcoff_gas.S
534 asm/jump_ppc64_sysv_xcoff_gas.S
535 asm/ontop_ppc64_sysv_xcoff_gas.S
544 # POWERPC_32_64/SYSV/MACH-O
545 alias asm_context_sources
546 : asm/make_ppc32_ppc64_sysv_macho_gas.S
547 asm/jump_ppc32_ppc64_sysv_macho_gas.S
548 asm/ontop_ppc32_ppc64_sysv_macho_gas.S
552 <binary-format>mach-o
557 alias asm_context_sources
558 : [ make asm/make_i386_sysv_elf_gas.o : asm/make_i386_sysv_elf_gas.S : @gas32 ]
559 [ make asm/jump_i386_sysv_elf_gas.o : asm/jump_i386_sysv_elf_gas.S : @gas32 ]
560 [ make asm/ontop_i386_sysv_elf_gas.o : asm/ontop_i386_sysv_elf_gas.S : @gas32 ]
567 alias asm_context_sources
568 : asm/make_i386_sysv_elf_gas.S
569 asm/jump_i386_sysv_elf_gas.S
570 asm/ontop_i386_sysv_elf_gas.S
578 alias asm_context_sources
579 : asm/make_i386_sysv_elf_gas.S
580 asm/jump_i386_sysv_elf_gas.S
581 asm/ontop_i386_sysv_elf_gas.S
589 alias asm_context_sources
590 : asm/make_i386_sysv_elf_gas.S
591 asm/jump_i386_sysv_elf_gas.S
592 asm/ontop_i386_sysv_elf_gas.S
600 alias asm_context_sources
601 : [ make asm/make_i386_sysv_macho_gas.o : asm/make_i386_sysv_macho_gas.S : @gas32 ]
602 [ make asm/jump_i386_sysv_macho_gas.o : asm/jump_i386_sysv_macho_gas.S : @gas32 ]
603 [ make asm/ontop_i386_sysv_macho_gas.o : asm/ontop_i386_sysv_macho_gas.S : @gas32 ]
607 <binary-format>mach-o
610 alias asm_context_sources
611 : asm/make_i386_sysv_macho_gas.S
612 asm/jump_i386_sysv_macho_gas.S
613 asm/ontop_i386_sysv_macho_gas.S
617 <binary-format>mach-o
621 alias asm_context_sources
622 : asm/make_i386_sysv_macho_gas.S
623 asm/jump_i386_sysv_macho_gas.S
624 asm/ontop_i386_sysv_macho_gas.S
628 <binary-format>mach-o
632 alias asm_context_sources
633 : [ make asm/make_i386_ms_pe_masm.o : asm/make_i386_ms_pe_masm.asm : @masm ]
634 [ make asm/jump_i386_ms_pe_masm.o : asm/jump_i386_ms_pe_masm.asm : @masm ]
635 [ make asm/ontop_i386_ms_pe_masm.o : asm/ontop_i386_ms_pe_masm.asm : @masm ]
643 alias asm_context_sources
644 : asm/make_i386_ms_pe_gas.asm
645 asm/jump_i386_ms_pe_gas.asm
646 asm/ontop_i386_ms_pe_gas.asm
655 alias asm_context_sources
656 : asm/make_i386_ms_pe_gas.asm
657 asm/jump_i386_ms_pe_gas.asm
658 asm/ontop_i386_ms_pe_gas.asm
667 alias asm_context_sources
668 : asm/make_i386_ms_pe_masm.asm
669 asm/jump_i386_ms_pe_masm.asm
670 asm/ontop_i386_ms_pe_masm.asm
679 alias asm_context_sources
680 : asm/make_i386_ms_pe_masm.asm
681 asm/jump_i386_ms_pe_masm.asm
682 asm/ontop_i386_ms_pe_masm.asm
693 alias asm_context_sources
694 : [ make asm/make_x86_64_sysv_elf_gas.o : asm/make_x86_64_sysv_elf_gas.S : @gas64 ]
695 [ make asm/jump_x86_64_sysv_elf_gas.o : asm/jump_x86_64_sysv_elf_gas.S : @gas64 ]
696 [ make asm/ontop_x86_64_sysv_elf_gas.o : asm/ontop_x86_64_sysv_elf_gas.S : @gas64 ]
703 alias asm_context_sources
704 : asm/make_x86_64_sysv_elf_gas.S
705 asm/jump_x86_64_sysv_elf_gas.S
706 asm/ontop_x86_64_sysv_elf_gas.S
714 alias asm_context_sources
715 : asm/make_x86_64_sysv_elf_gas.S
716 asm/jump_x86_64_sysv_elf_gas.S
717 asm/ontop_x86_64_sysv_elf_gas.S
725 alias asm_context_sources
726 : asm/make_x86_64_sysv_elf_gas.S
727 asm/jump_x86_64_sysv_elf_gas.S
728 asm/ontop_x86_64_sysv_elf_gas.S
736 alias asm_context_sources
737 : [ make asm/make_x86_64_sysv_macho_gas.o : asm/make_x86_64_sysv_macho_gas.S : @gas64 ]
738 [ make asm/jump_x86_64_sysv_macho_gas.o : asm/jump_x86_64_sysv_macho_gas.S : @gas64 ]
739 [ make asm/ontop_x86_64_sysv_macho_gas.o : asm/ontop_x86_64_sysv_macho_gas.S : @gas64 ]
743 <binary-format>mach-o
746 alias asm_context_sources
747 : asm/make_x86_64_sysv_macho_gas.S
748 asm/jump_x86_64_sysv_macho_gas.S
749 asm/ontop_x86_64_sysv_macho_gas.S
753 <binary-format>mach-o
757 alias asm_context_sources
758 : asm/make_x86_64_sysv_macho_gas.S
759 asm/jump_x86_64_sysv_macho_gas.S
760 asm/ontop_x86_64_sysv_macho_gas.S
764 <binary-format>mach-o
768 alias asm_context_sources
769 : asm/make_x86_64_sysv_macho_gas.S
770 asm/jump_x86_64_sysv_macho_gas.S
771 asm/ontop_x86_64_sysv_macho_gas.S
775 <binary-format>mach-o
779 alias asm_context_sources
780 : [ make asm/make_x86_64_ms_pe_masm.o : asm/make_x86_64_ms_pe_masm.asm : @masm64 ]
781 [ make asm/jump_x86_64_ms_pe_masm.o : asm/jump_x86_64_ms_pe_masm.asm : @masm64 ]
782 [ make asm/ontop_x86_64_ms_pe_masm.o : asm/ontop_x86_64_ms_pe_masm.asm : @masm64 ]
790 alias asm_context_sources
791 : asm/make_x86_64_ms_pe_gas.asm
792 asm/jump_x86_64_ms_pe_gas.asm
793 asm/ontop_x86_64_ms_pe_gas.asm
802 alias asm_context_sources
803 : asm/make_x86_64_ms_pe_gas.asm
804 asm/jump_x86_64_ms_pe_gas.asm
805 asm/ontop_x86_64_ms_pe_gas.asm
814 alias asm_context_sources
815 : asm/make_x86_64_ms_pe_masm.asm
816 asm/jump_x86_64_ms_pe_masm.asm
817 asm/ontop_x86_64_ms_pe_masm.asm
826 alias asm_context_sources
827 : asm/make_x86_64_ms_pe_masm.asm
828 asm/jump_x86_64_ms_pe_masm.asm
829 asm/ontop_x86_64_ms_pe_masm.asm
838 alias asm_context_sources
839 : [ make asm/make_x86_64_sysv_elf_gas.o : asm/make_x86_64_sysv_elf_gas.S : @gas64 ]
840 [ make asm/jump_x86_64_sysv_elf_gas.o : asm/jump_x86_64_sysv_elf_gas.S : @gas64 ]
841 [ make asm/ontop_x86_64_sysv_elf_gas.o : asm/ontop_x86_64_sysv_elf_gas.S : @gas64 ]
848 alias asm_context_sources
849 : asm/make_x86_64_sysv_elf_gas.S
850 asm/jump_x86_64_sysv_elf_gas.S
851 asm/ontop_x86_64_sysv_elf_gas.S
859 alias asm_context_sources
860 : asm/make_x86_64_sysv_elf_gas.S
861 asm/jump_x86_64_sysv_elf_gas.S
862 asm/ontop_x86_64_sysv_elf_gas.S
870 alias asm_context_sources
871 : asm/make_x86_64_sysv_elf_gas.S
872 asm/jump_x86_64_sysv_elf_gas.S
873 asm/ontop_x86_64_sysv_elf_gas.S
882 alias asm_context_sources
883 : asm/make_i386_x86_64_sysv_macho_gas.S
884 asm/jump_i386_x86_64_sysv_macho_gas.S
885 asm/ontop_i386_x86_64_sysv_macho_gas.S
889 <binary-format>mach-o
893 alias asm_context_sources
894 : asm/make_combined_sysv_macho_gas.S
895 asm/jump_combined_sysv_macho_gas.S
896 asm/ontop_combined_sysv_macho_gas.S
898 <architecture>combined
899 <binary-format>mach-o
903 alias asm_context_sources
907 explicit asm_context_sources ;
909 obj cxx11_hdr_mutex_check : ../build/cxx11_hdr_mutex.cpp ;
910 explicit cxx11_hdr_mutex_check ;
911 local cxx11_mutex = [ check-target-builds
912 cxx11_hdr_mutex_check "C++11 mutex"
914 : <library>/boost/thread//boost_thread
917 alias stack_traits_sources
918 : windows/stack_traits.cpp
924 alias stack_traits_sources
925 : posix/stack_traits.cpp
931 explicit stack_traits_sources ;
935 : asm_context_sources
937 execution_context.cpp
940 boost-install boost_context ;