• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
9import common ;
10import feature ;
11import indirect ;
12import modules ;
13import os ;
14import toolset ;
15 import ../../config/checks/config : requires ;
16
17feature.feature segmented-stacks : on : optional propagated composite ;
18feature.compose <segmented-stacks>on : <define>BOOST_USE_SEGMENTED_STACKS ;
19
20feature.feature htm : tsx : optional propagated composite ;
21feature.compose <htm>tsx : <define>BOOST_USE_TSX ;
22
23feature.feature valgrind : on : optional propagated composite ;
24feature.compose <valgrind>on : <define>BOOST_USE_VALGRIND ;
25
26project boost/context
27    : requirements
28      <target-os>windows:<define>_WIN32_WINNT=0x0601
29      <target-os>linux,<toolset>gcc,<segmented-stacks>on:<cxxflags>-fsplit-stack
30      <target-os>linux,<toolset>gcc,<segmented-stacks>on:<cxxflags>-DBOOST_USE_SEGMENTED_STACKS
31      <toolset>gcc,<segmented-stacks>on:<linkflags>"-static-libgcc"
32      <toolset>clang,<segmented-stacks>on:<cxxflags>-fsplit-stack
33      <toolset>clang,<segmented-stacks>on:<cxxflags>-DBOOST_USE_SEGMENTED_STACKS
34      <toolset>clang,<segmented-stacks>on:<linkflags>"-static-libgcc"
35      <toolset>intel,<link>shared:<define>BOOST_CONTEXT_EXPORT=EXPORT
36      <toolset>intel,<link>static:<define>BOOST_CONTEXT_EXPORT=
37      <toolset>msvc,<link>shared:<define>BOOST_CONTEXT_EXPORT=EXPORT
38      <toolset>msvc,<link>static:<define>BOOST_CONTEXT_EXPORT=
39      <toolset>clang-win,<link>shared:<define>BOOST_CONTEXT_EXPORT=EXPORT
40      <toolset>clang-win,<link>static:<define>BOOST_CONTEXT_EXPORT=
41      <toolset>embarcadero,<address-model>32,<link>shared:<define>BOOST_CONTEXT_EXPORT=EXPORT
42      <toolset>embarcadero,<address-model>32,<link>static:<define>BOOST_CONTEXT_EXPORT=
43      <toolset>borland,<link>shared:<define>BOOST_CONTEXT_EXPORT=EXPORT
44      <toolset>borland,<link>static:<define>BOOST_CONTEXT_EXPORT=
45      <link>shared:<define>BOOST_CONTEXT_DYN_LINK=1
46      <define>BOOST_CONTEXT_SOURCE
47      <threading>multi
48    : usage-requirements
49      <link>shared:<define>BOOST_CONTEXT_DYN_LINK=1
50      <optimization>speed:<define>BOOST_DISABLE_ASSERTS
51      <variant>release:<define>BOOST_DISABLE_ASSERTS
52    : source-location ../src
53    ;
54
55
56local rule default_binary_format ( )
57{
58    local tmp = elf ;
59    if [ os.name ] = "NT" { tmp = pe ; }
60    else if [ os.name ] = "CYGWIN" { tmp = pe ; }
61    else if [ os.name ] = "AIX" { tmp = xcoff ; }
62    else if [ os.name ] = "MACOSX" { tmp = mach-o ; }
63    return $(tmp) ;
64}
65
66feature.feature binary-format
67   : elf
68     mach-o
69     pe
70     xcoff
71   : propagated
72   ;
73feature.set-default binary-format : [ default_binary_format ] ;
74
75
76local rule default_abi ( )
77{
78    local tmp = sysv ;
79    if [ os.name ] = "NT" { tmp = ms ; }
80    else if [ os.name ] = "CYGWIN" { tmp = ms ; }
81    else if [ os.platform ] = "ARM" { tmp = aapcs ; }
82    else if [ os.platform ] = "MIPS32" { tmp = o32 ; }
83    else if [ os.platform ] = "MIPS64" { tmp = n64 ; }
84    return $(tmp) ;
85}
86
87feature.feature abi
88   : aapcs
89     eabi
90     ms
91     n32
92     n64
93     o32
94     o64
95     sysv
96     x32
97   : propagated
98   ;
99feature.set-default abi : [ default_abi ] ;
100
101
102feature.feature context-impl
103    : fcontext
104      ucontext
105      winfib
106    : propagated
107      composite
108    ;
109feature.set-default context-impl : fcontext ;
110feature.compose <context-impl>ucontext : <define>BOOST_USE_UCONTEXT ;
111feature.compose <context-impl>winfib : <define>BOOST_USE_WINFIB ;
112
113# ARM
114# ARM/AAPCS/ELF
115alias asm_sources
116   : asm/make_arm_aapcs_elf_gas.S
117     asm/jump_arm_aapcs_elf_gas.S
118     asm/ontop_arm_aapcs_elf_gas.S
119   : <abi>aapcs
120     <address-model>32
121     <architecture>arm
122     <binary-format>elf
123     <toolset>clang
124   ;
125
126alias asm_sources
127   : asm/make_arm_aapcs_elf_gas.S
128     asm/jump_arm_aapcs_elf_gas.S
129     asm/ontop_arm_aapcs_elf_gas.S
130   : <abi>aapcs
131     <address-model>32
132     <architecture>arm
133     <binary-format>elf
134     <toolset>gcc
135   ;
136
137alias asm_sources
138   : asm/make_arm_aapcs_elf_gas.S
139     asm/jump_arm_aapcs_elf_gas.S
140     asm/ontop_arm_aapcs_elf_gas.S
141   : <abi>aapcs
142     <address-model>32
143     <architecture>arm
144     <binary-format>elf
145     <toolset>qcc
146   ;
147
148# ARM/AAPCS/MACH-O
149alias asm_sources
150   : asm/make_arm_aapcs_macho_gas.S
151     asm/jump_arm_aapcs_macho_gas.S
152     asm/ontop_arm_aapcs_macho_gas.S
153   : <abi>aapcs
154     <address-model>32
155     <architecture>arm
156     <binary-format>mach-o
157     <toolset>clang
158   ;
159
160alias asm_sources
161   : asm/make_arm_aapcs_macho_gas.S
162     asm/jump_arm_aapcs_macho_gas.S
163     asm/ontop_arm_aapcs_macho_gas.S
164   : <abi>aapcs
165     <address-model>32
166     <architecture>arm
167     <binary-format>mach-o
168     <toolset>darwin
169   ;
170
171# ARM/AAPCS/PE
172alias asm_sources
173   : asm/make_arm_aapcs_pe_armasm.asm
174     asm/jump_arm_aapcs_pe_armasm.asm
175     asm/ontop_arm_aapcs_pe_armasm.asm
176     untested.cpp
177   : <abi>aapcs
178     <address-model>32
179     <architecture>arm
180     <binary-format>pe
181     <toolset>msvc
182   ;
183
184# ARM64
185# ARM64/AAPCS/ELF
186alias asm_sources
187   : asm/make_arm64_aapcs_elf_gas.S
188     asm/jump_arm64_aapcs_elf_gas.S
189     asm/ontop_arm64_aapcs_elf_gas.S
190   : <abi>aapcs
191     <address-model>64
192     <architecture>arm
193     <binary-format>elf
194     <toolset>clang
195   ;
196
197alias asm_sources
198   : asm/make_arm64_aapcs_elf_gas.S
199     asm/jump_arm64_aapcs_elf_gas.S
200     asm/ontop_arm64_aapcs_elf_gas.S
201   : <abi>aapcs
202     <address-model>64
203     <architecture>arm
204     <binary-format>elf
205     <toolset>gcc
206   ;
207
208# ARM64/AAPCS/MACH-O
209alias asm_sources
210   : asm/make_arm64_aapcs_macho_gas.S
211     asm/jump_arm64_aapcs_macho_gas.S
212     asm/ontop_arm64_aapcs_macho_gas.S
213   : <abi>aapcs
214     <address-model>64
215     <architecture>arm
216     <binary-format>mach-o
217     <toolset>clang
218   ;
219
220alias asm_sources
221   : asm/make_arm64_aapcs_macho_gas.S
222     asm/jump_arm64_aapcs_macho_gas.S
223     asm/ontop_arm64_aapcs_macho_gas.S
224   : <abi>aapcs
225     <address-model>64
226     <architecture>arm
227     <binary-format>mach-o
228     <toolset>darwin
229   ;
230
231# MIPS
232# MIPS32/O32/ELF
233alias asm_sources
234   : asm/make_mips32_o32_elf_gas.S
235     asm/jump_mips32_o32_elf_gas.S
236     asm/ontop_mips32_o32_elf_gas.S
237   : <abi>o32
238     <address-model>32
239     <architecture>mips1
240     <binary-format>elf
241     <toolset>clang
242   ;
243
244alias asm_sources
245   : asm/make_mips32_o32_elf_gas.S
246     asm/jump_mips32_o32_elf_gas.S
247     asm/ontop_mips32_o32_elf_gas.S
248   : <abi>o32
249     <address-model>32
250     <architecture>mips1
251     <binary-format>elf
252     <toolset>gcc
253   ;
254
255# MIPS64/N64/ELF
256alias asm_sources
257   : asm/make_mips64_n64_elf_gas.S
258     asm/jump_mips64_n64_elf_gas.S
259     asm/ontop_mips64_n64_elf_gas.S
260   : <abi>n64
261     <address-model>64
262     <architecture>mips1
263     <binary-format>elf
264     <toolset>clang
265   ;
266
267alias asm_sources
268   : asm/make_mips64_n64_elf_gas.S
269     asm/jump_mips64_n64_elf_gas.S
270     asm/ontop_mips64_n64_elf_gas.S
271   : <abi>n64
272     <address-model>64
273     <architecture>mips1
274     <binary-format>elf
275     <toolset>gcc
276   ;
277
278# POWERPC_32
279# POWERPC_32/SYSV/ELF
280alias asm_sources
281   : asm/make_ppc32_sysv_elf_gas.S
282     asm/jump_ppc32_sysv_elf_gas.S
283     asm/ontop_ppc32_sysv_elf_gas.S
284     asm/tail_ppc32_sysv_elf_gas.cpp
285   : <abi>sysv
286     <address-model>32
287     <architecture>power
288     <binary-format>elf
289     <toolset>clang
290   ;
291
292alias asm_sources
293   : asm/make_ppc32_sysv_elf_gas.S
294     asm/jump_ppc32_sysv_elf_gas.S
295     asm/ontop_ppc32_sysv_elf_gas.S
296     asm/tail_ppc32_sysv_elf_gas.cpp
297   : <abi>sysv
298     <address-model>32
299     <architecture>power
300     <binary-format>elf
301     <toolset>gcc
302   ;
303
304alias asm_sources
305   : asm/make_ppc32_sysv_macho_gas.S
306     asm/jump_ppc32_sysv_macho_gas.S
307     asm/ontop_ppc32_sysv_macho_gas.S
308   : <abi>sysv
309     <address-model>32
310     <architecture>power
311     <binary-format>mach-o
312     <toolset>darwin
313   ;
314
315#POWERPC_32/SYSV/XCOFF
316alias asm_sources
317   : asm/make_ppc32_sysv_xcoff_gas.S
318     asm/jump_ppc32_sysv_xcoff_gas.S
319     asm/ontop_ppc32_sysv_xcoff_gas.S
320   : <abi>sysv
321     <address-model>32
322     <architecture>power
323     <binary-format>xcoff
324     <toolset>clang
325   ;
326
327alias asm_sources
328   : asm/make_ppc32_sysv_xcoff_gas.S
329     asm/jump_ppc32_sysv_xcoff_gas.S
330     asm/ontop_ppc32_sysv_xcoff_gas.S
331   : <abi>sysv
332     <address-model>32
333     <architecture>power
334     <binary-format>xcoff
335     <toolset>gcc
336   ;
337
338# POWERPC_64
339# POWERPC_64/SYSV/ELF
340alias asm_sources
341   : asm/make_ppc64_sysv_elf_gas.S
342     asm/jump_ppc64_sysv_elf_gas.S
343     asm/ontop_ppc64_sysv_elf_gas.S
344   : <abi>sysv
345     <address-model>64
346     <architecture>power
347     <binary-format>elf
348     <toolset>clang
349   ;
350
351alias asm_sources
352   : asm/make_ppc64_sysv_elf_gas.S
353     asm/jump_ppc64_sysv_elf_gas.S
354     asm/ontop_ppc64_sysv_elf_gas.S
355   : <abi>sysv
356     <address-model>64
357     <architecture>power
358     <binary-format>elf
359     <toolset>gcc
360   ;
361
362# POWERPC_64/SYSV/MACH-O
363alias asm_sources
364   : asm/make_ppc64_sysv_macho_gas.S
365     asm/jump_ppc64_sysv_macho_gas.S
366     asm/ontop_ppc64_sysv_macho_gas.S
367     untested.cpp
368   : <abi>sysv
369     <address-model>64
370     <architecture>power
371     <binary-format>mach-o
372     <toolset>clang
373   ;
374
375alias asm_sources
376   : asm/make_ppc64_sysv_macho_gas.S
377     asm/jump_ppc64_sysv_macho_gas.S
378     asm/ontop_ppc64_sysv_macho_gas.S
379     untested.cpp
380   : <abi>sysv
381     <address-model>64
382     <architecture>power
383     <binary-format>mach-o
384     <toolset>darwin
385   ;
386
387# POWERPC_64/SYSV/XCOFF
388alias asm_sources
389   : asm/make_ppc64_sysv_xcoff_gas.S
390     asm/jump_ppc64_sysv_xcoff_gas.S
391     asm/ontop_ppc64_sysv_xcoff_gas.S
392   : <abi>sysv
393     <address-model>64
394     <architecture>power
395     <binary-format>xcoff
396     <toolset>clang
397   ;
398
399alias asm_sources
400   : asm/make_ppc64_sysv_xcoff_gas.S
401     asm/jump_ppc64_sysv_xcoff_gas.S
402     asm/ontop_ppc64_sysv_xcoff_gas.S
403   : <abi>sysv
404     <address-model>64
405     <architecture>power
406     <binary-format>xcoff
407     <toolset>gcc
408   ;
409
410# POWERPC universal
411# POWERPC_32_64/SYSV/MACH-O
412alias asm_sources
413   : asm/make_ppc32_ppc64_sysv_macho_gas.S
414     asm/jump_ppc32_ppc64_sysv_macho_gas.S
415     asm/ontop_ppc32_ppc64_sysv_macho_gas.S
416   : <abi>sysv
417     <address-model>32_64
418     <architecture>power
419     <binary-format>mach-o
420   ;
421
422# RISCV64
423# RISCV64/SYSV/ELF
424alias asm_sources
425   : asm/make_riscv64_sysv_elf_gas.S
426     asm/jump_riscv64_sysv_elf_gas.S
427     asm/ontop_riscv64_sysv_elf_gas.S
428   : <abi>sysv
429     <address-model>64
430     <architecture>riscv
431     <binary-format>elf
432     <toolset>gcc
433   ;
434
435# S390X
436# S390X/SYSV/ELF
437alias asm_sources
438   : asm/make_s390x_sysv_elf_gas.S
439     asm/jump_s390x_sysv_elf_gas.S
440     asm/ontop_s390x_sysv_elf_gas.S
441   : <abi>sysv
442     <address-model>64
443     <architecture>s390x
444     <binary-format>elf
445     <toolset>gcc
446   ;
447
448# X86
449# X86/SYSV/ELF
450alias asm_sources
451   : asm/make_i386_sysv_elf_gas.S
452     asm/jump_i386_sysv_elf_gas.S
453     asm/ontop_i386_sysv_elf_gas.S
454   : <abi>sysv
455     <address-model>32
456     <architecture>x86
457     <binary-format>elf
458     <toolset>clang
459   ;
460
461alias asm_sources
462   : asm/make_i386_sysv_elf_gas.S
463     asm/jump_i386_sysv_elf_gas.S
464     asm/ontop_i386_sysv_elf_gas.S
465   : <abi>sysv
466     <address-model>32
467     <architecture>x86
468     <binary-format>elf
469     <toolset>gcc
470   ;
471
472alias asm_sources
473   : asm/make_i386_sysv_elf_gas.S
474     asm/jump_i386_sysv_elf_gas.S
475     asm/ontop_i386_sysv_elf_gas.S
476   : <abi>sysv
477     <address-model>32
478     <architecture>x86
479     <binary-format>elf
480     <toolset>intel
481   ;
482
483# X86/SYSV/MACH-O
484alias asm_sources
485   : asm/make_i386_sysv_macho_gas.S
486     asm/jump_i386_sysv_macho_gas.S
487     asm/ontop_i386_sysv_macho_gas.S
488   : <abi>sysv
489     <address-model>32
490     <architecture>x86
491     <binary-format>mach-o
492     <toolset>clang
493   ;
494
495alias asm_sources
496   : asm/make_i386_sysv_macho_gas.S
497     asm/jump_i386_sysv_macho_gas.S
498     asm/ontop_i386_sysv_macho_gas.S
499   : <abi>sysv
500     <address-model>32
501     <architecture>x86
502     <binary-format>mach-o
503     <toolset>darwin
504   ;
505
506# X86/MS/PE
507alias asm_sources
508   : asm/make_i386_ms_pe_gas.asm
509     asm/jump_i386_ms_pe_gas.asm
510     asm/ontop_i386_ms_pe_gas.asm
511     dummy.cpp
512   : <abi>ms
513     <address-model>32
514     <architecture>x86
515     <binary-format>pe
516     <toolset>clang
517   ;
518
519alias asm_sources
520   : asm/make_i386_ms_pe_masm.asm
521     asm/jump_i386_ms_pe_masm.asm
522     asm/ontop_i386_ms_pe_masm.asm
523     dummy.cpp
524   : <abi>ms
525     <address-model>32
526     <architecture>x86
527     <binary-format>pe
528     <toolset>clang-win
529   ;
530
531alias asm_sources
532   : asm/make_i386_ms_pe_gas.asm
533     asm/jump_i386_ms_pe_gas.asm
534     asm/ontop_i386_ms_pe_gas.asm
535     dummy.cpp
536   : <abi>ms
537     <address-model>32
538     <architecture>x86
539     <binary-format>pe
540     <toolset>gcc
541   ;
542
543alias asm_sources
544   : asm/make_i386_ms_pe_masm.asm
545     asm/jump_i386_ms_pe_masm.asm
546     asm/ontop_i386_ms_pe_masm.asm
547     dummy.cpp
548   : <abi>ms
549     <address-model>32
550     <architecture>x86
551     <binary-format>pe
552     <toolset>intel
553   ;
554
555alias asm_sources
556   : asm/make_i386_ms_pe_masm.asm
557     asm/jump_i386_ms_pe_masm.asm
558     asm/ontop_i386_ms_pe_masm.asm
559     dummy.cpp
560   : <abi>ms
561     <address-model>32
562     <architecture>x86
563     <binary-format>pe
564     <toolset>msvc
565   ;
566
567# Embarcadero on Windows for 32-bits, bcc32x, uses tasm32,
568# which is masm compatible
569# This is configured in the embarcadero toolset as using
570# 'tasm32 /ml'
571
572alias asm_sources
573   : asm/make_i386_ms_pe_masm.asm
574     asm/jump_i386_ms_pe_masm.asm
575     asm/ontop_i386_ms_pe_masm.asm
576     dummy.cpp
577   : <abi>ms
578     <address-model>32
579     <architecture>x86
580     <binary-format>pe
581     <toolset>embarcadero
582   ;
583
584# Borland on Windows for 32-bits, bcc32c, uses tasm32,
585# which is masm compatible
586# This is configured in the borland toolset as using
587# 'tasm32 /ml'
588
589alias asm_sources
590   : asm/make_i386_ms_pe_masm.asm
591     asm/jump_i386_ms_pe_masm.asm
592     asm/ontop_i386_ms_pe_masm.asm
593     dummy.cpp
594   : <abi>ms
595     <address-model>32
596     <architecture>x86
597     <binary-format>pe
598     <toolset>borland
599   ;
600
601# X86_64
602# X86_64/SYSV/ELF
603alias asm_sources
604   : asm/make_x86_64_sysv_elf_gas.S
605     asm/jump_x86_64_sysv_elf_gas.S
606     asm/ontop_x86_64_sysv_elf_gas.S
607   : <abi>sysv
608     <address-model>64
609     <architecture>x86
610     <binary-format>elf
611     <toolset>clang
612   ;
613
614alias asm_sources
615   : asm/make_x86_64_sysv_elf_gas.S
616     asm/jump_x86_64_sysv_elf_gas.S
617     asm/ontop_x86_64_sysv_elf_gas.S
618   : <abi>sysv
619     <address-model>64
620     <architecture>x86
621     <binary-format>elf
622     <toolset>gcc
623   ;
624
625alias asm_sources
626   : asm/make_x86_64_sysv_elf_gas.S
627     asm/jump_x86_64_sysv_elf_gas.S
628     asm/ontop_x86_64_sysv_elf_gas.S
629   : <abi>sysv
630     <address-model>64
631     <architecture>x86
632     <binary-format>elf
633     <toolset>intel
634   ;
635
636# X86_64/SYSV/MACH-O
637alias asm_sources
638   : asm/make_x86_64_sysv_macho_gas.S
639     asm/jump_x86_64_sysv_macho_gas.S
640     asm/ontop_x86_64_sysv_macho_gas.S
641   : <abi>sysv
642     <address-model>64
643     <architecture>x86
644     <binary-format>mach-o
645     <toolset>clang
646   ;
647
648alias asm_sources
649   : asm/make_x86_64_sysv_macho_gas.S
650     asm/jump_x86_64_sysv_macho_gas.S
651     asm/ontop_x86_64_sysv_macho_gas.S
652   : <abi>sysv
653     <address-model>64
654     <architecture>x86
655     <binary-format>mach-o
656     <toolset>darwin
657   ;
658
659alias asm_sources
660   : asm/make_x86_64_sysv_macho_gas.S
661     asm/jump_x86_64_sysv_macho_gas.S
662     asm/ontop_x86_64_sysv_macho_gas.S
663   : <abi>sysv
664     <address-model>64
665     <architecture>x86
666     <binary-format>mach-o
667     <toolset>intel
668   ;
669
670# X86_64/MS/PE
671alias asm_sources
672   : asm/make_x86_64_ms_pe_gas.asm
673     asm/jump_x86_64_ms_pe_gas.asm
674     asm/ontop_x86_64_ms_pe_gas.asm
675     dummy.cpp
676   : <abi>ms
677     <address-model>64
678     <architecture>x86
679     <binary-format>pe
680     <toolset>clang
681   ;
682
683alias asm_sources
684   : asm/make_x86_64_ms_pe_masm.asm
685     asm/jump_x86_64_ms_pe_masm.asm
686     asm/ontop_x86_64_ms_pe_masm.asm
687     dummy.cpp
688   : <abi>ms
689     <address-model>64
690     <architecture>x86
691     <binary-format>pe
692     <toolset>clang-win
693   ;
694
695alias asm_sources
696   : asm/make_x86_64_ms_pe_gas.asm
697     asm/jump_x86_64_ms_pe_gas.asm
698     asm/ontop_x86_64_ms_pe_gas.asm
699     dummy.cpp
700   : <abi>ms
701     <address-model>64
702     <architecture>x86
703     <binary-format>pe
704     <toolset>gcc
705   ;
706
707alias asm_sources
708   : asm/make_x86_64_ms_pe_masm.asm
709     asm/jump_x86_64_ms_pe_masm.asm
710     asm/ontop_x86_64_ms_pe_masm.asm
711     dummy.cpp
712   : <abi>ms
713     <address-model>64
714     <architecture>x86
715     <binary-format>pe
716     <toolset>intel
717   ;
718
719alias asm_sources
720   : asm/make_x86_64_ms_pe_masm.asm
721     asm/jump_x86_64_ms_pe_masm.asm
722     asm/ontop_x86_64_ms_pe_masm.asm
723     dummy.cpp
724   : <abi>ms
725     <address-model>64
726     <architecture>x86
727     <binary-format>pe
728     <toolset>msvc
729   ;
730
731# Embarcadero on Windows, bcc64, uses the sysv-elf format for 64-bits
732# This is configured in the embarcadero toolset as using bcc64 with the
733# command line option '-x assembler-with-cpp'.
734
735alias asm_sources
736   : asm/make_x86_64_sysv_elf_gas.S
737     asm/jump_x86_64_sysv_elf_gas.S
738     asm/ontop_x86_64_sysv_elf_gas.S
739   : <abi>ms
740     <address-model>64
741     <architecture>x86
742     <binary-format>pe
743     <toolset>embarcadero
744   ;
745
746# X86_64/SYSV/X32
747alias asm_sources
748   : asm/make_x86_64_sysv_elf_gas.S
749     asm/jump_x86_64_sysv_elf_gas.S
750     asm/ontop_x86_64_sysv_elf_gas.S
751   : <abi>x32
752     <address-model>64
753     <architecture>x86
754     <binary-format>elf
755     <toolset>clang
756   ;
757
758alias asm_sources
759   : asm/make_x86_64_sysv_elf_gas.S
760     asm/jump_x86_64_sysv_elf_gas.S
761     asm/ontop_x86_64_sysv_elf_gas.S
762   : <abi>x32
763     <address-model>64
764     <architecture>x86
765     <binary-format>elf
766     <toolset>gcc
767   ;
768
769alias asm_sources
770   : asm/make_x86_64_sysv_elf_gas.S
771     asm/jump_x86_64_sysv_elf_gas.S
772     asm/ontop_x86_64_sysv_elf_gas.S
773   : <abi>x32
774     <address-model>64
775     <architecture>x86
776     <binary-format>elf
777     <toolset>intel
778   ;
779
780#X86 universal
781alias asm_sources
782   : asm/make_i386_x86_64_sysv_macho_gas.S
783     asm/jump_i386_x86_64_sysv_macho_gas.S
784     asm/ontop_i386_x86_64_sysv_macho_gas.S
785   : <abi>sysv
786     <address-model>32_64
787     <architecture>x86
788     <binary-format>mach-o
789   ;
790
791# COMBINED
792alias asm_sources
793   : asm/make_combined_sysv_macho_gas.S
794     asm/jump_combined_sysv_macho_gas.S
795     asm/ontop_combined_sysv_macho_gas.S
796   : <abi>sysv
797     <architecture>combined
798     <binary-format>mach-o
799   ;
800
801explicit asm_sources ;
802
803
804# fcontext_t
805alias impl_sources
806    : asm_sources
807    : <context-impl>fcontext
808    ;
809
810# ucontext_t
811alias impl_sources
812    : continuation.cpp
813      fiber.cpp
814    : <context-impl>ucontext
815    [ requires cxx11_auto_declarations
816               cxx11_constexpr
817               cxx11_defaulted_functions
818               cxx11_final
819               cxx11_hdr_thread
820               cxx11_hdr_tuple
821               cxx11_lambdas
822               cxx11_noexcept
823               cxx11_nullptr
824               cxx11_rvalue_references
825               cxx11_template_aliases
826               cxx11_thread_local
827               cxx11_variadic_templates ]
828    ;
829
830# WinFiber
831alias impl_sources
832    : continuation.cpp
833      fiber.cpp
834    : <context-impl>winfib
835    [ requires cxx11_auto_declarations
836               cxx11_constexpr
837               cxx11_defaulted_functions
838               cxx11_final
839               cxx11_hdr_thread
840               cxx11_hdr_tuple
841               cxx11_lambdas
842               cxx11_noexcept
843               cxx11_nullptr
844               cxx11_rvalue_references
845               cxx11_template_aliases
846               cxx11_thread_local
847               cxx11_variadic_templates ]
848    ;
849
850explicit impl_sources ;
851
852obj cxx11_hdr_mutex_check : ../build/cxx11_hdr_mutex.cpp ;
853explicit cxx11_hdr_mutex_check ;
854local cxx11_mutex = [ check-target-builds
855      cxx11_hdr_mutex_check "C++11 mutex"
856    :
857    : <library>/boost/thread//boost_thread
858  ] ;
859
860alias stack_traits_sources
861    : windows/stack_traits.cpp
862    : <target-os>windows
863    :
864    : $(cxx11_mutex)
865    ;
866
867alias stack_traits_sources
868    : posix/stack_traits.cpp
869    :
870    :
871    : $(cxx11_mutex)
872    ;
873
874explicit stack_traits_sources ;
875
876lib boost_context
877   : impl_sources
878     stack_traits_sources
879   ;
880
881boost-install boost_context ;
882