diff options
Diffstat (limited to 'waflib/Tools/dmd.py')
-rw-r--r-- | waflib/Tools/dmd.py | 51 |
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..59aab6d --- /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() |