X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=CMakeLists.txt;h=e8c3c32c94fa9fcbd4f3e0112ca32f40820214fc;hb=a3780f8939bb4d32d4088274cbc1d9e7dfc52108;hp=d1b448ca3a170f2d82bedb533106810a33399aa0;hpb=6343452a7397a5ac4b84af30d61c4d7fca5afbc1;p=lyx.git diff --git a/CMakeLists.txt b/CMakeLists.txt index d1b448ca3a..e8c3c32c94 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,6 +81,18 @@ if(NOT help AND NOT HELP) message(FATAL_ERROR "Exiting") endif() endif() + # Enable LTO if supported + if (POLICY CMP0069) + cmake_policy(SET CMP0069 NEW) + include(CheckIPOSupported) + check_ipo_supported(RESULT result OUTPUT reason LANGUAGES CXX) + if(result) + message(STATUS "Setting IPO True") + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) + else() + message(STATUS "Not setting IPO , result = ${result}, reason = ${reason}") + endif() + endif() endif() if(UNIX) @@ -143,6 +155,7 @@ LYX_OPTION(ASAN "Use address sanitizer" OFF ALL) LYX_COMBO(USE_FILEDIALOG "Use native or QT file dialog" QT NATIVE) LYX_COMBO(USE_QT "Use Qt version as frontend" AUTO QT4 QT5) #LYX_OPTION(3RDPARTY_BUILD "Build 3rdparty libs" OFF ALL) +LYX_OPTION(DISABLE_CALLSTACK_PRINTING "do not print a callstack when crashing" OFF ALL) LYX_OPTION(EXTERNAL_Z "OFF := Build 3rdparty lib zlib" ON ALL) LYX_OPTION(EXTERNAL_ICONV "OFF := Build 3rdparty lib iconvlib" ON ALL) LYX_OPTION(EXTERNAL_HUNSPELL "OFF := Build 3rdparty lib hunspelllib" ON ALL) @@ -260,7 +273,7 @@ if(NOT CXX11COMPILER_FOUND) endif() set(LYX_GCC11_MODE) if(UNIX OR MINGW) - if (CMAKE_CXX_COMPILER_ID MATCHES "^[cC]lang$") + if (CMAKE_CXX_COMPILER_ID MATCHES "^([cC]lang|AppleClang)$") # ignore the GCC_VERSION for clang # and use the resulting CXX11_STD_REGEX found in FindCXX11Compiler.cmake message(STATUS "Using clang") @@ -285,10 +298,11 @@ if(UNIX OR MINGW) endif() set(LYX_GCC11_MODE "${CXX11_FLAG}") else() - set(LYX_USE_STD_REGEX 0) -# if(MSVC10) -# set(LYX_USE_STD_REGEX 1) #TODO should we use it in ECMAScript mode? -# endif() + if(MSVC_VERSION LESS 1915) + set(LYX_USE_STD_REGEX 0) + else() + set(LYX_USE_STD_REGEX 1) + endif() endif() @@ -461,12 +475,16 @@ else() set(SYSTEM_DATADIR "${CMAKE_INSTALL_PREFIX}") endif() -if(CMAKE_COMPILER_IS_GNUCXX) - message(STATUS "CMAKE_COMPILER_IS_GNUCXX = ${CMAKE_COMPILER_IS_GNUCXX}") - set(suffixing ${LYX_PROGRAM_SUFFIX}) -else() +if(NOT CMAKE_COMPILER_IS_GNUCXX) # Not a GCC compiler, programs do not have a suffix set(suffixing ${LYX_PACKAGE_SUFFIX}) +elseif(WIN32 AND MINGW) + # We want to use a suffix for the package in this case, + # even if not for the program + set(suffixing ${LYX_PACKAGE_SUFFIX}) +else() + message(STATUS "CMAKE_COMPILER_IS_GNUCXX = ${CMAKE_COMPILER_IS_GNUCXX}") + set(suffixing ${LYX_PROGRAM_SUFFIX}) endif() # The define PACKAGE below allows lyx-executable to find its default configuration files @@ -475,7 +493,6 @@ endif() # get_default_user_support_dir() # relative_system_support_dir() # in src/support/Package.cpp -# if(suffixing) set(PACKAGE ${PACKAGE_BASE}${LYX_INSTALL_SUFFIX}) else() @@ -551,7 +568,7 @@ include(ProjectSourceGroup) if(LYX_PROFILE AND NOT MSVC) - set(CMAKE_BUILD_TYPE Profile CACHE TYPE STRING FORCE) + set(CMAKE_BUILD_TYPE Profile CACHE STRING "Profile build type" FORCE) set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} -pg") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") else() @@ -601,12 +618,12 @@ if(NOT MSVC) if(LYX_STDLIB_DEBUG) set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC") endif() - set(CMAKE_CXX_FLAGS "${LYX_CXX_FLAGS} -fno-strict-aliasing " CACHE TYPE STRING FORCE) - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -D_DEBUG" CACHE TYPE STRING FORCE) + 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) if(MINGW) - set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG" CACHE TYPE STRING FORCE) + set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG" CACHE STRING "Set release flags for Mingw" FORCE) else() - set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE TYPE STRING FORCE) + set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "Set release flags" FORCE) endif() endif() @@ -922,7 +939,7 @@ if(MSVC) if(LYX_WALL) # Use the highest warning level - set(CMAKE_CXX_WARNING_LEVEL 4 CACHE TYPE STRING FORCE) + set(CMAKE_CXX_WARNING_LEVEL 4 CACHE STRING "Warning level" FORCE) if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") @@ -946,7 +963,7 @@ if(MSVC) set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /Wp64 ${MSVC_W_ERROR} ${MSVC_W_DISABLE}") else() - set(CMAKE_CXX_WARNING_LEVEL 3 CACHE TYPE STRING FORCE) + set(CMAKE_CXX_WARNING_LEVEL 3 CACHE STRING "Warning level" FORCE) # add here warnings which should produce an error /weXXXX set(MSVC_W_ERROR "/we4101 /we4189")