Finish the display-customization variables: , , , , , and .
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 7 Jan 2005 00:42:01 +0000 (00:42 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 7 Jan 2005 00:42:01 +0000 (00:42 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@1208 fdb21ef1-2011-0410-befe-b5e4ea1792b1

22 files changed:
doc/man/scons.1
src/CHANGES.txt
src/engine/SCons/Tool/midl.py
src/engine/SCons/Tool/mingw.py
src/engine/SCons/Tool/mslink.py
src/engine/SCons/Tool/msvc.py
src/engine/SCons/Tool/qt.py
test/Ghostscript/GSFLAGS.py [moved from test/GSFLAGS.py with 100% similarity]
test/IDL/IDLSUFFIXES.py [moved from test/IDLSUFFIXES.py with 100% similarity]
test/IDL/MIDLCOM.py [new file with mode: 0644]
test/IDL/MIDLCOMSTR.py [new file with mode: 0644]
test/IDL/midl.py [moved from test/midl.py with 100% similarity]
test/MSVC/PCHCOM.py [new file with mode: 0644]
test/MSVC/PCHCOMSTR.py [new file with mode: 0644]
test/MSVC/RCCOM.py [new file with mode: 0644]
test/MSVC/RCCOMSTR.py [new file with mode: 0644]
test/MSVC/msvc.py [moved from test/msvc.py with 100% similarity]
test/MinGW/RCCOM.py [new file with mode: 0644]
test/MinGW/RCCOMSTR.py [new file with mode: 0644]
test/QT/QT.py [moved from test/QT.py with 100% similarity]
test/QT/QTFLAGS.py [moved from test/QTFLAGS.py with 100% similarity]
test/rpcgen.py [deleted file]

index f195c62c840c1e80ecbba4b4acee609847f5b5f4..449eacecb062afce81bf456417b2965f7a01015e 100644 (file)
@@ -6068,6 +6068,15 @@ dependencies for the PCH file. Example:
 env['PCH'] = 'StdAfx.pch'
 .EE
 
+.IP PCHCOM
+The command line used by the
+.B PCH
+builder to generated a precompiled header.
+
+.IP PCHCOMSTR
+The string displayed when generating a precompiled header.
+If this is not set, then $PCHCOM (the command line) is displayed.
+
 .IP PCHSTOP
 This variable specifies how much of a source file is precompiled. This
 variable is ignored by tools other than Microsoft Visual C++, or when
@@ -6267,9 +6276,17 @@ cpp file.
 .IP QT_MOCFROMCXXCOM
 Command to generate a moc file from a cpp file.
 
+.IP QT_MOCFROMCXXCOMSTR
+The string displayed when generating a moc file from a cpp file.
+If this is not set, then $QT_MOCFROMCXXCOM (the command line) is displayed.
+
 .IP QT_MOCFROMHCOM
 Command to generate a moc file from a header.
 
+.IP QT_MOCFROMHCOMSTR
+The string displayed when generating a moc file from a cpp file.
+If this is not set, then $QT_MOCFROMHCOM (the command line) is displayed.
+
 .IP QT_MOCFROMHFLAGS
 Default value is ''. These flags are passed to moc, when moccing a header
 file.
@@ -6284,9 +6301,13 @@ a header.
 .IP QT_UIC
 Default value is '$QT_BINPATH/uic'.
 
-.IP QT_UICDECLCOM
+.IP QT_UICCOM
 Command to generate header files from .ui files.
 
+.IP QT_UICCOMSTR
+The string displayed when generating header files from .ui files.
+If this is not set, then $QT_UICCOM (the command line) is displayed.
+
 .IP QT_UICDECLFLAGS
 Default value is ''. These flags are passed to uic, when creating a a h
 file from a .ui file.
@@ -6297,9 +6318,6 @@ Default value is ''. Prefix for uic generated header files.
 .IP QT_UICDECLSUFFIX
 Default value is '.h'. Suffix for uic generated header files.
 
-.IP QT_UICIMPLCOM
-Command to generate cxx files from .ui files.
-
 .IP QT_UICIMPLFLAGS
 Default value is ''. These flags are passed to uic, when creating a cxx
 file from a .ui file.
@@ -6326,6 +6344,10 @@ The resource compiler used by the RES builder.
 .IP RCCOM
 The command line used by the RES builder.
 
+.IP RCCOMSTR
+The string displayed when invoking the resource compiler.
+If this is not set, then $RCCOM (the command line) is displayed.
+
 .IP RCFLAGS
 The flags passed to the resource compiler by the RES builder.
 
@@ -6354,6 +6376,21 @@ If this is not set, then $RCS_COCOM
 .IP RCS_COFLAGS
 Options that are passed to the $RCS_CO command.
 
+.IP REGSVR
+The program used to register DLLs on Windows systems.
+
+.IP REGSVRCOM
+The command line used to register a newly-built DLL file
+on Windows systems.
+Invoked when the "register=1"
+keyword argument is passed to the
+.B SharedLibrary
+Builder.
+
+.IP REGSVRCOMSTR
+The string displayed when registering a newly-built DLL file.
+If this is not set, then $REGSVRCOM (the command line) is displayed.
+
 .IP RDirs
 A function that converts a file name into a list of Dir instances by
 searching the repositories. 
index c2801bdee86d8ad2e714194ae96660e71381ffd2..11c8e624e2a82063d0c50e6a7a2bc0638ae3f70a 100644 (file)
@@ -141,11 +141,12 @@ RELEASE 0.97 - XXX
     $CVSCOMSTR, $CXXCOMSTR, $DCOMSTR, $DVIPDFCOMSTR, $F77COMSTR,
     $F90COMSTR, $F95COMSTR, $FORTRANCOMSTR, $GSCOMSTR, $JARCOMSTR,
     $JAVACCOMSTR, $JAVAHCOMSTR, $LATEXCOMSTR, $LEXCOMSTR, $LINKCOMSTR,
-    $M4COMSTR, $P4COMSTR, $PDFLATEXCOMSTR, $PDFTEXCOMSTR, $PSCOMSTR,
-    $RCSCOMSTR, $RMICCOMSTR, $SCCSCOMSTR, $SHCCCOMSTR, $SHCXXCOMSTR,
-    $SHF77COMSTR, $SHF90COMSTR, $SHF95COMSTR, $SHFORTRANCOMSTR,
-    $SHLINKCOMSTR, $SWIGCOMSTR, $TARCOMSTR, $TEXCOMSTR, $YACCCOMSTR
-    and $ZIPCOMSTR.
+    $M4COMSTR, $MIDLCOMSTR, $P4COMSTR, $PCHCOMSTR, $PDFLATEXCOMSTR,
+    $PDFTEXCOMSTR, $PSCOMSTR, $QT_MOCFROMCXXCOMSTR, $QT_MOCFROMHCOMSTR,
+    $QT_UICCOMSTR, $RCCOMSTR, $REGSVRCOMSTR, $RCS_COCOMSTR, $RMICCOMSTR,
+    $SCCSCOMSTR, $SHCCCOMSTR, $SHCXXCOMSTR, $SHF77COMSTR, $SHF90COMSTR,
+    $SHF95COMSTR, $SHFORTRANCOMSTR, $SHLINKCOMSTR, $SWIGCOMSTR,
+    $TARCOMSTR, $TEXCOMSTR, $YACCCOMSTR and $ZIPCOMSTR.
 
   - Add an optional "map" keyword argument to ListOption() that takes a
     dictionary to map user-specified values to legal values from the list
index 6be91efd207dc18e1d1122f3cc26a4a482a57939..67579e9af882eea64872471137374a49256a6e27 100644 (file)
@@ -33,6 +33,8 @@ selection method.
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
+import SCons.Action
+import SCons.Builder
 import SCons.Defaults
 import SCons.Scanner.IDL
 import SCons.Util
@@ -53,7 +55,9 @@ def midl_emitter(target, source, env):
 
 idl_scanner = SCons.Scanner.IDL.IDLScan()
 
-midl_builder = SCons.Builder.Builder(action='$MIDLCOM',
+midl_action = SCons.Action.Action('$MIDLCOM', '$MIDLCOMSTR')
+
+midl_builder = SCons.Builder.Builder(action = midl_action,
                                      src_suffix = '.idl',
                                      suffix='.tlb',
                                      emitter = midl_emitter,
@@ -73,5 +77,3 @@ def exists(env):
         return 1
     else:
         return env.Detect('midl')
-
-
index debb873d5fd64c0796f6da2492976dd22608948e..99a5574c65a3480905ec1457029c395f30df9f1c 100644 (file)
@@ -37,6 +37,8 @@ import os
 import os.path
 import string
 
+import SCons.Action
+import SCons.Builder
 import SCons.Tool
 import SCons.Util
 
@@ -94,7 +96,9 @@ def shlib_emitter(target, source, env):
 
 shlib_action = SCons.Action.CommandGenerator(shlib_generator)
 
-res_builder = SCons.Builder.Builder(action='$RCCOM', suffix='.o',
+res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR')
+
+res_builder = SCons.Builder.Builder(action=res_action, suffix='.o',
                                     source_scanner=SCons.Defaults.ObjSourceScan)
 SCons.Defaults.ObjSourceScan.add_scanner('.rc', SCons.Defaults.CScan)
 
index 0c7b7dcd3a37c9ec840280c9b9ee5953bcb26034..98258c23c9217e95e49621e90c298740b5bb975d 100644 (file)
@@ -124,7 +124,7 @@ def RegServerFunc(target, source, env):
         return ret
     return 0
 
-regServerAction = SCons.Action.Action("$REGSVRCOM")
+regServerAction = SCons.Action.Action("$REGSVRCOM", "$REGSVRCOMSTR")
 regServerCheck = SCons.Action.Action(RegServerFunc, None)
 shlibLinkAction = SCons.Action.Action('${TEMPFILE("$SHLINK $SHLINKFLAGS $_SHLINK_TARGETS $( $_LIBDIRFLAGS $) $_LIBFLAGS $_PDB $_SHLINK_SOURCES")}')
 compositeLinkAction = shlibLinkAction + regServerCheck
index 34a1b941573c694c263c9d215369088077a9500b..e0ed26d386f40fbe495b05902bfc524e1d015c0c 100644 (file)
@@ -397,9 +397,12 @@ def shared_object_emitter(target, source, env):
     return object_emitter(target, source, env,
                           SCons.Defaults.SharedObjectEmitter)
 
-pch_builder = SCons.Builder.Builder(action='$PCHCOM', suffix='.pch', emitter=pch_emitter,
+pch_action = SCons.Action.Action('$PCHCOM', '$PCHCOMSTR')
+pch_builder = SCons.Builder.Builder(action=pch_action, suffix='.pch',
+                                    emitter=pch_emitter,
                                     source_scanner=SCons.Defaults.ObjSourceScan)
-res_builder = SCons.Builder.Builder(action='$RCCOM', suffix='.res',
+res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR')
+res_builder = SCons.Builder.Builder(action=res_action, suffix='.res',
                                     source_scanner=SCons.Defaults.ObjSourceScan)
 SCons.Defaults.ObjSourceScan.add_scanner('.rc', SCons.Defaults.CScan)
 
index 9bb04380f2239b26e9b4cf0719428d6ef1319bec..bc2d41b11e0871a7d21843416a45fb3073433879 100644 (file)
@@ -1,7 +1,7 @@
 
 """SCons.Tool.qt
 
-Tool-specific initialization for qt.
+Tool-specific initialization for Qt.
 
 There normally shouldn't be any need to import this module directly.
 It will usually be imported through the generic SCons.Tool.Tool()
@@ -37,6 +37,8 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 import os.path
 import re
 
+import SCons.Action
+import SCons.Builder
 import SCons.Defaults
 import SCons.Scanner
 import SCons.Tool
@@ -294,7 +296,7 @@ def generate(env):
                     Action(checkMocIncluded,None)])
 
     # ... and the corresponding builders
-    uicBld = Builder(action='$QT_UICCOM',
+    uicBld = Builder(action=SCons.Action.Action('$QT_UICCOM', '$QT_UICCOMSTR'),
                      emitter=uicEmitter,
                      src_suffix='$QT_UISUFFIX',
                      suffix='$QT_UICDECLSUFFIX',
@@ -302,11 +304,13 @@ def generate(env):
                      source_scanner=uicScanner)
     mocBld = Builder(action={}, prefix={}, suffix={})
     for h in header_extensions:
-        mocBld.add_action(h, '$QT_MOCFROMHCOM')
+        act = SCons.Action.Action('$QT_MOCFROMHCOM', '$QT_MOCFROMHCOMSTR')
+        mocBld.add_action(h, act)
         mocBld.prefix[h] = '$QT_MOCHPREFIX'
         mocBld.suffix[h] = '$QT_MOCHSUFFIX'
     for cxx in cxx_suffixes:
-        mocBld.add_action(cxx, '$QT_MOCFROMCXXCOM')
+        act = SCons.Action.Action('$QT_MOCFROMCXXCOM', '$QT_MOCFROMCXXCOMSTR')
+        mocBld.add_action(cxx, act)
         mocBld.prefix[cxx] = '$QT_MOCCXXPREFIX'
         mocBld.suffix[cxx] = '$QT_MOCCXXSUFFIX'
 
similarity index 100%
rename from test/GSFLAGS.py
rename to test/Ghostscript/GSFLAGS.py
similarity index 100%
rename from test/IDLSUFFIXES.py
rename to test/IDL/IDLSUFFIXES.py
diff --git a/test/IDL/MIDLCOM.py b/test/IDL/MIDLCOM.py
new file mode 100644 (file)
index 0000000..d3f6420
--- /dev/null
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+#
+# __COPYRIGHT__
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+"""
+Test the ability to configure the $MIDLCOM construction variable.
+"""
+
+import TestSCons
+
+python = TestSCons.python
+
+test = TestSCons.TestSCons()
+
+
+
+test.write('mymidl.py', """
+import sys
+outfile = open(sys.argv[1], 'wb')
+for f in sys.argv[2:]:
+    infile = open(f, 'rb')
+    for l in filter(lambda l: l != '/*midl*/\\n', infile.readlines()):
+        outfile.write(l)
+sys.exit(0)
+""")
+
+test.write('SConstruct', """
+env = Environment(tools=['default', 'midl'],
+                  MIDLCOM = r'%s mymidl.py $TARGET $SOURCES')
+env.TypeLibrary(target = 'aaa', source = 'aaa.idl')
+""" % python)
+
+test.write('aaa.idl', "aaa.idl\n/*midl*/\n")
+
+test.run(arguments = '.')
+
+test.must_match('aaa.tlb', "aaa.idl\n")
+
+
+
+test.pass_test()
diff --git a/test/IDL/MIDLCOMSTR.py b/test/IDL/MIDLCOMSTR.py
new file mode 100644 (file)
index 0000000..89a6e25
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+#
+# __COPYRIGHT__
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+"""
+Test that the $MIDLCOMSTR construction variable allows you to customize
+the displayed string when midl is called.
+"""
+
+import TestSCons
+
+python = TestSCons.python
+
+test = TestSCons.TestSCons()
+
+
+
+test.write('mymidl.py', """
+import sys
+outfile = open(sys.argv[1], 'wb')
+for f in sys.argv[2:]:
+    infile = open(f, 'rb')
+    for l in filter(lambda l: l != '/*midl*/\\n', infile.readlines()):
+        outfile.write(l)
+sys.exit(0)
+""")
+
+test.write('SConstruct', """
+env = Environment(tools=['default', 'midl'],
+                  MIDLCOM = r'%s mymidl.py $TARGET $SOURCES',
+                  MIDLCOMSTR = 'MIDLing $TARGET from $SOURCE')
+env.TypeLibrary(target = 'aaa', source = 'aaa.idl')
+""" % python)
+
+test.write('aaa.idl', "aaa.idl\n/*midl*/\n")
+
+test.run(stdout = test.wrap_stdout("""\
+MIDLing aaa.tlb from aaa.idl
+"""))
+
+test.must_match('aaa.tlb', "aaa.idl\n")
+
+
+
+test.pass_test()
similarity index 100%
rename from test/midl.py
rename to test/IDL/midl.py
diff --git a/test/MSVC/PCHCOM.py b/test/MSVC/PCHCOM.py
new file mode 100644 (file)
index 0000000..593a1c1
--- /dev/null
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+#
+# __COPYRIGHT__
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+"""
+Test the ability to configure the $MIDLCOM construction variable.
+"""
+
+import TestSCons
+
+python = TestSCons.python
+
+test = TestSCons.TestSCons()
+
+
+
+test.write('mypch.py', """
+import sys
+outfile = open(sys.argv[1], 'wb')
+for f in sys.argv[2:]:
+    infile = open(f, 'rb')
+    for l in filter(lambda l: l != '/*pch*/\\n', infile.readlines()):
+        outfile.write(l)
+sys.exit(0)
+""")
+
+test.write('SConstruct', """
+env = Environment(tools=['default', 'msvc'],
+                  PCHCOM = r'%s mypch.py $TARGET $SOURCES')
+env.PCH(target = 'aaa', source = 'aaa.h')
+""" % python)
+
+test.write('aaa.h', "aaa.h\n/*pch*/\n")
+
+test.run(arguments = ".")
+
+test.must_match('aaa.pch', "aaa.h\n")
+
+
+
+test.pass_test()
diff --git a/test/MSVC/PCHCOMSTR.py b/test/MSVC/PCHCOMSTR.py
new file mode 100644 (file)
index 0000000..c5ab9f5
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+#
+# __COPYRIGHT__
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+"""
+Test that the $PCHCOMSTR construction variable allows you to customize
+the displayed string when pch is called.
+"""
+
+import TestSCons
+
+python = TestSCons.python
+
+test = TestSCons.TestSCons()
+
+
+
+test.write('mypch.py', """
+import sys
+outfile = open(sys.argv[1], 'wb')
+for f in sys.argv[2:]:
+    infile = open(f, 'rb')
+    for l in filter(lambda l: l != '/*pch*/\\n', infile.readlines()):
+        outfile.write(l)
+sys.exit(0)
+""")
+
+test.write('SConstruct', """
+env = Environment(tools=['default', 'msvc'],
+                  PCHCOM = r'%s mypch.py $TARGET $SOURCES',
+                  PCHCOMSTR = 'PCHing $TARGET from $SOURCE')
+env.PCH(target = 'aaa', source = 'aaa.h')
+""" % python)
+
+test.write('aaa.h', "aaa.h\n/*pch*/\n")
+
+test.run(stdout = test.wrap_stdout("""\
+PCHing aaa.pch from aaa.h
+"""))
+
+test.must_match('aaa.pch', "aaa.h\n")
+
+
+
+test.pass_test()
diff --git a/test/MSVC/RCCOM.py b/test/MSVC/RCCOM.py
new file mode 100644 (file)
index 0000000..3262f0c
--- /dev/null
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+#
+# __COPYRIGHT__
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+"""
+Test the ability to configure the $RCCOM construction variable
+when using MSVC.
+"""
+
+import TestSCons
+
+python = TestSCons.python
+
+test = TestSCons.TestSCons()
+
+
+
+test.write('myrc.py', """
+import sys
+outfile = open(sys.argv[1], 'wb')
+for f in sys.argv[2:]:
+    infile = open(f, 'rb')
+    for l in filter(lambda l: l != '/*rc*/\\n', infile.readlines()):
+        outfile.write(l)
+sys.exit(0)
+""")
+
+test.write('SConstruct', """
+env = Environment(tools=['default', 'msvc'],
+                  RCCOM = r'%(python)s myrc.py $TARGET $SOURCES')
+env.RES(target = 'aaa', source = 'aaa.rc')
+""" % locals())
+
+test.write('aaa.rc', "aaa.rc\n/*rc*/\n")
+
+test.run(arguments = ".")
+
+test.must_match('aaa.res', "aaa.rc\n")
+
+
+
+test.pass_test()
diff --git a/test/MSVC/RCCOMSTR.py b/test/MSVC/RCCOMSTR.py
new file mode 100644 (file)
index 0000000..33e192b
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+#
+# __COPYRIGHT__
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+"""
+Test that the $RCCOMSTR construction variable allows you to customize
+the displayed string when rc is called.
+"""
+
+import TestSCons
+
+python = TestSCons.python
+
+test = TestSCons.TestSCons()
+
+
+
+test.write('myrc.py', """
+import sys
+outfile = open(sys.argv[1], 'wb')
+for f in sys.argv[2:]:
+    infile = open(f, 'rb')
+    for l in filter(lambda l: l != '/*rc*/\\n', infile.readlines()):
+        outfile.write(l)
+sys.exit(0)
+""")
+
+test.write('SConstruct', """
+env = Environment(tools=['default', 'msvc'],
+                  RCCOM = r'%(python)s myrc.py $TARGET $SOURCES',
+                  RCCOMSTR = 'RCing $TARGET from $SOURCE')
+env.RES(target = 'aaa', source = 'aaa.rc')
+""" % locals())
+
+test.write('aaa.rc', "aaa.rc\n/*rc*/\n")
+
+test.run(stdout = test.wrap_stdout("""\
+RCing aaa.res from aaa.rc
+"""))
+
+test.must_match('aaa.res', "aaa.rc\n")
+
+
+
+test.pass_test()
similarity index 100%
rename from test/msvc.py
rename to test/MSVC/msvc.py
diff --git a/test/MinGW/RCCOM.py b/test/MinGW/RCCOM.py
new file mode 100644 (file)
index 0000000..4ddcd91
--- /dev/null
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+#
+# __COPYRIGHT__
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+"""
+Test the ability to configure the $RCCOM construction variable
+when using MinGW.
+"""
+
+import TestSCons
+
+python = TestSCons.python
+
+test = TestSCons.TestSCons()
+
+
+
+test.write('myrc.py', """
+import sys
+outfile = open(sys.argv[1], 'wb')
+for f in sys.argv[2:]:
+    infile = open(f, 'rb')
+    for l in filter(lambda l: l != '/*rc*/\\n', infile.readlines()):
+        outfile.write(l)
+sys.exit(0)
+""")
+
+test.write('SConstruct', """
+env = Environment(tools=['default', 'mingw'],
+                  RCCOM = r'%(python)s myrc.py $TARGET $SOURCES')
+env.RES(target = 'aaa', source = 'aaa.rc')
+""" % locals())
+
+test.write('aaa.rc', "aaa.rc\n/*rc*/\n")
+
+test.run(arguments = ".")
+
+test.must_match('aaa.o', "aaa.rc\n")
+
+
+
+test.pass_test()
diff --git a/test/MinGW/RCCOMSTR.py b/test/MinGW/RCCOMSTR.py
new file mode 100644 (file)
index 0000000..e095847
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+#
+# __COPYRIGHT__
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+"""
+Test that the $RCCOMSTR construction variable allows you to customize
+the displayed string when rc is called.
+"""
+
+import TestSCons
+
+python = TestSCons.python
+
+test = TestSCons.TestSCons()
+
+
+
+test.write('myrc.py', """
+import sys
+outfile = open(sys.argv[1], 'wb')
+for f in sys.argv[2:]:
+    infile = open(f, 'rb')
+    for l in filter(lambda l: l != '/*rc*/\\n', infile.readlines()):
+        outfile.write(l)
+sys.exit(0)
+""")
+
+test.write('SConstruct', """
+env = Environment(tools=['default', 'mingw'],
+                  RCCOM = r'%(python)s myrc.py $TARGET $SOURCES',
+                  RCCOMSTR = 'RCing $TARGET from $SOURCE')
+env.RES(target = 'aaa', source = 'aaa.rc')
+""" % locals())
+
+test.write('aaa.rc', "aaa.rc\n/*rc*/\n")
+
+test.run(stdout = test.wrap_stdout("""\
+RCing aaa.o from aaa.rc
+"""))
+
+test.must_match('aaa.o', "aaa.rc\n")
+
+
+
+test.pass_test()
similarity index 100%
rename from test/QT.py
rename to test/QT/QT.py
similarity index 100%
rename from test/QTFLAGS.py
rename to test/QT/QTFLAGS.py
diff --git a/test/rpcgen.py b/test/rpcgen.py
deleted file mode 100644 (file)
index 7c9f8ec..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env python
-#
-# __COPYRIGHT__
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
-
-import os
-import string
-import sys
-import TestSCons
-
-_exe = TestSCons._exe
-test = TestSCons.TestSCons()
-
-rpcgen = test.where_is('rpcgen')
-if not rpcgen:
-    print "rpcgen not found, skipping test"
-    test.pass_test(1)
-
-test.subdir('do_rpcgen')
-
-test.write('SConstruct', """\
-import os
-env = Environment(ENV=os.environ)
-env.Program('rpcclnt', ['rpcclnt.c', 'do_rpcgen/rpcif_clnt.c'])
-env.RPCGenHeader('do_rpcgen/rpcif')
-env.RPCGenClient('do_rpcgen/rpcif')
-env.RPCGenService('do_rpcgen/rpcif')
-env.RPCGenXDR('do_rpcgen/rpcif')
-""")
-
-test.write(['do_rpcgen', 'rpcif.x'], """\
-program RPCTEST_IF
-{
-  version RPCTEST_IF_VERSION
-  {
-    int START(unsigned long) = 1;
-    int STOP(unsigned long) = 2;
-    int STATUS(unsigned long) = 3;
-  } = 1; /* version */
-} = 0xfeedf00d; /* portmap program ID */
-""")
-
-# Following test tries to make sure it can compile and link, but when
-# it's run it doesn't actually invoke any rpc operations because that
-# would have significant dependencies on network configuration,
-# portmapper, etc. that aren't necessarily appropriate for an scons
-# test.
-
-test.write('rpcclnt.c', """\
-#include <rpc/rpc.h>
-#include <rpc/pmap_clnt.h>
-#include "do_rpcgen/rpcif.h"
-
-int main(int argc, char **args) {
-  const char* const SERVER = "localhost";
-  CLIENT *cl;
-  int *rslt;
-  unsigned long arg = 0;
-  if (argc > 2) {
-    cl = clnt_create( SERVER, RPCTEST_IF, RPCTEST_IF_VERSION, "udp" );
-    if (cl == 0 ) { return 1; }
-    rslt = start_1(&arg, cl);
-    if (*rslt == 0) { clnt_perror( cl, SERVER ); return 1; }
-    clnt_destroy(cl);
-  } else
-    printf("Hello!\\n");
-  return 0;
-}
-""")
-
-
-test.run()
-
-test.run(program=test.workpath('rpcclnt'+_exe))
-
-test.fail_test(not test.stdout() in ["Hello!\n", "Hello!\r\n"])
-
-test.pass_test()