waf/waflib/Tools/compiler_d.py

60 lines
1.5 KiB
Python
Raw Normal View History

2011-09-10 11:13:51 +02:00
#!/usr/bin/env python
# encoding: utf-8
# Carlos Rafael Giani, 2007 (dv)
# Thomas Nagy, 2010 (ita)
"""
Try to detect a D compiler from the list of supported compilers::
def options(opt):
opt.load('compiler_d')
def configure(cnf):
cnf.load('compiler_d')
def build(bld):
bld.program(source='main.d', target='app')
Only three D compilers are really present at the moment:
2011-09-10 11:13:51 +02:00
* gdc
* dmd, the ldc compiler having a very similar command-line interface
* ldc2
2011-09-10 11:13:51 +02:00
"""
import os, sys, imp, types
from waflib import Utils, Configure, Options, Logs
def configure(conf):
"""
Try to find a suitable D compiler or raise a :py:class:`waflib.Errors.ConfigurationError`.
"""
for compiler in conf.options.dcheck.split(','):
conf.env.stash()
conf.start_msg('Checking for %r (d compiler)' % compiler)
try:
conf.load(compiler)
except conf.errors.ConfigurationError as e:
conf.env.revert()
conf.end_msg(False)
2012-04-01 11:30:23 +02:00
Logs.debug('compiler_d: %r' % e)
2011-09-10 11:13:51 +02:00
else:
if conf.env.D:
conf.end_msg(conf.env.get_flat('D'))
conf.env['COMPILER_D'] = compiler
break
conf.end_msg(False)
else:
conf.fatal('no suitable d compiler was found')
def options(opt):
"""
Restrict the compiler detection from the command-line::
$ waf configure --check-d-compiler=dmd
"""
d_compiler_opts = opt.add_option_group('D Compiler Options')
d_compiler_opts.add_option('--check-d-compiler', default='gdc,dmd,ldc2', action='store',
help='check for the compiler [Default:gdc,dmd,ldc2]', dest='dcheck')
for d_compiler in ('gdc', 'dmd', 'ldc2'):
2011-09-10 11:13:51 +02:00
opt.load('%s' % d_compiler)