[LyX/master] Cmake: warn when using stdlib-debug with Qt6
Kornel Benko
kornel at lyx.org
Wed Dec 7 09:11:06 UTC 2022
commit 84ac2e51aef97d068cd882ab1146e1ff9c6e7b8b
Author: Kornel Benko <kornel at lyx.org>
Date: Wed Dec 7 11:04:55 2022 +0100
Cmake: warn when using stdlib-debug with Qt6
---
CMakeLists.txt | 65 ++++++++++++++++++++++++++++++-------------------------
1 files changed, 35 insertions(+), 30 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 067b30c..4a9c428 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -235,6 +235,7 @@ LYX_OPTION(EXTERNAL_BOOST "Use external boost" ${DefaultExternalLibs} GCC)
LYX_OPTION(PROGRAM_SUFFIX "Append version suffix to binaries" ON GCC)
LYX_OPTION(DEBUG_GLIBC "Enable libstdc++ debug mode" OFF GCC)
LYX_OPTION(DEBUG_GLIBC_PEDANTIC "Enable libstdc++ pedantic debug mode" OFF GCC)
+LYX_OPTION(DEBUG_GLIBC_ASSERTIONS "Enable stdlib-assertions debug mode" OFF GCC)
LYX_OPTION(STDLIB_DEBUG "Use debug stdlib" ${DefaultLyxStdlibDebug} GCC)
# MSVC specific
@@ -659,6 +660,26 @@ else()
set(LYX_DEBUG ON)
endif()
+set(min_qt5_version "5.6")
+if(LYX_USE_QT MATCHES "AUTO")
+ # try qt6 first
+ find_package(Qt6Core CONFIG QUIET)
+ if (Qt6Core_Found)
+ set(LYX_USE_QT "QT6" CACHE STRING "Valid qt version" FORCE)
+ message(STATUS "Qt5Core_VERSION = ${Qt5Core_VERSION}")
+ else()
+ find_package(Qt5Core CONFIG QUIET)
+ if(Qt5Core_FOUND)
+ set(LYX_USE_QT "QT5" CACHE STRING "Valid qt version" FORCE)
+ message(STATUS "Qt5Core_VERSION = ${Qt5Core_VERSION}")
+ if(Qt5Core_VERSION VERSION_LESS ${min_qt5_version})
+ message(FATAL_ERROR "No appropriate QT-version found")
+ endif()
+ else()
+ message(FATAL_ERROR "No appropriate QT-version found")
+ endif()
+ endif()
+endif()
# When shared libs are supported enable this option
#LYX_OPTION(SHARED_LIBRARIES "Build shared libraries" OFF ALL)
@@ -720,15 +741,20 @@ else()
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()
- if(LYX_DEBUG_GLIBC)
- set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_DEBUG")
- endif()
- if(LYX_DEBUG_GLIBC_PEDANTIC)
- set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_DEBUG_PEDANTIC")
- endif()
+ message(STATUS "LYX_USE_QT = ${LYX_USE_QT}")
+ if(LYX_USE_QT MATCHES "QT6")
+ if (LYX_DEBUG_GLIBC OR LYX_DEBUG_GLIBC_PEDANTIC)
+ message(WARNING "Compiling LyX with stdlib-debug and Qt6 library may lead to crashes. Consider dropping -DLYX_DEBUG_GLIBC=ON and -DLYX_DEBUG_GLIBC_PEDANTIC=ON")
+ endif()
+ endif()
+ if(LYX_STDLIB_DEBUG OR LYX_DEBUG_GLIBC_ASSERTIONS)
+ set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_ASSERTIONS")
+ endif()
+ if(LYX_DEBUG_GLIBC)
+ set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_DEBUG")
+ endif()
+ if(LYX_DEBUG_GLIBC_PEDANTIC)
+ set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_DEBUG_PEDANTIC")
endif()
set(CMAKE_CXX_FLAGS "${LYX_CXX_FLAGS} -fno-strict-aliasing " CACHE STRING "Set CXX flags" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -D_DEBUG" CACHE STRING "Set debug flags" FORCE)
@@ -751,27 +777,6 @@ if(LYX_XMINGW)
list(APPEND CMAKE_FIND_ROOT_PATH ${GNUWIN32_DIR})
endif()
-set(min_qt5_version "5.6")
-if(LYX_USE_QT MATCHES "AUTO")
- # try qt6 first
- find_package(Qt6Core CONFIG QUIET)
- if (Qt6Core_Found)
- set(LYX_USE_QT "QT6" CACHE STRING "Valid qt version" FORCE)
- message(STATUS "Qt5Core_VERSION = ${Qt5Core_VERSION}")
- else()
- find_package(Qt5Core CONFIG QUIET)
- if(Qt5Core_FOUND)
- set(LYX_USE_QT "QT5" CACHE STRING "Valid qt version" FORCE)
- message(STATUS "Qt5Core_VERSION = ${Qt5Core_VERSION}")
- if(Qt5Core_VERSION VERSION_LESS ${min_qt5_version})
- message(FATAL_ERROR "No appropriate QT-version found")
- endif()
- else()
- message(FATAL_ERROR "No appropriate QT-version found")
- endif()
- endif()
-endif()
-
set(QtCore5CompatLibrary)
set(QtCore5CompatModule)
if(LYX_USE_QT MATCHES "QT6|QT5")
More information about the lyx-cvs
mailing list