Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / native_client / tools / toolchain_tester / toolchain_config.py
1 # Copyright (c) 2011 The Native Client Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 #
6 # Config file for various nacl compilation scenarios
7 #
8 import os
9 import sys
10
11 sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
12 import pynacl.platform
13
14 TOOLCHAIN_CONFIGS = {}
15
16 def AppendDictionary(d1, d2):
17   for tag, value in d2.iteritems():
18     if tag in d1:
19       d1[tag] = d1[tag] + ' ' + value
20     else:
21       d1[tag] = value
22
23
24 class ToolchainConfig(object):
25   def __init__(self, desc, commands, tools_needed, is_flaky=False,
26                attributes=[], **extra):
27     self._desc = desc,
28     self._commands = commands
29     self._tools_needed = tools_needed
30     self._extra = extra
31     self._flaky = is_flaky
32     self._attributes = attributes
33
34   def Append(self, tag, value):
35     assert tag in self._extra
36     self._extra[tag] = self._extra[tag] + ' ' + value + ' '
37
38   def SanityCheck(self):
39     for t in self._tools_needed:
40       if not os.access(t, os.R_OK | os.X_OK):
41         print "ERROR: missing tool ", t
42         sys.exit(-1)
43
44   def GetDescription(self):
45     return self._desc
46
47   def GetCommands(self, extra):
48     for tag, val in self._commands:
49       d = self._extra.copy()
50       AppendDictionary(d, extra)
51       yield tag, val % d
52
53   def GetPhases(self):
54     return [a for (a, _) in self._commands]
55
56   def IsFlaky(self):
57     return self._flaky
58
59   def GetAttributes(self):
60     return set(self._attributes)
61
62
63 ######################################################################
64 #
65 ######################################################################
66
67 LOCAL_GCC = '/usr/bin/gcc'
68
69 EMU_SCRIPT = 'toolchain/linux_x86/arm_trusted/run_under_qemu_arm'
70
71 TEMPLATE_DIGITS = 'X' * 16
72 BOOTSTRAP_ARGS = '--r_debug=0x%s --reserved_at_zero=0x%s' % (TEMPLATE_DIGITS,
73                                                              TEMPLATE_DIGITS)
74
75 BOOTSTRAP_ARM = 'scons-out/opt-linux-arm/staging/nacl_helper_bootstrap'
76 SEL_LDR_ARM = 'scons-out/opt-linux-arm/staging/sel_ldr'
77 IRT_ARM = 'scons-out/nacl_irt-arm/obj/src/untrusted/irt/irt_core.nexe'
78 RUN_SEL_LDR_ARM = BOOTSTRAP_ARM + ' ' + SEL_LDR_ARM + ' ' + BOOTSTRAP_ARGS
79
80 BOOTSTRAP_X32 = 'scons-out/opt-linux-x86-32/staging/nacl_helper_bootstrap'
81 SEL_LDR_X32 = 'scons-out/opt-linux-x86-32/staging/sel_ldr'
82 IRT_X32 = 'scons-out/nacl_irt-x86-32/obj/src/untrusted/irt/irt_core.nexe'
83 RUN_SEL_LDR_X32 = BOOTSTRAP_X32 + ' ' + SEL_LDR_X32 + ' ' + BOOTSTRAP_ARGS
84
85 BOOTSTRAP_X64 = 'scons-out/opt-linux-x86-64/staging/nacl_helper_bootstrap'
86 SEL_LDR_X64 = 'scons-out/opt-linux-x86-64/staging/sel_ldr'
87 IRT_X64 = 'scons-out/nacl_irt-x86-64/obj/src/untrusted/irt/irt_core.nexe'
88 RUN_SEL_LDR_X64 = BOOTSTRAP_X64 + ' ' + SEL_LDR_X64 + ' ' + BOOTSTRAP_ARGS
89
90 NACL_X86_NEWLIB = 'toolchain/linux_x86/nacl_x86_newlib'
91 NACL_GCC_X32 = NACL_X86_NEWLIB + '/bin/i686-nacl-gcc'
92 NACL_GCC_X64 = NACL_X86_NEWLIB + '/bin/x86_64-nacl-gcc'
93
94 GLOBAL_CFLAGS = ' '.join(['-DSTACK_SIZE=0x40000',
95                           '-D__SIZEOF_INT__=4',
96                           '-D__SIZEOF_LONG__=4',
97                           '"-D__INT_LEAST8_TYPE__=signed char"',
98                           '"-D__UINT_LEAST32_TYPE__=unsigned int"',
99                           '-D_XOPEN_SOURCE=600',
100                           '-DNO_TRAMPOLINES',
101                           '-DNO_LABEL_VALUES',])
102
103 CLANG_CFLAGS = ' '.join(['-fwrapv',
104                          '-fdiagnostics-show-category=name'])
105
106 ######################################################################
107 # LOCAL GCC
108 ######################################################################
109 COMMANDS_local_gcc = [
110     ('compile',
111      '%(CC)s %(src)s %(CFLAGS)s -o %(tmp)s.exe -lm -lstdc++',
112      ),
113     ('run',
114      '%(tmp)s.exe',
115      ),
116     ]
117
118 TOOLCHAIN_CONFIGS['local_gcc_x8632_O0'] = ToolchainConfig(
119     desc='local gcc [x86-32]',
120     attributes=['x86-32', 'O0'],
121     commands=COMMANDS_local_gcc,
122     tools_needed=[LOCAL_GCC],
123     CC = LOCAL_GCC,
124     CFLAGS = '-O0 -m32 -static ' + GLOBAL_CFLAGS)
125
126 TOOLCHAIN_CONFIGS['local_gcc_x8632_O3'] = ToolchainConfig(
127     desc='local gcc [x86-32]',
128     attributes=['x86-32', 'O3'],
129     commands=COMMANDS_local_gcc,
130     tools_needed=[LOCAL_GCC],
131     CC = LOCAL_GCC,
132     CFLAGS = '-O3 -m32 -static ' + GLOBAL_CFLAGS)
133
134 TOOLCHAIN_CONFIGS['local_gcc_x8664_O0'] = ToolchainConfig(
135     desc='local gcc [x86-64]',
136     attributes=['x86-64', 'O0'],
137     commands=COMMANDS_local_gcc,
138     tools_needed=[LOCAL_GCC],
139     CC = LOCAL_GCC,
140     CFLAGS = '-O0 -m64 -static ' + GLOBAL_CFLAGS)
141
142 TOOLCHAIN_CONFIGS['local_gcc_x8664_O3'] = ToolchainConfig(
143     attributes=['x86-64', 'O3'],
144     desc='local gcc [x86-64]',
145     commands=COMMANDS_local_gcc,
146     tools_needed=[LOCAL_GCC],
147     CC = LOCAL_GCC,
148     CFLAGS = '-O3 -m64 -static ' + GLOBAL_CFLAGS)
149
150 ######################################################################
151 # # NACL + SEL_LDR [X86]
152 ######################################################################
153 COMMANDS_nacl_gcc = [
154     ('compile',
155      '%(CC)s %(src)s %(CFLAGS)s -o %(tmp)s.exe -lm -lstdc++',
156      ),
157     ('sel_ldr',
158      '%(SEL_LDR)s -B %(IRT)s %(tmp)s.exe',
159      )
160   ]
161
162
163 TOOLCHAIN_CONFIGS['nacl_gcc_x8632_O0'] = ToolchainConfig(
164     desc='nacl gcc [x86-32]',
165     attributes=['x86-32', 'O0'],
166     commands=COMMANDS_nacl_gcc,
167     tools_needed=[NACL_GCC_X32, BOOTSTRAP_X32, SEL_LDR_X32],
168     CC = NACL_GCC_X32,
169     SEL_LDR = RUN_SEL_LDR_X32,
170     IRT = IRT_X32,
171     CFLAGS = '-O0 -static -Bscons-out/nacl-x86-32/lib/ ' + GLOBAL_CFLAGS)
172
173 TOOLCHAIN_CONFIGS['nacl_gcc_x8632_O3'] = ToolchainConfig(
174     desc='nacl gcc with optimizations [x86-32]',
175     attributes=['x86-32', 'O3'],
176     commands=COMMANDS_nacl_gcc,
177     tools_needed=[NACL_GCC_X32, BOOTSTRAP_X32, SEL_LDR_X32],
178     CC = NACL_GCC_X32,
179     SEL_LDR = RUN_SEL_LDR_X32,
180     IRT = IRT_X32,
181     CFLAGS = '-O3 -static -Bscons-out/nacl-x86-32/lib/ ' + GLOBAL_CFLAGS)
182
183 TOOLCHAIN_CONFIGS['nacl_gcc_x8664_O0'] = ToolchainConfig(
184     desc='nacl gcc [x86-64]',
185     attributes=['x86-64', 'O0'],
186     commands=COMMANDS_nacl_gcc,
187     tools_needed=[NACL_GCC_X64, BOOTSTRAP_X64, SEL_LDR_X64],
188     CC = NACL_GCC_X64,
189     SEL_LDR = RUN_SEL_LDR_X64,
190     IRT = IRT_X64,
191     CFLAGS = '-O0 -static -Bscons-out/nacl-x86-64/lib/ ' + GLOBAL_CFLAGS)
192
193 TOOLCHAIN_CONFIGS['nacl_gcc_x8664_O3'] = ToolchainConfig(
194     desc='nacl gcc with optimizations [x86-64]',
195     attributes=['x86-32', 'O3'],
196     commands=COMMANDS_nacl_gcc,
197     tools_needed=[NACL_GCC_X64, BOOTSTRAP_X64, SEL_LDR_X64],
198     CC = NACL_GCC_X64,
199     SEL_LDR = RUN_SEL_LDR_X64,
200     IRT = IRT_X64,
201     CFLAGS = '-O3 -static -Bscons-out/nacl-x86-64/lib/ ' + GLOBAL_CFLAGS)
202
203 ######################################################################
204 # PNACL + SEL_LDR [ARM]
205 ######################################################################
206
207 # Locate the pnacl toolchain.  Path can be overridden externally.
208 os_name = pynacl.platform.GetOS()
209 PNACL_TOOLCHAIN_DIR = os.getenv('PNACL_TOOLCHAIN_DIR',
210                                 '%s_x86/pnacl_newlib' % os_name)
211 PNACL_ROOT = os.path.join('toolchain', PNACL_TOOLCHAIN_DIR)
212 PNACL_FRONTEND = PNACL_ROOT + '/bin/pnacl-clang++'
213 PNACL_FINALIZE = PNACL_ROOT + '/bin/pnacl-finalize'
214
215
216 # NOTE: Our driver supports going from .c to .nexe in one go
217 #       but it maybe useful to inspect the bitcode file so we
218 #       split the compilation into two steps.
219 PNACL_LD = PNACL_ROOT + '/bin/pnacl-translate'
220
221 COMMANDS_llvm_pnacl_arm = [
222     ('compile-pexe',
223      '%(CC)s %(src)s %(CFLAGS)s -o %(tmp)s.nonfinal.pexe',
224      ),
225     ('finalize-pexe',
226      '%(FINALIZE)s %(FINALIZE_FLAGS)s %(tmp)s.nonfinal.pexe'
227      ' -o %(tmp)s.final.pexe'
228     ),
229     ('translate-arm',
230      '%(LD)s %(TRANSLATE_FLAGS)s %(tmp)s.final.pexe -o %(tmp)s.nexe',
231      ),
232     ('qemu-sel_ldr',
233      '%(EMU)s %(SEL_LDR)s -B %(IRT)s -Q %(tmp)s.nexe',
234      )
235   ]
236
237
238 # In the PNaCl ToolchainConfig attributes, the convention for the 'b'
239 # and 'f' suffixes is that 'O0f' means frontend (clang) compilation
240 # with -O0, and 'O2b' means backend (llc) translation with -O2.
241
242 TOOLCHAIN_CONFIGS['llvm_pnacl_arm_O0'] = ToolchainConfig(
243     desc='pnacl llvm [arm]',
244     attributes=['arm', 'O0f', 'O2b'],
245     commands=COMMANDS_llvm_pnacl_arm,
246     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
247                   EMU_SCRIPT, BOOTSTRAP_ARM,
248                   SEL_LDR_ARM],
249     is_flaky = True,
250     CC = PNACL_FRONTEND,
251     FINALIZE = PNACL_FINALIZE,
252     LD = PNACL_LD + ' -arch arm',
253     EMU = EMU_SCRIPT,
254     SEL_LDR = RUN_SEL_LDR_ARM,
255     IRT = IRT_ARM,
256     CFLAGS = '-O0 -static ' + CLANG_CFLAGS + ' ' + GLOBAL_CFLAGS,
257     FINALIZE_FLAGS = '',
258     TRANSLATE_FLAGS='')
259
260 TOOLCHAIN_CONFIGS['llvm_pnacl_arm_O3'] = ToolchainConfig(
261     desc='pnacl llvm with optimizations [arm]',
262     attributes=['arm', 'O3f', 'O2b'],
263     commands=COMMANDS_llvm_pnacl_arm,
264     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
265                   EMU_SCRIPT, BOOTSTRAP_ARM, SEL_LDR_ARM],
266     is_flaky = True,
267     CC = PNACL_FRONTEND,
268     FINALIZE = PNACL_FINALIZE,
269     LD = PNACL_LD  + ' -arch arm',
270     EMU = EMU_SCRIPT,
271     SEL_LDR = RUN_SEL_LDR_ARM,
272     IRT = IRT_ARM,
273     CFLAGS = '-O3 -D__OPTIMIZE__ -static ' + CLANG_CFLAGS  + ' '
274               + GLOBAL_CFLAGS,
275     FINALIZE_FLAGS = '',
276     TRANSLATE_FLAGS = '')
277
278 # Based on llvm_pnacl_arm_O3 with TRANSLATE_FLAGS=-translate-fast
279 TOOLCHAIN_CONFIGS['llvm_pnacl_arm_O3_O0'] = ToolchainConfig(
280     desc='pnacl llvm with optimizations and fast translation [arm]',
281     attributes=['arm', 'O3f', 'O0b'],
282     commands=COMMANDS_llvm_pnacl_arm,
283     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
284                   EMU_SCRIPT, BOOTSTRAP_ARM, SEL_LDR_ARM],
285     is_flaky = True,
286     CC = PNACL_FRONTEND,
287     FINALIZE = PNACL_FINALIZE,
288     LD = PNACL_LD  + ' -arch arm',
289     EMU = EMU_SCRIPT,
290     SEL_LDR = RUN_SEL_LDR_ARM,
291     IRT = IRT_ARM,
292     CFLAGS = '-O3 -D__OPTIMIZE__ -static ' + CLANG_CFLAGS  + ' '
293               + GLOBAL_CFLAGS,
294     FINALIZE_FLAGS = '',
295     TRANSLATE_FLAGS = '-translate-fast')
296
297 # Based on llvm_pnacl_arm_O0 with TRANSLATE_FLAGS=-translate-fast
298 TOOLCHAIN_CONFIGS['llvm_pnacl_arm_O0_O0'] = ToolchainConfig(
299     desc='pnacl llvm [arm]',
300     attributes=['arm', 'O0f', 'O0b'],
301     commands=COMMANDS_llvm_pnacl_arm,
302     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
303                   EMU_SCRIPT, BOOTSTRAP_ARM,
304                   SEL_LDR_ARM],
305     is_flaky = True,
306     CC = PNACL_FRONTEND,
307     FINALIZE = PNACL_FINALIZE,
308     LD = PNACL_LD + ' -arch arm',
309     EMU = EMU_SCRIPT,
310     SEL_LDR = RUN_SEL_LDR_ARM,
311     IRT = IRT_ARM,
312     CFLAGS = '-O0 -static ' + CLANG_CFLAGS + ' ' + GLOBAL_CFLAGS,
313     FINALIZE_FLAGS = '',
314     TRANSLATE_FLAGS='-translate-fast')
315
316 ######################################################################
317 # PNACL + SEL_LDR [X8632]
318 ######################################################################
319
320 # NOTE: this is used for both x86 flavors
321 COMMANDS_llvm_pnacl_x86 = [
322     ('compile-pexe',
323      '%(CC)s %(src)s %(CFLAGS)s -o %(tmp)s.nonfinal.pexe',
324      ),
325     ('finalize-pexe',
326      '%(FINALIZE)s %(FINALIZE_FLAGS)s %(tmp)s.nonfinal.pexe'
327      ' -o %(tmp)s.final.pexe',
328      ),
329     ('translate-x86',
330      '%(LD)s %(TRANSLATE_FLAGS)s %(tmp)s.final.pexe -o %(tmp)s.nexe ',
331      ),
332     ('sel_ldr',
333      '%(SEL_LDR)s -B %(IRT)s %(tmp)s.nexe',
334      )
335   ]
336
337
338 TOOLCHAIN_CONFIGS['llvm_pnacl_x86-32_O0'] = ToolchainConfig(
339     desc='pnacl llvm [x8632]',
340     attributes=['x86-32', 'O0f', 'O2b'],
341     commands=COMMANDS_llvm_pnacl_x86,
342     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
343                   BOOTSTRAP_X32, SEL_LDR_X32],
344     CC = PNACL_FRONTEND,
345     FINALIZE = PNACL_FINALIZE,
346     LD = PNACL_LD + ' -arch x86-32',
347     SEL_LDR = RUN_SEL_LDR_X32,
348     IRT = IRT_X32,
349     CFLAGS = '-O0  -static ' + CLANG_CFLAGS + ' ' + GLOBAL_CFLAGS,
350     FINALIZE_FLAGS = '',
351     TRANSLATE_FLAGS = '')
352
353 TOOLCHAIN_CONFIGS['llvm_pnacl_x86-32_O3'] = ToolchainConfig(
354     desc='pnacl llvm [x8632]',
355     attributes=['x86-32', 'O3f', 'O2b'],
356     commands=COMMANDS_llvm_pnacl_x86,
357     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
358                   BOOTSTRAP_X32, SEL_LDR_X32],
359     CC = PNACL_FRONTEND,
360     FINALIZE = PNACL_FINALIZE,
361     LD = PNACL_LD + ' -arch x86-32',
362     SEL_LDR = RUN_SEL_LDR_X32,
363     IRT = IRT_X32,
364     CFLAGS = '-O3 -D__OPTIMIZE__ -static ' + CLANG_CFLAGS + ' '
365              + GLOBAL_CFLAGS,
366     FINALIZE_FLAGS = '',
367     TRANSLATE_FLAGS = '')
368
369 # Based on llvm_pnacl_x86-32_O3 with TRANSLATE_FLAGS=-translate-fast
370 TOOLCHAIN_CONFIGS['llvm_pnacl_x86-32_O3_O0'] = ToolchainConfig(
371     desc='pnacl llvm with fast translation [x8632]',
372     attributes=['x86-32', 'O3f', 'O0b'],
373     commands=COMMANDS_llvm_pnacl_x86,
374     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
375                   BOOTSTRAP_X32, SEL_LDR_X32],
376     CC = PNACL_FRONTEND,
377     FINALIZE = PNACL_FINALIZE,
378     LD = PNACL_LD + ' -arch x86-32',
379     SEL_LDR = RUN_SEL_LDR_X32,
380     IRT = IRT_X32,
381     CFLAGS = '-O3 -D__OPTIMIZE__ -static ' + CLANG_CFLAGS + ' '
382              + GLOBAL_CFLAGS,
383     FINALIZE_FLAGS = '',
384     TRANSLATE_FLAGS = '-translate-fast')
385
386 # Based on llvm_pnacl_x86-32_O0 with TRANSLATE_FLAGS=-translate-fast
387 TOOLCHAIN_CONFIGS['llvm_pnacl_x86-32_O0_O0'] = ToolchainConfig(
388     desc='pnacl llvm [x8632]',
389     attributes=['x86-32', 'O0f', 'O0b'],
390     commands=COMMANDS_llvm_pnacl_x86,
391     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
392                   BOOTSTRAP_X32, SEL_LDR_X32],
393     CC = PNACL_FRONTEND,
394     FINALIZE = PNACL_FINALIZE,
395     LD = PNACL_LD + ' -arch x86-32',
396     SEL_LDR = RUN_SEL_LDR_X32,
397     IRT = IRT_X32,
398     CFLAGS = '-O0  -static ' + CLANG_CFLAGS + ' ' + GLOBAL_CFLAGS,
399     FINALIZE_FLAGS = '',
400     TRANSLATE_FLAGS = '-translate-fast')
401
402 ######################################################################
403 # PNACL + SEL_LDR [X8664]
404 ######################################################################
405
406 TOOLCHAIN_CONFIGS['llvm_pnacl_x86-64_O0'] = ToolchainConfig(
407     desc='pnacl llvm [x8664]',
408     attributes=['x86-64', 'O0f', 'O2b'],
409     commands=COMMANDS_llvm_pnacl_x86,
410     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
411                   BOOTSTRAP_X64, SEL_LDR_X64],
412     CC = PNACL_FRONTEND,
413     FINALIZE = PNACL_FINALIZE,
414     LD = PNACL_LD + ' -arch x86-64',
415     SEL_LDR = RUN_SEL_LDR_X64,
416     IRT = IRT_X64,
417     CFLAGS = '-O0 -static ' + CLANG_CFLAGS + ' ' + GLOBAL_CFLAGS,
418     FINALIZE_FLAGS = '',
419     TRANSLATE_FLAGS = '')
420
421 TOOLCHAIN_CONFIGS['llvm_pnacl_x86-64_O3'] = ToolchainConfig(
422     desc='pnacl llvm [x8664]',
423     attributes=['x86-64', 'O3f', 'O2b'],
424     commands=COMMANDS_llvm_pnacl_x86,
425     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
426                   BOOTSTRAP_X64, SEL_LDR_X64],
427     CC = PNACL_FRONTEND,
428     FINALIZE = PNACL_FINALIZE,
429     LD = PNACL_LD + ' -arch x86-64',
430     SEL_LDR = RUN_SEL_LDR_X64,
431     IRT = IRT_X64,
432     CFLAGS = '-O3 -D__OPTIMIZE__ -static ' + CLANG_CFLAGS + ' '
433              + GLOBAL_CFLAGS,
434     FINALIZE_FLAGS = '',
435     TRANSLATE_FLAGS = '')
436
437 # Based on llvm_pnacl_x86-64_O3 with TRANSLATE_FLAGS=-translate-fast
438 TOOLCHAIN_CONFIGS['llvm_pnacl_x86-64_O3_O0'] = ToolchainConfig(
439     desc='pnacl llvm with fast translation [x8664]',
440     attributes=['x86-64', 'O3f', 'O0b'],
441     commands=COMMANDS_llvm_pnacl_x86,
442     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
443                   BOOTSTRAP_X64, SEL_LDR_X64],
444     CC = PNACL_FRONTEND,
445     FINALIZE = PNACL_FINALIZE,
446     LD = PNACL_LD + ' -arch x86-64',
447     SEL_LDR = RUN_SEL_LDR_X64,
448     IRT = IRT_X64,
449     CFLAGS = '-O3 -D__OPTIMIZE__ -static ' + CLANG_CFLAGS + ' '
450              + GLOBAL_CFLAGS,
451     FINALIZE_FLAGS = '',
452     TRANSLATE_FLAGS = '-translate-fast')
453
454 # Based on llvm_pnacl_x86-64_O0 with TRANSLATE_FLAGS=-translate-fast
455 TOOLCHAIN_CONFIGS['llvm_pnacl_x86-64_O0_O0'] = ToolchainConfig(
456     desc='pnacl llvm [x8664]',
457     attributes=['x86-64', 'O0f', 'O0b'],
458     commands=COMMANDS_llvm_pnacl_x86,
459     tools_needed=[PNACL_FRONTEND, PNACL_FINALIZE, PNACL_LD,
460                   BOOTSTRAP_X64, SEL_LDR_X64],
461     CC = PNACL_FRONTEND,
462     FINALIZE = PNACL_FINALIZE,
463     LD = PNACL_LD + ' -arch x86-64',
464     SEL_LDR = RUN_SEL_LDR_X64,
465     IRT = IRT_X64,
466     CFLAGS = '-O0 -static ' + CLANG_CFLAGS + ' ' + GLOBAL_CFLAGS,
467     FINALIZE_FLAGS = '',
468     TRANSLATE_FLAGS = '-translate-fast')