summaryrefslogtreecommitdiff
path: root/buildtools/wafadmin/Tools/compiler_cxx.py
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2012-01-04 00:31:27 +0100
committerJelmer Vernooij <jelmer@samba.org>2012-01-04 22:34:20 +0100
commit4f4bce5301ffd8c12aed1b108affa1a75feefb67 (patch)
tree1607accd70a2c37a9b996f7b42ec926b014cfe5b /buildtools/wafadmin/Tools/compiler_cxx.py
parent1b45f2aed86dda9fda6e6bcf1c9c7cbdc471c18d (diff)
downloadsamba-4f4bce5301ffd8c12aed1b108affa1a75feefb67.tar.gz
samba-4f4bce5301ffd8c12aed1b108affa1a75feefb67.tar.bz2
samba-4f4bce5301ffd8c12aed1b108affa1a75feefb67.zip
Include waf as an extracted source directory, rather than as a one-in-a-file script.
Diffstat (limited to 'buildtools/wafadmin/Tools/compiler_cxx.py')
-rw-r--r--buildtools/wafadmin/Tools/compiler_cxx.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/buildtools/wafadmin/Tools/compiler_cxx.py b/buildtools/wafadmin/Tools/compiler_cxx.py
new file mode 100644
index 0000000000..5308ea9719
--- /dev/null
+++ b/buildtools/wafadmin/Tools/compiler_cxx.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+# encoding: utf-8
+# Matthias Jahn jahn dôt matthias ât freenet dôt de 2007 (pmarat)
+
+import os, sys, imp, types, ccroot
+import optparse
+import Utils, Configure, Options
+from Logs import debug
+
+cxx_compiler = {
+'win32': ['msvc', 'g++'],
+'cygwin': ['g++'],
+'darwin': ['g++'],
+'aix': ['xlc++', 'g++'],
+'linux': ['g++', 'icpc', 'sunc++'],
+'sunos': ['g++', 'sunc++'],
+'irix': ['g++'],
+'hpux': ['g++'],
+'gnu': ['g++'],
+'default': ['g++']
+}
+
+def __list_possible_compiler(platform):
+ try:
+ return cxx_compiler[platform]
+ except KeyError:
+ return cxx_compiler["default"]
+
+def detect(conf):
+ try: test_for_compiler = Options.options.check_cxx_compiler
+ except AttributeError: raise Configure.ConfigurationError("Add set_options(opt): opt.tool_options('compiler_cxx')")
+ orig = conf.env
+ for compiler in test_for_compiler.split():
+ try:
+ conf.env = orig.copy()
+ conf.check_tool(compiler)
+ except Configure.ConfigurationError, e:
+ debug('compiler_cxx: %r' % e)
+ else:
+ if conf.env['CXX']:
+ orig.table = conf.env.get_merged_dict()
+ conf.env = orig
+ conf.check_message(compiler, '', True)
+ conf.env['COMPILER_CXX'] = compiler
+ break
+ conf.check_message(compiler, '', False)
+ break
+ else:
+ conf.fatal('could not configure a cxx compiler!')
+
+def set_options(opt):
+ build_platform = Utils.unversioned_sys_platform()
+ possible_compiler_list = __list_possible_compiler(build_platform)
+ test_for_compiler = ' '.join(possible_compiler_list)
+ cxx_compiler_opts = opt.add_option_group('C++ Compiler Options')
+ cxx_compiler_opts.add_option('--check-cxx-compiler', default="%s" % test_for_compiler,
+ help='On this platform (%s) the following C++ Compiler will be checked by default: "%s"' % (build_platform, test_for_compiler),
+ dest="check_cxx_compiler")
+
+ for cxx_compiler in test_for_compiler.split():
+ opt.tool_options('%s' % cxx_compiler, option_group=cxx_compiler_opts)
+