X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=81adb1ff230494d56167c5e07762492f30fa4a41;hb=360fd94ee4663b2f9e87f83cd1305cc68bf2f388;hp=2776d9dc09f521b42cf5f58dbf496cddde37422e;hpb=6dcecd91995b0c0e7ad9c5dfaf3e5ff6e9abd6d7;p=lyx.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 2776d9dc09..81adb1ff23 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -140,6 +140,7 @@ LYX_OPTION(ENABLE_EXPORT_TESTS "Enable for export tests" OFF ALL) LYX_OPTION(ASAN "Use address sanitizer" OFF ALL) LYX_COMBO(USE_QT "Use Qt version as frontend" QT4 QT5) LYX_OPTION(3RDPARTY_BUILD "Build 3rdparty libs" OFF ALL) +LYX_COMBO(ENABLE_CXX11 "Build with options for c++11-mode" AUTO ON OFF) # GCC specific LYX_OPTION(PROFILE "Build profile version" OFF GCC) @@ -149,7 +150,6 @@ LYX_OPTION(DEBUG_GLIBC "Enable libstdc++ debug mode" OFF GCC) LYX_OPTION(DEBUG_GLIBC_PEDANTIC "Enable libstdc++ pedantic debug mode" OFF GCC) LYX_OPTION(STDLIB_DEBUG "Use debug stdlib" OFF GCC) LYX_OPTION(PROFILE "Build with options for gprof" OFF GCC) -LYX_OPTION(ENABLE_CXX11 "Build with options for c++11-mode" OFF GCC) # MSVC specific LYX_OPTION(CONSOLE "Show console on Windows, enforce with =FORCE" ON MSVC) @@ -157,7 +157,6 @@ LYX_OPTION(VLD "Use VLD with MSVC" OFF MSVC) LYX_OPTION(WALL "Enable all warnings" OFF MSVC) LYX_OPTION(CONFIGURE_CHECKS "Also run configure checks for MSVC" OFF MSVC) LYX_OPTION(DEPENDENCIES_DOWNLOAD "Download dependencies for MSVC 10" OFF MSVC) -LYX_OPTION(3RDPARTY_BUILD "Build 3rdparty libraries " OFF MSVC) # APPLE specific LYX_OPTION(DMG "Build as Mac bundle, needed for .dmg (experimental) " OFF MAC) @@ -253,6 +252,29 @@ else() endif() +if(LYX_ENABLE_CXX11 MATCHES "AUTO") + # Set to some meaningful default + find_package(CXX11Compiler) + if(NOT CXX11COMPILER_FOUND) + set(LYX_ENABLE_CXX11 OFF CACHE TYPE STRING FORCE) + else() + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT GCC_VERSION VERSION_LESS 4.3) + set(LYX_ENABLE_CXX11 ON CACHE TYPE STRING FORCE) + else() + set(LYX_ENABLE_CXX11 OFF CACHE TYPE STRING FORCE) + endif() + else() + # Not a gnu compiler + if(CMAKE_CXX_COMPILER_ID MATCHES "^[cC]lang$") + set(LYX_ENABLE_CXX11 ON CACHE TYPE STRING FORCE) + else() + set(LYX_ENABLE_CXX11 OFF CACHE TYPE STRING FORCE) + endif() + endif() + endif() +endif() set(LYX_GCC11_MODE) if(UNIX OR MINGW) execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) @@ -289,8 +311,9 @@ include(LyXPaths) file(STRINGS "${TOP_SRC_DIR}/configure.ac" _config_lines) if(WIN32) + set(CMAKE_PREFIX_PATH Specify-path-to-Qt CACHE PATH "Used Qt version") if(MSVC) - set(LYX_3RDPARTY_BUILD ON) + set(LYX_3RDPARTY_BUILD ON CACHE BOOL "Build 3rdparty libraries" FORCE) endif() set(USE_WINDOWS_PACKAGING ON) elseif(APPLE) @@ -444,9 +467,9 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "/usr/local/${LYX_PROJECT}" CACHE PATH "LyX default install prefix" FORCE) endif() endif() - if(WIN32) - set(CMAKE_INSTALL_PREFIX LYX_INSTALLED CACHE PATH "LyX default install prefix" FORCE) - endif() +endif() +if(WIN32) + set(CMAKE_INSTALL_PREFIX LYX_INSTALLED CACHE PATH "LyX default install prefix" FORCE) endif() if(IS_ABSOLUTE) set(CMAKE_INSTALL_PREFIX_ABSOLUTE ${CMAKE_INSTALL_PREFIX}) @@ -472,7 +495,11 @@ set(LYX_ABS_TOP_SRCDIR "${TOP_SRC_DIR}") if(LYX_BUNDLE AND APPLE) set(LYX_MAN_DIR "${LYX_DATA_SUBDIR}" CACHE STRING "Install location for man pages.") else() - set(LYX_MAN_DIR "/usr/local/man/man1" CACHE STRING "Install location for man pages.") + if(WIN32) + set(LYX_MAN_DIR "${CMAKE_BINARY_DIR}/usr/local/man/man1" CACHE STRING "Install location for man pages.") + else() + set(LYX_MAN_DIR "/usr/local/man/man1" CACHE STRING "Install location for man pages.") + endif() endif() mark_as_advanced(LYX_MAN_DIR) @@ -561,7 +588,9 @@ if(LYX_XMINGW) list(APPEND CMAKE_FIND_ROOT_PATH ${GNUWIN32_DIR}) endif() +set(QPA_XCB) if(LYX_USE_QT MATCHES "QT5") + # set QPA_XCB if QT uses X11 find_package(Qt5Core REQUIRED) if (Qt5Core_FOUND) find_package(Qt5Widgets REQUIRED) @@ -569,6 +598,9 @@ if(LYX_USE_QT MATCHES "QT5") find_package(Qt5MacExtras REQUIRED) endif() find_package(Qt5X11Extras QUIET) + if(Qt5X11Extras_FOUND) + set(QPA_XCB 1) + endif() find_package(Qt5WinExtras QUIET) set(QTVERSION ${Qt5Core_VERSION}) macro (qt_use_modules) @@ -644,25 +676,27 @@ foreach(_spell "ASPELL" "Enchant" "Hunspell") endif() endforeach() -if(NOT LYX_PYTHON_EXECUTABLE) - find_package(PythonInterp 2.7 QUIET) - if(PYTHONINTERP_FOUND) - if(PYTHON_VERSION_STRING VERSION_GREATER 2.8) - unset(PYTHONINTERP_FOUND) - endif() - endif() +if(GNUWIN32_DIR) + list(APPEND CMAKE_PROGRAM_PATH "${GNUWIN32_DIR}/Python" ) +endif() - if(NOT PYTHONINTERP_FOUND AND NOT GNUWIN32_DIR) - 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.7 QUIET) +if(PYTHONINTERP_FOUND) + if(PYTHON_VERSION_STRING VERSION_GREATER 2.8) + unset(PYTHONINTERP_FOUND) endif() +endif() - set(LYX_PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Python to be used by LyX") +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) endif() +set(LYX_PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Python to be used by LyX") + if(LYX_NLS) find_package(LyXGettext) if(LYX_PYTHON_EXECUTABLE AND GETTEXT_FOUND) @@ -732,10 +766,14 @@ if(WIN32) set(WIN32_CONSOLE WIN32) endif() if(MSVC) - add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DNOMINMAX) + # -DPSAPI_VERSION=1 is needed to run on vista (bug 10186) + add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DNOMINMAX -DPSAPI_VERSION=1) # disable checked iterators for msvc release builds to get maximum speed set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /D_SECURE_SCL=0") 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. add_definitions(-DWINVER=0x0500) endif() endif()