clang/apple-clang correct c/c++ standard flags (#35062)
This commit is contained in:
		| @@ -36,36 +36,89 @@ def extract_version_from_output(cls, output): | ||||
|             ver = match.group(match.lastindex) | ||||
|         return ver | ||||
| 
 | ||||
|     # C++ flags based on CMake Modules/Compiler/AppleClang-CXX.cmake | ||||
| 
 | ||||
|     @property | ||||
|     def cxx11_flag(self): | ||||
|         # Adapted from CMake's AppleClang-CXX rules | ||||
|         # Spack's AppleClang detection only valid from Xcode >= 4.6 | ||||
|         if self.real_version < spack.version.ver("4.0.0"): | ||||
|         if self.real_version < spack.version.ver("4.0"): | ||||
|             raise spack.compiler.UnsupportedCompilerFlag( | ||||
|                 self, "the C++11 standard", "cxx11_flag", "Xcode < 4.0.0" | ||||
|                 self, "the C++11 standard", "cxx11_flag", "Xcode < 4.0" | ||||
|             ) | ||||
|         return "-std=c++11" | ||||
| 
 | ||||
|     @property | ||||
|     def cxx14_flag(self): | ||||
|         # Adapted from CMake's rules for AppleClang | ||||
|         if self.real_version < spack.version.ver("5.1.0"): | ||||
|         if self.real_version < spack.version.ver("5.1"): | ||||
|             raise spack.compiler.UnsupportedCompilerFlag( | ||||
|                 self, "the C++14 standard", "cxx14_flag", "Xcode < 5.1.0" | ||||
|                 self, "the C++14 standard", "cxx14_flag", "Xcode < 5.1" | ||||
|             ) | ||||
|         elif self.real_version < spack.version.ver("6.1.0"): | ||||
|         elif self.real_version < spack.version.ver("6.1"): | ||||
|             return "-std=c++1y" | ||||
| 
 | ||||
|         return "-std=c++14" | ||||
| 
 | ||||
|     @property | ||||
|     def cxx17_flag(self): | ||||
|         # Adapted from CMake's rules for AppleClang | ||||
|         if self.real_version < spack.version.ver("6.1.0"): | ||||
|         if self.real_version < spack.version.ver("6.1"): | ||||
|             raise spack.compiler.UnsupportedCompilerFlag( | ||||
|                 self, "the C++17 standard", "cxx17_flag", "Xcode < 6.1.0" | ||||
|                 self, "the C++17 standard", "cxx17_flag", "Xcode < 6.1" | ||||
|             ) | ||||
|         return "-std=c++1z" | ||||
|         elif self.real_version < spack.version.ver("10.0"): | ||||
|             return "-std=c++1z" | ||||
|         return "-std=c++17" | ||||
| 
 | ||||
|     @property | ||||
|     def cxx20_flag(self): | ||||
|         if self.real_version < spack.version.ver("10.0"): | ||||
|             raise spack.compiler.UnsupportedCompilerFlag( | ||||
|                 self, "the C++20 standard", "cxx20_flag", "Xcode < 10.0" | ||||
|             ) | ||||
|         elif self.real_version < spack.version.ver("13.0"): | ||||
|             return "-std=c++2a" | ||||
|         return "-std=c++20" | ||||
| 
 | ||||
|     @property | ||||
|     def cxx23_flag(self): | ||||
|         if self.real_version < spack.version.ver("13.0"): | ||||
|             raise spack.compiler.UnsupportedCompilerFlag( | ||||
|                 self, "the C++23 standard", "cxx23_flag", "Xcode < 13.0" | ||||
|             ) | ||||
|         return "-std=c++2b" | ||||
| 
 | ||||
|     # C flags based on CMake Modules/Compiler/AppleClang-C.cmake | ||||
| 
 | ||||
|     @property | ||||
|     def c99_flag(self): | ||||
|         if self.real_version < spack.version.ver("4.0"): | ||||
|             raise spack.compiler.UnsupportedCompilerFlag( | ||||
|                 self, "the C99 standard", "c99_flag", "< 4.0" | ||||
|             ) | ||||
|         return "-std=c99" | ||||
| 
 | ||||
|     @property | ||||
|     def c11_flag(self): | ||||
|         if self.real_version < spack.version.ver("4.0"): | ||||
|             raise spack.compiler.UnsupportedCompilerFlag( | ||||
|                 self, "the C11 standard", "c11_flag", "< 4.0" | ||||
|             ) | ||||
|         return "-std=c11" | ||||
| 
 | ||||
|     @property | ||||
|     def c17_flag(self): | ||||
|         if self.real_version < spack.version.ver("11.0"): | ||||
|             raise spack.compiler.UnsupportedCompilerFlag( | ||||
|                 self, "the C17 standard", "c17_flag", "< 11.0" | ||||
|             ) | ||||
|         return "-std=c17" | ||||
| 
 | ||||
|     @property | ||||
|     def c23_flag(self): | ||||
|         if self.real_version < spack.version.ver("11.0.3"): | ||||
|             raise spack.compiler.UnsupportedCompilerFlag( | ||||
|                 self, "the C23 standard", "c23_flag", "< 11.0.3" | ||||
|             ) | ||||
|         return "-std=c2x" | ||||
| 
 | ||||
|     def setup_custom_environment(self, pkg, env): | ||||
|         """Set the DEVELOPER_DIR environment for the Xcode toolchain. | ||||
|   | ||||
| @@ -128,10 +128,23 @@ def c99_flag(self): | ||||
| 
 | ||||
|     @property | ||||
|     def c11_flag(self): | ||||
|         if self.real_version < ver("6.1.0"): | ||||
|             raise UnsupportedCompilerFlag(self, "the C11 standard", "c11_flag", "< 6.1.0") | ||||
|         else: | ||||
|             return "-std=c11" | ||||
|         if self.real_version < ver("3.0"): | ||||
|             raise UnsupportedCompilerFlag(self, "the C11 standard", "c11_flag", "< 3.0") | ||||
|         if self.real_version < ver("3.1"): | ||||
|             return "-std=c1x" | ||||
|         return "-std=c11" | ||||
| 
 | ||||
|     @property | ||||
|     def c17_flag(self): | ||||
|         if self.real_version < ver("6.0"): | ||||
|             raise UnsupportedCompilerFlag(self, "the C17 standard", "c17_flag", "< 6.0") | ||||
|         return "-std=c17" | ||||
| 
 | ||||
|     @property | ||||
|     def c23_flag(self): | ||||
|         if self.real_version < ver("9.0"): | ||||
|             raise UnsupportedCompilerFlag(self, "the C23 standard", "c23_flag", "< 9.0") | ||||
|         return "-std=c2x" | ||||
| 
 | ||||
|     @property | ||||
|     def cc_pic_flag(self): | ||||
|   | ||||
| @@ -389,7 +389,7 @@ def test_apple_clang_flags(): | ||||
|     unsupported_flag_test("cxx17_flag", "apple-clang@6.0.0") | ||||
|     supported_flag_test("cxx17_flag", "-std=c++1z", "apple-clang@6.1.0") | ||||
|     supported_flag_test("c99_flag", "-std=c99", "apple-clang@6.1.0") | ||||
|     unsupported_flag_test("c11_flag", "apple-clang@6.0.0") | ||||
|     unsupported_flag_test("c11_flag", "apple-clang@3.0.0") | ||||
|     supported_flag_test("c11_flag", "-std=c11", "apple-clang@6.1.0") | ||||
|     supported_flag_test("cc_pic_flag", "-fPIC", "apple-clang@2.0.0") | ||||
|     supported_flag_test("cxx_pic_flag", "-fPIC", "apple-clang@2.0.0") | ||||
| @@ -409,7 +409,7 @@ def test_clang_flags(): | ||||
|     supported_flag_test("cxx17_flag", "-std=c++1z", "clang@3.5") | ||||
|     supported_flag_test("cxx17_flag", "-std=c++17", "clang@5.0") | ||||
|     supported_flag_test("c99_flag", "-std=c99", "clang@3.3") | ||||
|     unsupported_flag_test("c11_flag", "clang@6.0.0") | ||||
|     unsupported_flag_test("c11_flag", "clang@2.0") | ||||
|     supported_flag_test("c11_flag", "-std=c11", "clang@6.1.0") | ||||
|     supported_flag_test("cc_pic_flag", "-fPIC", "clang@3.3") | ||||
|     supported_flag_test("cxx_pic_flag", "-fPIC", "clang@3.3") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Harmen Stoppels
					Harmen Stoppels