aboutsummaryrefslogtreecommitdiff
path: root/run_unittests.py
diff options
context:
space:
mode:
Diffstat (limited to 'run_unittests.py')
-rwxr-xr-xrun_unittests.py48
1 files changed, 36 insertions, 12 deletions
diff --git a/run_unittests.py b/run_unittests.py
index 214def1..3357ed3 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -4545,19 +4545,43 @@ class LinuxlikeTests(BasePlatformTests):
def _test_stds_impl(self, testdir, compiler, p):
lang_std = p + '_std'
- # Check that all the listed -std=xxx options for this compiler work
- # just fine when used
+ clangLT5 = (compiler.get_id() == 'clang' and
+ (version_compare(compiler.version, '<5.0.0') or
+ (compiler.compiler_type == mesonbuild.compilers.CompilerType.CLANG_OSX and version_compare(compiler.version, '<9.1'))))
+ clangLT6 = (compiler.get_id() == 'clang' and
+ (version_compare(compiler.version, '<6.0.0') or
+ (compiler.compiler_type == mesonbuild.compilers.CompilerType.CLANG_OSX and version_compare(compiler.version, '<10.0'))))
+ clangLT8 = (compiler.get_id() == 'clang' and
+ (version_compare(compiler.version, '<8.0.0') or
+ (compiler.compiler_type == mesonbuild.compilers.CompilerType.CLANG_OSX and version_compare(compiler.version, '<11.0'))))
+ # Check that all the listed -std=xxx options for this compiler work just fine when used
+ # https://en.wikipedia.org/wiki/Xcode#Latest_versions
+ # https://www.gnu.org/software/gcc/projects/cxx-status.html
for v in compiler.get_options()[lang_std].choices:
- if (compiler.get_id() == 'clang' and '17' in v and
- (version_compare(compiler.version, '<5.0.0') or
- (compiler.compiler_type == mesonbuild.compilers.CompilerType.CLANG_OSX and version_compare(compiler.version, '<9.1')))):
- continue
- if (compiler.get_id() == 'clang' and '2a' in v and
- (version_compare(compiler.version, '<6.0.0') or
- (compiler.compiler_type == mesonbuild.compilers.CompilerType.CLANG_OSX and version_compare(compiler.version, '<9.1')))):
- continue
- if (compiler.get_id() == 'gcc' and '2a' in v and version_compare(compiler.version, '<8.0.0')):
- continue
+ # we do it like this to handle gnu++17,c++17 and gnu17,c17 cleanly
+ # thus, C++ first
+ if '++17' in v:
+ if clangLT5:
+ continue
+ if compiler.get_id() == 'gcc' and version_compare(compiler.version, '<5.0.0'):
+ continue
+ elif '++2a' in v:
+ # https://en.cppreference.com/w/cpp/compiler_support
+ if clangLT6:
+ continue
+ if compiler.get_id() == 'gcc' and version_compare(compiler.version, '<8.0.0'):
+ continue
+ # now C
+ elif '17' in v:
+ if clangLT6:
+ continue
+ if compiler.get_id() == 'gcc' and version_compare(compiler.version, '<8.0.0'):
+ continue
+ elif '18' in v:
+ if clangLT8:
+ continue
+ if compiler.get_id() == 'gcc' and version_compare(compiler.version, '<8.0.0'):
+ continue
std_opt = '{}={}'.format(lang_std, v)
self.init(testdir, extra_args=['-D' + std_opt])
cmd = self.get_compdb()[0]['command']