diff options
author | Pawel Tomulik <ptomulik@meil.pw.edu.pl> | 2015-09-20 23:55:43 (GMT) |
---|---|---|
committer | Pawel Tomulik <ptomulik@meil.pw.edu.pl> | 2015-09-20 23:55:43 (GMT) |
commit | c9aab89dd20ec11842c0183cf3c68fa5b8870155 (patch) | |
tree | fe4760309db1d4be0909ba165724023f66a7a761 /src/engine/SCons/Tool/gdc.py | |
parent | 48fcd009ca14235134b8bcc45e9fef7dde472a70 (diff) | |
download | SCons-c9aab89dd20ec11842c0183cf3c68fa5b8870155.zip SCons-c9aab89dd20ec11842c0183cf3c68fa5b8870155.tar.gz SCons-c9aab89dd20ec11842c0183cf3c68fa5b8870155.tar.bz2 |
add SONAME support to D tools
Diffstat (limited to 'src/engine/SCons/Tool/gdc.py')
-rw-r--r-- | src/engine/SCons/Tool/gdc.py | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/engine/SCons/Tool/gdc.py b/src/engine/SCons/Tool/gdc.py index 255e6f1..32199b3 100644 --- a/src/engine/SCons/Tool/gdc.py +++ b/src/engine/SCons/Tool/gdc.py @@ -97,15 +97,7 @@ def generate(env): env['DSHLINK'] = '$DC' env['DSHLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared') - # NOTE: using $__SHLIBVERSIONFLAGS here is just a quick hack. The macro - # $__SHLIBVERSIONFLAGS involves _SHLIBVERSIONFLAGS, which are set by - # current linker tool. If the current linker tool is not same as that used - # by gdc, and SHLIBVERSION is defined, an invalid flags may be generated - # for the gdc linker. It looks like the D tools should define its own - # set of variables (__DSHLIBVERSIONFLAGS, _DSHLIBVERSIONFLAGS, - # DSHLIBVERSIONFLAGS, DSHLIBVERSION, etc...) and duplicate the versioning - # machinery. - env['SHDLINKCOM'] = '$DLINK -o $TARGET $DSHLINKFLAGS $__SHLIBVERSIONFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + env['SHDLINKCOM'] = '$DLINK -o $TARGET $DSHLINKFLAGS $__DSHLIBVERSIONFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr' env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {0}$TARGET $SOURCES $_DLINKLIBFLAGS'.format('-c ' if env['PLATFORM'] == 'win32' else '') @@ -123,6 +115,17 @@ def generate(env): env['RPATHSUFFIX'] = '' env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}' + # Support for versioned libraries + env['_DSHLIBVERSIONFLAGS'] = '$DSHLIBVERSIONFLAGS -Wl,-soname=$_DSHLIBSONAME' + env['_DSHLIBSONAME'] = '${DShLibSonameGenerator(__env__,TARGET)}' + # NOTE: this is a quick hack, the soname will only work if there is + # c/c++ linker loaded which provides callback for the ShLibSonameGenerator + env['DShLibSonameGenerator'] = SCons.Tool.ShLibSonameGenerator + # NOTE: this is only for further reference, currently $DSHLIBVERSION does + # not work, the user must use $SHLIBVERSION + env['DSHLIBVERSION'] = '$SHLIBVERSION' + env['DSHLIBVERSIONFLAGS'] = '$SHLIBVERSIONFLAGS' + SCons.Tool.createStaticLibBuilder(env) |