]> git.lyx.org Git - lyx.git/blobdiff - CMakeLists.txt
Show cursor correctly whn loading file
[lyx.git] / CMakeLists.txt
index 7db41ebbee6c6934c8263eb535a29725e11d7e08..82448f6d332ad5bf07e5e5c3702a705c2fd98f96 100644 (file)
@@ -4,7 +4,7 @@
 # Copyright (c) 2006-2011 Peter Kümmel, <syntheticpp@gmx.net>
 # Copyright (c) 2008-2011 Kornel Benko, <Kornel.Benko@berlin.de>
 
-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)
@@ -256,7 +260,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 +285,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 +342,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 +359,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 +372,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()
@@ -415,8 +420,8 @@ if(LYX_BUNDLE)
                set(OSX_BUNDLE_DIRS "Resources;Resources;Resources")
 
                # Process Info.plist and lyxrc.dist
+               # See development/cmake/Install.cmake
                configure_file("${CMAKE_CURRENT_SOURCE_DIR}/development/MacOSX/Info.plist.in" "${CMAKE_CURRENT_BINARY_DIR}/Info.plist")
-               configure_file("${CMAKE_CURRENT_SOURCE_DIR}/development/MacOSX/lyxrc.dist.in" "${CMAKE_CURRENT_BINARY_DIR}/lyxrc.dist")
 
                set(LYX_BUILD_BUNDLE MACOSX_BUNDLE)
                set(LYX_DATA_SUBDIR ${LYX_BUNDLE_NAME}.app/Contents/Resources/ CACHE STRING "Bundle Contents dir" FORCE)
@@ -457,12 +462,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 +480,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()
@@ -621,7 +629,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 +645,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 +664,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})
@@ -694,7 +705,8 @@ endif()
 
 find_package(Magic)
 if(Magic_FOUND)
-       set(HAVE_MAGIC_H 1)
+  set(HAVE_MAGIC_H 1)
+  include_directories(${Magic_INCLUDE_DIR})
 endif()
 
 include_directories(${TOP_BINARY_DIR} ${TOP_SRC_DIR}/src)
@@ -853,7 +865,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})
@@ -1048,6 +1060,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:")