~ubuntu-branches/ubuntu/utopic/tdb/utopic-proposed

« back to all changes in this revision

Viewing changes to buildtools/wafadmin/Tools/compiler_cxx.py

  • Committer: Package Import Robot
  • Author(s): Andrew Bartlett
  • Date: 2013-02-12 20:43:55 UTC
  • mfrom: (1.4.6)
  • mto: (1.4.7) (3.3.7 experimental)
  • mto: This revision was merged to the branch mainline in revision 28.
  • Revision ID: package-import@ubuntu.com-20130212204355-6q6jvxshtoie7ex5
Import upstream version 1.2.11

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
# encoding: utf-8
 
3
# Matthias Jahn jahn dôt matthias ât freenet dôt de 2007 (pmarat)
 
4
 
 
5
import os, sys, imp, types, ccroot
 
6
import optparse
 
7
import Utils, Configure, Options
 
8
from Logs import debug
 
9
 
 
10
cxx_compiler = {
 
11
'win32':  ['msvc', 'g++'],
 
12
'cygwin': ['g++'],
 
13
'darwin': ['g++'],
 
14
'aix':    ['xlc++', 'g++'],
 
15
'linux':  ['g++', 'icpc', 'sunc++'],
 
16
'sunos':  ['g++', 'sunc++'],
 
17
'irix':   ['g++'],
 
18
'hpux':   ['g++'],
 
19
'gnu':    ['g++'],
 
20
'default': ['g++']
 
21
}
 
22
 
 
23
def __list_possible_compiler(platform):
 
24
        try:
 
25
                return cxx_compiler[platform]
 
26
        except KeyError:
 
27
                return cxx_compiler["default"]
 
28
 
 
29
def detect(conf):
 
30
        try: test_for_compiler = Options.options.check_cxx_compiler
 
31
        except AttributeError: raise Configure.ConfigurationError("Add set_options(opt): opt.tool_options('compiler_cxx')")
 
32
        orig = conf.env
 
33
        for compiler in test_for_compiler.split():
 
34
                try:
 
35
                        conf.env = orig.copy()
 
36
                        conf.check_tool(compiler)
 
37
                except Configure.ConfigurationError, e:
 
38
                        debug('compiler_cxx: %r' % e)
 
39
                else:
 
40
                        if conf.env['CXX']:
 
41
                                orig.table = conf.env.get_merged_dict()
 
42
                                conf.env = orig
 
43
                                conf.check_message(compiler, '', True)
 
44
                                conf.env['COMPILER_CXX'] = compiler
 
45
                                break
 
46
                        conf.check_message(compiler, '', False)
 
47
                        break
 
48
        else:
 
49
                conf.fatal('could not configure a cxx compiler!')
 
50
 
 
51
def set_options(opt):
 
52
        build_platform = Utils.unversioned_sys_platform()
 
53
        possible_compiler_list = __list_possible_compiler(build_platform)
 
54
        test_for_compiler = ' '.join(possible_compiler_list)
 
55
        cxx_compiler_opts = opt.add_option_group('C++ Compiler Options')
 
56
        cxx_compiler_opts.add_option('--check-cxx-compiler', default="%s" % test_for_compiler,
 
57
                help='On this platform (%s) the following C++ Compiler will be checked by default: "%s"' % (build_platform, test_for_compiler),
 
58
                dest="check_cxx_compiler")
 
59
 
 
60
        for cxx_compiler in test_for_compiler.split():
 
61
                opt.tool_options('%s' % cxx_compiler, option_group=cxx_compiler_opts)
 
62