Fix linking failures when compiled with Clang 9
authorsfan5 <sfan5@live.de>
Thu, 5 Mar 2020 19:33:47 +0000 (20:33 +0100)
committersfan5 <sfan5@live.de>
Thu, 5 Mar 2020 21:05:18 +0000 (22:05 +0100)
src/CMakeLists.txt

index db8645c64ae92a4668c8b879c8d0ee1f87ad5b58..6afa5b8fe99c9781f98ca8adc9fce9e630165168 100644 (file)
@@ -696,7 +696,7 @@ else()
                set(RELEASE_WARNING_FLAGS "")
        endif()
 
-       if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+       if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
                set(WARNING_FLAGS "${WARNING_FLAGS} -Wsign-compare")
        endif()
        if(APPLE AND USE_LUAJIT)
@@ -713,7 +713,14 @@ else()
        if(CMAKE_SYSTEM_NAME MATCHES "(Darwin|BSD|DragonFly)")
                set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os")
        else()
-               set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -ffast-math -fomit-frame-pointer")
+               set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -fomit-frame-pointer")
+               if(CMAKE_SYSTEM_NAME STREQUAL "Linux"
+                               AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
+                               AND CMAKE_CXX_COMPILER_VERSION MATCHES "^9\\.")
+                       # Clang 9 has broken -ffast-math on glibc
+               else()
+                       set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffast-math")
+               endif()
        endif(CMAKE_SYSTEM_NAME MATCHES "(Darwin|BSD|DragonFly)")
        set(CMAKE_CXX_FLAGS_SEMIDEBUG "-g -O1 -Wall -Wabi ${WARNING_FLAGS} ${OTHER_FLAGS}")
        set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wabi ${WARNING_FLAGS} ${OTHER_FLAGS}")