diff options
Diffstat (limited to 'waflib/Tools/ldc2.py')
-rw-r--r-- | waflib/Tools/ldc2.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/waflib/Tools/ldc2.py b/waflib/Tools/ldc2.py new file mode 100644 index 00000000..a9ed0411 --- /dev/null +++ b/waflib/Tools/ldc2.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# encoding: utf-8 +# Alex Rønne Petersen, 2012 (alexrp/Zor) + +import sys +from waflib.Tools import ar, d +from waflib.Configure import conf + +@conf +def find_ldc2(conf): + """ + Find the program *ldc2* and set the variable *D* + """ + + conf.find_program(['ldc2'], var='D') + + out = conf.cmd_and_log(conf.env.D + ['-version']) + if out.find("based on DMD v2.") == -1: + conf.fatal("detected compiler is not ldc2") + +@conf +def common_flags_ldc2(conf): + """ + Set the D flags required by *ldc2* + """ + + 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_dshlib'] = ['-L-shared'] + + v['DHEADER_ext'] = '.di' + v['DFLAGS_d_with_header'] = ['-H', '-Hf'] + v['D_HDR_F'] = '%s' + + v['LINKFLAGS'] = [] + v['DFLAGS_dshlib'] = ['-relocation-model=pic'] + +def configure(conf): + """ + Configuration for *ldc2* + """ + + conf.find_ldc2() + conf.load('ar') + conf.load('d') + conf.common_flags_ldc2() + conf.d_platform_flags() |