From bf8f85b92e290281297d35e3009336cb2135cfe6 Mon Sep 17 00:00:00 2001 From: Russel Winder Date: Fri, 16 Jun 2017 18:32:00 +0100 Subject: Make the symbol naming more consistent. --- src/engine/SCons/Tool/dmd.py | 16 ++++++++-------- src/engine/SCons/Tool/dmd.xml | 7 +++++-- src/engine/SCons/Tool/gdc.py | 16 ++++++++-------- src/engine/SCons/Tool/ldc.py | 18 +++++++++--------- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/engine/SCons/Tool/dmd.py b/src/engine/SCons/Tool/dmd.py index 64beea5..ac4b018 100644 --- a/src/engine/SCons/Tool/dmd.py +++ b/src/engine/SCons/Tool/dmd.py @@ -107,9 +107,9 @@ def generate(env): env['DLINKFLAGS'] = SCons.Util.CLVar('') env['DLINKCOM'] = '$DLINK -of$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS' - env['DSHLINK'] = '$DC' - env['DSHLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=libphobos2.so') - env['SHDLINKCOM'] = '$DLINK -of$TARGET $DSHLINKFLAGS $__DSHLIBVERSIONFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS' + env['SHDLINK'] = '$DC' + env['SHDLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=libphobos2.so') + env['SHDLINKCOM'] = '$DLINK -of$TARGET $SHDLINKFLAGS $__SHDLIBVERSIONFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS' env['DLIBLINKPREFIX'] = '' if env['PLATFORM'] == 'win32' else '-L-l' env['DLIBLINKSUFFIX'] = '.lib' if env['PLATFORM'] == 'win32' else '' @@ -134,15 +134,15 @@ def generate(env): env['_DRPATH'] = '${_concat(DRPATHPREFIX, RPATH, DRPATHSUFFIX, __env__)}' # Support for versioned libraries - env['_DSHLIBVERSIONFLAGS'] = '$DSHLIBVERSIONFLAGS -L-soname=$_DSHLIBSONAME' - env['_DSHLIBSONAME'] = '${DShLibSonameGenerator(__env__,TARGET)}' + env['_SHDLIBVERSIONFLAGS'] = '$SHDLIBVERSIONFLAGS -L-soname=$_SHDLIBSONAME' + env['_SHDLIBSONAME'] = '${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 + # NOTE: this is only for further reference, currently $SHDLIBVERSION does # not work, the user must use $SHLIBVERSION - env['DSHLIBVERSION'] = '$SHLIBVERSION' - env['DSHLIBVERSIONFLAGS'] = [] + env['SHDLIBVERSION'] = '$SHLIBVERSION' + env['SHDLIBVERSIONFLAGS'] = [] SCons.Tool.createStaticLibBuilder(env) diff --git a/src/engine/SCons/Tool/dmd.xml b/src/engine/SCons/Tool/dmd.xml index 8fb22ce..301afb2 100644 --- a/src/engine/SCons/Tool/dmd.xml +++ b/src/engine/SCons/Tool/dmd.xml @@ -63,8 +63,11 @@ Sets construction variables for D language compiler DMD. DLIBFLAGSUFFIX DLINKFLAGPREFIX DLINKFLAGSUFFIX -RPATHPREFIX -RPATHSUFFIX +DRPATHPREFIX +DRPATHSUFFIX +DShLibSonameGenerator +SHDLIBVERSION +SHDLIBVERSIONFLAGS diff --git a/src/engine/SCons/Tool/gdc.py b/src/engine/SCons/Tool/gdc.py index fdfe867..939f5b9 100644 --- a/src/engine/SCons/Tool/gdc.py +++ b/src/engine/SCons/Tool/gdc.py @@ -97,9 +97,9 @@ def generate(env): env['DLINKFLAGS'] = SCons.Util.CLVar('') env['DLINKCOM'] = '$DLINK -o $TARGET $DLINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' - env['DSHLINK'] = '$DC' - env['DSHLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -shared-libphobos') - env['SHDLINKCOM'] = '$DLINK -o $TARGET $DSHLINKFLAGS $__DSHLIBVERSIONFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + env['SHDLINK'] = '$DC' + env['SHDLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -shared-libphobos') + env['SHDLINKCOM'] = '$DLINK -o $TARGET $SHDLINKFLAGS $__SHDLIBVERSIONFLAGS $__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 '') @@ -118,15 +118,15 @@ def generate(env): env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}' # Support for versioned libraries - env['_DSHLIBVERSIONFLAGS'] = '$DSHLIBVERSIONFLAGS -Wl,-soname=$_DSHLIBSONAME' - env['_DSHLIBSONAME'] = '${DShLibSonameGenerator(__env__,TARGET)}' + env['_SHDLIBVERSIONFLAGS'] = '$SHDLIBVERSIONFLAGS -Wl,-soname=$_SHDLIBSONAME' + env['_SHDLIBSONAME'] = '${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 + # NOTE: this is only for further reference, currently $SHDLIBVERSION does # not work, the user must use $SHLIBVERSION - env['DSHLIBVERSION'] = '$SHLIBVERSION' - env['DSHLIBVERSIONFLAGS'] = '$SHLIBVERSIONFLAGS' + env['SHDLIBVERSION'] = '$SHLIBVERSION' + env['SHDLIBVERSIONFLAGS'] = '$SHLIBVERSIONFLAGS' SCons.Tool.createStaticLibBuilder(env) diff --git a/src/engine/SCons/Tool/ldc.py b/src/engine/SCons/Tool/ldc.py index 215c3e7..b62fe11 100644 --- a/src/engine/SCons/Tool/ldc.py +++ b/src/engine/SCons/Tool/ldc.py @@ -102,16 +102,16 @@ def generate(env): env['DLINKFLAGS'] = SCons.Util.CLVar('') env['DLINKCOM'] = '$DLINK -of=$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS' - env['DSHLINK'] = '$DC' - env['DSHLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=phobos2-ldc') + env['SHDLINK'] = '$DC' + env['SHDLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=phobos2-ldc') #### START DEPRECATION 2017-05-21 # Hack for Fedora the packages of which use the wrong name :-( if os.path.exists('/usr/lib64/libphobos-ldc.so') or os.path.exists('/usr/lib32/libphobos-ldc.so') or os.path.exists('/usr/lib/libphobos-ldc.so'): - env['DSHLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=phobos-ldc') + env['SHDLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=phobos-ldc') #### END DEPRECATION 2017-05-21 - env['SHDLINKCOM'] = '$DLINK -of=$TARGET $DSHLINKFLAGS $__DSHLIBVERSIONFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS' + env['SHDLINKCOM'] = '$DLINK -of=$TARGET $SHDLINKFLAGS $__SHDLIBVERSIONFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS' env['DLIBLINKPREFIX'] = '' if env['PLATFORM'] == 'win32' else '-L-l' env['DLIBLINKSUFFIX'] = '.lib' if env['PLATFORM'] == 'win32' else '' @@ -137,15 +137,15 @@ def generate(env): env['_DRPATH'] = '${_concat(DRPATHPREFIX, RPATH, DRPATHSUFFIX, __env__)}' # Support for versioned libraries - env['_DSHLIBVERSIONFLAGS'] = '$DSHLIBVERSIONFLAGS -L-soname=$_DSHLIBSONAME' - env['_DSHLIBSONAME'] = '${DShLibSonameGenerator(__env__,TARGET)}' + env['_SHDLIBVERSIONFLAGS'] = '$SHDLIBVERSIONFLAGS -L-soname=$_SHDLIBSONAME' + env['_SHDLIBSONAME'] = '${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 + # NOTE: this is only for further reference, currently $SHDLIBVERSION does # not work, the user must use $SHLIBVERSION - env['DSHLIBVERSION'] = '$SHLIBVERSION' - env['DSHLIBVERSIONFLAGS'] = [] + env['SHDLIBVERSION'] = '$SHLIBVERSION' + env['SHDLIBVERSIONFLAGS'] = [] SCons.Tool.createStaticLibBuilder(env) -- cgit v0.12 From e2d41ab459e90678a0800a614fa4640773770795 Mon Sep 17 00:00:00 2001 From: Russel Winder Date: Wed, 21 Jun 2017 09:35:08 +0100 Subject: Keep all D tool XML files consistent. --- src/engine/SCons/Tool/dmd.xml | 7 -- src/engine/SCons/Tool/gdc.xml | 144 +++++++++++++++++++++++++++++++++++++++++- src/engine/SCons/Tool/ldc.xml | 144 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 284 insertions(+), 11 deletions(-) diff --git a/src/engine/SCons/Tool/dmd.xml b/src/engine/SCons/Tool/dmd.xml index 301afb2..7e220dc 100644 --- a/src/engine/SCons/Tool/dmd.xml +++ b/src/engine/SCons/Tool/dmd.xml @@ -163,8 +163,6 @@ List of linker flags. - - @@ -207,7 +205,6 @@ List of linker flags. - @@ -345,10 +342,6 @@ List of linker flags. - - - - diff --git a/src/engine/SCons/Tool/gdc.xml b/src/engine/SCons/Tool/gdc.xml index 5ef1f9a..d44489e 100644 --- a/src/engine/SCons/Tool/gdc.xml +++ b/src/engine/SCons/Tool/gdc.xml @@ -63,8 +63,11 @@ Sets construction variables for the D language compiler GDC. DLIBFLAGSUFFIX DLINKFLAGPREFIX DLINKFLAGSUFFIX -RPATHPREFIX -RPATHSUFFIX +DRPATHPREFIX +DRPATHSUFFIX +DShLibSonameGenerator +SHDLIBVERSION +SHDLIBVERSIONFLAGS @@ -202,6 +205,143 @@ List of linker flags. + + + + DVERSUFFIX. + + + + + + + + DVERPREFIX. + + + + + + + + DLINKFLAGSUFFIX. + + + + + + + + DLINKFLAGPREFIX. + + + + + + + + DLIBLINKSUFFIX. + + + + + + + + DLIBLINKPREFIX. + + + + + + + + DLIBFLAGSUFFIX. + + + + + + + + DLIBFLAGPREFIX. + + + + + + + + DLIBLINKSUFFIX. + + + + + + + + DLIBLINKPREFIX. + + + + + + + + DLIBFLAGSUFFIX. + + + + + + + + + DINCPREFIX. + + + + + + + + DFLAGSUFFIX. + + + + + + + + DFLAGPREFIX. + + + + + + + + DFILESUFFIX. + + + + + + + + DDEBUGPREFIX. + + + + + + + + DDEBUGSUFFIX. + + + + diff --git a/src/engine/SCons/Tool/ldc.xml b/src/engine/SCons/Tool/ldc.xml index 9593f41..495b8bc 100644 --- a/src/engine/SCons/Tool/ldc.xml +++ b/src/engine/SCons/Tool/ldc.xml @@ -63,8 +63,11 @@ Sets construction variables for the D language compiler LDC2. DLIBFLAGSUFFIX DLINKFLAGPREFIX DLINKFLAGSUFFIX -RPATHPREFIX -RPATHSUFFIX +DRPATHPREFIX +DRPATHSUFFIX +DShLibSonameGenerator +SHDLIBVERSION +SHDLIBVERSIONFLAGS @@ -202,6 +205,143 @@ List of linker flags. + + + + DVERSUFFIX. + + + + + + + + DVERPREFIX. + + + + + + + + DLINKFLAGSUFFIX. + + + + + + + + DLINKFLAGPREFIX. + + + + + + + + DLIBLINKSUFFIX. + + + + + + + + DLIBLINKPREFIX. + + + + + + + + DLIBFLAGSUFFIX. + + + + + + + + DLIBFLAGPREFIX. + + + + + + + + DLIBLINKSUFFIX. + + + + + + + + DLIBLINKPREFIX. + + + + + + + + DLIBFLAGSUFFIX. + + + + + + + + + DINCPREFIX. + + + + + + + + DFLAGSUFFIX. + + + + + + + + DFLAGPREFIX. + + + + + + + + DFILESUFFIX. + + + + + + + + DDEBUGPREFIX. + + + + + + + + DDEBUGSUFFIX. + + + + -- cgit v0.12 From 08e552fcf8dec41b786a96cfd8194a2041c21047 Mon Sep 17 00:00:00 2001 From: Russel Winder Date: Wed, 21 Jun 2017 10:17:32 +0100 Subject: Amend the missed name changes. --- src/engine/SCons/Tool/ldc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/SCons/Tool/ldc.py b/src/engine/SCons/Tool/ldc.py index 96032b1..3e12199 100644 --- a/src/engine/SCons/Tool/ldc.py +++ b/src/engine/SCons/Tool/ldc.py @@ -105,7 +105,7 @@ def generate(env): env['SHDLINK'] = '$DC' env['SHDLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=phobos2-ldc') - env['SHDLINKCOM'] = '$DLINK -of=$TARGET $DSHLINKFLAGS $__DSHLIBVERSIONFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS -L-ldruntime-ldc' + env['SHDLINKCOM'] = '$DLINK -of=$TARGET $SHDLINKFLAGS $__SHDLIBVERSIONFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS -L-ldruntime-ldc' env['DLIBLINKPREFIX'] = '' if env['PLATFORM'] == 'win32' else '-L-l' env['DLIBLINKSUFFIX'] = '.lib' if env['PLATFORM'] == 'win32' else '' -- cgit v0.12 From 8dbaeb4a14d2f040e7964a4dfd1723cfbd0e8fad Mon Sep 17 00:00:00 2001 From: Russel Winder Date: Wed, 23 Aug 2017 09:54:45 +0100 Subject: Make the exists and generate functions consistent over D compilers. --- src/engine/SCons/Tool/dmd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/SCons/Tool/dmd.py b/src/engine/SCons/Tool/dmd.py index dbdf57b..6a64a72 100644 --- a/src/engine/SCons/Tool/dmd.py +++ b/src/engine/SCons/Tool/dmd.py @@ -151,7 +151,7 @@ def generate(env): def exists(env): - return env.Detect(['dmd', 'gdmd']) + return env.Detect(['dmd', 'ldmd2', 'gdmd']) # Local Variables: -- cgit v0.12 From 36c1fe9676b8a2f8d4d2174a05cb2d3c47806170 Mon Sep 17 00:00:00 2001 From: Russel Winder Date: Wed, 23 Aug 2017 11:03:04 +0100 Subject: For consistency with another test. --- test/D/SharedObjects/Common/common.py | 22 ++++++++++++++-------- test/D/SharedObjects/Image/SConstruct_template | 3 +++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/test/D/SharedObjects/Common/common.py b/test/D/SharedObjects/Common/common.py index a46ea7e..bae376d 100644 --- a/test/D/SharedObjects/Common/common.py +++ b/test/D/SharedObjects/Common/common.py @@ -56,16 +56,22 @@ def testForTool(tool): if tool == 'dmd' and Base()['DC'] == 'gdmd': test.skip_test('gdmd does not recognize the -shared option so cannot support linking of shared objects.\n') + code_root = 'code' + library_root = 'answer' + platform = Base()['PLATFORM'] if platform == 'posix': - filename = 'code.o' - libraryname = 'libanswer.so' + code_name = code_root + '.o' + library_name = 'lib' + library_root + '.so' elif platform == 'darwin': - filename = 'code.o' - libraryname = 'libanswer.dylib' + code_name = code_root + '.o' + library_name = 'lib' + library_root + '.dylib' + # As at 2017-08-22, DMD 2.075.1, LDC 1.2.0 (D 2.072.2), and GDC 7.2.0 (D 2.068.2) + # it is not clear if shared libraries are supported on macOS. + # test.skip_test('Dynamic libraries not yet supported on macOS.\n') elif platform == 'win32': - filename = 'code.obj' - libraryname = 'answer.dll' + code_name = code_root + '.obj' + library_name = library_root + '.dll' else: test.fail_test() @@ -79,8 +85,8 @@ def testForTool(tool): else: test.run() - test.must_exist(test.workpath(filename)) - test.must_exist(test.workpath(libraryname)) + test.must_exist(test.workpath(code_name)) + test.must_exist(test.workpath(library_name)) test.pass_test() diff --git a/test/D/SharedObjects/Image/SConstruct_template b/test/D/SharedObjects/Image/SConstruct_template index d263e63..f731a33 100644 --- a/test/D/SharedObjects/Image/SConstruct_template +++ b/test/D/SharedObjects/Image/SConstruct_template @@ -1,5 +1,8 @@ # -*- mode:python; coding:utf-8; -*- +# The core difference between this test and the one of SharedObjectSuffixIssue +# is that here we explicitly use the relevant D tool and things work. + environment = Environment( tools=['{0}', 'link'] ) -- cgit v0.12