From 59ca3d8b4b733ad72b0eda950e9f730dc5898762 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Thu, 7 Sep 2017 23:53:06 +0200 Subject: Improve appleclang version logic For appleclang version >= X, return minimal clang version Y. This now works for all intermediate versions between the known fixed points. This is especially important for compiling today's code with a future compiler. --- src/scripts/python_unittests.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src') diff --git a/src/scripts/python_unittests.py b/src/scripts/python_unittests.py index 1df35f0cd..649ccf662 100755 --- a/src/scripts/python_unittests.py +++ b/src/scripts/python_unittests.py @@ -110,6 +110,31 @@ Thread model: posix InstalledDir: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin""" self.assertEqual(detector.version_from_compiler_output(compiler_out), "4.0") + def test_clang_version_appleclang_intermediate(self): + # fake versions in between the knwon ones + # clang-700.0.0 is lower than all known versions + # clang-802.1.0 is a minor update of known clang-802 + # clang-1111.9.99 is a random future value + detector = CompilerDetector("clang", "clang++", "darwin") + + compiler_out = """Apple LLVM version 7.0.0 (clang-700.0.0) +Target: x86_64-apple-darwin16.7.0 +Thread model: posix +InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin""" + self.assertEqual(detector.version_from_compiler_output(compiler_out), "3.8") + + compiler_out = """Apple LLVM version 8.1.1 (clang-802.1.0) +Target: x86_64-apple-darwin16.7.0 +Thread model: posix +InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin""" + self.assertEqual(detector.version_from_compiler_output(compiler_out), "3.9") + + compiler_out = """Apple LLVM version 11.11.0 (clang-1111.9.99) +Target: x86_64-apple-darwin16.7.0 +Thread model: posix +InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin""" + self.assertEqual(detector.version_from_compiler_output(compiler_out), "4.0") + def test_msvc_version(self): detector = CompilerDetector("msvc", "cl.exe", "windows") compiler_out = """msvc_version.c -- cgit v1.2.3 From 13192be8bd753fd20ecd19a059cbcb2c22d41bfd Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Thu, 7 Sep 2017 23:55:01 +0200 Subject: Adjust min version for non "based on LLVM" appleclang --- configure.py | 4 +++- src/scripts/python_unittests.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/configure.py b/configure.py index 1314e05b8..121bef0af 100755 --- a/configure.py +++ b/configure.py @@ -2713,7 +2713,9 @@ class CompilerDetector(object): 900: '4.0', } - cc_version = '3.8' # safe default + # All appleclang versions without "based on LLVM" note are at least clang 3.7 + # https://en.wikipedia.org/wiki/Xcode#Latest_versions + cc_version = '3.7' match = re.search(r'Apple LLVM version [0-9\.]+ \(clang-([0-9]+)\.', cc_output) if match: user_appleclang = int(match.group(1)) diff --git a/src/scripts/python_unittests.py b/src/scripts/python_unittests.py index 649ccf662..37068ed1c 100755 --- a/src/scripts/python_unittests.py +++ b/src/scripts/python_unittests.py @@ -121,7 +121,7 @@ InstalledDir: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDe Target: x86_64-apple-darwin16.7.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin""" - self.assertEqual(detector.version_from_compiler_output(compiler_out), "3.8") + self.assertEqual(detector.version_from_compiler_output(compiler_out), "3.7") compiler_out = """Apple LLVM version 8.1.1 (clang-802.1.0) Target: x86_64-apple-darwin16.7.0 -- cgit v1.2.3