diff options
author | Robert Managan <managan1@llnl.gov> | 2012-10-24 23:58:15 (GMT) |
---|---|---|
committer | Robert Managan <managan1@llnl.gov> | 2012-10-24 23:58:15 (GMT) |
commit | 4976bb1cf85184d9ee545b77fe9d18e064a42bee (patch) | |
tree | 4e4b2f720a7060164eab1575b2ff9efaa0cc966b /src/engine/SCons/Tool/link.py | |
parent | 1b1f61b2266eaabce9ea7f3eeefc68f946fd0328 (diff) | |
download | SCons-4976bb1cf85184d9ee545b77fe9d18e064a42bee.zip SCons-4976bb1cf85184d9ee545b77fe9d18e064a42bee.tar.gz SCons-4976bb1cf85184d9ee545b77fe9d18e064a42bee.tar.bz2 |
Treat the sym links as side effects instead of extra targets. This prevents Install from copying the links as full files. Still need to get Install to create the links, if possible. Still a test failure or two to clean up as well. Needs a new test as well.
Diffstat (limited to 'src/engine/SCons/Tool/link.py')
-rw-r--r-- | src/engine/SCons/Tool/link.py | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/src/engine/SCons/Tool/link.py b/src/engine/SCons/Tool/link.py index 9af9b5f..4ad4948 100644 --- a/src/engine/SCons/Tool/link.py +++ b/src/engine/SCons/Tool/link.py @@ -66,6 +66,7 @@ def smart_link(source, target, env, for_signature): return '$CC' def shlib_emitter(target, source, env): + Verbose = False platform = env.subst('$PLATFORM') for tgt in target: tgt.attributes.shared = 1 @@ -75,15 +76,40 @@ def shlib_emitter(target, source, env): if version: if platform == 'posix': versionparts = version.split('.') - name = str(target[0]) - for ver in versionparts: + name = target[0].name + # generate library name with the version number + version_name = target[0].name + '.' + version + # change the name of the target to version_name + target[0].name = version_name + if Verbose: + print "shlib_emitter: target is ", version_name + print "shlib_emitter: side effect: ", name + # make name w/o version number a side effect (will be a sym link) + env.SideEffect(version_name, target[0]) + env.Clean(target[0], version_name) + if Verbose: + print "shlib_emitter: versionparts ",versionparts + for ver in versionparts[0:-1]: name = name + '.' + ver - target.insert(0, env.fs.File(name)) + if Verbose: + print "shlib_emitter: side effect: ", name + # make side effects of sym links with partial version number + env.SideEffect(name, target[0]) + env.Clean(target[0], name) elif platform == 'darwin': shlib_suffix = env.subst('$SHLIBSUFFIX') - name = str(target[0]) - name = re.sub(shlib_suffix+"$",'.'+version+shlib_suffix,name) - target.insert(0, env.fs.File(name)) + name = target[0].name + # generate library name with the version number + suffix_re = re.escape(shlib_suffix) + version_name = re.sub(suffix_re, '.' + version + shlib_suffix, name) + # change the name of the target to version_name + target[0].name = version_name + if Verbose: + print "shlib_emitter: target is ", version_name + print "shlib_emitter: side effect: ", name + # make name w/o version number a side effect (will be a sym link) + env.SideEffect(version_name, target[0]) + env.Clean(target[0], version_name) except KeyError: version = None return (target, source) |