diff --git a/CMakeLists.txt b/CMakeLists.txt index ebc10909..8a1562f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -935,8 +935,14 @@ if(CPU_TYPE STREQUAL "x86_64" OR CPU_TYPE STREQUAL "i386") endif() elseif(CPU_TYPE STREQUAL "powerpc" OR CPU_TYPE STREQUAL "arm64") if(CMAKE_C_COMPILER_ID MATCHES "Clang") - if(CMAKE_C_COMPILER_VERSION VERSION_EQUAL 14.0.0 OR - CMAKE_C_COMPILER_VERSION VERSION_GREATER 14.0.0) + if(CMAKE_C_COMPILER_ID MATCHES "AppleClang") + # Xcode 14.3 and later + set(MIN_FP_CONTRACT_VERSION 14.0.1) + else() + set(MIN_FP_CONTRACT_VERSION 14.0.0) + endif() + if(CMAKE_C_COMPILER_VERSION VERSION_EQUAL ${MIN_FP_CONTRACT_VERSION} OR + CMAKE_C_COMPILER_VERSION VERSION_GREATER ${MIN_FP_CONTRACT_VERSION}) set(DEFAULT_FLOATTEST8 fp-contract) else() set(DEFAULT_FLOATTEST8 no-fp-contract) @@ -977,8 +983,14 @@ if(CPU_TYPE STREQUAL "x86_64") set(DEFAULT_FLOATTEST12 no-fp-contract) elseif(CPU_TYPE STREQUAL "powerpc" OR CPU_TYPE STREQUAL "arm64") if(CMAKE_C_COMPILER_ID MATCHES "Clang") - if(CMAKE_C_COMPILER_VERSION VERSION_EQUAL 14.0.0 OR - CMAKE_C_COMPILER_VERSION VERSION_GREATER 14.0.0) + if(CMAKE_C_COMPILER_ID MATCHES "AppleClang") + # Xcode 14.3 and later + set(MIN_FP_CONTRACT_VERSION 14.0.1) + else() + set(MIN_FP_CONTRACT_VERSION 14.0.0) + endif() + if(CMAKE_C_COMPILER_VERSION VERSION_EQUAL ${MIN_FP_CONTRACT_VERSION} OR + CMAKE_C_COMPILER_VERSION VERSION_GREATER ${MIN_FP_CONTRACT_VERSION}) set(DEFAULT_FLOATTEST12 fp-contract) else() set(DEFAULT_FLOATTEST12 no-fp-contract)