X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=abf9ce0e206bbb3196510265332b8f9ef9db6b7c;hb=0ea66542289a560310edeacf8dabab3ce6a663bd;hp=6b5fab40cb0d962971eb24aad752db968aed90ba;hpb=28ebc59517ecfa97441232d0c7997923bdf18da7;p=lyx.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b5fab40cb..abf9ce0e20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,17 +6,20 @@ cmake_minimum_required(VERSION 2.6.4) - set(LYX_PROJECT LyX) enable_testing() -set(LYX_CMAKE_DIR "development/cmake") -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/${LYX_CMAKE_DIR}/modules") - 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) @@ -97,7 +100,7 @@ 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) @@ -126,15 +129,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) @@ -146,7 +149,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() @@ -234,12 +239,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) @@ -274,13 +283,8 @@ if (LYX_LOCALVERSIONING) # 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() - # Override the value from configure.ac, if possible - EXECUTE_PROCESS(COMMAND ${LYX_GITVERSION} "log" "-1" "--format=%ci" - WORKING_DIRECTORY "${TOP_SRC_DIR}" - OUTPUT_VARIABLE LYX_DATEtmp OUTPUT_STRIP_TRAILING_WHITESPACE) - - string(REGEX MATCH "([0-9]+-[0-9]+-[0-9]+)" LYX_DATE ${LYX_DATEtmp}) else() set(LYX_REVISION_VERSION git) #TODO use date endif() @@ -294,6 +298,10 @@ else() set(PROGRAM_SUFFIX "") endif() +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") if(APPLE) set(osx_bundle_program_name ${PACKAGE_BASE}${PROGRAM_SUFFIX}) @@ -446,7 +454,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() @@ -548,6 +556,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 @@ -566,8 +576,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) @@ -690,13 +700,24 @@ else() endif() configure_file(${LYX_CMAKE_DIR}/config.h.cmake ${TOP_BINARY_DIR}/config.h) -configure_file(${LYX_CMAKE_DIR}/lyx_date.h.cmake ${TOP_BINARY_DIR}/lyx_date.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() +set(_lyx "${PACKAGE_BASE}${PROGRAM_SUFFIX}") +set(_tex2lyx tex2lyx${PROGRAM_SUFFIX}) + +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") + + add_subdirectory(src "${TOP_BINARY_DIR}/src") add_subdirectory(lib/lyx2lyx "${TOP_BINARY_DIR}/lyx2lyx") add_subdirectory(lib/scripts "${TOP_BINARY_DIR}/scripts") @@ -716,6 +737,7 @@ if(LYX_INSTALL) endif() add_subdirectory(sourcedoc "${TOP_BINARY_DIR}/sourcedoc") +add_subdirectory(development/autotests "${TOP_BINARY_DIR}/autotests") message(STATUS) message(STATUS "Build options, switch LYX_* variables by -DLYX_*=ON or OFF:") @@ -739,6 +761,23 @@ if(LYX_NLS) message(STATUS) endif() -include("${TOP_SRC_DIR}/${LYX_CMAKE_DIR}/LyxPackaging.cmake") +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() message(STATUS)