summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2001-10-12 22:20:00 (GMT)
committerSteven Knight <knight@baldmt.com>2001-10-12 22:20:00 (GMT)
commit22d04cc904e082524d81e9cc243c15e9e872d28c (patch)
treea06c32b0b5caf7c0d5007a1232409f47f1e2f827
parent2d4ea0988d82d1134cebd5bbc8a4f7a3fcbb8f2f (diff)
downloadSCons-22d04cc904e082524d81e9cc243c15e9e872d28c.zip
SCons-22d04cc904e082524d81e9cc243c15e9e872d28c.tar.gz
SCons-22d04cc904e082524d81e9cc243c15e9e872d28c.tar.bz2
Add LINKFLAGS support.
-rw-r--r--src/engine/SCons/Defaults.py4
-rw-r--r--test/LINK.py42
-rw-r--r--test/LINKFLAGS.py42
3 files changed, 83 insertions, 5 deletions
diff --git a/src/engine/SCons/Defaults.py b/src/engine/SCons/Defaults.py
index af08fc2..eeaa02a 100644
--- a/src/engine/SCons/Defaults.py
+++ b/src/engine/SCons/Defaults.py
@@ -43,7 +43,7 @@ Object = SCons.Builder.Builder(name = 'Object',
suffix='.o')
Program = SCons.Builder.Builder(name = 'Program',
- action = '$CC -o $target $sources',
+ action = '$LINK $LINKFLAGS -o $target $sources',
builders = [ Object ])
Library = SCons.Builder.Builder(name = 'Library',
@@ -55,6 +55,8 @@ Library = SCons.Builder.Builder(name = 'Library',
ConstructionEnvironment = {
'CC' : 'cc',
'CCFLAGS' : '',
+ 'LINK' : '$CC',
+ 'LINKFLAGS' : '',
'BUILDERS' : [Object, Program, Library],
'ENV' : { 'PATH' : '/usr/local/bin:/bin:/usr/bin' },
}
diff --git a/test/LINK.py b/test/LINK.py
index dec523d..f2ac661 100644
--- a/test/LINK.py
+++ b/test/LINK.py
@@ -24,15 +24,53 @@
__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+import os
import TestSCons
test = TestSCons.TestSCons()
-test.pass_test() #XXX Short-circuit until this is implemented.
+test.write("ccwrapper.py",
+"""import os
+import string
+import sys
+open('%s', 'w').write("ccwrapper.py\\n")
+os.system(string.join(["cc"] + sys.argv[1:], " "))
+""" % test.workpath('ccwrapper.out'))
test.write('SConstruct', """
+foo = Environment()
+bar = Environment(LINK = 'python ccwrapper.py')
+foo.Program(target = 'foo', source = 'foo.c')
+bar.Program(target = 'bar', source = 'bar.c')
""")
-test.run(arguments = '.')
+test.write('foo.c', """
+int
+main(int argc, char *argv[])
+{
+ argv[argc++] = "--";
+ printf("foo.c\n");
+ exit (0);
+}
+""")
+
+test.write('bar.c', """
+int
+main(int argc, char *argv[])
+{
+ argv[argc++] = "--";
+ printf("foo.c\n");
+ exit (0);
+}
+""")
+
+
+test.run(arguments = 'foo')
+
+test.fail_test(os.path.exists(test.workpath('ccwrapper.out')))
+
+test.run(arguments = 'bar')
+
+test.fail_test(test.read('ccwrapper.out') != "ccwrapper.py\n")
test.pass_test()
diff --git a/test/LINKFLAGS.py b/test/LINKFLAGS.py
index dec523d..06c1482 100644
--- a/test/LINKFLAGS.py
+++ b/test/LINKFLAGS.py
@@ -24,15 +24,53 @@
__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+import os
import TestSCons
test = TestSCons.TestSCons()
-test.pass_test() #XXX Short-circuit until this is implemented.
+test.write("ccwrapper.py",
+"""import os
+import string
+import sys
+open('%s', 'w').write("ccwrapper.py\\n")
+os.system(string.join(["cc"] + sys.argv[1:], " "))
+""" % test.workpath('ccwrapper.out'))
test.write('SConstruct', """
+foo = Environment()
+bar = Environment(LINK = '', LINKFLAGS = 'python ccwrapper.py')
+foo.Program(target = 'foo', source = 'foo.c')
+bar.Program(target = 'bar', source = 'bar.c')
""")
-test.run(arguments = '.')
+test.write('foo.c', """
+int
+main(int argc, char *argv[])
+{
+ argv[argc++] = "--";
+ printf("foo.c\n");
+ exit (0);
+}
+""")
+
+test.write('bar.c', """
+int
+main(int argc, char *argv[])
+{
+ argv[argc++] = "--";
+ printf("foo.c\n");
+ exit (0);
+}
+""")
+
+
+test.run(arguments = 'foo')
+
+test.fail_test(os.path.exists(test.workpath('ccwrapper.out')))
+
+test.run(arguments = 'bar')
+
+test.fail_test(test.read('ccwrapper.out') != "ccwrapper.py\n")
test.pass_test()