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