diff options
Diffstat (limited to 'src/engine/SCons/Tool/sunc++.py')
| -rw-r--r-- | src/engine/SCons/Tool/sunc++.py | 105 | 
1 files changed, 4 insertions, 101 deletions
diff --git a/src/engine/SCons/Tool/sunc++.py b/src/engine/SCons/Tool/sunc++.py index f8b12a1..1219bcf 100644 --- a/src/engine/SCons/Tool/sunc++.py +++ b/src/engine/SCons/Tool/sunc++.py @@ -9,7 +9,7 @@ selection method.  """  # -# Copyright (c) 2001 - 2016 The SCons Foundation +# Copyright (c) 2001 - 2017 The SCons Foundation  #  # Permission is hereby granted, free of charge, to any person obtaining  # a copy of this software and associated documentation files (the @@ -31,109 +31,12 @@ selection method.  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/Tool/sunc++.py rel_2.5.1:3735:9dc6cee5c168 2016/11/03 14:02:02 bdbaddog" +__revision__ = "src/engine/SCons/Tool/sunc++.py rel_3.0.0:4395:8972f6a2f699 2017/09/18 12:59:24 bdbaddog" -import SCons -import os -import re -import subprocess +#forward proxy to the preffered cxx version +from SCons.Tool.suncxx import * -cplusplus = __import__('c++', globals(), locals(), []) - -package_info = {} - -def get_package_info(package_name, pkginfo, pkgchk): -    try: -        return package_info[package_name] -    except KeyError: -        version = None -        pathname = None -        try: -            sadm_contents = open('/var/sadm/install/contents', 'r').read() -        except EnvironmentError: -            pass -        else: -            sadm_re = re.compile('^(\S*/bin/CC)(=\S*)? %s$' % package_name, re.M) -            sadm_match = sadm_re.search(sadm_contents) -            if sadm_match: -                pathname = os.path.dirname(sadm_match.group(1)) - -        try: -            p = subprocess.Popen([pkginfo, '-l', package_name], -                                 stdout=subprocess.PIPE, -                                 stderr=open('/dev/null', 'w')) -        except EnvironmentError: -            pass -        else: -            pkginfo_contents = p.communicate()[0] -            version_re = re.compile('^ *VERSION:\s*(.*)$', re.M) -            version_match = version_re.search(pkginfo_contents) -            if version_match: -                version = version_match.group(1) - -        if pathname is None: -            try: -                p = subprocess.Popen([pkgchk, '-l', package_name], -                                     stdout=subprocess.PIPE, -                                     stderr=open('/dev/null', 'w')) -            except EnvironmentError: -                pass -            else: -                pkgchk_contents = p.communicate()[0] -                pathname_re = re.compile(r'^Pathname:\s*(.*/bin/CC)$', re.M) -                pathname_match = pathname_re.search(pkgchk_contents) -                if pathname_match: -                    pathname = os.path.dirname(pathname_match.group(1)) - -        package_info[package_name] = (pathname, version) -        return package_info[package_name] - -# use the package installer tool lslpp to figure out where cppc and what -# version of it is installed -def get_cppc(env): -    cxx = env.subst('$CXX') -    if cxx: -        cppcPath = os.path.dirname(cxx) -    else: -        cppcPath = None - -    cppcVersion = None - -    pkginfo = env.subst('$PKGINFO') -    pkgchk = env.subst('$PKGCHK') - -    for package in ['SPROcpl']: -        path, version = get_package_info(package, pkginfo, pkgchk) -        if path and version: -            cppcPath, cppcVersion = path, version -            break - -    return (cppcPath, 'CC', 'CC', cppcVersion) - -def generate(env): -    """Add Builders and construction variables for SunPRO C++.""" -    path, cxx, shcxx, version = get_cppc(env) -    if path: -        cxx = os.path.join(path, cxx) -        shcxx = os.path.join(path, shcxx) - -    cplusplus.generate(env) - -    env['CXX'] = cxx -    env['SHCXX'] = shcxx -    env['CXXVERSION'] = version -    env['SHCXXFLAGS']   = SCons.Util.CLVar('$CXXFLAGS -KPIC') -    env['SHOBJPREFIX']  = 'so_' -    env['SHOBJSUFFIX']  = '.o' -     -def exists(env): -    path, cxx, shcxx, version = get_cppc(env) -    if path and cxx: -        cppc = os.path.join(path, cxx) -        if os.path.exists(cppc): -            return cppc -    return None  # Local Variables:  # tab-width:4  | 
