1. SCons
  2. Core
  3. SCons

Commits

Russel Winder  committed 6ce3e52

Change the name of the tool to avoid + in filename. Add alias so clang++ still works as a tool name.

Comments (0)

Files changed (5)

File src/engine/SCons/Tool/__init__.py Modified

View file
  • Ignore whitespace
  • Hide word diff
 # Tool aliases are needed for those tools whos module names also
 # occur in the python standard library. This causes module shadowing and
 # can break using python library functions under python3
-TOOL_ALIASES = {'gettext':'gettext_tool'}
+TOOL_ALIASES = {
+    'gettext':'gettext_tool',
+    'clang++': 'clangxx',
+}
 
 class Tool(object):
     def __init__(self, name, toolpath=[], **kw):

File src/engine/SCons/Tool/clang++.py Deleted

  • Ignore whitespace
  • Hide word diff
-# -*- encoding: utf-8 -*-
-
-"""SCons.Tool.clang++
-
-Tool-specific initialization for clang++.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# __COPYRIGHT__
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-# __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
-
-# Based on SCons/Tool/g++.py by Paweł Tomulik 2014 as a separate tool.
-# Brought into the SCons mainline by Russel Winder 2017.
-
-import os.path
-import re
-import subprocess
-import sys
-
-import SCons.Tool
-import SCons.Util
-
-cplusplus = __import__(__package__ + '.c++', globals(), locals(), ['*'])
-
-compilers = ['clang++']
-
-def generate(env):
-    """Add Builders and construction variables for clang++ to an Environment."""
-    static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
-
-    cplusplus.generate(env)
-
-    env['CXX']        = env.Detect(compilers) or 'clang++'
-
-    # platform specific settings
-    if env['PLATFORM'] == 'aix':
-        env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -mminimal-toc')
-        env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
-        env['SHOBJSUFFIX'] = '$OBJSUFFIX'
-    elif env['PLATFORM'] == 'hpux':
-        env['SHOBJSUFFIX'] = '.pic.o'
-    elif env['PLATFORM'] == 'sunos':
-        env['SHOBJSUFFIX'] = '.pic.o'
-    # determine compiler version
-    if env['CXX']:
-        pipe = SCons.Action._subproc(env, [env['CXX'], '--version'],
-                                     stdin='devnull',
-                                     stderr='devnull',
-                                     stdout=subprocess.PIPE)
-        if pipe.wait() != 0: return
-        # clang -dumpversion is of no use
-        line = pipe.stdout.readline()
-        if sys.version_info[0] > 2:
-            line = line.decode()
-        match = re.search(r'clang +version +([0-9]+(?:\.[0-9]+)+)', line)
-        if match:
-            env['CXXVERSION'] = match.group(1)
-
-def exists(env):
-    return env.Detect(compilers)
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:

File src/engine/SCons/Tool/clang++.xml Deleted

  • Ignore whitespace
  • Hide word diff
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-__COPYRIGHT__
-
-This file is processed by the bin/SConsDoc.py module.
-See its __doc__ string for a discussion of the format.
--->
-
-<!DOCTYPE sconsdoc [
-<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
-%scons;
-<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
-%builders-mod;
-<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
-%functions-mod;
-<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
-%tools-mod;
-<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
-%variables-mod;
-]>
-
-<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
-
-<tool name="clang++">
-<summary>
-<para>
-Set construction variables for the Clang C++ compiler.
-</para>
-</summary>
-<sets>
-<item>CXX</item>
-<item>SHCXXFLAGS</item>
-<item><!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME--></item>
-<item>SHOBJSUFFIX</item>
-<item>CXXVERSION</item>
-</sets>
-</tool>
-
-</sconsdoc>

File src/engine/SCons/Tool/clangxx.py Added

View file
  • Ignore whitespace
  • Hide word diff
+# -*- encoding: utf-8 -*-
+
+"""SCons.Tool.clang++
+
+Tool-specific initialization for clang++.
+
+There normally shouldn't be any need to import this module directly.
+It will usually be imported through the generic SCons.Tool.Tool()
+selection method.
+
+"""
+
+#
+# __COPYRIGHT__
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+
+# __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
+
+# Based on SCons/Tool/g++.py by Paweł Tomulik 2014 as a separate tool.
+# Brought into the SCons mainline by Russel Winder 2017.
+
+import os.path
+import re
+import subprocess
+import sys
+
+import SCons.Tool
+import SCons.Util
+import SCons.Tool.cxx
+
+compilers = ['clang++']
+
+def generate(env):
+    """Add Builders and construction variables for clang++ to an Environment."""
+    static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
+
+    SCons.Tool.cxx.generate(env)
+
+    env['CXX']        = env.Detect(compilers) or 'clang++'
+
+    # platform specific settings
+    if env['PLATFORM'] == 'aix':
+        env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -mminimal-toc')
+        env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
+        env['SHOBJSUFFIX'] = '$OBJSUFFIX'
+    elif env['PLATFORM'] == 'hpux':
+        env['SHOBJSUFFIX'] = '.pic.o'
+    elif env['PLATFORM'] == 'sunos':
+        env['SHOBJSUFFIX'] = '.pic.o'
+    # determine compiler version
+    if env['CXX']:
+        pipe = SCons.Action._subproc(env, [env['CXX'], '--version'],
+                                     stdin='devnull',
+                                     stderr='devnull',
+                                     stdout=subprocess.PIPE)
+        if pipe.wait() != 0: return
+        # clang -dumpversion is of no use
+        line = pipe.stdout.readline()
+        if sys.version_info[0] > 2:
+            line = line.decode()
+        match = re.search(r'clang +version +([0-9]+(?:\.[0-9]+)+)', line)
+        if match:
+            env['CXXVERSION'] = match.group(1)
+
+def exists(env):
+    return env.Detect(compilers)
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4:

File src/engine/SCons/Tool/clangxx.xml Added

View file
  • Ignore whitespace
  • Hide word diff
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+__COPYRIGHT__
+
+This file is processed by the bin/SConsDoc.py module.
+See its __doc__ string for a discussion of the format.
+-->
+
+<!DOCTYPE sconsdoc [
+<!ENTITY % scons SYSTEM '../../../../doc/scons.mod'>
+%scons;
+<!ENTITY % builders-mod SYSTEM '../../../../doc/generated/builders.mod'>
+%builders-mod;
+<!ENTITY % functions-mod SYSTEM '../../../../doc/generated/functions.mod'>
+%functions-mod;
+<!ENTITY % tools-mod SYSTEM '../../../../doc/generated/tools.mod'>
+%tools-mod;
+<!ENTITY % variables-mod SYSTEM '../../../../doc/generated/variables.mod'>
+%variables-mod;
+]>
+
+<sconsdoc xmlns="http://www.scons.org/dbxsd/v1.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
+
+<tool name="clangxx">
+<summary>
+<para>
+Set construction variables for the Clang C++ compiler.
+</para>
+</summary>
+<sets>
+<item>CXX</item>
+<item>SHCXXFLAGS</item>
+<item><!--STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME--></item>
+<item>SHOBJSUFFIX</item>
+<item>CXXVERSION</item>
+</sets>
+</tool>
+
+</sconsdoc>