mirror of
https://gitlab.com/ita1024/waf.git
synced 2025-01-26 18:20:22 +01:00
78aa2f3e92
* Added ldc2 as a separate tool. It can be detected/used with --check-d-compiler in the compiler_d tool now. * Added code to make sure that the compilers we find actually are the right ones (heuristics). * Correct some old comments.
60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
#!/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:
|
|
|
|
* gdc
|
|
* dmd, the ldc compiler having a very similar command-line interface
|
|
* ldc2
|
|
"""
|
|
|
|
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)
|
|
Logs.debug('compiler_d: %r' % e)
|
|
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']:
|
|
opt.load('%s' % d_compiler)
|
|
|