]> git.lyx.org Git - lyx.git/blobdiff - CMakeLists.txt
ctests: log a fixed issue
[lyx.git] / CMakeLists.txt
index c9bde3e19ce606ef7cd3ac39109ed1c1b8497460..f8ca0c10fdd39c5e699ac8bdca8cd490570f44da 100644 (file)
@@ -6,8 +6,6 @@
 
 cmake_minimum_required(VERSION 3.1.0)
 
-set(GNUWIN32_DIR D:/LyX/lyx-unstable/lyx-windows-deps-msvc2017)
-
 set(LYX_PROJECT LyX)
 # Instruct cmake to not use gnu extensions,
 # this prevents the mix of '-std=c++*' and '-std=gnu++*' flags
@@ -79,9 +77,9 @@ if(NOT help AND NOT HELP)
   # 'project' triggers the searching for a compiler
   project(${LYX_PROJECT})
   if (CMAKE_COMPILER_IS_GNUCXX)
-    if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.0")
+    if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9")
       message(STATUS "Gnu CXX compiler version = ${CMAKE_CXX_COMPILER_VERSION}")
-      message(STATUS "is too old, should be >= 4.0")
+      message(STATUS "is too old, should be >= 4.9")
       message(FATAL_ERROR "Exiting")
     endif()
   endif()
@@ -106,9 +104,6 @@ endif()
 include(LyXMacros)
 include(LyXDestinations)
 
-# Try to get some informations from configure.ac
-include(LyXPaths)
-
 # Value of USE_POSIX_PACKAGING is needed in determineversionandbuildtype()
 if(WIN32)
        set(CMAKE_PREFIX_PATH Specify-path-to-Qt CACHE PATH "Used Qt version")
@@ -252,6 +247,51 @@ LYX_OPTION(DEPENDENCIES_DOWNLOAD "Download dependencies for MSVC 10" OFF MSVC)
 LYX_OPTION(DMG                   "Build as Mac bundle, needed for .dmg  (experimental) " OFF MAC)
 LYX_OPTION(COCOA                 "Use Cocoa on Mac" OFF MAC)
 
