X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=63b4ea20d4809571daca55c2b9146486996a820c;hb=d6a93143ec2146210d79f58cac42f9608da86100;hp=7fd8b26f764b94a56aa9b8e7a1966548be3137a2;hpb=7eea0b6fa8942cef7f024fc77d1c10550ec68ef7;p=lyx.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 7fd8b26f76..63b4ea20d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,10 +4,14 @@ # 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) +# Instruct cmake to not use gnu extensions, +# this prevents the mix of '-std=c++*' and '-std=gnu++*' flags +set(CMAKE_CXX_EXTENSIONS OFF) + enable_testing() get_filename_component(lyx_dir_readme ${CMAKE_SOURCE_DIR}/README REALPATH) # Resolve symlinks @@ -37,20 +41,16 @@ set(LYX_TESTS_USERDIR "${TOP_BINARY_DIR}/Testing/.lyx") file(MAKE_DIRECTORY "${LYX_TESTS_USERDIR}") if(COMMAND cmake_policy) - cmake_policy(SET CMP0003 OLD) - cmake_policy(SET CMP0005 OLD) # Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION cmake_policy(SET CMP0006 NEW) - if(POLICY CMP0020) - cmake_policy(SET CMP0020 OLD) - endif() - if(POLICY CMP0028) - cmake_policy(SET CMP0028 OLD) - endif() if(POLICY CMP0043) # 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) @@ -125,7 +125,6 @@ LYX_OPTION(REQUIRE_SPELLCHECK "Abort if no spellchecker available" OFF ALL) LYX_OPTION(ASPELL "Require aspell" OFF ALL) LYX_OPTION(ENCHANT "Require Enchant" OFF ALL) LYX_OPTION(HUNSPELL "Require Hunspell" OFF ALL) -LYX_OPTION(DEVEL_VERSION "Build developer version" OFF ALL) LYX_OPTION(RELEASE "Build release version, build debug when disabled" OFF ALL) LYX_OPTION(DEBUG "Enforce debug build" OFF ALL) LYX_OPTION(NO_OPTIMIZE "Don't use any optimization/debug flags" OFF ALL) @@ -141,11 +140,13 @@ LYX_OPTION(ENABLE_URLTESTS "Enable for URL tests" OFF ALL) LYX_OPTION(ENABLE_EXPORT_TESTS "Enable for export tests" OFF ALL) LYX_OPTION(ENABLE_KEYTESTS "Enable for keytests" OFF ALL) LYX_OPTION(ASAN "Use address sanitizer" OFF ALL) -LYX_COMBO(USE_QT "Use Qt version as frontend" QT4 QT5) +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(EXTERNAL_Z "Build 3rdparty lib zlib" ON ALL) -LYX_OPTION(EXTERNAL_ICONV "Build 3rdparty lib iconvlib" ON ALL) -LYX_OPTION(EXTERNAL_HUNSPELL "Build 3rdparty lib hunspelllib" ON 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) +LYX_COMBO(EXTERNAL_MYTHES "OFF := Build 3rdparty lib mytheslib" AUTO OFF ON) # GCC specific LYX_OPTION(PROFILE "Build profile version" OFF GCC) @@ -157,7 +158,7 @@ LYX_OPTION(STDLIB_DEBUG "Use debug stdlib" OFF GCC) LYX_OPTION(PROFILE "Build with options for gprof" OFF GCC) # MSVC specific -LYX_OPTION(CONSOLE "Show console on Windows, enforce with =FORCE" ON MSVC) +LYX_OPTION(CONSOLE "Show console on Windows" ON MSVC) LYX_OPTION(VLD "Use VLD with MSVC" OFF MSVC) LYX_OPTION(WALL "Enable all warnings" OFF MSVC) LYX_OPTION(DEPENDENCIES_DOWNLOAD "Download dependencies for MSVC 10" OFF MSVC) @@ -192,11 +193,6 @@ if(LYX_INSTALL) if(WIN32 AND NOT MINGW) set(LYX_HUNSPELL ON) endif() - if(LYX_CONSOLE MATCHES "FORCE") - set(LYX_CONSOLE ON) - else() - set(LYX_CONSOLE OFF) - endif() set(LYX_PACKAGE_SUFFIX ON) if(NOT LYX_DEBUG) set(LYX_RELEASE ON) @@ -264,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") @@ -321,6 +317,7 @@ if(LYX_3RDPARTY_BUILD) set(LYX_EXTERNAL_Z OFF CACHE BOOL "Build 3rdparty lib zlib" FORCE) set(LYX_EXTERNAL_ICONV OFF CACHE BOOL "Build 3rdparty iconvlib" FORCE) set(LYX_EXTERNAL_HUNSPELL OFF CACHE BOOL "Build 3rdparty hunspelllib" FORCE) + set(LYX_EXTERNAL_MYTHES OFF CACHE STRING "Build 3rdparty mytheslib" FORCE) endif() macro(setstripped _varname) @@ -344,7 +341,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 "") @@ -361,18 +358,20 @@ 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) # Find the revision number and for later use EXECUTE_PROCESS(COMMAND ${LYX_GITVERSION} describe --match 2.0.0 HEAD - WORKING_DIRECTORY "${TOP_SRC_DIR}" OUTPUT_VARIABLE LYX_PACKAGE_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE) - if (LYX_PACKAGE_RELEASE MATCHES "^2\\.0\\.0\\-\([0-9]+\)\\-.*$") + WORKING_DIRECTORY "${TOP_SRC_DIR}" OUTPUT_VARIABLE tmp_LYX_PACKAGE_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE) + if (tmp_LYX_PACKAGE_RELEASE MATCHES "^2\\.0\\.0\\-\([0-9]+\)\\-\(.*\)$") + set(LYX_PACKAGE_RELEASE ${CMAKE_MATCH_2}) # We will add offset of 40000 to get appropriate value to # 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() @@ -387,6 +386,7 @@ if(LYX_PROGRAM_SUFFIX AND NOT (APPLE AND LYX_BUNDLE)) endif() set(_lyx "${PACKAGE_BASE}${PROGRAM_SUFFIX}") set(_tex2lyx tex2lyx${PROGRAM_SUFFIX}) +set(_convert lyxconvert${PROGRAM_SUFFIX}) add_custom_target(lyx_version ALL COMMAND ${CMAKE_COMMAND} -DTOP_SRC_DIR=${TOP_SRC_DIR} -DTOP_CMAKE_PATH=${TOP_CMAKE_PATH} -DTOP_BINARY_DIR=${TOP_BINARY_DIR} -DLYX_DATE=${LYX_DATE} -P ${TOP_SCRIPT_PATH}/LyXGetVersion.cmake @@ -419,8 +419,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) @@ -461,7 +461,22 @@ else() set(SYSTEM_DATADIR "${CMAKE_INSTALL_PREFIX}") endif() -if(LYX_PACKAGE_SUFFIX) +if(CMAKE_COMPILER_IS_GNUCXX) + message(STATUS "CMAKE_COMPILER_IS_GNUCXX = ${CMAKE_COMPILER_IS_GNUCXX}") + set(suffixing ${LYX_PROGRAM_SUFFIX}) +else() + # Not a GCC compiler, programs do not have a suffix + set(suffixing ${LYX_PACKAGE_SUFFIX}) +endif() + +# The define PACKAGE below allows lyx-executable to find its default configuration files +# see routines +# Package::messages_file() +# get_default_user_support_dir() +# relative_system_support_dir() +# in src/support/Package.cpp +# +if(suffixing) set(PACKAGE ${PACKAGE_BASE}${LYX_INSTALL_SUFFIX}) else() set(PACKAGE ${PACKAGE_BASE}) @@ -512,13 +527,15 @@ else() endif() mark_as_advanced(LYX_MAN_DIR) -if(LYX_INSTALL AND WIN32) - message(STATUS "Configuring NSIS files") - configure_file(development/Win32/packaging/installer/lyx.nsi.cmake ${CMAKE_BINARY_DIR}/installer/lyx.nsi @ONLY) - configure_file(development/Win32/packaging/installer/settings.nsh.cmake ${CMAKE_BINARY_DIR}/installer/settings-cmake.nsh @ONLY) - configure_file(development/Win32/packaging/installer/include/declarations.nsh.cmake ${CMAKE_BINARY_DIR}/installer/declarations-cmake.nsh @ONLY) - message(STATUS "NSIS files are created in ${CMAKE_BINARY_DIR}/installer") -endif() +# The Win installer cannot be built by CMake because one needs to install plugins for NSIS +# see the Readme.txt of the installer +#if(LYX_INSTALL AND WIN32) +# message(STATUS "Configuring NSIS files") +# configure_file(development/Win32/packaging/installer/lyx.nsi.cmake ${CMAKE_BINARY_DIR}/installer/lyx.nsi @ONLY) +# configure_file(development/Win32/packaging/installer/settings.nsh.cmake ${CMAKE_BINARY_DIR}/installer/settings-cmake.nsh @ONLY) +# configure_file(development/Win32/packaging/installer/include/declarations.nsh.cmake ${CMAKE_BINARY_DIR}/installer/declarations-cmake.nsh @ONLY) +# message(STATUS "NSIS files are created in ${CMAKE_BINARY_DIR}/installer") +#endif() if(NOT GROUP_CODE) #set(GROUP_CODE "The Golden Code") @@ -585,11 +602,11 @@ if(NOT MSVC) 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 "${LYX_CXX_FLAGS} -fno-strict-aliasing -O0 -g3 -D_DEBUG" CACHE TYPE STRING FORCE) + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -D_DEBUG" CACHE TYPE STRING FORCE) if(MINGW) - set(CMAKE_CXX_FLAGS_RELEASE "${LYX_CXX_FLAGS} -O2 -DNDEBUG" CACHE TYPE STRING FORCE) + set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG" CACHE TYPE STRING FORCE) else() - set(CMAKE_CXX_FLAGS_RELEASE "${LYX_CXX_FLAGS} -O3 -DNDEBUG" CACHE TYPE STRING FORCE) + set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE TYPE STRING FORCE) endif() endif() @@ -605,19 +622,49 @@ 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 qt5 first + 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}) + find_package(Qt4 "4.5.0" QUIET) + if(QT4_FOUND) + set(LYX_USE_QT "QT4" CACHE STRING "Valid qt version" FORCE) + endif() + endif() + else() + set(LYX_USE_QT "QT4" CACHE STRING "Valid qt version" FORCE) + endif() +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}) - macro (qt_use_modules) - qt5_use_modules(${ARGN}) + if (QTVERSION VERSION_LESS ${min_qt5_version}) + message(STATUS "QTVERSION = \"${QTVERSION}\"") + message(STATUS "This version is not recommended, try either option -DLYX_USE_QT=QT4 or") + message(STATUS "install QT-Version >= \"${min_qt5_version}\"") + # see thread in lyx-devel list + # From: Jean-Pierre Chrétien + # Date 11.03.2017 + # Subject: cmake compilation error + #message(FATAL_ERROR "Wrong Qt-Version") + endif() + 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}) @@ -644,8 +691,9 @@ elseif(LYX_USE_QT MATCHES "QT4") macro (qt_wrap_uifiles) qt4_wrap_ui(${ARGN}) endmacro() + set(LYX_QTMAIN_LIBRARY ${QT_QTSVG_LIBRARY}) if(WIN32) - set(LYX_QTMAIN_LIBRARY ${QT_QTMAIN_LIBRARIES}) + list(APPEND LYX_QTMAIN_LIBRARY ${QT_QTMAIN_LIBRARIES}) endif() else() message(FATAL_ERROR "Unhandled value for LYX_USE_QT (${LYX_USE_QT})") @@ -653,7 +701,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) @@ -661,6 +710,22 @@ include_directories(${TOP_BINARY_DIR} ${TOP_SRC_DIR}/src) set(Spelling_FOUND OFF) set(Include_used_spellchecker) # String will be inserted into config.h +if (LYX_EXTERNAL_MYTHES MATCHES "AUTO") + # try system library first + find_package(MyThesLIB) + if (MYTHESLIB_FOUND) + set(LYX_EXTERNAL_MYTHES ON CACHE STRING "OFF:= Build 3rdparty mytheslib" FORCE) + else() + set(LYX_EXTERNAL_MYTHES OFF CACHE STRING "OFF:= Build 3rdparty mytheslib" FORCE) + endif() +endif() +if (LYX_EXTERNAL_MYTHES MATCHES "ON") + find_package(MyThesLIB REQUIRED) +else() + add_subdirectory(3rdparty/mythes) +endif() +set(MYTHES_DIR ${MYTHESLIB_INCLUDE_DIR}) + if(NOT LYX_EXTERNAL_HUNSPELL) add_subdirectory(3rdparty/hunspell) add_definitions(-DHUNSPELL_STATIC) @@ -693,19 +758,19 @@ if(GNUWIN32_DIR) list(APPEND CMAKE_PROGRAM_PATH "${GNUWIN32_DIR}/Python" ) endif() -find_package(PythonInterp 2.7 QUIET) -if(PYTHONINTERP_FOUND) - if(PYTHON_VERSION_STRING VERSION_GREATER 2.8) - unset(PYTHONINTERP_FOUND) - endif() -endif() - +# Search for python default version first +unset(PYTHON_EXECUTABLE CACHE) +unset(LYX_PYTHON_EXECUTABLE CACHE) +unset(PYTHON_VERSION_MAJOR) +unset(PYTHON_VERSION_MINOR) +unset(PYTHON_VERSION_STRING) +find_package(PythonInterp 3.3 QUIET) if(NOT PYTHONINTERP_FOUND) unset(PYTHON_EXECUTABLE CACHE) - unset(PYTHON_VERSION_MAJOR) - unset(PYTHON_VERSION_MINOR) - unset(PYTHON_VERSION_STRING) - find_package(PythonInterp 3.3 REQUIRED) + find_package(PythonInterp 2.0 REQUIRED) + if(NOT PYTHON_VERSION_STRING VERSION_LESS 2.8) + message(FATAL_ERROR "Python interpreter found, but is not suitable") + endif() endif() set(LYX_PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Python to be used by LyX") @@ -738,37 +803,41 @@ else() add_subdirectory(3rdparty/zlib) endif() -if(LYX_EXTERNAL_BOOST) - message(STATUS "Searching for boost") - if(NOT LYX_USE_STD_REGEX) - find_package(Boost COMPONENTS regex) - endif() - if(Boost_FOUND) - message(STATUS "Boost found") - message(STATUS "Boost-libs = ${Boost_LIBRARIES}") - set(Lyx_Boost_Libraries ${Boost_LIBRARIES}) - if (LYX_STDLIB_DEBUG) - # Comment from Jean-Marc Lasgouttes: - # In general, system boost libraries are incompatible with - # the use of stdlib-debug in libstdc++. See ticket #9736 for - # details. - message(WARNING "Compiling LyX with stdlib-debug and system boost libraries may lead to crashes. Consider using '-DLYX_STDLIB_DEBUG=OFF' or using '-DLYX_EXTERNAL_BOOST=OFF'") - endif() - else() - message(FATAL_ERROR "Boost not found" ${Boost_ERROR_REASON}) - endif() +if(LYX_USE_STD_REGEX) + # Set only include path. + # Use internal boost, which is known to exist + # we don't need any libraries + set(Lyx_Boost_Libraries) + add_definitions(-DBOOST_USER_CONFIG=) + include_directories(${TOP_SRC_DIR}/3rdparty/boost) else() - if(NOT LYX_USE_STD_REGEX) - set(Lyx_Boost_Libraries boost_regex) - endif() - add_definitions(-DBOOST_USER_CONFIG="") - include_directories(${TOP_SRC_DIR}/3rdparty/boost) - add_subdirectory(3rdparty/boost "${TOP_BINARY_DIR}/3rdparty/boost") + # Using boost-regex + if(LYX_EXTERNAL_BOOST) + message(STATUS "Searching for external boost") + find_package(Boost COMPONENTS regex) + if(Boost_FOUND) + message(STATUS "Boost found") + message(STATUS "Boost-libs = ${Boost_LIBRARIES}") + set(Lyx_Boost_Libraries ${Boost_LIBRARIES}) + if (LYX_STDLIB_DEBUG) + # Comment from Jean-Marc Lasgouttes: + # In general, system boost libraries are incompatible with + # the use of stdlib-debug in libstdc++. See ticket #9736 for + # details. + message(WARNING "Compiling LyX with stdlib-debug and system boost libraries may lead to crashes. Consider using '-DLYX_STDLIB_DEBUG=OFF' or using '-DLYX_EXTERNAL_BOOST=OFF'") + endif() + else() + message(FATAL_ERROR "Boost not found" ${Boost_ERROR_REASON}) + endif() + else() + # Using included boost + set(Lyx_Boost_Libraries boost_regex) + add_definitions(-DBOOST_USER_CONFIG=) + include_directories(${TOP_SRC_DIR}/3rdparty/boost) + add_subdirectory(3rdparty/boost "${TOP_BINARY_DIR}/3rdparty/boost") + endif() endif() - - - if(WIN32) if(LYX_CONSOLE) set(LYX_QTMAIN_LIBRARY) @@ -783,16 +852,16 @@ if(WIN32) else() # -DPSAPI_VERSION=1 is not needed for mingw, since the mingw psapi.h # does not use it and always declares the vista compatible API. - # If this ever changes then -DPSAPI_VERSION might be needed here as well. + # If this ever changes then -DPSAPI_VERSION might be needed here as well. add_definitions(-DWINVER=0x0500) endif() endif() -# Compute qt4-version from ${QTVERSION} +# Compute qt-version from ${QTVERSION} 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}) @@ -973,18 +1042,21 @@ if(LYX_INSTALL) endif() add_subdirectory(${LYX_CMAKE_DIR}/doc "${TOP_BINARY_DIR}/doc") endif() - include(../Install) endif() +include(../Install) +# By running the URL tests first, time can be saved when running the ctests in +# parallel since the URL tests take a long time to run (e.g. 10 minutes). +if(LYX_ENABLE_URLTESTS) + add_subdirectory(development/checkurls "${TOP_BINARY_DIR}/checkurls") +endif() add_subdirectory(src "${TOP_BINARY_DIR}/src") add_subdirectory(lib/lyx2lyx "${TOP_BINARY_DIR}/lyx2lyx") 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") -if(LYX_ENABLE_URLTESTS) - add_subdirectory(development/checkurls "${TOP_BINARY_DIR}/checkurls") -endif() +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:")