summaryrefslogtreecommitdiff
path: root/engine/SCons/Tool/intelc.py
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2016-04-10 16:42:42 +0200
committerJörg Frings-Fürst <debian@jff-webhosting.net>2016-04-10 16:42:42 +0200
commit2b4e62c8dacc53317d63d987c4a8826a38bbf9aa (patch)
tree2ec174254744787d91ee83de5c49c8ab9309937e /engine/SCons/Tool/intelc.py
parent5ee29f69a1062eaa564b19dff870c13f9f8445df (diff)
parent70639bffe44444b5faee83772cc3c73dc2e46fed (diff)
Merge tag 'upstream/2.5.0'
Upstream version 2.5.0
Diffstat (limited to 'engine/SCons/Tool/intelc.py')
-rw-r--r--engine/SCons/Tool/intelc.py38
1 files changed, 22 insertions, 16 deletions
diff --git a/engine/SCons/Tool/intelc.py b/engine/SCons/Tool/intelc.py
index ebf2534..24b1dc5 100644
--- a/engine/SCons/Tool/intelc.py
+++ b/engine/SCons/Tool/intelc.py
@@ -10,7 +10,7 @@ selection method.
"""
#
-# Copyright (c) 2001 - 2015 The SCons Foundation
+# Copyright (c) 2001 - 2016 The SCons Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ selection method.
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from __future__ import division
-__revision__ = "src/engine/SCons/Tool/intelc.py rel_2.4.1:3453:73fefd3ea0b0 2015/11/09 03:25:05 bdbaddog"
+__revision__ = "src/engine/SCons/Tool/intelc.py rel_2.5.0:3543:937e55cd78f7 2016/04/09 11:29:54 bdbaddog"
import math, sys, os.path, glob, string, re
@@ -62,15 +62,6 @@ class MissingDirError(IntelCError): # dir not found
class NoRegistryModuleError(IntelCError): # can't read registry at all
pass
-def uniquify(s):
- """Return a sequence containing only one copy of each unique element from input sequence s.
- Does not preserve order.
- Input sequence must be hashable (i.e. must be usable as a dictionary key)."""
- u = {}
- for x in s:
- u[x] = 1
- return list(u.keys())
-
def linux_ver_normalize(vstr):
"""Normalize a Linux compiler version number.
Intel changed from "80" to "9.0" in 2005, so we assume if the number
@@ -191,7 +182,7 @@ def get_intel_registry_value(valuename, version=None, abi=None):
except SCons.Util.RegError:
raise MissingRegistryError("%s was not found in the registry, for Intel compiler version %s, abi='%s'"%(K, version,abi))
- except WindowsError:
+ except SCons.Util.WinError:
raise MissingRegistryError("%s was not found in the registry, for Intel compiler version %s, abi='%s'"%(K, version,abi))
# Get the value:
@@ -215,7 +206,7 @@ def get_all_compiler_versions():
try:
k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE,
keyname)
- except WindowsError:
+ except SCons.Util.WinError:
# For version 13 or later, check for default instance UUID
if is_win64:
keyname = 'Software\\WoW6432Node\\Intel\\Suites'
@@ -224,7 +215,7 @@ def get_all_compiler_versions():
try:
k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE,
keyname)
- except WindowsError:
+ except SCons.Util.WinError:
return []
i = 0
versions = []
@@ -298,11 +289,17 @@ def get_all_compiler_versions():
m = re.search(r'([0-9]{0,4})(?:_sp\d*)?\.([0-9][0-9.]*)$', d)
if m:
versions.append("%s.%s"%(m.group(1), m.group(2)))
+ for d in glob.glob('/opt/intel/compilers_and_libraries_*'):
+ # JPA: For the new version of Intel compiler 2016.1.
+ m = re.search(r'([0-9]{0,4})(?:_sp\d*)?\.([0-9][0-9.]*)$', d)
+ if m:
+ versions.append("%s.%s"%(m.group(1), m,group(2)))
+
def keyfunc(str):
"""Given a dot-separated version string, return a tuple of ints representing it."""
return [int(x) for x in str.split('.')]
# split into ints, sort, then remove dups
- return sorted(uniquify(versions), key=keyfunc, reverse=True)
+ return sorted(SCons.Util.unique(versions), key=keyfunc, reverse=True)
def get_intel_compiler_top(version, abi):
"""
@@ -379,7 +376,16 @@ def get_intel_compiler_top(version, abi):
top = d
break
return top
- top = find_in_2011style_dir(version) or find_in_2010style_dir(version) or find_in_2008style_dir(version)
+ def find_in_2016style_dir(version):
+ # The 2016 (compiler v16) dirs are inconsistent from previous.
+ top = None
+ for d in glob.glob('/opt/intel/compilers_and_libraries_%s/linux'%version):
+ if os.path.exists(os.path.join(d, "bin", "ia32", "icc")) or os.path.exists(os.path.join(d, "bin", "intel64", "icc")):
+ top = d
+ break
+ return top
+
+ top = find_in_2016style_dir(version) or find_in_2011style_dir(version) or find_in_2010style_dir(version) or find_in_2008style_dir(version)
# print "INTELC: top=",top
if not top:
raise MissingDirError("Can't find version %s Intel compiler in %s (abi='%s')"%(version,top, abi))