summaryrefslogtreecommitdiffstats
path: root/waflib/Tools/d_config.py
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-09-15 14:51:02 +0200
committerDavid Robillard <d@drobilla.net>2018-09-15 14:51:02 +0200
commit4a3f0b45918fb172d33b6b5f6a736087db0754cc (patch)
tree818f80aee210eac7ff53cf45de53df3991430d3e /waflib/Tools/d_config.py
parent1bd8d938429c42b54286068fe3a5b22743fbc794 (diff)
parenteede9648d50c3750f6f8d1319a79dd76d7f10b55 (diff)
downloadingen-4a3f0b45918fb172d33b6b5f6a736087db0754cc.tar.gz
ingen-4a3f0b45918fb172d33b6b5f6a736087db0754cc.tar.bz2
ingen-4a3f0b45918fb172d33b6b5f6a736087db0754cc.zip
Merge commit 'eede9648d50c3750f6f8d1319a79dd76d7f10b55' as 'waflib'
Diffstat (limited to 'waflib/Tools/d_config.py')
-rw-r--r--waflib/Tools/d_config.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/waflib/Tools/d_config.py b/waflib/Tools/d_config.py
new file mode 100644
index 00000000..66375565
--- /dev/null
+++ b/waflib/Tools/d_config.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+# encoding: utf-8
+# Thomas Nagy, 2016-2018 (ita)
+
+from waflib import Utils
+from waflib.Configure import conf
+
+@conf
+def d_platform_flags(self):
+ """
+ Sets the extensions dll/so for d programs and libraries
+ """
+ v = self.env
+ if not v.DEST_OS:
+ v.DEST_OS = Utils.unversioned_sys_platform()
+ binfmt = Utils.destos_to_binfmt(self.env.DEST_OS)
+ if binfmt == 'pe':
+ v.dprogram_PATTERN = '%s.exe'
+ v.dshlib_PATTERN = 'lib%s.dll'
+ v.dstlib_PATTERN = 'lib%s.a'
+ elif binfmt == 'mac-o':
+ v.dprogram_PATTERN = '%s'
+ v.dshlib_PATTERN = 'lib%s.dylib'
+ v.dstlib_PATTERN = 'lib%s.a'
+ else:
+ v.dprogram_PATTERN = '%s'
+ v.dshlib_PATTERN = 'lib%s.so'
+ v.dstlib_PATTERN = 'lib%s.a'
+
+DLIB = '''
+version(D_Version2) {
+ import std.stdio;
+ int main() {
+ writefln("phobos2");
+ return 0;
+ }
+} else {
+ version(Tango) {
+ import tango.stdc.stdio;
+ int main() {
+ printf("tango");
+ return 0;
+ }
+ } else {
+ import std.stdio;
+ int main() {
+ writefln("phobos1");
+ return 0;
+ }
+ }
+}
+'''
+"""Detection string for the D standard library"""
+
+@conf
+def check_dlibrary(self, execute=True):
+ """
+ Detects the kind of standard library that comes with the compiler,
+ and sets conf.env.DLIBRARY to tango, phobos1 or phobos2
+ """
+ ret = self.check_cc(features='d dprogram', fragment=DLIB, compile_filename='test.d', execute=execute, define_ret=True)
+ if execute:
+ self.env.DLIBRARY = ret.strip()
+