summaryrefslogtreecommitdiff
path: root/waflib/Tools/dmd.py
diff options
context:
space:
mode:
Diffstat (limited to 'waflib/Tools/dmd.py')
-rw-r--r--waflib/Tools/dmd.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/waflib/Tools/dmd.py b/waflib/Tools/dmd.py
new file mode 100644
index 0000000..2711628
--- /dev/null
+++ b/waflib/Tools/dmd.py
@@ -0,0 +1,51 @@
+#! /usr/bin/env python
+# encoding: utf-8
+# WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file
+
+import sys
+from waflib.Tools import ar,d
+from waflib.Configure import conf
+@conf
+def find_dmd(conf):
+ conf.find_program(['dmd','dmd2','ldc'],var='D')
+ out=conf.cmd_and_log(conf.env.D+['--help'])
+ if out.find("D Compiler v")==-1:
+ out=conf.cmd_and_log(conf.env.D+['-version'])
+ if out.find("based on DMD v1.")==-1:
+ conf.fatal("detected compiler is not dmd/ldc")
+@conf
+def common_flags_ldc(conf):
+ v=conf.env
+ v.DFLAGS=['-d-version=Posix']
+ v.LINKFLAGS=[]
+ v.DFLAGS_dshlib=['-relocation-model=pic']
+@conf
+def common_flags_dmd(conf):
+ v=conf.env
+ v.D_SRC_F=['-c']
+ v.D_TGT_F='-of%s'
+ v.D_LINKER=v.D
+ v.DLNK_SRC_F=''
+ v.DLNK_TGT_F='-of%s'
+ v.DINC_ST='-I%s'
+ v.DSHLIB_MARKER=v.DSTLIB_MARKER=''
+ v.DSTLIB_ST=v.DSHLIB_ST='-L-l%s'
+ v.DSTLIBPATH_ST=v.DLIBPATH_ST='-L-L%s'
+ v.LINKFLAGS_dprogram=['-quiet']
+ v.DFLAGS_dshlib=['-fPIC']
+ v.LINKFLAGS_dshlib=['-L-shared']
+ v.DHEADER_ext='.di'
+ v.DFLAGS_d_with_header=['-H','-Hf']
+ v.D_HDR_F='%s'
+def configure(conf):
+ conf.find_dmd()
+ if sys.platform=='win32':
+ out=conf.cmd_and_log(conf.env.D+['--help'])
+ if out.find('D Compiler v2.')>-1:
+ conf.fatal('dmd2 on Windows is not supported, use gdc or ldc2 instead')
+ conf.load('ar')
+ conf.load('d')
+ conf.common_flags_dmd()
+ conf.d_platform_flags()
+ if str(conf.env.D).find('ldc')>-1:
+ conf.common_flags_ldc()