summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Defaults.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-04-17 20:17:55 (GMT)
committerSteven Knight <knight@baldmt.com>2002-04-17 20:17:55 (GMT)
commit82b0db2c19ef714da4e95095c8dee8c32fc294ac (patch)
treea56895982a621f2d3806c841eea8dba89b97369a /src/engine/SCons/Defaults.py
parent181de357174cc9663407256408c813c344e6bd9b (diff)
downloadSCons-82b0db2c19ef714da4e95095c8dee8c32fc294ac.zip
SCons-82b0db2c19ef714da4e95095c8dee8c32fc294ac.tar.gz
SCons-82b0db2c19ef714da4e95095c8dee8c32fc294ac.tar.bz2
Fix win32LinkGenerator.
Diffstat (limited to 'src/engine/SCons/Defaults.py')
-rw-r--r--src/engine/SCons/Defaults.py28
1 files changed, 12 insertions, 16 deletions
diff --git a/src/engine/SCons/Defaults.py b/src/engine/SCons/Defaults.py
index 929dbc9..a0b1157 100644
--- a/src/engine/SCons/Defaults.py
+++ b/src/engine/SCons/Defaults.py
@@ -135,25 +135,21 @@ Object = SCons.Builder.Builder(name = 'Object',
src_builder = [CFile, CXXFile])
def win32LinkGenerator(env, target, source, **kw):
- args = []
- for a in [env['LINKFLAGS'],
- '/OUT:' + str(target[0]),
- env['_LIBDIRFLAGS'],
- env['_LIBFLAGS'],
- map(lambda x: str(x), source)]:
- if SCons.Util.is_List(a):
- args.extend(a)
- else:
- args.append(a)
- argstring = string.join(args, " ")
- if len(argstring) <= 2048:
- return env['LINK'] + " " + argstring
+ cmd = env.subst_list([ '$LINK', '$LINKFLAGS', '/OUT:' + str(target[0]) ])[0]
+ cmd.extend(['$('] + env.subst_list('$_LIBDIRFLAGS')[0] + ['$)'])
+ cmd.extend(env.subst_list('$_LIBFLAGS')[0])
+ cmd.extend(map(lambda x: str(x), source))
+ cmdlen = reduce(lambda x, y: x + len(y), cmd, 0) + len(cmd)
+ if cmdlen <= 2048:
+ return [cmd]
else:
import tempfile
tmp = tempfile.mktemp()
- open(tmp, 'w').write(argstring + "\n")
- return [ env['LINK'] + " @" + tmp,
- "del " + tmp, ]
+ args = filter(lambda x: x != '$(' and x != '$)', cmd[1:])
+ args = map(SCons.Util.quote_spaces, args)
+ open(tmp, 'w').write(string.join(args, " ") + "\n")
+ return [ [cmd[0], '@' + tmp],
+ ['del', tmp] ]
kw = {
'name' : 'Program',