summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussel Winder <russel@winder.org.uk>2017-06-20 19:52:32 +0100
committerRussel Winder <russel@winder.org.uk>2017-06-20 19:52:32 +0100
commitaf14f9796a0bd561f3ee20db8cd36f8e85c059ff (patch)
tree64c754aae02b51521040b352ba2a94b4d2954d34
parent6278b8158495c2b72480d083de85e6cbbac02e97 (diff)
parentf85f2651e627457d99b88d6b93aaf44b65a5b7c7 (diff)
downloadscons-af14f9796a0bd561f3ee20db8cd36f8e85c059ff.tar.gz
Merge in mainline.
-rw-r--r--src/engine/SCons/Tool/dmd.py4
-rw-r--r--src/engine/SCons/Tool/gdc.py2
-rw-r--r--src/engine/SCons/Tool/ldc.py6
-rw-r--r--test/D/Issues/2940_Ariovistus/Common/correctLinkOptions.py5
-rw-r--r--test/D/SharedObjects/Common/common.py5
-rw-r--r--test/D/SharedObjects/Image/SConstruct_template7
6 files changed, 11 insertions, 18 deletions
diff --git a/src/engine/SCons/Tool/dmd.py b/src/engine/SCons/Tool/dmd.py
index 1becc142..7c142eb1 100644
--- a/src/engine/SCons/Tool/dmd.py
+++ b/src/engine/SCons/Tool/dmd.py
@@ -75,7 +75,7 @@ def generate(env):
static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter)
shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter)
- env['DC'] = env.Detect(['dmd', 'gdmd'])
+ env['DC'] = env.Detect(['dmd', 'ldmd2', 'gdmd']) or 'dmd'
env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -of$TARGET $SOURCES'
env['_DINCFLAGS'] = '${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
env['_DVERFLAGS'] = '${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)}'
@@ -129,7 +129,7 @@ def generate(env):
# __RPATH is set to $_RPATH in the platform specification if that
# platform supports it.
- env['DRPATHPREFIX'] = '-L-rpath='
+ env['DRPATHPREFIX'] = '-L-rpath,' if env['PLATFORM'] == 'darwin' else '-L-rpath='
env['DRPATHSUFFIX'] = ''
env['_DRPATH'] = '${_concat(DRPATHPREFIX, RPATH, DRPATHSUFFIX, __env__)}'
diff --git a/src/engine/SCons/Tool/gdc.py b/src/engine/SCons/Tool/gdc.py
index fc844aad..a8e037ca 100644
--- a/src/engine/SCons/Tool/gdc.py
+++ b/src/engine/SCons/Tool/gdc.py
@@ -65,7 +65,7 @@ def generate(env):
static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter)
shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter)
- env['DC'] = env.Detect('gdc')
+ env['DC'] = env.Detect('gdc') or 'gdc'
env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -o $TARGET $SOURCES'
env['_DINCFLAGS'] = '${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
env['_DVERFLAGS'] = '${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)}'
diff --git a/src/engine/SCons/Tool/ldc.py b/src/engine/SCons/Tool/ldc.py
index 8b551fcf..b10bb75a 100644
--- a/src/engine/SCons/Tool/ldc.py
+++ b/src/engine/SCons/Tool/ldc.py
@@ -70,7 +70,7 @@ def generate(env):
static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter)
shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter)
- env['DC'] = env.Detect('ldc2')
+ env['DC'] = env.Detect('ldc2') or 'ldc2'
env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -of=$TARGET $SOURCES'
env['_DINCFLAGS'] = '${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
env['_DVERFLAGS'] = '${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)}'
@@ -105,7 +105,7 @@ def generate(env):
env['DSHLINK'] = '$DC'
env['DSHLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=phobos2-ldc')
- env['SHDLINKCOM'] = '$DLINK -of=$TARGET $DSHLINKFLAGS $__DSHLIBVERSIONFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS'
+ env['SHDLINKCOM'] = '$DLINK -of=$TARGET $DSHLINKFLAGS $__DSHLIBVERSIONFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS -L-ldruntime-ldc'
env['DLIBLINKPREFIX'] = '' if env['PLATFORM'] == 'win32' else '-L-l'
env['DLIBLINKSUFFIX'] = '.lib' if env['PLATFORM'] == 'win32' else ''
@@ -126,7 +126,7 @@ def generate(env):
# __RPATH is set to $_RPATH in the platform specification if that
# platform supports it.
- env['DRPATHPREFIX'] = '-L-rpath='
+ env['DRPATHPREFIX'] = '-L-Wl,-rpath,' if env['PLATFORM'] == 'darwin' else '-L-rpath='
env['DRPATHSUFFIX'] = ''
env['_DRPATH'] = '${_concat(DRPATHPREFIX, RPATH, DRPATHSUFFIX, __env__)}'
diff --git a/test/D/Issues/2940_Ariovistus/Common/correctLinkOptions.py b/test/D/Issues/2940_Ariovistus/Common/correctLinkOptions.py
index 8060adda..5acd26af 100644
--- a/test/D/Issues/2940_Ariovistus/Common/correctLinkOptions.py
+++ b/test/D/Issues/2940_Ariovistus/Common/correctLinkOptions.py
@@ -50,11 +50,10 @@ def testForTool(tool):
libraryname = 'libstuff.so'
filename = 'stuff.os'
elif platform == 'darwin':
+ if tool == 'dmd' or tool == 'gdc':
+ test.skip_test('Dynamic libraries not yet supported by dmd and gdc on OSX.\n')
libraryname = 'libstuff.dylib'
filename = 'stuff.os'
- # As at 2014-09-14, DMD 2.066, LDC master head, and GDC 4.9.1 do not support
- # shared libraries on OSX.
- test.skip_test('Dynamic libraries not yet supported on OSX.\n')
elif platform == 'win32':
libraryname = 'stuff.dll'
filename = 'stuff.obj'
diff --git a/test/D/SharedObjects/Common/common.py b/test/D/SharedObjects/Common/common.py
index 03223856..a46ea7e4 100644
--- a/test/D/SharedObjects/Common/common.py
+++ b/test/D/SharedObjects/Common/common.py
@@ -63,9 +63,6 @@ def testForTool(tool):
elif platform == 'darwin':
filename = 'code.o'
libraryname = 'libanswer.dylib'
- # As at 2014-09-14, DMD 2.066, LDC master head, and GDC 4.9.1 do not support
- # shared libraries on OSX.
- test.skip_test('Dynamic libraries not yet supported on OSX.\n')
elif platform == 'win32':
filename = 'code.obj'
libraryname = 'answer.dll'
@@ -75,7 +72,7 @@ def testForTool(tool):
test.dir_fixture('Image')
test.write('SConstruct', open('SConstruct_template', 'r').read().format(tool))
- if tool == 'dmd':
+ if Base()['DC'] == 'gdmd':
# The gdmd executable in Debian Unstable as at 2012-05-12, version 4.6.3 puts out messages on stderr
# that cause inappropriate failure of the tests, so simply ignore them.
test.run(stderr=None)
diff --git a/test/D/SharedObjects/Image/SConstruct_template b/test/D/SharedObjects/Image/SConstruct_template
index cae87139..d263e63d 100644
--- a/test/D/SharedObjects/Image/SConstruct_template
+++ b/test/D/SharedObjects/Image/SConstruct_template
@@ -1,10 +1,7 @@
# -*- mode:python; coding:utf-8; -*-
-import os
-
environment = Environment(
- tools=['{}', 'link'])
-
-environment['ENV']['HOME'] = os.environ['HOME'] # Hack for gdmd
+ tools=['{0}', 'link']
+)
environment.SharedLibrary('answer', 'code.d')