X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=2766fcd7297558e77e88a19322692cc32fbb1b3e;hb=cfc43d772d7df156103bc33745ead0556174cf66;hp=fce998eccd519c4e546273acfecdb1c6413e92b0;hpb=f2e437f6b823574170f0bafd8738dcb3c72b5e14;p=lyx.git diff --git a/CMakeLists.txt b/CMakeLists.txt index fce998eccd..2766fcd729 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,9 +43,13 @@ if(NOT help AND NOT HELP) endif() if(UNIX) + set(ARCH_TRIPLET ) FIND_PROGRAM(DPKG_ARCHITECTURE_EXECUTABLE dpkg-architecture) if(DPKG_ARCHITECTURE_EXECUTABLE) - EXECUTE_PROCESS(COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH OUTPUT_VARIABLE ARCH_TRIPLET OUTPUT_STRIP_TRAILING_WHITESPACE) + EXECUTE_PROCESS(COMMAND ${DPKG_ARCHITECTURE_EXECUTABLE} -qDEB_HOST_MULTIARCH + OUTPUT_VARIABLE ARCH_TRIPLET + ERROR_VARIABLE ERROR_ARCH_TRIPLET + OUTPUT_STRIP_TRAILING_WHITESPACE) endif() endif() if(ARCH_TRIPLET) @@ -67,6 +71,7 @@ LYX_OPTION_INIT() # Options for all compilers/systems LYX_OPTION(CPACK "Use the CPack management (Implies LYX_INSTALL option)" OFF ALL) +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(ASPELL "Require aspell" OFF ALL) @@ -93,9 +98,10 @@ 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(CONCEPT_CHECKS "Enable concept-checks" OFF GCC) +LYX_OPTION(PROFILE "Build with options for gprof" OFF GCC) # MSVC specific -LYX_OPTION(CONSOLE "Show console on Windows" ON MSVC) +LYX_OPTION(CONSOLE "Show console on Windows, enforce with =FORCE" ON MSVC) 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) @@ -108,11 +114,12 @@ LYX_OPTION(COCOA "Use Cocoa on Mac" OFF MAC) if(help OR HELP) message(STATUS) - message(STATUS "Available options: (dis/enable with -D=0/1)") + message(STATUS "Available options: (dis/enable with -DLYX_*=OFF/ON)") message(STATUS) LYX_OPTION_LIST_ALL(help) message(STATUS) -else() + RETURN() +endif() # Check option dependencies @@ -130,7 +137,11 @@ if(LYX_INSTALL) if (WIN32) set(LYX_HUNSPELL ON) endif() - set(LYX_CONSOLE OFF) + if(LYX_CONSOLE MATCHES "FORCE") + set(LYX_CONSOLE ON) + else() + set(LYX_CONSOLE OFF) + endif() set(LYX_PACKAGE_SUFFIX ON) set(LYX_RELEASE ON) set(LYX_PROFILE OFF) @@ -148,12 +159,19 @@ if(LYX_DEPENDENCIES_DOWNLOAD) set(LYX_DEPENDENCIES_DIR ${TOP_BINARY_DIR}/msvc2010-deps) message(STATUS "Using downloaded dependencies in ${LYX_DEPENDENCIES_DIR}") set(deps_files lyx20-deps-msvc2010-x86.zip) + set(deps_server http://downloads.sourceforge.net/project/lyx/Win_installers/Dependencies) 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 ftp://ftp.devel.lyx.org/pub/contrib/windows/${it} ${LYX_DEPENDENCIES_DIR}/download/${it} SHOW_PROGRESS) + 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() @@ -198,11 +216,11 @@ include(LyXPaths) file(STRINGS "${TOP_SRC_DIR}/configure.ac" _config_lines) if(WIN32) - set(USE_WINDOWS_PACKAGING 1) + set(USE_WINDOWS_PACKAGING ON) elseif(APPLE) - set(USE_MACOSX_PACKAGING 1) + set(USE_MACOSX_PACKAGING ON) else() - set(USE_POSIX_PACKAGING 1) + set(USE_POSIX_PACKAGING ON) endif() macro(setstripped _varname _value) @@ -233,20 +251,26 @@ foreach(_c_l ${_config_lines} ) endif() endforeach(_c_l) -# Find the revision number and for later use -FIND_PROGRAM(LYX_SVNVERSION svnversion) -#message(STATUS "svnversion = ${LYX_SVNVERSION}") -if(LYX_SVNVERSION) - EXECUTE_PROCESS(COMMAND ${LYX_SVNVERSION} WORKING_DIRECTORY "${TOP_SRC_DIR}" OUTPUT_VARIABLE LYX_PACKAGE_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE) - # We use this value also to set the package-patch-value - if(LYX_PACKAGE_RELEASE MATCHES "^\([0-9]+\)") - set(LYX_REVISION_VERSION ${CMAKE_MATCH_1}) +if (LYX_LOCALVERSIONING) + # Find the revision number and for later use + 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) + 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") + endif() + else() + set(LYX_REVISION_VERSION git) #TODO use date endif() else() - set(LYX_REVISION_VERSION svn) #TODO use date + set(LYX_REVISION_VERSION ${LYX_PATCH_VERSION}) endif() - if(LYX_PROGRAM_SUFFIX) set(PROGRAM_SUFFIX "${LYX_INSTALL_SUFFIX}") else() @@ -349,9 +373,12 @@ set(LYX_MOC_FILES moc_*.cpp) include(ProjectSourceGroup) -if(LYX_PROFILE) +if(LYX_PROFILE AND NOT MSVC) set(CMAKE_BUILD_TYPE Profile CACHE TYPE STRING FORCE) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg" CACHE TYPE STRING FORCE) + set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} -pg") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") +else() + set(LYX_PROFILE OFF) endif() @@ -359,11 +386,17 @@ if(LYX_NO_OPTIMIZE) set(CMAKE_BUILD_TYPE None) set(LYX_DEBUG OFF) set(LYX_RELEASE OFF) + set(LYX_PROFILE OFF) elseif(LYX_RELEASE) set(CMAKE_BUILD_TYPE Release) set(LYX_DEBUG OFF) + set(LYX_PROFILE OFF) +elseif(LYX_PROFILE) + set(CMAKE_BUILD_TYPE Profile) + set(LYX_DEBUG OFF) else() set(CMAKE_BUILD_TYPE Debug) + set(LYX_DEBUG ON) endif() @@ -393,12 +426,14 @@ if(NOT MSVC) else() set(CMAKE_CXX_FLAGS_RELEASE "${LYX_CXX_FLAGS} -O3 -DNDEBUG" CACHE TYPE STRING FORCE) endif() - set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} -pg" CACHE TYPE STRING FORCE) endif() find_package(Qt4 REQUIRED) - +find_package(Magic) +if(Magic_FOUND) + set(HAVE_MAGIC_H 1) +endif() include_directories(${TOP_BINARY_DIR} ${TOP_SRC_DIR}/src) @@ -418,7 +453,7 @@ if(LYX_HUNSPELL) endif() if(LYX_NLS) - FIND_PROGRAM(LYX_PYTHON_EXECUTABLE python HINTS ${GNUWIN32_DIR}/python) + 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() @@ -593,13 +628,28 @@ endif() if(LYX_DEBUG_GLIBC) - set(_GLIBCXX_DEBUG 1) + set(_GLIBCXX_DEBUG ON) endif() if(LYX_DEBUG_GLIBC_PEDANTIC) - set(_GLIBCXX_DEBUG_PEDANTIC 1) + set(_GLIBCXX_DEBUG_PEDANTIC ON) 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}") +ENDIF(CMAKE_GENERATOR MATCHES Xcode) + + # compiler tests, config.h generation if(MSVC AND NOT LYX_CONFIGURE_CHECKS) configure_file(${LYX_CMAKE_DIR}/configCompiler.h.msvc ${TOP_BINARY_DIR}/configCompiler.h) @@ -610,6 +660,10 @@ 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") @@ -617,7 +671,6 @@ add_subdirectory(lib/scripts "${TOP_BINARY_DIR}/scripts") if(LYX_INSTALL) - #FIND_PROGRAM(LYX_PERL_EXECUTABLE perl) if(${LYX_PYTHON_EXECUTABLE} MATCHES "-NOTFOUND") message(STATUS "Python required to create doc!") else() @@ -630,7 +683,7 @@ endif() add_subdirectory(sourcedoc "${TOP_BINARY_DIR}/sourcedoc") message(STATUS) -message(STATUS "Build options, switch LYX_* variables by -DLYX_*=1 or 0:") +message(STATUS "Build options, switch LYX_* variables by -DLYX_*=ON or OFF:") message(STATUS) LYX_OPTION_LIST_ALL(used) @@ -654,5 +707,3 @@ endif() include("${TOP_SRC_DIR}/${LYX_CMAKE_DIR}/LyxPackaging.cmake") message(STATUS) - -endif() # help