1# -*- mode:python -*- 2 3# Copyright (c) 2013, 2015, 2016 ARM Limited 4# All rights reserved. 5# 6# The license below extends only to copyright in the software and shall 7# not be construed as granting a license to any other intellectual 8# property including but not limited to intellectual property relating
--- 1393 unchanged lines hidden (view full) ---
1402main.Append(BUILDERS = { 'SwitchingHeader': switching_header_builder }) 1403 1404def switching_headers(self, headers, source): 1405 for header in headers: 1406 self.SwitchingHeader(header, source) 1407 1408main.AddMethod(switching_headers, 'SwitchingHeaders') 1409
|
1410# all-isas -> all-deps -> all-environs -> all_targets
1411main.Alias('#all-isas', [])
1412main.Alias('#all-deps', '#all-isas')
1413
1414# Dummy target to ensure all environments are created before telling
1415# SCons what to actually make (the command line arguments). We attach
1416# them to the dependence graph after the environments are complete.
1417ORIG_BUILD_TARGETS = list(BUILD_TARGETS) # force a copy; gets closure to work.
1418def environsComplete(target, source, env):
1419 for t in ORIG_BUILD_TARGETS:
1420 main.Depends('#all-targets', t)
1421
1422# Each build/* switching_dir attaches its *-environs target to #all-environs.
1423main.Append(BUILDERS = {'CompleteEnvirons' :
1424 Builder(action=MakeAction(environsComplete, None))})
1425main.CompleteEnvirons('#all-environs', [])
1426
1427def doNothing(**ignored): pass
1428main.Append(BUILDERS = {'Dummy': Builder(action=MakeAction(doNothing, None))})
1429
1430# The final target to which all the original targets ultimately get attached.
1431main.Dummy('#all-targets', '#all-environs')
1432BUILD_TARGETS[:] = ['#all-targets']
1433
|
1410################################################### 1411# 1412# Define build environments for selected configurations. 1413# 1414################################################### 1415
|
1440def variant_name(path):
1441 return os.path.basename(path).lower().replace('_', '-')
1442main['variant_name'] = variant_name
1443main['VARIANT_NAME'] = '${variant_name(BUILDDIR)}'
1444
|
1416for variant_path in variant_paths: 1417 if not GetOption('silent'): 1418 print "Building in", variant_path 1419 1420 # Make a copy of the build-root environment to use for this config. 1421 env = main.Clone() 1422 env['BUILDDIR'] = variant_path 1423
--- 95 unchanged lines hidden (view full) ---
1519 if env['USE_SSE2']: 1520 env.Append(CCFLAGS=['-msse2']) 1521 1522 # The src/SConscript file sets up the build rules in 'env' according 1523 # to the configured variables. It returns a list of environments, 1524 # one for each variant build (debug, opt, etc.) 1525 SConscript('src/SConscript', variant_dir = variant_path, exports = 'env') 1526
|
1556def pairwise(iterable):
1557 "s -> (s0,s1), (s1,s2), (s2, s3), ..."
1558 a, b = itertools.tee(iterable)
1559 b.next()
1560 return itertools.izip(a, b)
1561
1562variant_names = [variant_name(path) for path in variant_paths]
1563
1564# Create false dependencies so SCons will parse ISAs, establish
1565# dependencies, and setup the build Environments serially. Either
1566# SCons (likely) and/or our SConscripts (possibly) cannot cope with -j
1567# greater than 1. It appears to be standard race condition stuff; it
1568# doesn't always fail, but usually, and the behaviors are different.
1569# Every time I tried to remove this, builds would fail in some
1570# creative new way. So, don't do that. You'll want to, though, because
1571# tests/SConscript takes a long time to make its Environments.
1572for t1, t2 in pairwise(sorted(variant_names)):
1573 main.Depends('#%s-deps' % t2, '#%s-deps' % t1)
1574 main.Depends('#%s-environs' % t2, '#%s-environs' % t1)
1575
|
1527# base help text 1528Help(''' 1529Usage: scons [scons options] [build variables] [target(s)] 1530 1531Extra scons options: 1532%(options)s 1533 1534Global build variables: 1535%(global_vars)s 1536 1537%(local_vars)s 1538''' % help_texts)
|