Small fix for yacc: only look for a .h file if they used the -d option. (Charles...
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Mon, 22 Apr 2002 22:45:23 +0000 (22:45 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Mon, 22 Apr 2002 22:45:23 +0000 (22:45 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@341 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/engine/SCons/Defaults.py
test/YACC.py

index ac04d9aa54364e0d1eaf7c5f17fb3df46d3e42bf..8d6bd343f42064accdd752c3b3ad7bda564ba8c1 100644 (file)
@@ -80,9 +80,11 @@ class SharedCmdGenerator:
 
 def yaccEmitter(target, source, env, **kw):
     # Yacc can be configured to emit a .h file as well
-    # as a .c file.  Append that as a target.
-    if len(source) and os.path.splitext(SCons.Util.to_String(source[0]))[1] in \
-       [ '.y', '.yy']:
+    # as a .c file, if -d is specified on the command line.
+    if len(source) and \
+       os.path.splitext(SCons.Util.to_String(source[0]))[1] in \
+       [ '.y', '.yy'] and \
+       '-d' in string.split(env.subst("$YACCFLAGS")):
         target.append(os.path.splitext(SCons.Util.to_String(target[0]))[0] + \
                       '.h')
     return (target, source)
@@ -191,21 +193,13 @@ def win32LinkGenerator(env, target, source, **kw):
     args.extend(map(SCons.Util.to_String, source))
     return win32TempFileMunge(env, args)
 
-kw = {
-       'name'        : 'Program',
-       'prefix'      : '$PROGPREFIX',
-       'suffix'      : '$PROGSUFFIX',
-       'src_suffix'  : '$OBJSUFFIX',
-       'src_builder' : Object,
-       'scanner'     : SCons.Scanner.Prog.ProgScan()
-}
-
-if sys.platform == 'win32':
-    kw['generator'] = win32LinkGenerator
-else:
-    kw['action'] = '$LINKCOM'
-
-Program = apply(SCons.Builder.Builder, (), kw)
+Program = SCons.Builder.Builder(name='Program',
+                                action='$LINKCOM',
+                                prefix='$PROGPREFIX',
+                                suffix='$PROGSUFFIX',
+                                src_suffix='$OBJSUFFIX',
+                                src_builder=Object,
+                                scanner = SCons.Scanner.Prog.ProgScan())
 
 class LibAffixGenerator:
     def __init__(self, static, shared):
index 486200c64f12568b6f304369a9420cc5e5945d13..8fea904d4b5273a7754e6c0726b86c9c0482f4bc 100644 (file)
@@ -140,12 +140,16 @@ newline: '\n';
 
     test.run(arguments = 'foo' + _exe, stderr = None)
 
+    test.up_to_date(arguments = 'foo' + _exe)
+
     test.fail_test(os.path.exists(test.workpath('wrapper.out')))
 
     test.run(program = test.workpath('foo'), stdin = "a\n", stdout = "foo.y\n")
 
     test.run(arguments = 'bar' + _exe)
 
+    test.up_to_date(arguments = 'bar' + _exe)
+
     test.fail_test(test.read('wrapper.out') != "wrapper.py\n")
 
     test.run(program = test.workpath('bar'), stdin = "b\n", stdout = "bar.y\n")