Removed unnecessary checks for asan
authorakallabeth <akallabeth@posteo.net>
Fri, 3 Jul 2020 09:06:30 +0000 (11:06 +0200)
committerArmin Novak <armin.novak@thincast.com>
Mon, 6 Jul 2020 09:55:47 +0000 (11:55 +0200)
check_c_compiler_flag is unreliable, only use where absolutely
necessary.

(cherry picked from commit 7864a985d48f0fba4d431b196464f2075ebacd4b)

CMakeLists.txt

index 90aae3b..eea36d3 100644 (file)
@@ -345,97 +345,68 @@ endif()
 if(${CMAKE_C_COMPILER_ID} STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCC)
        set(CMAKE_REQUIRED_FLAGS_SAVED ${CMAKE_REQUIRED_FLAGS})
 
-       CHECK_C_COMPILER_FLAG ("-fno-omit-frame-pointer" fno-omit-frame-pointer)
-
        file(WRITE ${CMAKE_BINARY_DIR}/foo.txt "")
        if(WITH_SANITIZE_ADDRESS)
-               set(CMAKE_REQUIRED_FLAGS "-fsanitize=address")
-               CHECK_C_COMPILER_FLAG ("-fsanitize=address" fsanitize-address)
+               list(APPEND CMAKE_REQUIRED_FLAGS "-fsanitize=address")
                CHECK_C_COMPILER_FLAG ("-fsanitize-blacklist=${CMAKE_BINARY_DIR}/foo.txt" fsanitize-blacklist)
                CHECK_C_COMPILER_FLAG ("-fsanitize-address-use-after-scope" fsanitize-address-use-after-scope)
-               unset(CMAKE_REQUIRED_FLAGS)
-
-               if(fsanitize-address)
-                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
-                       set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address")
-                       set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
 
-                       if(fsanitize-blacklist)
-                               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/scripts/blacklist-address-sanitizer.txt")
-                       endif(fsanitize-blacklist)
+               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
+               set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address")
+               set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
 
-                       if(fsanitize-address-use-after-scope)
-                               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-address-use-after-scope")
-                       endif(fsanitize-address-use-after-scope)
+               if(fsanitize-blacklist)
+                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/scripts/blacklist-address-sanitizer.txt")
+               endif(fsanitize-blacklist)
 
-               else(fsanitize-address)
-                       message(WARNING "Missing support for address sanitizer!")
-               endif(fsanitize-address)
+               if(fsanitize-address-use-after-scope)
+                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-address-use-after-scope")
+               endif(fsanitize-address-use-after-scope)
 
-               if(fno-omit-frame-pointer)
-                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer")
-               endif()
+               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer")
        elseif(WITH_SANITIZE_MEMORY)
-               set(CMAKE_REQUIRED_FLAGS "-fsanitize=memory")
-               CHECK_C_COMPILER_FLAG ("-fsanitize=memory" fsanitize-memory)
+               list(APPEND CMAKE_REQUIRED_FLAGS "-fsanitize=memory")
                CHECK_C_COMPILER_FLAG ("-fsanitize-blacklist=${CMAKE_BINARY_DIR}/foo.txt" fsanitize-blacklist)
                CHECK_C_COMPILER_FLAG ("-fsanitize-memory-use-after-dtor" fsanitize-memory-use-after-dtor)
                CHECK_C_COMPILER_FLAG ("-fsanitize-memory-track-origins" fsanitize-memory-track-origins)
-               unset(CMAKE_REQUIRED_FLAGS)
 
-               if(fsanitize-memory)
-                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=memory")
-                       set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=memory")
-                       set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=memory")
+               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=memory")
+               set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=memory")
+               set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=memory")
 
-                       if(fsanitize-blacklist)
-                               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/scripts/blacklist-memory-sanitizer.txt")
-                       endif(fsanitize-blacklist)
+               if(fsanitize-blacklist)
+                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/scripts/blacklist-memory-sanitizer.txt")
+               endif(fsanitize-blacklist)
 
-                       if (fsanitize-memory-use-after-dtor)
-                               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-memory-use-after-dtor")
-                       endif(fsanitize-memory-use-after-dtor)
+               if (fsanitize-memory-use-after-dtor)
+                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-memory-use-after-dtor")
+               endif(fsanitize-memory-use-after-dtor)
 
-                       if (fsanitize-memory-track-origins)
-                               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-memory-track-origins")
-                       endif(fsanitize-memory-track-origins)
+               if (fsanitize-memory-track-origins)
+                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-memory-track-origins")
+               endif(fsanitize-memory-track-origins)
 
-               else(fsanitize-memory)
-                       message(WARNING "Missing support for memory sanitizer!")
-               endif(fsanitize-memory)
-
-               if(fno-omit-frame-pointer)
-                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer")
-               endif()
+               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer")
        elseif(WITH_SANITIZE_THREAD)
-               CHECK_C_COMPILER_FLAG ("-fsanitize=thread" fsanitize-thread)
+               list(APPEND CMAKE_REQUIRED_FLAGS "-fsanitize=thread")
                CHECK_C_COMPILER_FLAG ("-fsanitize-blacklist=${CMAKE_BINARY_DIR}/foo.txt" fsanitize-blacklist)
-               unset(CMAKE_REQUIRED_FLAGS)
-               if(fsanitize-thread)
-                       set(CMAKE_REQUIRED_FLAGS "-Werror -fsanitize=thread")
-                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread")
-                       if(fsanitize-blacklist)
-                               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/scripts/blacklist-thread-sanitizer.txt")
-                       endif(fsanitize-blacklist)
-                       set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=thread")
-                       set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=thread")
-               else(fsanitize-thread)
-                       message(WARNING "Missing support for thread sanitizer!")
-               endif(fsanitize-thread)
-
-               if(fno-omit-frame-pointer)
-                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer")
-               endif()
+               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread")
+               if(fsanitize-blacklist)
+                       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/scripts/blacklist-thread-sanitizer.txt")
+               endif(fsanitize-blacklist)
+               set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=thread")
+               set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=thread")
+
+               set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer")
        endif()
 
        file(REMOVE ${CMAKE_BINARY_DIR}/foo.txt)
 
        if (WITH_NO_UNDEFINED)
-               set(CMAKE_REQUIRED_FLAGS "-Wl,--no-undefined")
                CHECK_C_COMPILER_FLAG (-Wl,--no-undefined no-undefined)
-               unset(CMAKE_REQUIRED_FLAGS)
 
                if(no-undefined)
+                       SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-undefined" )
                        SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" )
                endif()
        endif()
@@ -672,9 +643,9 @@ if(UNIX OR CYGWIN)
        set(X11_FEATURE_TYPE "RECOMMENDED")
        set(WAYLAND_FEATURE_TYPE "RECOMMENDED")
 
-    include(CheckFunctionExists)
+       include(CheckFunctionExists)
 
-    check_function_exists(getlogin_r HAVE_GETLOGIN_R)
+       check_function_exists(getlogin_r HAVE_GETLOGIN_R)
 else()
        set(X11_FEATURE_TYPE "DISABLED")
        set(WAYLAND_FEATURE_TYPE "DISABLED")