]> git.lyx.org Git - lyx.git/blobdiff - CMakeLists.txt
#12157 Replace old with new banner in DMG background image
[lyx.git] / CMakeLists.txt
index e4ed8cfc1122e28ab5f4e741f1d5ddc9cd48f8ac..5e9c7c860b93ae77a46cdb056819eb05076fc075 100644 (file)
@@ -217,7 +217,7 @@ else()
     unset(LYX_ENABLE_VALGRIND_TESTS CACHE)
   endif()
 endif()
-LYX_OPTION(ASAN             "Use address sanitizer" OFF ALL)
+LYX_COMBO(DEBUG_SANITIZE    "Use sanitize check" NONE ADDRESS UNSPECIFIED)
 #LYX_COMBO(USE_FILEDIALOG    "Use native or QT file dialog" QT NATIVE)
 LYX_COMBO(USE_QT            "Use Qt version as frontend" AUTO QT4 QT5 QT6)
 LYX_COMBO(USE_IPO           "Interprocedural optimization" OFF AUTO ON)
@@ -674,6 +674,19 @@ else()
   set(LYX_CXX_FLAGS "")
 endif()
 
+if (LYX_DEBUG_SANITIZE MATCHES "ADDRESS")
+    set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
+    message(STATUS)
+    message(STATUS "Address sanitizer enabled. Usage:")
+    message(STATUS "    wget https://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/asan/scripts/asan_symbolize.py")
+    message(STATUS "    chmod  +x ./asan_symbolize.py")
+    message(STATUS "    ./bin/${_lyx} 2>&1 | ./asan_symbolize.py  | c++filt ")
+    message(STATUS)
+elseif (LYX_DEBUG_SANITIZE MATCHES "UNSPECIFIED")
+    set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -fsanitize=undefined -fno-omit-frame-pointer")
+    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined -fno-omit-frame-pointer")
+endif()
+
 if(MSVC)
   if (CXX11_FLAG MATCHES "\\+\\+([0-9]+)")
     set(CMAKE_CXX_STANDARD ${CMAKE_MATCH_1})
@@ -699,7 +712,14 @@ else()
        # The following setting with LYX_GCC11_MODE is needed because cmake does not honor
        # CMAKE_CXX_STANDARD while performing tests like
        # check_cxx_source_compiles("..." HAVE_DEF_MAKE_UNIQUE)
-       set(LYX_CXX_FLAGS "-Wall -Wextra -Wno-deprecated-copy ${LYX_GCC11_MODE}${LYX_CXX_FLAGS}")
+       include(CheckCXXCompilerFlag)
+       unset(CHECK_WNODEPRECATEDCOPY_FLAG CACHE)
+       CHECK_CXX_COMPILER_FLAG("-Wdeprecated-copy" CHECK_WNODEPRECATEDCOPY_FLAG)
+       if(${CHECK_WNODEPRECATEDCOPY_FLAG})
+               set(LYX_CXX_FLAGS "-Wall -Wextra -Wno-deprecated-copy ${LYX_GCC11_MODE}${LYX_CXX_FLAGS}")
+       else()
+               set(LYX_CXX_FLAGS "-Wall -Wextra ${LYX_GCC11_MODE}${LYX_CXX_FLAGS}")
+       endif()
        if(LYX_STDLIB_DEBUG)
          set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")
         else()
@@ -719,16 +739,6 @@ else()
        endif()
 endif()
 
-if(LYX_ASAN)
-    set(CMAKE_CXX_FLAGS "-fsanitize=address -fno-omit-frame-pointer -g ${CMAKE_CXX_FLAGS}")
-    message(STATUS)
-    message(STATUS "Address sanitizer enabled. Usage:")
-    message(STATUS "    wget https://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/asan/scripts/asan_symbolize.py")
-    message(STATUS "    chmod  +x ./asan_symbolize.py")
-    message(STATUS "    ./bin/${_lyx} 2>&1 | ./asan_symbolize.py  | c++filt ")
-    message(STATUS)
-endif()
-
 set(LYX_CXX_FLAGS_EXTRA "" CACHE STRING "Desired semicolon separated list of extra cxx compile flags, like '-Werror'")
 mark_as_advanced(LYX_CXX_FLAGS_EXTRA)
 if(LYX_CXX_FLAGS_EXTRA)
@@ -1102,7 +1112,7 @@ if(MSVC)
 
        endif()
 
-       if (NOT Qt5Core_FOUND)
+       if (NOT (Qt5Core_FOUND OR Qt6Core_FOUND))
                set(CMAKE_CXX_FLAGS_DEBUG      "${CMAKE_CXX_FLAGS_DEBUG} /Zc:wchar_t-")
                set(CMAKE_CXX_FLAGS_RELEASE    "${CMAKE_CXX_FLAGS_RELEASE} /Zc:wchar_t-")
                set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /Zc:wchar_t-")