Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(685)

Side by Side Diff: native_client_sdk/src/build_tools/build_sdk.py

Issue 126223002: [NaCl SDK] Add ARM sel_ldr to linux SDK (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Entry point for both build and try bots. 6 """Entry point for both build and try bots.
7 7
8 This script is invoked from XXX, usually without arguments 8 This script is invoked from XXX, usually without arguments
9 to package an SDK. It automatically determines whether 9 to package an SDK. It automatically determines whether
10 this SDK is for mac, win, linux. 10 this SDK is for mac, win, linux.
11 11
12 The script inspects the following environment variables: 12 The script inspects the following environment variables:
13 13
14 BUILDBOT_BUILDERNAME to determine whether the script is run locally 14 BUILDBOT_BUILDERNAME to determine whether the script is run locally
15 and whether it should upload an SDK to file storage (GSTORE) 15 and whether it should upload an SDK to file storage (GSTORE)
16 """ 16 """
17 17
18 # pylint: disable=W0621 18 # pylint: disable=W0621
19 19
20 # std python includes 20 # std python includes
21 import copy
22 import datetime 21 import datetime
23 import glob 22 import glob
24 import optparse 23 import optparse
25 import os 24 import os
26 import re 25 import re
27 import sys 26 import sys
28 27
29 if sys.version_info < (2, 6, 0): 28 if sys.version_info < (2, 6, 0):
30 sys.stderr.write("python 2.6 or later is required run this script\n") 29 sys.stderr.write("python 2.6 or later is required run this script\n")
31 sys.exit(1) 30 sys.exit(1)
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 'libpthread.a', 402 'libpthread.a',
404 ] 403 ]
405 } 404 }
406 405
407 406
408 def GypNinjaInstall(pepperdir, toolchains): 407 def GypNinjaInstall(pepperdir, toolchains):
409 build_dir = GYPBUILD_DIR 408 build_dir = GYPBUILD_DIR
410 ninja_out_dir = os.path.join(OUT_DIR, build_dir, 'Release') 409 ninja_out_dir = os.path.join(OUT_DIR, build_dir, 'Release')
411 tools_files = [ 410 tools_files = [
412 ['sel_ldr', 'sel_ldr_x86_32'], 411 ['sel_ldr', 'sel_ldr_x86_32'],
412 ['sel_ldr_x86_64', 'sel_ldr_x86_64'],
413 ['sel_ldr_arm', 'sel_ldr_arm'],
413 ['ncval_new', 'ncval'], 414 ['ncval_new', 'ncval'],
414 ['irt_core_newlib_x32.nexe', 'irt_core_x86_32.nexe'], 415 ['irt_core_newlib_x32.nexe', 'irt_core_x86_32.nexe'],
415 ['irt_core_newlib_x64.nexe', 'irt_core_x86_64.nexe'], 416 ['irt_core_newlib_x64.nexe', 'irt_core_x86_64.nexe'],
416 ] 417 ]
417 418
418 platform = getos.GetPlatform() 419 platform = getos.GetPlatform()
419 420
420 # TODO(binji): dump_syms doesn't currently build on Windows. See 421 # TODO(binji): dump_syms doesn't currently build on Windows. See
421 # http://crbug.com/245456 422 # http://crbug.com/245456
422 if platform != 'win': 423 if platform != 'win':
423 tools_files += [ 424 tools_files += [
424 ['dump_syms', 'dump_syms'], 425 ['dump_syms', 'dump_syms'],
425 ['minidump_dump', 'minidump_dump'], 426 ['minidump_dump', 'minidump_dump'],
426 ['minidump_stackwalk', 'minidump_stackwalk'] 427 ['minidump_stackwalk', 'minidump_stackwalk']
427 ] 428 ]
428 429
429 tools_files.append(['sel_ldr64', 'sel_ldr_x86_64'])
430
431 if platform == 'linux': 430 if platform == 'linux':
432 tools_files.append(['nacl_helper_bootstrap', 431 tools_files.append(['nacl_helper_bootstrap',
433 'nacl_helper_bootstrap_x86_32']) 432 'nacl_helper_bootstrap_x86_32'])
434 tools_files.append(['nacl_helper_bootstrap64', 433 tools_files.append(['nacl_helper_bootstrap_x86_64',
435 'nacl_helper_bootstrap_x86_64']) 434 'nacl_helper_bootstrap_x86_64'])
435 tools_files.append(['nacl_helper_bootstrap_arm',
436 'nacl_helper_bootstrap_arm'])
436 437
437 buildbot_common.MakeDir(os.path.join(pepperdir, 'tools')) 438 buildbot_common.MakeDir(os.path.join(pepperdir, 'tools'))
438 439
439 # Add .exe extensions to all windows tools 440 # Add .exe extensions to all windows tools
440 for pair in tools_files: 441 for pair in tools_files:
441 if platform == 'win' and not pair[0].endswith('.nexe'): 442 if platform == 'win' and not pair[0].endswith('.nexe'):
442 pair[0] += '.exe' 443 pair[0] += '.exe'
443 pair[1] += '.exe' 444 pair[1] += '.exe'
444 445
445 InstallFiles(ninja_out_dir, os.path.join(pepperdir, 'tools'), tools_files) 446 InstallFiles(ninja_out_dir, os.path.join(pepperdir, 'tools'), tools_files)
(...skipping 28 matching lines...) Expand all
474 GypNinjaBuild('arm', gyp_py, nacl_core_sdk_gyp, 'nacl_core_sdk', out_dir_arm) 475 GypNinjaBuild('arm', gyp_py, nacl_core_sdk_gyp, 'nacl_core_sdk', out_dir_arm)
475 GypNinjaBuild('ia32', gyp_py, all_gyp, 'ncval_new', out_dir) 476 GypNinjaBuild('ia32', gyp_py, all_gyp, 'ncval_new', out_dir)
476 477
477 platform = getos.GetPlatform() 478 platform = getos.GetPlatform()
478 if platform == 'win': 479 if platform == 'win':
479 NinjaBuild('sel_ldr64', out_dir) 480 NinjaBuild('sel_ldr64', out_dir)
480 else: 481 else:
481 out_dir_64 = MakeNinjaRelPath(rel_out_dir + '-64') 482 out_dir_64 = MakeNinjaRelPath(rel_out_dir + '-64')
482 GypNinjaBuild('x64', gyp_py, nacl_core_sdk_gyp, 'sel_ldr', out_dir_64) 483 GypNinjaBuild('x64', gyp_py, nacl_core_sdk_gyp, 'sel_ldr', out_dir_64)
483 484
484 # We only need sel_ldr from the 64-bit out directory. 485 files_to_copy = ['sel_ldr']
485 # sel_ldr needs to be renamed, so we'll call it sel_ldr64.
486 files_to_copy = [('sel_ldr', 'sel_ldr64')]
487 if platform == 'linux': 486 if platform == 'linux':
488 files_to_copy.append(('nacl_helper_bootstrap', 'nacl_helper_bootstrap64')) 487 files_to_copy.append('nacl_helper_bootstrap')
489 488
490 for src, dst in files_to_copy: 489 out_dir = os.path.join(SRC_DIR, out_dir, 'Release')
490 out_dir_64 = os.path.join(SRC_DIR, out_dir_64, 'Release')
491 out_dir_arm = os.path.join(SRC_DIR, out_dir_arm, 'Release')
492
493 for src in files_to_copy:
491 buildbot_common.CopyFile( 494 buildbot_common.CopyFile(
492 os.path.join(SRC_DIR, out_dir_64, 'Release', src), 495 os.path.join(out_dir_64, src), os.path.join(out_dir, src + '_x86_64'))
493 os.path.join(SRC_DIR, out_dir, 'Release', dst)) 496 buildbot_common.CopyFile(
497 os.path.join(out_dir_arm, src), os.path.join(out_dir, src + '_arm'))
498
499 if platform == 'linux':
500 buildbot_common.CopyFile(
501 os.path.join(out_dir_arm, 'irt_core_newlib_arm.nexe'),
502 os.path.join(out_dir, 'irt_core_newlib_arm.nexe'))
494 503
495 504
496 def GypNinjaBuild_Breakpad(rel_out_dir): 505 def GypNinjaBuild_Breakpad(rel_out_dir):
497 # TODO(binji): dump_syms doesn't currently build on Windows. See 506 # TODO(binji): dump_syms doesn't currently build on Windows. See
498 # http://crbug.com/245456 507 # http://crbug.com/245456
499 if getos.GetPlatform() == 'win': 508 if getos.GetPlatform() == 'win':
500 return 509 return
501 510
502 gyp_py = os.path.join(SRC_DIR, 'build', 'gyp_chromium') 511 gyp_py = os.path.join(SRC_DIR, 'build', 'gyp_chromium')
503 out_dir = MakeNinjaRelPath(rel_out_dir) 512 out_dir = MakeNinjaRelPath(rel_out_dir)
(...skipping 18 matching lines...) Expand all
522 531
523 out_dir = MakeNinjaRelPath(rel_out_dir) 532 out_dir = MakeNinjaRelPath(rel_out_dir)
524 gyp_file = os.path.join(SRC_DIR, 'ppapi', 'native_client', 'src', 533 gyp_file = os.path.join(SRC_DIR, 'ppapi', 'native_client', 'src',
525 'untrusted', 'pnacl_irt_shim', 'pnacl_irt_shim.gyp') 534 'untrusted', 'pnacl_irt_shim', 'pnacl_irt_shim.gyp')
526 targets = ['pnacl_irt_shim'] 535 targets = ['pnacl_irt_shim']
527 GypNinjaBuild(target_arch, gyp_py, gyp_file, targets, out_dir, False) 536 GypNinjaBuild(target_arch, gyp_py, gyp_file, targets, out_dir, False)
528 537
529 538
530 def GypNinjaBuild(arch, gyp_py_script, gyp_file, targets, 539 def GypNinjaBuild(arch, gyp_py_script, gyp_file, targets,
531 out_dir, force_arm_gcc=True): 540 out_dir, force_arm_gcc=True):
532 gyp_env = copy.copy(os.environ) 541 gyp_env = dict(os.environ)
533 gyp_env['GYP_GENERATORS'] = 'ninja' 542 gyp_env['GYP_GENERATORS'] = 'ninja'
534 gyp_defines = [] 543 gyp_defines = []
535 if options.mac_sdk: 544 if options.mac_sdk:
536 gyp_defines.append('mac_sdk=%s' % options.mac_sdk) 545 gyp_defines.append('mac_sdk=%s' % options.mac_sdk)
537 if arch: 546 if arch:
538 gyp_defines.append('target_arch=%s' % arch) 547 gyp_defines.append('target_arch=%s' % arch)
539 if arch == 'arm': 548 if arch == 'arm':
540 gyp_defines += ['armv7=1', 'arm_thumb=0', 'arm_neon=1'] 549 if getos.GetPlatform() == 'linux':
550 gyp_env['CC'] = 'arm-linux-gnueabihf-gcc'
551 gyp_env['CXX'] = 'arm-linux-gnueabihf-g++'
552 gyp_env['AR'] = 'arm-linux-gnueabihf-ar'
553 gyp_env['AS'] = 'arm-linux-gnueabihf-as'
554 gyp_env['CC_host'] = 'cc'
555 gyp_env['CXX_host'] = 'c++'
binji 2014/01/08 23:01:15 requires installing arm cross toolchain
556 gyp_defines += ['armv7=1', 'arm_thumb=0', 'arm_neon=1',
557 'arm_float_abi=hard']
541 if force_arm_gcc: 558 if force_arm_gcc:
542 gyp_defines.append('nacl_enable_arm_gcc=1') 559 gyp_defines.append('nacl_enable_arm_gcc=1')
543 if getos.GetPlatform() == 'mac': 560 if getos.GetPlatform() == 'mac':
544 gyp_defines.append('clang=1') 561 gyp_defines.append('clang=1')
545 562
546 gyp_env['GYP_DEFINES'] = ' '.join(gyp_defines) 563 gyp_env['GYP_DEFINES'] = ' '.join(gyp_defines)
547 for key in ['GYP_GENERATORS', 'GYP_DEFINES']: 564 for key in ['GYP_GENERATORS', 'GYP_DEFINES', 'CC']:
548 value = gyp_env[key] 565 value = gyp_env.get(key)
549 print '%s="%s"' % (key, value) 566 if value is not None:
567 print '%s="%s"' % (key, value)
550 gyp_generator_flags = ['-G', 'output_dir=%s' % (out_dir,)] 568 gyp_generator_flags = ['-G', 'output_dir=%s' % (out_dir,)]
551 gyp_depth = '--depth=.' 569 gyp_depth = '--depth=.'
552 buildbot_common.Run( 570 buildbot_common.Run(
553 [sys.executable, gyp_py_script, gyp_file, gyp_depth] + \ 571 [sys.executable, gyp_py_script, gyp_file, gyp_depth] + \
554 gyp_generator_flags, 572 gyp_generator_flags,
555 cwd=SRC_DIR, 573 cwd=SRC_DIR,
556 env=gyp_env) 574 env=gyp_env)
557 NinjaBuild(targets, out_dir) 575 NinjaBuild(targets, out_dir)
558 576
559 577
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
984 BuildStepArchiveSDKTools() 1002 BuildStepArchiveSDKTools()
985 1003
986 return 0 1004 return 0
987 1005
988 1006
989 if __name__ == '__main__': 1007 if __name__ == '__main__':
990 try: 1008 try:
991 sys.exit(main(sys.argv)) 1009 sys.exit(main(sys.argv))
992 except KeyboardInterrupt: 1010 except KeyboardInterrupt:
993 buildbot_common.ErrorExit('build_sdk: interrupted') 1011 buildbot_common.ErrorExit('build_sdk: interrupted')
OLDNEW
« no previous file with comments | « no previous file | native_client_sdk/src/build_tools/sdk_files.list » ('j') | native_client_sdk/src/build_tools/sdk_files.list » ('J')

Powered by Google App Engine
This is Rietveld 408576698