X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=04f3954350982644c3075950a95de7d3568d19db;hb=7145863466c38080db9bdfba6ee7bb7583ffb862;hp=e3dfa48f7e20f4e956b90f6538eadc26b6e39f5e;hpb=a9de2597ed8df035576e92053bcaac21af062c82;p=lyx.git diff --git a/CMakeLists.txt b/CMakeLists.txt index e3dfa48f7e..04f3954350 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,19 +6,24 @@ cmake_minimum_required(VERSION 2.6.4) +set(LYX_PROJECT LyX) -set(LYX_PROJECT lyx) - -set(LYX_CMAKE_DIR "development/cmake") -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/${LYX_CMAKE_DIR}/modules") +enable_testing() get_filename_component(lyx_dir_readme ${CMAKE_SOURCE_DIR}/README ABSOLUTE) get_filename_component(TOP_SRC_DIR ${lyx_dir_readme} PATH) +set(LYX_CMAKE_DIR "development/cmake") +set(TOP_CMAKE_PATH "${TOP_SRC_DIR}/${LYX_CMAKE_DIR}") +set(TOP_MODULE_PATH "${TOP_CMAKE_PATH}/modules") +set(TOP_SCRIPT_PATH "${TOP_CMAKE_PATH}/scripts") + +set(CMAKE_MODULE_PATH "${TOP_MODULE_PATH}") + set(CMAKE_PROJECT_NAME ${LYX_PROJECT}) message(STATUS) -if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) +if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) message(STATUS "Building in-source") set(TOP_BINARY_DIR "${CMAKE_BINARY_DIR}/build") else() @@ -26,10 +31,15 @@ else() set(TOP_BINARY_DIR "${CMAKE_BINARY_DIR}") endif() +# This directory should be used if some test uses lyx-executable +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) endif() set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) @@ -74,6 +84,7 @@ LYX_OPTION(CPACK "Use the CPack management (Implies LYX_INSTALL optio LYX_OPTION(LOCALVERSIONING "Add version info to created package name (only used if LYX_CPACK option set)" OFF ALL) LYX_OPTION(INSTALL "Build install projects/rules (implies a bunch of other options)" OFF ALL) LYX_OPTION(NLS "Enable Native Language Support (NLS)" ON ALL) +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) @@ -87,18 +98,19 @@ LYX_OPTION(MERGE_FILES "Merge source files into one compilation unit" OFF A LYX_OPTION(MERGE_REBUILD "Rebuild generated files from merged files build" OFF ALL) LYX_OPTION(QUIET "Don't generate verbose makefiles" OFF ALL) LYX_OPTION(INSTALL_PREFIX "Install path for LyX" OFF ALL) -LYX_OPTION(EXTERNAL_LIBINTL "Use external libintl" ON ALL) LYX_OPTION(BUNDLE "Build bundle (experimental) " OFF ALL) +LYX_OPTION(ENABLE_URLTESTS "Enable for URL tests" OFF ALL) # GCC specific LYX_OPTION(PROFILE "Build profile version" OFF GCC) LYX_OPTION(EXTERNAL_BOOST "Use external boost" OFF GCC) LYX_OPTION(PROGRAM_SUFFIX "Append version suffix to binaries" ON GCC) LYX_OPTION(DEBUG_GLIBC "Enable libstdc++ debug mode" OFF GCC) -LYX_OPTION(DEBUG_GLIBC_PEDANTIC "Enable libstdc++pedantic 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(CONCEPT_CHECKS "Enable concept-checks" 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) @@ -123,15 +135,15 @@ endif() # Check option dependencies -if(LYX_CPACK) - set(LYX_INSTALL ON) -endif() - if(LYX_DMG) set(LYX_BUNDLE ON) set(LYX_CPACK ON) endif() +if(LYX_CPACK) + set(LYX_INSTALL ON) +endif() + if(LYX_INSTALL) set(LYX_NLS ON) if (WIN32) @@ -143,7 +155,9 @@ if(LYX_INSTALL) set(LYX_CONSOLE OFF) endif() set(LYX_PACKAGE_SUFFIX ON) - set(LYX_RELEASE ON) + if(NOT LYX_DEBUG) + set(LYX_RELEASE ON) + endif() set(LYX_PROFILE OFF) endif() @@ -191,6 +205,7 @@ else() endif() +set(LYX_GCC11_MODE) if(UNIX OR MINGW) execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) message(STATUS "Using GCC version ${GCC_VERSION}") @@ -200,6 +215,13 @@ if(UNIX OR MINGW) # http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr1 set(LYX_USE_TR1_REGEX 0) endif() + if (LYX_ENABLE_CXX11) + find_package(CXX11Compiler) + if(NOT CXX11COMPILER_FOUND) + message(FATAL_ERROR "A C++11 compatible compiler is required.") + endif() + set(LYX_GCC11_MODE "${CXX11_FLAG}") + endif() else() if(MSVC10) set(LYX_USE_TR1 1) @@ -223,12 +245,16 @@ else() set(USE_POSIX_PACKAGING ON) endif() -macro(setstripped _varname _value) - string(STRIP ${_value} _v) - if(USE_POSIX_PACKAGING) - string(TOLOWER ${_v} ${_varname}) +macro(setstripped _varname) + if(${ARGC} GREATER 1) + string(STRIP "${ARGV1}" _v) + if(USE_POSIX_PACKAGING) + string(TOLOWER ${_v} ${_varname}) + else() + set(${_varname} ${_v}) + endif() else() - set(${_varname} ${_v}) + set(${_varname}) endif() endmacro(setstripped) @@ -256,13 +282,15 @@ if (LYX_LOCALVERSIONING) FIND_PROGRAM(LYX_GITVERSION git) #message(STATUS "gitversion = ${LYX_GITVERSION}") if(LYX_GITVERSION) - EXECUTE_PROCESS(COMMAND ${LYX_GITVERSION} "describe" WORKING_DIRECTORY "${TOP_SRC_DIR}" OUTPUT_VARIABLE LYX_PACKAGE_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE) + 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]+\)\\-.*$") # 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(ENABLE_DIST ON) endif() else() set(LYX_REVISION_VERSION git) #TODO use date @@ -271,28 +299,66 @@ else() set(LYX_REVISION_VERSION ${LYX_PATCH_VERSION}) endif() -if(LYX_PROGRAM_SUFFIX) +# Set the programs (lyx, tex2lyx, etc.) suffix +# When building an OS X bundle, we will append +# the suffix only to the bundle, not to the programs +set(PROGRAM_SUFFIX "") +if(LYX_PROGRAM_SUFFIX AND NOT (APPLE AND LYX_BUNDLE)) set(PROGRAM_SUFFIX "${LYX_INSTALL_SUFFIX}") -else() - set(PROGRAM_SUFFIX "") endif() +set(_lyx "${PACKAGE_BASE}${PROGRAM_SUFFIX}") +set(_tex2lyx tex2lyx${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 + ) +set_target_properties(lyx_version PROPERTIES FOLDER "applications") +# Default paths for installed utilities (tex2lyx, lyxclient, etc.) +set(LYX_UTILITIES_INSTALL_PATH bin) if(LYX_BUNDLE) set(LYX_CPACK ON) + message(STATUS) message(STATUS "Bundle creation is enabled (experimental):") message(STATUS " make") message(STATUS " make install/strip") message(STATUS " make package") if(APPLE) + set(MACOSX_BUNDLE TRUE) + # This sets the bundle + executable names + set(_lyx "${PACKAGE_BASE}${LYX_INSTALL_SUFFIX}") + # This sets the Info.plist executable name + set(osx_bundle_program_name ${_lyx}) + # Bundle name + set(LYX_BUNDLE_NAME ${_lyx}) + + # This will contain the list of files that need to be included + # in the bundle and their location within the bundle + set(OSX_BUNDLE_FILES "${TOP_SRC_DIR}/development/MacOSX/LyX.sdef;${TOP_SRC_DIR}/development/MacOSX/LyXapp.icns;${CMAKE_BINARY_DIR}/lyxrc.dist") + set(OSX_BUNDLE_DIRS "Resources;Resources;Resources") + + # Process Info.plist and lyxrc.dist + 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 ${PACKAGE_BASE}${PROGRAM_SUFFIX}.app/Contents/Resources/ CACHE STRING "Bundle Contents dir" FORCE) - set(MACOSX_BUNDLE_STARTUP_COMMAND ${PACKAGE_BASE}${PROGRAM_SUFFIX}.app) + set(LYX_DATA_SUBDIR ${LYX_BUNDLE_NAME}.app/Contents/Resources/ CACHE STRING "Bundle Contents dir" FORCE) + + # Variables used by CPack + set(CPACK_BUNDLE_NAME ${LYX_BUNDLE_NAME}) + set(CPACK_BUNDLE_PLIST "${CMAKE_CURRENT_BINARY_DIR}/Info.plist") + set(MACOSX_BUNDLE_STARTUP_COMMAND ${LYX_BUNDLE_NAME}.app) + + # Set the install paths + set(LYX_UTILITIES_INSTALL_PATH ${LYX_BUNDLE_NAME}.app/Contents/MacOS) if(NOT LYX_INSTALL_PREFIX) set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/LyX CACHE PATH "Mac bundle dir" FORCE) set(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) endif() + # Change the owner so that the install can work + install(CODE "set(BU_CHMOD_BUNDLE_ITEMS 1)" COMPONENT Runtime) elseif(UNIX) message(STATUS "To embed Qt in this bundle don't build with your system Qt:") message(STATUS " - fix PATH so a other qmake is found by cmake") @@ -308,13 +374,14 @@ if(LYX_INSTALL_PREFIX) endif() set(LYX_INSTALL_PREFIX ${LYX_INSTALL_PREFIX} CACHE PATH "LyX user's choice install prefix" FORCE) +string(REGEX REPLACE "/lyx${LYX_INSTALL_SUFFIX}$" "/share" SYSTEM_DATADIR ${CMAKE_INSTALL_PREFIX}) + if(LYX_PACKAGE_SUFFIX) set(PACKAGE ${PACKAGE_BASE}${LYX_INSTALL_SUFFIX}) else() set(PACKAGE ${PACKAGE_BASE}) endif() - if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) # see http://www.cmake.org/pipermail/cmake/2006-October/011559.html if (UNIX) @@ -351,6 +418,12 @@ set(LYX_LOCALEDIR "locale") set(LYX_ABS_INSTALLED_LOCALEDIR "${LYX_ABS_INSTALLED_DATADIR}/${LYX_DATA_SUBDIR}${LYX_LOCALEDIR}") 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.") +endif() +mark_as_advanced(LYX_MAN_DIR) if(LYX_INSTALL AND WIN32) message(STATUS "Configuring NSIS files") @@ -405,14 +478,14 @@ endif() if(LYX_SHARED_LIBRARIES) set(library_type SHARED) else() - set(library_type STATIC) + set(library_type STATIC) endif() if(NOT MSVC) if(NOT LYX_QUIET) set(CMAKE_VERBOSE_MAKEFILE ON) endif() - set(LYX_CXX_FLAGS "-Wall -Wunused-parameter") + set(LYX_CXX_FLAGS "-Wall -Wunused-parameter ${LYX_GCC11_MODE}") if(LYX_STDLIB_DEBUG) set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC") endif() @@ -420,7 +493,7 @@ if(NOT MSVC) set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCPP_CONCEPT_CHECKS") 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 -g -D_DEBUG" CACHE TYPE STRING FORCE) + set(CMAKE_CXX_FLAGS_DEBUG "${LYX_CXX_FLAGS} -fno-strict-aliasing -O0 -g3 -D_DEBUG" CACHE TYPE STRING FORCE) if(MINGW) set(CMAKE_CXX_FLAGS_RELEASE "${LYX_CXX_FLAGS} -O2 -DNDEBUG" CACHE TYPE STRING FORCE) else() @@ -428,8 +501,39 @@ if(NOT MSVC) endif() endif() +set(LYX_CXX_FLAGS_EXTRA "" CACHE STRING "Desired semicolon separated list of extra cxx compile flags, like '-Werror'") +mark_as_advanced(LYX_CXX_FLAGS_EXTRA) +if(LYX_CXX_FLAGS_EXTRA) + foreach(_flag ${LYX_CXX_FLAGS_EXTRA}) + add_definitions(${_flag}) + endforeach() +endif() + +find_package(Qt5Core QUIET) +if (Qt5Core_FOUND) + find_package(Qt5Widgets REQUIRED) + set(QTVERSION ${Qt5Core_VERSION}) + macro (qt_use_modules) + qt5_use_modules(${ARGN}) + endmacro() + macro (qt_add_resources) + qt5_add_resources(${ARGN}) + endmacro() + macro (qt_wrap_uifiles) + qt5_wrap_ui(${ARGN}) + endmacro() +else() + find_package(Qt4 "4.5.0" REQUIRED) + macro (qt_use_modules) + endmacro() + macro (qt_add_resources) + qt4_add_resources(${ARGN}) + endmacro() + macro (qt_wrap_uifiles) + qt4_wrap_ui(${ARGN}) + endmacro() +endif() -find_package(Qt4 REQUIRED) find_package(Magic) if(Magic_FOUND) set(HAVE_MAGIC_H 1) @@ -437,42 +541,39 @@ endif() include_directories(${TOP_BINARY_DIR} ${TOP_SRC_DIR}/src) -if(LYX_ASPELL) - find_package(ASPELL) - include_directories(${ASPELL_INCLUDE_DIR}) -endif() - -if(LYX_ENCHANT) - find_package(Enchant REQUIRED) - include_directories(${ENCHANT_INCLUDE_DIR}) -endif() - -if(LYX_HUNSPELL) - find_package(Hunspell REQUIRED) - include_directories(${HUNSPELL_INCLUDE_DIR}) -endif() +set(Spelling_FOUND OFF) +set(Include_used_spellchecker) # String will be inserted into config.h + +foreach(_spell "ASPELL" "Enchant" "Hunspell") + string(TOUPPER ${_spell} _upspell) + find_package(${_spell}) + if (${_upspell}_FOUND) + include_directories(${${_upspell}_INCLUDE_DIR}) + set(Spelling_FOUND ON) + message(STATUS "Building with USE_${_upspell}") + set(Include_used_spellchecker "${Include_used_spellchecker}#define USE_${_upspell} 1\n") + else() + if(LYX_${_upspell}) + message(FATAL_ERROR "Required ${_spell} devel package not found") + else() + message(STATUS "${_upspell} not found, building without ${_spell} support") + endif() + endif() +endforeach() if(LYX_NLS) FIND_PROGRAM(LYX_PYTHON_EXECUTABLE python2 python HINTS ${GNUWIN32_DIR}/python) - if(${LYX_PYTHON_EXECUTABLE} MATCHES "-NOTFOUND") - message(FATAL_ERROR "Python 2.6 needed!") - endif() - find_package(LyXGettext REQUIRED) - include_directories(${TOP_SRC_DIR}/po) - add_subdirectory(po "${TOP_BINARY_DIR}/po") -endif() - -if(LYX_NLS) - if(LYX_EXTERNAL_LIBINTL) - find_package(Libintl REQUIRED) - if(DEFINED LIBINTL_LIBRARIES) - # find getext when configuring - list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBINTL_LIBRARIES}) - # on mac use iconv also form ports - get_filename_component(ICONV_RELATIVE_TO_LIBINTL ${LIBINTL_LIBRARIES} PATH) - endif() + find_package(LyXGettext) + if(LYX_PYTHON_EXECUTABLE AND GETTEXT_FOUND) + add_subdirectory(po "${TOP_BINARY_DIR}/po") else() - add_subdirectory(intl "${TOP_BINARY_DIR}/intl") + # Install only supplied .gmo-files + file(GLOB _gmofiles RELATIVE "${TOP_SRC_DIR}/po" "${TOP_SRC_DIR}/po/*.gmo") + message(STATUS "Installing provided .gmo-files only") + foreach( _gmo ${_gmofiles}) + string(REGEX REPLACE "\\.gmo$" "" _lang ${_gmo}) + install(FILES "${TOP_SRC_DIR}/po/${_gmo}" DESTINATION ${LYX_DATA_SUBDIR}${LYX_LOCALEDIR}/${_lang}/LC_MESSAGES RENAME ${PACKAGE}.mo) + endforeach() endif() endif() @@ -496,6 +597,7 @@ else() set(Lyx_Boost_Libraries boost_signals boost_regex) endif() add_definitions(-DBOOST_USER_CONFIG="") + add_definitions(-DBOOST_SIGNALS_NO_DEPRECATION_WARNING=1) include_directories(${TOP_SRC_DIR}/boost) add_subdirectory(boost "${TOP_BINARY_DIR}/boost") endif() @@ -517,6 +619,8 @@ if(WIN32) endif() endif() +# Compute qt4-version from ${QTVERSION} + message(STATUS "") foreach(_v PACKAGE PACKAGE_VERSION PROGRAM_SUFFIX LYX_DATE LYX_DIR_VER LYX_USERDIR_VER @@ -535,8 +639,8 @@ if(LYX_PCH) # PCHs not supported by cmake: http://www.cmake.org/Bug/view.php?id=1260 # Not sure if it works for all non-msvc compilers include(PCHSupport_26) - configure_file(${TOP_SRC_DIR}/${LYX_CMAKE_DIR}/pcheaders.h ${TOP_BINARY_DIR}/pcheaders.h) - configure_file(${TOP_SRC_DIR}/${LYX_CMAKE_DIR}/config.cpp.cmake ${TOP_BINARY_DIR}/config_pch.cpp) + configure_file(${TOP_CMAKE_PATH}/pcheaders.h ${TOP_BINARY_DIR}/pcheaders.h) + configure_file(${TOP_CMAKE_PATH}/config.cpp.cmake ${TOP_BINARY_DIR}/config_pch.cpp) add_definitions(-DLYX_ENABLE_PCH) if(MSVC) @@ -616,9 +720,12 @@ if(MSVC) set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${MSVC_W_ERROR} ${MSVC_W_DISABLE}") endif() - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Zc:wchar_t-") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zc:wchar_t-") - set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /Zc:wchar_t-") + + if (NOT Qt5Core_FOUND) + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Zc:wchar_t-") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zc:wchar_t-") + set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /Zc:wchar_t-") + endif() message(STATUS "----- Warning level : ${CMAKE_CXX_WARNING_LEVEL} ${WARNING_LEVEL_MESSAGE}") message(STATUS "----- Warnings as errors : ${MSVC_W_ERROR}") @@ -637,18 +744,22 @@ endif() # Xcode compiler if (CMAKE_GENERATOR MATCHES Xcode) - # Automatically select the Xcode compiler if not set - if (NOT DEFINED CMAKE_XCODE_ATTRIBUTE_GCC_VERSION) - # XCode >= 3.1 has gcc 4.2 (up to actual Xcode) - if (XCODE_VERSION VERSION_GREATER "3.1") - SET(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42") - ENDIF(XCODE_VERSION VERSION_GREATER "3.1") - ENDIF(NOT DEFINED CMAKE_XCODE_ATTRIBUTE_GCC_VERSION) - - # Print the selected compiler version - MESSAGE(STATUS "---- Using XCode compiler CMAKE_XCODE_ATTRIBUTE_GCC_VERSION=${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION}") + if (XCODE_VERSION VERSION_LESS "5.0") + # Automatically select the Xcode compiler if not set + if (NOT DEFINED CMAKE_XCODE_ATTRIBUTE_GCC_VERSION) + # XCode >= 3.1 has gcc 4.2 (up to actual Xcode) + if (XCODE_VERSION VERSION_GREATER "3.1") + SET(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42") + ENDIF(XCODE_VERSION VERSION_GREATER "3.1") + ENDIF(NOT DEFINED CMAKE_XCODE_ATTRIBUTE_GCC_VERSION) + # Print the selected compiler version + MESSAGE(STATUS "---- Using XCode compiler CMAKE_XCODE_ATTRIBUTE_GCC_VERSION=${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION}") + ENDIF(XCODE_VERSION VERSION_LESS "5.0") ENDIF(CMAKE_GENERATOR MATCHES Xcode) +if (WIN32 AND Qt5Core_FOUND) + set(Z_PREFIX 1) +endif() # compiler tests, config.h generation if(MSVC AND NOT LYX_CONFIGURE_CHECKS) @@ -660,15 +771,19 @@ endif() configure_file(${LYX_CMAKE_DIR}/config.h.cmake ${TOP_BINARY_DIR}/config.h) -# Compute qt4-version from ${QTVERSION} 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() -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") + +set (cmd ${CMAKE_CTEST_COMMAND}) +if (MSVC) + set (cmd ${cmd} -C ${CMAKE_CFG_INTDIR}) +else () + set (cmd ${cmd} -C ${CMAKE_BUILD_TYPE}) +endif () +add_custom_target (lyx_run_tests COMMAND ${cmd}) +set_target_properties(lyx_run_tests PROPERTIES FOLDER "tests") if(LYX_INSTALL) @@ -681,7 +796,15 @@ if(LYX_INSTALL) include(../Install) 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() message(STATUS) message(STATUS "Build options, switch LYX_* variables by -DLYX_*=ON or OFF:") @@ -693,9 +816,6 @@ if(LYX_NLS) message(STATUS) message(STATUS "Building Native Language Support (LYX_NLS is set), used libraries:") message(STATUS) - message(STATUS " * intl") - message(STATUS " - header : ${LIBINTL_HEADER}") - message(STATUS " - library: ${LIBINTL_LIBRARIES}") message(STATUS " * iconv") message(STATUS " - header : ${ICONV_HEADER}") message(STATUS " - library: ${ICONV_LIBRARY}") @@ -705,6 +825,36 @@ if(LYX_NLS) message(STATUS) endif() -include("${TOP_SRC_DIR}/${LYX_CMAKE_DIR}/LyxPackaging.cmake") +if(NOT Spelling_FOUND) + if(LYX_REQUIRE_SPELLCHECK) + set(_mode "FATAL_ERROR") + else() + set(_mode "STATUS") + endif() + message(${_mode} "No spellcheck libraries found. Lyx will be unable use spellchecking") +endif() + +include("${TOP_CMAKE_PATH}/LyxPackaging.cmake") + +if(ENABLE_DIST) + # Use git to create the source package + # git archive --format=tgz --output=/home/kornel/x.tar.gz master + if(UNIX) + set(DIST_FORMAT tgz) + else() + set(DIST_FORMAT zip) + endif() + set(DIST_NAME ${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-${CMAKE_SYSTEM_NAME}.${DIST_FORMAT}) + + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${DIST_NAME} + COMMAND ${LYX_GITVERSION} archive --format=${DIST_FORMAT} --output=${CMAKE_CURRENT_BINARY_DIR}/${DIST_NAME} master + WORKING_DIRECTORY ${TOP_SRC_DIR}) + add_custom_target(git-archive DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${DIST_NAME}) +endif() + +# Last directory to be included so that the fixup code (OS X) +# can be run last +add_subdirectory(development/cmake/post_install) message(STATUS)