| Index: native_client_sdk/src/build_tools/build_projects.py
|
| diff --git a/native_client_sdk/src/build_tools/build_projects.py b/native_client_sdk/src/build_tools/build_projects.py
|
| index ab3752cbedb43db58e6d921c7b052d82aeca7142..8b896fe3aea426513ca1a8fd47555a60272a867b 100755
|
| --- a/native_client_sdk/src/build_tools/build_projects.py
|
| +++ b/native_client_sdk/src/build_tools/build_projects.py
|
| @@ -40,16 +40,37 @@ VALID_TOOLCHAINS = [
|
| ]
|
|
|
| # Global verbosity setting.
|
| -# If set to try (normally via a command line arg) then build_projects will
|
| +# If set to True (normally via a command line arg) then build_projects will
|
| # add V=1 to all calls to 'make'
|
| verbose = False
|
|
|
|
|
| +def Trace(msg):
|
| + if verbose:
|
| + sys.stderr.write(str(msg) + '\n')
|
| +
|
| +
|
| +def CopyFile(src, dst):
|
| + buildbot_common.CopyFile(src, dst, verbose)
|
| +
|
| +
|
| +def CopyDir(src, dst, **kwargs):
|
| + buildbot_common.CopyDir(src, dst, verbose=verbose, **kwargs)
|
| +
|
| +
|
| +def RemoveDir(dst):
|
| + buildbot_common.RemoveDir(dst, verbose)
|
| +
|
| +
|
| +def MakeDir(dst):
|
| + buildbot_common.MakeDir(dst, verbose)
|
| +
|
| +
|
| def CopyFilesFromTo(filelist, srcdir, dstdir):
|
| for filename in filelist:
|
| srcpath = os.path.join(srcdir, filename)
|
| dstpath = os.path.join(dstdir, filename)
|
| - buildbot_common.CopyFile(srcpath, dstpath)
|
| + CopyFile(srcpath, dstpath)
|
|
|
|
|
| def UpdateHelpers(pepperdir, clobber=False):
|
| @@ -59,8 +80,8 @@ def UpdateHelpers(pepperdir, clobber=False):
|
|
|
| exampledir = os.path.join(pepperdir, 'examples')
|
| if clobber:
|
| - buildbot_common.RemoveDir(exampledir)
|
| - buildbot_common.MakeDir(exampledir)
|
| + RemoveDir(exampledir)
|
| + MakeDir(exampledir)
|
|
|
| # Copy files for individual build and landing page
|
| files = ['favicon.ico', 'httpd.cmd', 'index.css', 'index.js',
|
| @@ -68,16 +89,13 @@ def UpdateHelpers(pepperdir, clobber=False):
|
| CopyFilesFromTo(files, SDK_RESOURCE_DIR, exampledir)
|
|
|
| # Copy tools scripts and make includes
|
| - buildbot_common.CopyDir(os.path.join(SDK_SRC_DIR, 'tools', '*.py'),
|
| - tools_dir)
|
| - buildbot_common.CopyDir(os.path.join(SDK_SRC_DIR, 'tools', '*.mk'),
|
| - tools_dir)
|
| + CopyDir(os.path.join(SDK_SRC_DIR, 'tools', '*.py'), tools_dir)
|
| + CopyDir(os.path.join(SDK_SRC_DIR, 'tools', '*.mk'), tools_dir)
|
|
|
| # Copy tools/lib scripts
|
| tools_lib_dir = os.path.join(pepperdir, 'tools', 'lib')
|
| - buildbot_common.MakeDir(tools_lib_dir)
|
| - buildbot_common.CopyDir(os.path.join(SDK_SRC_DIR, 'tools', 'lib', '*.py'),
|
| - tools_lib_dir)
|
| + MakeDir(tools_lib_dir)
|
| + CopyDir(os.path.join(SDK_SRC_DIR, 'tools', 'lib', '*.py'), tools_lib_dir)
|
|
|
| # On Windows add a prebuilt make
|
| if getos.GetPlatform() == 'win':
|
| @@ -133,15 +151,15 @@ def UpdateProjects(pepperdir, project_tree, toolchains,
|
| for arch in LIB_DICT[platform]:
|
| dirpath = os.path.join(libdir, '%s_%s_host' % (platform, arch), config)
|
| if clobber:
|
| - buildbot_common.RemoveDir(dirpath)
|
| - buildbot_common.MakeDir(dirpath)
|
| + RemoveDir(dirpath)
|
| + MakeDir(dirpath)
|
|
|
| landing_page = None
|
| for branch, projects in project_tree.iteritems():
|
| dirpath = os.path.join(pepperdir, branch)
|
| if clobber:
|
| - buildbot_common.RemoveDir(dirpath)
|
| - buildbot_common.MakeDir(dirpath)
|
| + RemoveDir(dirpath)
|
| + MakeDir(dirpath)
|
| targets = [desc['NAME'] for desc in projects]
|
| deps = GetDeps(projects)
|
|
|
| @@ -158,7 +176,8 @@ def UpdateProjects(pepperdir, project_tree, toolchains,
|
| srcroot = os.path.dirname(desc['FILEPATH'])
|
| generate_make.ProcessProject(pepperdir, srcroot, pepperdir, desc,
|
| toolchains, configs=configs,
|
| - first_toolchain=first_toolchain)
|
| + first_toolchain=first_toolchain,
|
| + verbose=verbose)
|
|
|
| if branch.startswith('examples'):
|
| landing_page.AddDesc(desc)
|
| @@ -221,15 +240,15 @@ def BuildProjectsBranch(pepperdir, branch, deps, clean, config, args=None):
|
| else:
|
| make_cmd.append('TOOLCHAIN=all')
|
|
|
| - buildbot_common.Run(make_cmd, cwd=make_dir, env=env)
|
| + buildbot_common.Run(make_cmd, cwd=make_dir, env=env, verbose=verbose)
|
| if clean:
|
| # Clean to remove temporary files but keep the built
|
| - buildbot_common.Run(make_cmd + ['clean'], cwd=make_dir, env=env)
|
| + buildbot_common.Run(make_cmd + ['clean'], cwd=make_dir, env=env,
|
| + verbose=verbose)
|
|
|
|
|
| def BuildProjects(pepperdir, project_tree, deps=True,
|
| clean=False, config='Debug'):
|
| -
|
| # Make sure we build libraries (which live in 'src') before
|
| # any of the examples.
|
| build_first = [p for p in project_tree if p != 'src']
|
| @@ -245,7 +264,8 @@ def main(argv):
|
| help='Clobber project directories before copying new files',
|
| action='store_true', default=False)
|
| parser.add_option('-b', '--build',
|
| - help='Build the projects.', action='store_true')
|
| + help='Build the projects. Otherwise the projects are only copied.',
|
| + action='store_true')
|
| parser.add_option('--config',
|
| help='Choose configuration to build (Debug or Release). Builds both '
|
| 'by default')
|
| @@ -272,6 +292,10 @@ def main(argv):
|
|
|
| options, args = parser.parse_args(argv[1:])
|
|
|
| + global verbose
|
| + if options.verbose:
|
| + verbose = True
|
| +
|
| if 'NACL_SDK_ROOT' in os.environ:
|
| # We don't want the currently configured NACL_SDK_ROOT to have any effect
|
| # on the build.
|
| @@ -292,37 +316,35 @@ def main(argv):
|
| if 'host' in options.toolchain:
|
| options.toolchain.remove('host')
|
| options.toolchain.append(getos.GetPlatform())
|
| - print 'Adding platform: ' + getos.GetPlatform()
|
| + Trace('Adding platform: ' + getos.GetPlatform())
|
|
|
| ValidateToolchains(options.toolchain)
|
|
|
| filters = {}
|
| if options.toolchain:
|
| filters['TOOLS'] = options.toolchain
|
| - print 'Filter by toolchain: ' + str(options.toolchain)
|
| + Trace('Filter by toolchain: ' + str(options.toolchain))
|
| if not options.experimental:
|
| filters['EXPERIMENTAL'] = False
|
| if options.dest:
|
| filters['DEST'] = options.dest
|
| - print 'Filter by type: ' + str(options.dest)
|
| + Trace('Filter by type: ' + str(options.dest))
|
| if args:
|
| filters['NAME'] = args
|
| - print 'Filter by name: ' + str(args)
|
| + Trace('Filter by name: ' + str(args))
|
|
|
| try:
|
| project_tree = parse_dsc.LoadProjectTree(SDK_SRC_DIR, include=filters)
|
| except parse_dsc.ValidationError as e:
|
| buildbot_common.ErrorExit(str(e))
|
| - parse_dsc.PrintProjectTree(project_tree)
|
| +
|
| + if verbose:
|
| + parse_dsc.PrintProjectTree(project_tree)
|
|
|
| UpdateHelpers(pepperdir, clobber=options.clobber)
|
| UpdateProjects(pepperdir, project_tree, options.toolchain,
|
| clobber=options.clobber)
|
|
|
| - if options.verbose:
|
| - global verbose
|
| - verbose = True
|
| -
|
| if options.build:
|
| if options.config:
|
| configs = [options.config]
|
|
|