]> git.lyx.org Git - lyx.git/blobdiff - CMakeLists.txt
Amend 263da2fa and 88c1ed9e for CMake-build
[lyx.git] / CMakeLists.txt
index 067b30cf3ac3d48876a7be115e1b605614f77f80..38e11b8a0b4707a936f1655be47d17111ca44503 100644 (file)
@@ -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")
@@ -828,10 +833,17 @@ if(LYX_USE_QT MATCHES "QT6|QT5")
                endif()
                if (LYX_USE_QT MATCHES "QT6")
                        get_target_property(QT_MOC_EXECUTABLE Qt6::moc LOCATION)
-                       find_package(Qt6 COMPONENTS Core5Compat REQUIRED)
+                       #find_package(Qt6 COMPONENTS Core5Compat REQUIRED)
+                       # We don't know why QtZlib is included, and ideally we
+                       # would have a different fix than relying on this
+                       # variable (which as "Private" in the name indicates,
+                       # it might be a fragile workaround).
+                       # See ML discussion here:
+                       # https://www.mail-archive.com/search?l=mid&q=CAGU9VOqpkngYBumnNh%3DcuzQ585GsS7TJbhHa903nJSfy-davRg%40mail.gmail.com
+                       list(REMOVE_ITEM Qt6Core5Compat_INCLUDE_DIRS ${_Qt6ZlibPrivate_OWN_INCLUDE_DIRS})
                        include_directories(${Qt6Core5Compat_INCLUDE_DIRS})
-                       set(QtCore5CompatLibrary Qt6::Core5Compat)
-                       set(QtCore5CompatModule Core5Compat)
+                       #set(QtCore5CompatLibrary Qt6::Core5Compat)
+                       #set(QtCore5CompatModule Core5Compat)
                endif()
        endif()
 else()