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

Side by Side Diff: tools/build.py

Issue 2392603005: Improvements to tools/gn.py (Closed)
Patch Set: Better script description Created 4 years, 2 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
« no previous file with comments | « build/toolchain/mac/BUILD.gn ('k') | tools/gn.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
4 # for details. All rights reserved. Use of this source code is governed by a 4 # for details. All rights reserved. Use of this source code is governed by a
5 # BSD-style license that can be found in the LICENSE file. 5 # BSD-style license that can be found in the LICENSE file.
6 # 6 #
7 7
8 import optparse 8 import optparse
9 import os 9 import os
10 import re 10 import re
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 metavar=HOST_CPUS, 70 metavar=HOST_CPUS,
71 default=str(HOST_CPUS)) 71 default=str(HOST_CPUS))
72 (vs_directory, vs_executable) = utils.GuessVisualStudioPath() 72 (vs_directory, vs_executable) = utils.GuessVisualStudioPath()
73 result.add_option("--devenv", 73 result.add_option("--devenv",
74 help='Path containing devenv.com on Windows', 74 help='Path containing devenv.com on Windows',
75 default=vs_directory) 75 default=vs_directory)
76 result.add_option("--executable", 76 result.add_option("--executable",
77 help='Name of the devenv.com/msbuild executable on Windows (varies for ' 77 help='Name of the devenv.com/msbuild executable on Windows (varies for '
78 'different versions of Visual Studio)', 78 'different versions of Visual Studio)',
79 default=vs_executable) 79 default=vs_executable)
80 result.add_option("--gn",
81 help='Build with GN/Ninja',
82 default=False,
83 action='store_true')
80 return result 84 return result
81 85
82 86
83 def ProcessOsOption(os_name): 87 def ProcessOsOption(os_name):
84 if os_name == 'host': 88 if os_name == 'host':
85 return HOST_OS 89 return HOST_OS
86 return os_name 90 return os_name
87 91
88 92
89 def ProcessOptions(options, args): 93 def ProcessOptions(options, args):
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 "$n.showballoontip(%d, '%s', '%s', " 386 "$n.showballoontip(%d, '%s', '%s', "
383 "[system.windows.forms.tooltipicon]::%s);\"") % ( 387 "[system.windows.forms.tooltipicon]::%s);\"") % (
384 5000, # Notification stays on for this many milliseconds 388 5000, # Notification stays on for this many milliseconds
385 message, title, icon) 389 message, title, icon)
386 390
387 if command: 391 if command:
388 # Ignore return code, if this command fails, it doesn't matter. 392 # Ignore return code, if this command fails, it doesn't matter.
389 os.system(command) 393 os.system(command)
390 394
391 395
396 def BuildNinjaCommand(options, target, target_os, mode, arch):
397 out_dir = utils.GetBuildRoot(HOST_OS, mode, arch, target_os)
398 command = ['ninja', '-C', out_dir]
399 if options.verbose:
400 command += ['-v']
401 command += [target]
402 return command
403
404
392 filter_xcodebuild_output = False 405 filter_xcodebuild_output = False
393 def BuildOneConfig(options, target, target_os, mode, arch, override_tools): 406 def BuildOneConfig(options, target, target_os, mode, arch, override_tools):
394 global filter_xcodebuild_output 407 global filter_xcodebuild_output
395 start_time = time.time() 408 start_time = time.time()
396 os.environ['DART_BUILD_MODE'] = mode 409 args = []
397 build_config = utils.GetBuildConf(mode, arch, target_os) 410 build_config = utils.GetBuildConf(mode, arch, target_os)
398 if HOST_OS == 'macos': 411 if options.gn:
399 filter_xcodebuild_output = True 412 args = BuildNinjaCommand(options, target, target_os, mode, arch)
400 project_file = 'dart.xcodeproj' 413 else:
401 if os.path.exists('dart-%s.gyp' % CurrentDirectoryBaseName()): 414 os.environ['DART_BUILD_MODE'] = mode
402 project_file = 'dart-%s.xcodeproj' % CurrentDirectoryBaseName() 415 if HOST_OS == 'macos':
403 args = ['xcodebuild', 416 filter_xcodebuild_output = True
404 '-project', 417 project_file = 'dart.xcodeproj'
405 project_file, 418 if os.path.exists('dart-%s.gyp' % CurrentDirectoryBaseName()):
406 '-target', 419 project_file = 'dart-%s.xcodeproj' % CurrentDirectoryBaseName()
407 target, 420 args = ['xcodebuild',
408 '-configuration', 421 '-project',
409 build_config, 422 project_file,
410 'SYMROOT=%s' % os.path.abspath('xcodebuild') 423 '-target',
411 ] 424 target,
412 elif HOST_OS == 'win32': 425 '-configuration',
413 project_file = 'dart.sln' 426 build_config,
414 if os.path.exists('dart-%s.gyp' % CurrentDirectoryBaseName()): 427 'SYMROOT=%s' % os.path.abspath('xcodebuild')
415 project_file = 'dart-%s.sln' % CurrentDirectoryBaseName() 428 ]
416 # Select a platform suffix to pass to devenv. 429 elif HOST_OS == 'win32':
417 if arch == 'ia32': 430 project_file = 'dart.sln'
418 platform_suffix = 'Win32' 431 if os.path.exists('dart-%s.gyp' % CurrentDirectoryBaseName()):
419 elif arch == 'x64': 432 project_file = 'dart-%s.sln' % CurrentDirectoryBaseName()
420 platform_suffix = 'x64' 433 # Select a platform suffix to pass to devenv.
434 if arch == 'ia32':
435 platform_suffix = 'Win32'
436 elif arch == 'x64':
437 platform_suffix = 'x64'
438 else:
439 print 'Unsupported arch for MSVC build: %s' % arch
440 return 1
441 config_name = '%s|%s' % (build_config, platform_suffix)
442 if target == 'all':
443 args = [options.devenv + os.sep + options.executable,
444 '/build',
445 config_name,
446 project_file
447 ]
448 else:
449 args = [options.devenv + os.sep + options.executable,
450 '/build',
451 config_name,
452 '/project',
453 target,
454 project_file
455 ]
421 else: 456 else:
422 print 'Unsupported arch for MSVC build: %s' % arch 457 make = 'make'
423 return 1 458 if HOST_OS == 'freebsd':
424 config_name = '%s|%s' % (build_config, platform_suffix) 459 make = 'gmake'
425 if target == 'all': 460 # work around lack of flock
426 args = [options.devenv + os.sep + options.executable, 461 os.environ['LINK'] = '$(CXX)'
427 '/build', 462 args = [make,
428 config_name, 463 '-j',
429 project_file 464 options.j,
430 ] 465 'BUILDTYPE=' + build_config,
431 else: 466 ]
432 args = [options.devenv + os.sep + options.executable, 467 if target_os != HOST_OS:
433 '/build', 468 args += ['builddir_name=' + utils.GetBuildDir(HOST_OS)]
434 config_name, 469 if options.verbose:
435 '/project', 470 args += ['V=1']
436 target,
437 project_file
438 ]
439 else:
440 make = 'make'
441 if HOST_OS == 'freebsd':
442 make = 'gmake'
443 # work around lack of flock
444 os.environ['LINK'] = '$(CXX)'
445 args = [make,
446 '-j',
447 options.j,
448 'BUILDTYPE=' + build_config,
449 ]
450 if target_os != HOST_OS:
451 args += ['builddir_name=' + utils.GetBuildDir(HOST_OS)]
452 if options.verbose:
453 args += ['V=1']
454 471
455 args += [target] 472 args += [target]
456 473
457 toolsOverride = None 474 toolsOverride = None
458 if override_tools: 475 if override_tools:
459 toolsOverride = SetTools(arch, target_os, options) 476 toolsOverride = SetTools(arch, target_os, options)
460 if toolsOverride: 477 if toolsOverride:
461 for k, v in toolsOverride.iteritems(): 478 for k, v in toolsOverride.iteritems():
462 args.append( k + "=" + v) 479 args.append( k + "=" + v)
463 if options.verbose: 480 if options.verbose:
464 print k + " = " + v 481 print k + " = " + v
465 if not os.path.isfile(toolsOverride['CC.target']): 482 if not os.path.isfile(toolsOverride['CC.target']):
(...skipping 28 matching lines...) Expand all
494 def BuildCrossSdk(options, target_os, mode, arch): 511 def BuildCrossSdk(options, target_os, mode, arch):
495 # First build 'create_sdk' for the host. Do not override the host toolchain. 512 # First build 'create_sdk' for the host. Do not override the host toolchain.
496 if BuildOneConfig(options, 'create_sdk', HOST_OS, 513 if BuildOneConfig(options, 'create_sdk', HOST_OS,
497 mode, HOST_ARCH, False) != 0: 514 mode, HOST_ARCH, False) != 0:
498 return 1 515 return 1
499 516
500 # Then, build the runtime for the target arch. 517 # Then, build the runtime for the target arch.
501 if BuildOneConfig(options, 'runtime', target_os, mode, arch, True) != 0: 518 if BuildOneConfig(options, 'runtime', target_os, mode, arch, True) != 0:
502 return 1 519 return 1
503 520
504 # TODO(zra): verify that no platform specific details leak into the snapshots
505 # created for pub, dart2js, etc.
506
507 # Copy dart-sdk from the host build products dir to the target build 521 # Copy dart-sdk from the host build products dir to the target build
508 # products dir, and copy the dart binary for target to the sdk bin/ dir. 522 # products dir, and copy the dart binary for target to the sdk bin/ dir.
509 src = os.path.join( 523 src = os.path.join(
510 utils.GetBuildRoot(HOST_OS, mode, HOST_ARCH, HOST_OS), 'dart-sdk') 524 utils.GetBuildRoot(HOST_OS, mode, HOST_ARCH, HOST_OS), 'dart-sdk')
511 dst = os.path.join( 525 dst = os.path.join(
512 utils.GetBuildRoot(HOST_OS, mode, arch, target_os), 'dart-sdk') 526 utils.GetBuildRoot(HOST_OS, mode, arch, target_os), 'dart-sdk')
513 shutil.rmtree(dst, ignore_errors=True) 527 shutil.rmtree(dst, ignore_errors=True)
514 shutil.copytree(src, dst) 528 shutil.copytree(src, dst)
515 529
516 dart = os.path.join( 530 dart = os.path.join(
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 else: 572 else:
559 if BuildOneConfig(options, target, target_os, 573 if BuildOneConfig(options, target, target_os,
560 mode, arch, cross_build) != 0: 574 mode, arch, cross_build) != 0:
561 return 1 575 return 1
562 576
563 return 0 577 return 0
564 578
565 579
566 if __name__ == '__main__': 580 if __name__ == '__main__':
567 sys.exit(Main()) 581 sys.exit(Main())
OLDNEW
« no previous file with comments | « build/toolchain/mac/BUILD.gn ('k') | tools/gn.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698