+# On Windows, download the dependencies if need be.
+if(LYX_DEPENDENCIES_DOWNLOAD)
+       message(STATUS)
+       # Do not check for bitness against CMAKE_SIZEOF_VOID_P, as it relates to the bitness of the CMake executable,
+       # not that of the compiler.
+       if(MSVC_VERSION GREATER_EQUAL 1920 AND "${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" MATCHES "x64")
+               set(LYX_DEPENDENCIES_DIR ${TOP_BINARY_DIR}/msvc2019-deps-64)
+               set(deps_files lyx-windows-deps-msvc2019_64.zip)
+               set(deps_server http://ftp.lyx.org/pub/lyx/devel/win_deps)
+               set(GNUWIN32_DIR ${LYX_DEPENDENCIES_DIR}/lyx-windows-deps-msvc2019-64)
+       elseif(MSVC_VERSION GREATER_EQUAL 1920)
+               set(LYX_DEPENDENCIES_DIR ${TOP_BINARY_DIR}/msvc2019-deps)
+               set(deps_files lyx-windows-deps-msvc2019_32.zip)
+               set(deps_server http://ftp.lyx.org/pub/lyx/devel/win_deps)
+               set(GNUWIN32_DIR ${LYX_DEPENDENCIES_DIR}/lyx-windows-deps-msvc2019)
+       elseif(MSVC_VERSION GREATER_EQUAL 1900 AND NOT "${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" MATCHES "x64")
+               set(LYX_DEPENDENCIES_DIR ${TOP_BINARY_DIR}/msvc2015-deps)
+               set(deps_files lyx-windows-deps-msvc2015.zip)
+               set(deps_server http://ftp.lyx.org/pub/lyx/devel/win_deps)
+               set(GNUWIN32_DIR ${LYX_DEPENDENCIES_DIR}/lyx-windows-deps-msvc2015)
+       else()
+               message(FATAL_ERROR "error: no dependency package known for the selected MSVC version.")
+       endif()
+       message(STATUS "Using downloaded dependencies in ${LYX_DEPENDENCIES_DIR}")
+       foreach(it ${deps_files})
+               set(already_downloaded already_downloaded-NOTFOUND CACHE PATH "downloaded" FORCE)
+               find_file(already_downloaded ${it} "${LYX_DEPENDENCIES_DIR}/download")
+               if(NOT already_downloaded)
+                       message(STATUS "Downloading ${it} ...")
+                       file(DOWNLOAD ${deps_server}/${it} ${LYX_DEPENDENCIES_DIR}/download/${it} SHOW_PROGRESS STATUS status LOG log)
+                       list(GET status 0 status_code)
+                       list(GET status 1 status_string)
+                       if(NOT status_code EQUAL 0)
+                               file(REMOVE ${LYX_DEPENDENCIES_DIR}/${it})
+                               message(FATAL_ERROR "error: downloading '${it}' failed. status_code: ${status_code}, status_string: ${status_string}. \nLog: ${log} ")
+                       endif()
+                       execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf ${LYX_DEPENDENCIES_DIR}/download/${it}
+                                       WORKING_DIRECTORY ${LYX_DEPENDENCIES_DIR})
+               endif()
+       endforeach()
+endif()
+
+# Try to get some information from configure.ac
+include(LyXPaths)
+
 
 if(help OR HELP)
        message(STATUS)
@@ -311,40 +351,6 @@ else()
        set(LYX_MERGE_REBUILD OFF)
 endif()
 
-if(LYX_DEPENDENCIES_DOWNLOAD)
-       message(STATUS)
-       if(MSVC14)
-               set(LYX_DEPENDENCIES_DIR ${TOP_BINARY_DIR}/msvc2015-deps)
-               set(deps_files lyx-windows-deps-msvc2015.zip)
-               set(deps_server http://ftp.lyx.de/LyX-Windows-Deps)
-               set(GNUWIN32_DIR ${LYX_DEPENDENCIES_DIR}/lyx-windows-deps-msvc2015)
-       elseif(MSVC10)
-               set(LYX_DEPENDENCIES_DIR ${TOP_BINARY_DIR}/msvc2010-deps)
-               set(deps_files lyx-windows-deps-msvc2010.zip)
-               set(deps_server http://ftp.lyx.de/LyX-Windows-Deps)
-               set(GNUWIN32_DIR ${LYX_DEPENDENCIES_DIR}/lyx-windows-deps-msvc2010)
-       else()
-               message(FATAL_ERROR "error: no dependency package known for the selected MSVC version.")
-       endif()
-    message(STATUS "Using downloaded dependencies in ${LYX_DEPENDENCIES_DIR}")
-       foreach(it ${deps_files})
-               set(already_downloaded already_downloaded-NOTFOUND CACHE PATH "downloaded" FORCE)
-               find_file(already_downloaded ${it} "${LYX_DEPENDENCIES_DIR}/download")
-               if(NOT already_downloaded)
-                       message(STATUS "Downloading ${it} ...")
-                       file(DOWNLOAD ${deps_server}/${it} ${LYX_DEPENDENCIES_DIR}/download/${it} SHOW_PROGRESS STATUS status LOG log)
-                       list(GET status 0 status_code)
-                       list(GET status 1 status_string)
-                       if(NOT status_code EQUAL 0)
-                               file(REMOVE ${LYX_DEPENDENCIES_DIR}/${it})
-                               message(FATAL_ERROR "error: downloading '${it}' failed. status_code: ${status_code}, status_string: ${status_string}. \nLog: ${log} ")
-                       endif()
-                       execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf ${LYX_DEPENDENCIES_DIR}/download/${it}
-                                     WORKING_DIRECTORY ${LYX_DEPENDENCIES_DIR})
-               endif()
-       endforeach()
-endif()
-
 message(STATUS)
 
 set(EXECUTABLE_OUTPUT_PATH  ${TOP_BINARY_DIR}/bin)
@@ -382,13 +388,7 @@ unset(LYX_GCC11_MODE)
 if(UNIX OR MINGW)
        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")
-         if(CXX11_STD_REGEX)
-           set(LYX_USE_STD_REGEX 1)
-         else()
-           set(LYX_USE_STD_REGEX 0)
-         endif()
        else()
          execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpfullversion OUTPUT_VARIABLE GCC_VERSION ERROR_VARIABLE _error RESULT_VARIABLE _err OUTPUT_STRIP_TRAILING_WHITESPACE)
          #message(STATUS "dumpfullversion: error = ${_error}, result = ${_err}")
@@ -398,14 +398,8 @@ if(UNIX OR MINGW)
            #message(STATUS "dumpversion: error = ${_error}, result = ${_err}")
          endif()
          message(STATUS "Using GCC version ${GCC_VERSION}")
-         if(GCC_VERSION VERSION_LESS 4.6)
-               message(FATAL_ERROR "gcc >= 4.6 is required.")
-         elseif(GCC_VERSION VERSION_LESS 4.9)
-               # <regex> in gcc is unusable in versions less than 4.9.0
-               # see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
-               set(LYX_USE_STD_REGEX 0)
-         else()
-               set(LYX_USE_STD_REGEX 1)
+         if(GCC_VERSION VERSION_LESS 4.9)
+               message(FATAL_ERROR "gcc >= 4.9 is required.")
          endif()
        endif()
        set(LYX_GCC11_MODE "${CXX11_FLAG}")
@@ -413,9 +407,6 @@ else()
        if(MSVC_VERSION LESS 1900)
                # Drop support for msvc versions prior to 1900 (Visual Studio 2015)
                message(FATAL_ERROR "Visual Studio >= 2015 is required.")
-               set(LYX_USE_STD_REGEX 0)
-       else()
-               set(LYX_USE_STD_REGEX 1)
        endif()
 endif()
 
@@ -708,7 +699,7 @@ else()
        # The following setting with LYX_GCC11_MODE is needed because cmake does not honor
        # CMAKE_CXX_STANDARD while performing tests like
        # check_cxx_source_compiles("..." HAVE_DEF_MAKE_UNIQUE)
-       set(LYX_CXX_FLAGS "-Wall -Wunused-parameter ${LYX_GCC11_MODE}${LYX_CXX_FLAGS}")
+       set(LYX_CXX_FLAGS "-Wall -Wextra -Wno-deprecated-copy ${LYX_GCC11_MODE}${LYX_CXX_FLAGS}")
        if(LYX_STDLIB_DEBUG)
          set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")
         else()
@@ -884,6 +875,7 @@ endforeach()
 
 if(GNUWIN32_DIR)
        list(APPEND CMAKE_PROGRAM_PATH "${GNUWIN32_DIR}/Python" )
+       list(APPEND CMAKE_PROGRAM_PATH "${GNUWIN32_DIR}/Perl/bin" )
 endif()
 
 # Search for python default version first
@@ -949,40 +941,14 @@ if(NOT LYX_EXTERNAL_DTL)
   add_subdirectory(3rdparty/dtl)
 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=<config.h>)
-  include_directories(${TOP_SRC_DIR}/3rdparty/boost)
-else()
-  # 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 OR LYX_DEBUG_GLIBC OR LYX_DEBUG_GLIBC_PEDANTIC)
-       # 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(FATAL_ERROR "Compiling LyX with stdlib-debug and system boost libraries may lead to crashes. Consider using '-DLYX_STDLIB_DEBUG=OFF -DLYX_DEBUG_GLIBC=OFF -DLYX_DEBUG_GLIBC_PEDANTIC=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=<config.h>)
-    include_directories(${TOP_SRC_DIR}/3rdparty/boost)
-    add_subdirectory(3rdparty/boost "${TOP_BINARY_DIR}/3rdparty/boost")
-  endif()
-endif()
+# 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=<config.h>)
+include_directories(${TOP_SRC_DIR}/3rdparty/boost)
+
+include_directories(${TOP_SRC_DIR}/3rdparty/nod)
 
 if(WIN32)
        if(LYX_CONSOLE)
@@ -1111,6 +1077,13 @@ if(MSVC)
                set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /Zc:wchar_t-")
        endif()
 
+       if (MSVC_VERSION GREATER_EQUAL 1914)
+               # Ensure the __cplusplus macro is set to a sensible value.
+               set(CMAKE_CXX_FLAGS_DEBUG      "${CMAKE_CXX_FLAGS_DEBUG} /Zc:__cplusplus")
+               set(CMAKE_CXX_FLAGS_RELEASE    "${CMAKE_CXX_FLAGS_RELEASE} /Zc:__cplusplus")
+               set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /Zc:__cplusplus")
+       endif()
+
        message(STATUS "----- Warning level      : ${CMAKE_CXX_WARNING_LEVEL}  ${WARNING_LEVEL_MESSAGE}")
        message(STATUS "----- Warnings as errors : ${MSVC_W_ERROR}")
        message(STATUS "----- Warnings disabled  : ${MSVC_W_DISABLE}")
@@ -1183,10 +1156,6 @@ if(QTVERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*")
        MATH(EXPR QT4_VERSION "(${CMAKE_MATCH_1}<<16)|(${CMAKE_MATCH_2}<<8)|${CMAKE_MATCH_3}")
 endif()
 
-if (NOT HAVE_REGEX)
-       set(LYX_USE_STD_REGEX 0)
-endif()
-
 
 set (cmd ${CMAKE_CTEST_COMMAND})
 if (MSVC)
@@ -1280,4 +1249,10 @@ endif()
 # can be run last
 add_subdirectory(development/cmake/post_install)
 
+string(TIMESTAMP current_date "%Y-%m-%d %H:%M")
+execute_process(COMMAND ${LYX_GITVERSION} describe --tags
+       WORKING_DIRECTORY "${TOP_SRC_DIR}"
+       OUTPUT_VARIABLE current_version
+       OUTPUT_STRIP_TRAILING_WHITESPACE)
+file(APPEND "${TOP_BINARY_DIR}/Testing/IgnoredCount" "${current_date} ${current_version} Ignored tests = ${LYX_ignored_count}\n")
 message(STATUS)