summaryrefslogtreecommitdiff
path: root/src/engine/SCons/Tool/suncxx.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/Tool/suncxx.py')
-rw-r--r--src/engine/SCons/Tool/suncxx.py39
1 files changed, 27 insertions, 12 deletions
diff --git a/src/engine/SCons/Tool/suncxx.py b/src/engine/SCons/Tool/suncxx.py
index 1ee1c6a..0c70b68 100644
--- a/src/engine/SCons/Tool/suncxx.py
+++ b/src/engine/SCons/Tool/suncxx.py
@@ -31,7 +31,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
-__revision__ = "src/engine/SCons/Tool/suncxx.py e724ae812eb96f4858a132f5b8c769724744faf6 2019-07-21 00:04:47 bdeegan"
+__revision__ = "src/engine/SCons/Tool/suncxx.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan"
import SCons
@@ -39,12 +39,14 @@ import os
import re
import subprocess
+from SCons.Util import PY3
import SCons.Tool.cxx
cplusplus = SCons.Tool.cxx
-#cplusplus = __import__('c++', globals(), locals(), [])
+# cplusplus = __import__('c++', globals(), locals(), [])
package_info = {}
+
def get_package_info(package_name, pkginfo, pkgchk):
try:
return package_info[package_name]
@@ -52,7 +54,7 @@ def get_package_info(package_name, pkginfo, pkgchk):
version = None
pathname = None
try:
- from subprocess import DEVNULL # py3k
+ from subprocess import DEVNULL # py3k
except ImportError:
DEVNULL = open(os.devnull, 'wb')
@@ -68,13 +70,18 @@ def get_package_info(package_name, pkginfo, pkgchk):
pathname = os.path.dirname(sadm_match.group(1))
try:
+ popen_args = {'stdout': subprocess.PIPE,
+ 'stderr': DEVNULL}
+ if PY3:
+ popen_args['universal_newlines'] = True
p = subprocess.Popen([pkginfo, '-l', package_name],
- stdout=subprocess.PIPE,
- stderr=DEVNULL)
+ **popen_args)
except EnvironmentError:
pass
else:
pkginfo_contents = p.communicate()[0]
+ if not PY3:
+ pkginfo_contents.decode()
version_re = re.compile(r'^ *VERSION:\s*(.*)$', re.M)
version_match = version_re.search(pkginfo_contents)
if version_match:
@@ -82,13 +89,18 @@ def get_package_info(package_name, pkginfo, pkgchk):
if pathname is None:
try:
+ popen_args = {'stdout': subprocess.PIPE,
+ 'stderr': DEVNULL}
+ if PY3:
+ popen_args['universal_newlines'] = True
p = subprocess.Popen([pkgchk, '-l', package_name],
- stdout=subprocess.PIPE,
- stderr=DEVNULL)
+ **popen_args)
except EnvironmentError:
pass
else:
pkgchk_contents = p.communicate()[0]
+ if not PY3:
+ pkgchk_contents.decode()
pathname_re = re.compile(r'^Pathname:\s*(.*/bin/CC)$', re.M)
pathname_match = pathname_re.search(pkgchk_contents)
if pathname_match:
@@ -97,7 +109,8 @@ def get_package_info(package_name, pkginfo, pkgchk):
package_info[package_name] = (pathname, version)
return package_info[package_name]
-# use the package installer tool lslpp to figure out where cppc and what
+
+# use the package installer tool "pkg" to figure out where cppc and what
# version of it is installed
def get_cppc(env):
cxx = env.subst('$CXX')
@@ -119,6 +132,7 @@ def get_cppc(env):
return (cppcPath, 'CC', 'CC', cppcVersion)
+
def generate(env):
"""Add Builders and construction variables for SunPRO C++."""
path, cxx, shcxx, version = get_cppc(env)
@@ -131,10 +145,11 @@ def generate(env):
env['CXX'] = cxx
env['SHCXX'] = shcxx
env['CXXVERSION'] = version
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -KPIC')
- env['SHOBJPREFIX'] = 'so_'
- env['SHOBJSUFFIX'] = '.o'
-
+ 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: