Ticket #9743: Jamfile.v2

File Jamfile.v2, 8.4 KB (added by olli, 9 years ago)

preprocessor before gas

Line 
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 ;
15import architecture ;
16
17project 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
27local 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
36feature.feature binary-format
37 : elf
38 mach-o
39 pe
40 xcoff
41 : propagated
42 ;
43feature.set-default binary-format : [ default_binary_format ] ;
44
45
46local 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
55feature.feature abi
56 : aapcs
57 eabi
58 ms
59 n32
60 n64
61 o32
62 o64
63 sysv
64 x32
65 : propagated
66 ;
67feature.set-default abi : [ default_abi ] ;
68
69
70actions gas
71{
72 cpp -x assembler-with-cpp "$(>)" | as -am -o "$(<)"
73}
74
75actions armasm
76{
77 armasm "$(>)" "$(<)"
78}
79
80actions masm
81{
82 ml /c /Fo"$(<)" "$(>)"
83}
84
85actions masm64
86{
87 ml64 /c /Fo"$(<)" "$(>)"
88}
89
90
91rule 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
107alias 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
114alias 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
121alias 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
130alias 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
138alias 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
146alias 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
154alias 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
164alias 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
172alias 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
181alias 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
191alias 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
201alias 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
211alias 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
221alias 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
229alias 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
237alias 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
247alias 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
255alias 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
265alias 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
273alias 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
283alias 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
293alias 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
301alias asm_context_sources
302 : unsupported.cpp
303 ;
304
305explicit asm_context_sources ;
306
307alias select_asm_context_sources
308 : asm_context_sources
309 : [ architecture.architecture ]
310 [ architecture.address-model ]
311 ;
312
313lib boost_context
314 : select_asm_context_sources
315 ;
316
317boost-install boost_context ;