X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=e421c535b923aa8136cca2bd7751a26e5c1a9a67;hb=9a15d354437a37342cf71a892b8b7a9b5338c5ad;hp=d27d487676bc53df6016e12599c7fc28c8b3e6d9;hpb=03b6ee9f06ba5c6645a4989144bbe41b0bd340e3;p=lyx.git diff --git a/CMakeLists.txt b/CMakeLists.txt index d27d487676..e421c535b9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ # Copyright (c) 2006-2011 Peter Kümmel, # Copyright (c) 2008-2011 Kornel Benko, -cmake_minimum_required(VERSION 2.6.4) +cmake_minimum_required(VERSION 3.1.0) set(LYX_PROJECT LyX) @@ -47,6 +47,10 @@ if(COMMAND cmake_policy) # COMPILE_DEFINITIONS are not used yet. Enable new behavior. cmake_policy(SET CMP0043 NEW) endif() + cmake_policy(SET CMP0020 NEW) + if(POLICY CMP0075) + cmake_policy(SET CMP0075 OLD) + endif() endif() set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) @@ -139,6 +143,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) @@ -256,7 +261,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") @@ -281,10 +286,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() @@ -337,7 +343,7 @@ foreach(_c_l ${_config_lines} ) if(PACKAGE_VERSION MATCHES "^\([0-9]+\)\\.\([0-9]+\)\(\\.\([0-9]+\)\)?.*$") set(LYX_MAJOR_VERSION ${CMAKE_MATCH_1}) set(LYX_MINOR_VERSION ${CMAKE_MATCH_2}) - set(LYX_PATCH_VERSION ${CMAKE_MATCH_4}) + set(LYX_RELEASE_VERSION ${CMAKE_MATCH_4}) set(LYX_DIR_VER "LYX_DIR_${CMAKE_MATCH_1}${CMAKE_MATCH_2}x") set(LYX_USERDIR_VER "LYX_USERDIR_${CMAKE_MATCH_1}${CMAKE_MATCH_2}x") if ("${LYX_SUFFIX_VALUE}" MATCHES "") @@ -354,7 +360,7 @@ endforeach(_c_l) FIND_PROGRAM(LYX_GITVERSION git) #message(STATUS "gitversion = ${LYX_GITVERSION}") -set(LYX_REVISION_VERSION ${LYX_PATCH_VERSION}) +set(LYX_REVISION_VERSION ${LYX_RELEASE_VERSION}) set(LYX_PACKAGE_RELEASE "1") if(LYX_GITVERSION) if (LYX_LOCALVERSIONING) @@ -367,7 +373,7 @@ if(LYX_GITVERSION) # previous svn. # We use this value than also to set the package-patch-value MATH(EXPR tmp_REVISION_VERSION "(${CMAKE_MATCH_1}+40000)") - set(LYX_REVISION_VERSION "${LYX_PATCH_VERSION}-${tmp_REVISION_VERSION}git") + set(LYX_REVISION_VERSION "${LYX_RELEASE_VERSION}-${tmp_REVISION_VERSION}git") set(ENABLE_DIST ON) endif() endif() @@ -457,12 +463,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 @@ -471,7 +481,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() @@ -547,7 +556,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() @@ -597,12 +606,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() @@ -621,7 +630,7 @@ endif() set(min_qt5_version "5.6") if(LYX_USE_QT MATCHES "AUTO") # try qt5 first - find_package(Qt5Core QUIET) + 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}") @@ -637,14 +646,14 @@ if(LYX_USE_QT MATCHES "AUTO") endif() if(LYX_USE_QT MATCHES "QT5") # set QPA_XCB if QT uses X11 - find_package(Qt5Core REQUIRED) + find_package(Qt5Core CONFIG REQUIRED) if (Qt5Core_FOUND) - find_package(Qt5Widgets REQUIRED) + find_package(Qt5Widgets CONFIG REQUIRED) if(APPLE) - find_package(Qt5MacExtras REQUIRED) + find_package(Qt5MacExtras CONFIG REQUIRED) endif() - find_package(Qt5X11Extras QUIET) - find_package(Qt5WinExtras QUIET) + find_package(Qt5X11Extras CONFIG QUIET) + find_package(Qt5WinExtras CONFIG QUIET) set(QTVERSION ${Qt5Core_VERSION}) if (QTVERSION VERSION_LESS ${min_qt5_version}) message(STATUS "QTVERSION = \"${QTVERSION}\"") @@ -656,8 +665,11 @@ if(LYX_USE_QT MATCHES "QT5") # Subject: cmake compilation error #message(FATAL_ERROR "Wrong Qt-Version") endif() - macro (qt_use_modules) - qt5_use_modules(${ARGN}) + macro (qt_use_modules lyxtarget) + foreach (_tg ${ARGN}) + find_package(Qt5${_tg} CONFIG REQUIRED) + target_link_libraries(${lyxtarget} Qt5::${_tg}) + endforeach() endmacro() macro (qt_add_resources) qt5_add_resources(${ARGN}) @@ -854,7 +866,7 @@ endif() message(STATUS "") foreach(_v PACKAGE PACKAGE_VERSION - PROGRAM_SUFFIX LYX_DATE LYX_DIR_VER LYX_USERDIR_VER + PROGRAM_SUFFIX LYX_DIR_VER LYX_USERDIR_VER LYX_ABS_TOP_SRCDIR LYX_ABS_INSTALLED_DATADIR LYX_ABS_INSTALLED_LOCALEDIR LYX_INSTALL_SUFFIX) if(NOT DEFINED ${_v}) @@ -915,7 +927,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}") @@ -939,7 +951,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") @@ -1049,6 +1061,7 @@ add_subdirectory(lib/scripts "${TOP_BINARY_DIR}/scripts") add_subdirectory(lib/examples "${TOP_BINARY_DIR}/lib/examples") add_subdirectory(sourcedoc "${TOP_BINARY_DIR}/sourcedoc") add_subdirectory(development/autotests "${TOP_BINARY_DIR}/autotests") +add_subdirectory(development/batchtests "${TOP_BINARY_DIR}/batchtests") message(STATUS) message(STATUS "Build params, switch LYX_* options by -DLYX_*=ON or OFF, LYX_* combos by -DLYX_*=value:")