summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2003-09-17 12:01:39 (GMT)
committerSteven Knight <knight@baldmt.com>2003-09-17 12:01:39 (GMT)
commitaff3d21397df3db4ee99f0d6ef964dde23791b50 (patch)
tree104507e594a84e99a83abbbffac1b51cd834113c /src/engine
parent0b3f13af1549fc4f6b6ed57f151b1d2004e82f2c (diff)
downloadSCons-aff3d21397df3db4ee99f0d6ef964dde23791b50.zip
SCons-aff3d21397df3db4ee99f0d6ef964dde23791b50.tar.gz
SCons-aff3d21397df3db4ee99f0d6ef964dde23791b50.tar.bz2
Support Jar manifest files and the -C option. Tool/ms*.py fixes for pre-Python 2.2. (Charles Crain)
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/SCons/SConf.py1
-rw-r--r--src/engine/SCons/Tool/jar.py47
-rw-r--r--src/engine/SCons/Tool/mslib.py2
-rw-r--r--src/engine/SCons/Tool/mslink.py2
-rw-r--r--src/engine/SCons/Tool/msvc.py2
-rw-r--r--src/engine/SCons/Tool/msvs.py12
-rw-r--r--src/engine/SCons/Tool/msvsTests.py2
7 files changed, 57 insertions, 11 deletions
diff --git a/src/engine/SCons/SConf.py b/src/engine/SCons/SConf.py
index 22bcb48..ee3a6b5 100644
--- a/src/engine/SCons/SConf.py
+++ b/src/engine/SCons/SConf.py
@@ -154,6 +154,7 @@ class SConf:
0 on error.
"""
+ global SCons
import SCons.Script # really ugly, but we need BuildTask :-(
# Is it better to provide a seperate Task for SConf builds ?
class SConfBuildTask(SCons.Script.BuildTask):
diff --git a/src/engine/SCons/Tool/jar.py b/src/engine/SCons/Tool/jar.py
index fa21f3c..5fcb205 100644
--- a/src/engine/SCons/Tool/jar.py
+++ b/src/engine/SCons/Tool/jar.py
@@ -38,6 +38,47 @@ import os.path
import SCons.Builder
+def jarSources(target, source, env, for_signature):
+ """Only include sources that are not a manifest file."""
+ ret = []
+ for src in source:
+ contents = src.get_contents()
+ if contents[:16] != "Manifest-Version":
+ if env.has_key('JARCHDIR'):
+ # If we are changing the dir with -C, then sources should
+ # be relative to that directory.
+ ret.append(src.get_path(src.fs.Dir(env['JARCHDIR'])))
+ else:
+ ret.append(src)
+ return ret
+
+def jarManifest(target, source, env, for_signature):
+ """Look in sources for a manifest file, if any."""
+ for src in source:
+ contents = src.get_contents()
+ if contents[:16] == "Manifest-Version":
+ return src
+ return ''
+
+def jarFlags(target, source, env, for_signature):
+ """If we have a manifest, make sure that the 'm'
+ flag is specified."""
+ for src in source:
+ contents = src.get_contents()
+ if contents[:16] == "Manifest-Version":
+ if not 'm' in env['JARFLAGS']:
+ return env['JARFLAGS'] + 'm'
+ break
+ return env['JARFLAGS']
+
+def jarChdir(target, source, env, for_signature):
+ """If we have an Environment variable by the name
+ of JARCHDIR, then supply the command line option
+ '-C <dir>' to Jar."""
+ if env.has_key('JARCHDIR'):
+ return [ '-C', '$JARCHDIR' ]
+ return ''
+
JarBuilder = SCons.Builder.Builder(action = '$JARCOM',
source_factory = SCons.Node.FS.default_fs.Entry,
suffix = '$JARSUFFIX')
@@ -51,7 +92,11 @@ def generate(env):
env['JAR'] = 'jar'
env['JARFLAGS'] = 'cf'
- env['JARCOM'] = '$JAR $JARFLAGS $TARGET $SOURCE'
+ env['_JARFLAGS'] = jarFlags
+ env['_JARMANIFEST'] = jarManifest
+ env['_JARSOURCES'] = jarSources
+ env['_JARCHDIR'] = jarChdir
+ env['JARCOM'] = '$JAR $_JARFLAGS $TARGET $_JARMANIFEST $_JARCHDIR $_JARSOURCES'
env['JARSUFFIX'] = '.jar'
def exists(env):
diff --git a/src/engine/SCons/Tool/mslib.py b/src/engine/SCons/Tool/mslib.py
index 6d0b70b..646cbde 100644
--- a/src/engine/SCons/Tool/mslib.py
+++ b/src/engine/SCons/Tool/mslib.py
@@ -70,4 +70,4 @@ def exists(env):
return env.Detect('lib')
else:
# there's at least one version of MSVS installed.
- return True
+ return 1
diff --git a/src/engine/SCons/Tool/mslink.py b/src/engine/SCons/Tool/mslink.py
index ccd8932..282fb22 100644
--- a/src/engine/SCons/Tool/mslink.py
+++ b/src/engine/SCons/Tool/mslink.py
@@ -190,4 +190,4 @@ def exists(env):
return env.Detect('link')
else:
# there's at least one version of MSVS installed.
- return True
+ return 1
diff --git a/src/engine/SCons/Tool/msvc.py b/src/engine/SCons/Tool/msvc.py
index 9070784..db434c4 100644
--- a/src/engine/SCons/Tool/msvc.py
+++ b/src/engine/SCons/Tool/msvc.py
@@ -434,4 +434,4 @@ def exists(env):
return env.Detect('cl')
else:
# there's at least one version of MSVS installed.
- return True
+ return 1
diff --git a/src/engine/SCons/Tool/msvs.py b/src/engine/SCons/Tool/msvs.py
index 40361a1..d4c32ba 100644
--- a/src/engine/SCons/Tool/msvs.py
+++ b/src/engine/SCons/Tool/msvs.py
@@ -259,10 +259,10 @@ class _GenerateV6DSP(_DSPGenerator):
'# End Project\n')
# now we pickle some data and add it to the file -- MSDEV will ignore it.
- pdata = pickle.dumps(self.configs,True)
+ pdata = pickle.dumps(self.configs,1)
pdata = base64.encodestring(pdata)
self.file.write(pdata + '\n')
- pdata = pickle.dumps(self.sources,True)
+ pdata = pickle.dumps(self.sources,1)
pdata = base64.encodestring(pdata)
self.file.write(pdata + '\n')
@@ -410,10 +410,10 @@ class _GenerateV7DSP(_DSPGenerator):
self.file.write('</VisualStudioProject>\n')
# now we pickle some data and add it to the file -- MSDEV will ignore it.
- pdata = pickle.dumps(self.configs,True)
+ pdata = pickle.dumps(self.configs,1)
pdata = base64.encodestring(pdata)
self.file.write('<!-- SCons Data:\n' + pdata + '\n')
- pdata = pickle.dumps(self.sources,True)
+ pdata = pickle.dumps(self.sources,1)
pdata = base64.encodestring(pdata)
self.file.write(pdata + '-->\n')
@@ -601,7 +601,7 @@ class _GenerateV7DSW(_DSWGenerator):
' GlobalSection(ExtensibilityAddIns) = postSolution\n'
' EndGlobalSection\n'
'EndGlobal\n')
- pdata = pickle.dumps(self.configs,True)
+ pdata = pickle.dumps(self.configs,1)
pdata = base64.encodestring(pdata)
self.file.write(pdata + '\n')
@@ -1035,5 +1035,5 @@ def exists(env):
return env.Detect('msdev')
else:
# there's at least one version of MSVS installed.
- return True
+ return 1
diff --git a/src/engine/SCons/Tool/msvsTests.py b/src/engine/SCons/Tool/msvsTests.py
index bd22177..4343521 100644
--- a/src/engine/SCons/Tool/msvsTests.py
+++ b/src/engine/SCons/Tool/msvsTests.py
@@ -392,7 +392,7 @@ def DummyQueryValue(key, value):
return rv
def DummyExists(path):
- return True
+ return 1
class msvsTestCase(unittest.TestCase):
def test_get_default_visual_studio_version(self):