Title: [228134] trunk
Revision
228134
Author
mcatanz...@igalia.com
Date
2018-02-05 15:23:28 -0800 (Mon, 05 Feb 2018)

Log Message

[CMake] Add ENABLE_ADDRESS_SANITIZER to make it easier to build with asan support
https://bugs.webkit.org/show_bug.cgi?id=182400

Reviewed by Konstantin Tokarev.

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/WebKitCompilerFlags.cmake:

Modified Paths

Diff

Modified: trunk/ChangeLog (228133 => 228134)


--- trunk/ChangeLog	2018-02-05 23:10:58 UTC (rev 228133)
+++ trunk/ChangeLog	2018-02-05 23:23:28 UTC (rev 228134)
@@ -1,3 +1,13 @@
+2018-02-05  Michael Catanzaro  <mcatanz...@igalia.com>
+
+        [CMake] Add ENABLE_ADDRESS_SANITIZER to make it easier to build with asan support
+        https://bugs.webkit.org/show_bug.cgi?id=182400
+
+        Reviewed by Konstantin Tokarev.
+
+        * Source/cmake/OptionsGTK.cmake:
+        * Source/cmake/WebKitCompilerFlags.cmake:
+
 2018-01-31  Michael Catanzaro  <mcatanz...@igalia.com>
 
         Update ReadMe.md

Modified: trunk/Source/cmake/OptionsGTK.cmake (228133 => 228134)


--- trunk/Source/cmake/OptionsGTK.cmake	2018-02-05 23:10:58 UTC (rev 228133)
+++ trunk/Source/cmake/OptionsGTK.cmake	2018-02-05 23:23:28 UTC (rev 228134)
@@ -355,6 +355,11 @@
     endif ()
 endif ()
 
+# https://bugs.webkit.org/show_bug.cgi?id=182247
+if (ENABLED_COMPILER_SANITIZERS)
+    set(ENABLE_INTROSPECTION OFF)
+endif ()
+
 # Override the cached variables, gtk-doc and gobject-introspection do not really work when cross-building.
 if (CMAKE_CROSSCOMPILING)
     set(ENABLE_GTKDOC OFF)

Modified: trunk/Source/cmake/WebKitCompilerFlags.cmake (228133 => 228134)


--- trunk/Source/cmake/WebKitCompilerFlags.cmake	2018-02-05 23:10:58 UTC (rev 228133)
+++ trunk/Source/cmake/WebKitCompilerFlags.cmake	2018-02-05 23:23:28 UTC (rev 228134)
@@ -155,6 +155,21 @@
     set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "-Wl,--no-keep-memory ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")
 endif ()
 
+if (COMPILER_IS_GCC_OR_CLANG)
+    # Careful: this needs to be above where ENABLED_COMPILER_SANITIZERS is set.
+    # Also, it's not possible to use the normal prepend/append macros for
+    # -fsanitize=address, because check_cxx_compiler_flag will report it's
+    # unsupported, because it causes the build to fail if not used when linking.
+    option(ENABLE_ADDRESS_SANITIZER "Enable address sanitizer" OFF)
+    if (ENABLE_ADDRESS_SANITIZER)
+        WEBKIT_PREPEND_GLOBAL_COMPILER_FLAGS(-fno-omit-frame-pointer
+                                             -fno-optimize-sibling-calls)
+        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
+        set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_THREAD_LIBS_INIT} ${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
+        set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_THREAD_LIBS_INIT} ${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address")
+    endif ()
+endif ()
 
 if (NOT MSVC)
     string(REGEX MATCHALL "-fsanitize=[^ ]*" ENABLED_COMPILER_SANITIZERS ${CMAKE_CXX_FLAGS})
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to