Add LINKFLAGS support.
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 12 Oct 2001 22:20:00 +0000 (22:20 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 12 Oct 2001 22:20:00 +0000 (22:20 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@98 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/engine/SCons/Defaults.py
test/LINK.py
test/LINKFLAGS.py

index af08fc28d67c2a95ea4cd71269e4bdb516a53e53..eeaa02a83e9c436ee14d874e764607e975ab7583 100644 (file)
@@ -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' },
 }
index dec523df6b4829bb6e563326332c07bf8b12f830..f2ac661de3ffad0740e9c66af2af9fd7c4c09603 100644 (file)
 
 __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()
index dec523df6b4829bb6e563326332c07bf8b12f830..06c148238a76e20903fdc4ee61607643bddeedc6 100644 (file)
 
 __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()