]> git.lyx.org Git - lyx.git/blobdiff - development/cmake/CMakeLists.txt
cmake: more merged build fixes
[lyx.git] / development / cmake / CMakeLists.txt
index d65cf6a905a8115de8943730f16252ca6a28d2b5..9b204b32dc589f6700e1d5d88864c6f733cc3fc3 100644 (file)
@@ -1,3 +1,4 @@
+
 # This file is part of LyX, the document processor.
 # Licence details can be found in the file COPYING.
 #
@@ -11,14 +12,21 @@ if(COMMAND cmake_policy)
        cmake_policy(SET CMP0005 OLD)
 endif(COMMAND cmake_policy)
 
-set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
-
 project(lyx)
 
+set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
 # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/
 # is checked
 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/modules")
 set(EXECUTABLE_OUTPUT_PATH  ${CMAKE_BINARY_DIR}/bin)
+set(LIBRARY_OUTPUT_PATH  ${CMAKE_BINARY_DIR}/lib)
+
+
+option(lyxinstall "Build install projects/rules" ON)
+
+
+
 
 # Supress regeneration
 set(CMAKE_SUPPRESS_REGENERATION TRUE)
@@ -66,11 +74,11 @@ foreach(_c_l ${_config_lines} )
 endforeach(_c_l)
 
 if(UseVersionSuffix)
-  message("-- Using versioned PACKAGE. Disable with -DUseVersionSuffix=0")
+  message(STATUS "-- Using versioned PACKAGE. Disable with -DUseVersionSuffix=0")
   set(PACKAGE ${PACKAGE_BASE}${LYX_INSTALL_SUFFIX})
   set(PROGRAM_SUFFIX "${LYX_INSTALL_SUFFIX}")
 else()
-  message("-- PACKAGE not versioned, to enable use -DUseVersionSuffix=1")
+  message(STATUS "-- PACKAGE not versioned, to enable use -DUseVersionSuffix=1")
   set(PACKAGE ${PACKAGE_BASE})
   set(PROGRAM_SUFFIX "")
 endif()
@@ -81,7 +89,7 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
     # don't use the default "/usr/local"
     # but respect the user-choice on the command-line
     SET(CMAKE_INSTALL_PREFIX
-      "/usr/local/share/lyx${LYX_INSTALL_SUFFIX}" CACHE PATH "LyX install prefix" FORCE)
+      "/usr/local/${project}${LYX_INSTALL_SUFFIX}" CACHE PATH "LyX install prefix" FORCE)
   endif()
   if(WIN32)
     SET(CMAKE_INSTALL_PREFIX
@@ -103,6 +111,7 @@ endif()
 # lyx's source files
 set(LYX_CPP_FILES *.cpp)
 set(LYX_HPP_FILES *.h)
+set(LYX_MOC_FILES moc_*.cpp)
 
 include(LyXMacros)
 include(ProjectSourceGroup)
@@ -113,6 +122,7 @@ if(merge OR merge_rebuild)
        message(STATUS "")
        message(STATUS "All *.cpp files of a project are merged into two files, disable with -Dmerge=0")
        message(STATUS "")
+       add_definitions(-DLYX_MERGED_BUILD)
 else()
        set(merge 0 CACHE TYPE STRING FORCE)
        set(MERGE_FILES 0 CACHE TYPE STRING FORCE)
@@ -163,8 +173,8 @@ if(NOT MSVC)
        if(concept-checks)
                set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCPP_CONCEPT_CHECKS")
        endif()
-       set(CMAKE_CXX_FLAGS          "${LYX_CXX_FLAGS}" CACHE TYPE STRING FORCE)
-       set(CMAKE_CXX_FLAGS_DEBUG    "${LYX_CXX_FLAGS} -O -g -D_DEBUG" CACHE TYPE STRING FORCE)
+       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 -O  -D_DEBUG" CACHE TYPE STRING FORCE)
        if(MINGW)
                set(CMAKE_CXX_FLAGS_RELEASE  "${LYX_CXX_FLAGS} -O2 -DNDEBUG" CACHE TYPE STRING FORCE)
        else()
@@ -194,20 +204,52 @@ if(use_external_libintl)
        add_definitions(-DHAVE_GETTEXT)
 endif()
 
-message("")
+if(WIN32)
+  find_library(HUNSPELL_LIBRARY "libhunspell")
+else()
+  #find_library(HUNSPELL_LIBRARY NAME "hunspell" PATH "/usr/local/lib" "/usr/lib" NO_DEFAULT_PATH)
+  find_library(HUNSPELL_LIBRARY NAMES "hunspell" "hunspell-1.2" PATHS "/usr/local/lib" "/usr/lib" "/usr/lib64")
+endif()
+if (HUNSPELL_LIBRARY)
+  find_file(HUNSPELL_FOUND "hunspell/hunspell.hxx")
+endif()
+
+if (HUNSPELL_FOUND)
+  add_definitions(-DUSE_HUNSPELL=1)
+  message(STATUS "----- Building with USE_HUNSPELL")
+else()
+  message(STATUS "----- Hunspell not found, building without hunspell support")
+endif()
+
+if(WIN32)
+  find_library(ENCHANT_LIBRARY "libenchant")
+  find_path(ENCHANT_INCLUDE_DIR "enchant++.h")
+else()
+  find_library(ENCHANT_LIBRARY "enchant"  "/usr/local/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib")
+  find_path(ENCHANT_INCLUDE_DIR "enchant++.h" PATHS /usr/local/include /usr/local/include/enchant /usr/include /usr/include/enchant /opt/local/include/enchant)
+endif()
+if (ENCHANT_LIBRARY AND ENCHANT_INCLUDE_DIR)
+  set(ENCHANT_FOUND TRUE)
+  add_definitions(-DUSE_ENCHANT=1)
+  message(STATUS "----- Building with USE_ENCHANT")
+else()
+  message(STATUS "----- Enchant not found, building without enchant support")
+endif()
+
+message(STATUS "")
 if(nls OR all)
        set(nls TRUE CACHE TYPE STRING)
        add_definitions(-DENABLE_NLS=1)
-       message("----- Building with ENABLE_NLS")
-else() 
-       message("----- No nls, to enable use -Dnls=1")
+       message(STATUS "----- Building with ENABLE_NLS")
+else()
+       message(STATUS "----- No nls, to enable use -Dnls=1")
 endif()
 set(nls)
 if(ASPELL_FOUND)
        add_definitions(-DUSE_ASPELL=1)
-       message("----- Building with USE_ASPELL")
-else() 
-       message("----- No aspell, to get more information use -Daspell=1")
+       message(STATUS "----- Building with USE_ASPELL")
+else()
+       message(STATUS "----- No aspell, to get more information use -Daspell=1")
 endif()
 set(all)
 
@@ -216,12 +258,12 @@ if(WIN32)
                set(noconsole TRUE CACHE TYPE STRING)
                set(WIN32_CONSOLE WIN32)
                set(LYX_QTMAIN_LIBRARY ${QT_QTMAIN_LIBRARY})
-               message("----- Console disabled")
+               message(STATUS "----- Console disabled")
        else()
-               message("----- Console enabled, disable it with -Dnoconsole=1")
+               message(STATUS "----- Console enabled, disable it with -Dnoconsole=1")
        endif()
        if(MSVC)
-               add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DNOMINMAX)      
+               add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DNOMINMAX)
                # 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()
@@ -229,7 +271,7 @@ if(WIN32)
        endif()
 endif()
 
-message("")
+message(STATUS "")
 foreach(_v PACKAGE PACKAGE_VERSION
     PROGRAM_SUFFIX LYX_DATE LYX_DIR_VER LYX_USERDIR_VER
     LYX_ABS_TOP_SRCDIR
@@ -238,48 +280,65 @@ foreach(_v PACKAGE PACKAGE_VERSION
     message(FATAL_ERROR "${_v} not defined")
   endif()
   string(SUBSTRING "${_v}                            " 0 28 _v1)
-  message("----- ${_v1}: ${${_v}}")
+  message(STATUS "----- ${_v1}: ${${_v}}")
 endforeach(_v)
-message("")
-
-
-add_definitions(-DBOOST_USER_CONFIG="<config.h>")
-       
-if(MSVC AND NOT disable-pch AND NOT MERGE_FILES)
-       message("-----")
-       message("----- using precompiled headers, disable with -Ddisable-pch=1")
-       message("-----")
-       configure_file(${CMAKE_SOURCE_DIR}/pcheaders.h
-               ${CMAKE_BINARY_DIR}/pcheaders.h)
-       configure_file(${CMAKE_SOURCE_DIR}/config.cpp.cmake
-               ${CMAKE_BINARY_DIR}/config_pch.cpp)
-       macro(lyx_add_msvc_pch name_)
-               set_source_files_properties(${${name_}_sources} PROPERTIES
-                       COMPILE_FLAGS "/Yuconfig.h /Fp\$(IntDir)/config.pch")
-               set_source_files_properties(${CMAKE_BINARY_DIR}/config_pch.cpp PROPERTIES
-                       COMPILE_FLAGS "/Ycconfig.h /Fp\$(IntDir)/config.pch")
-               set(${name_}_sources ${${name_}_sources} ${CMAKE_BINARY_DIR}/config_pch.cpp
-                       ${CMAKE_BINARY_DIR}/pcheaders.h)
-               add_definitions(/DLYX_ENABLE_PCH)
-       endmacro(lyx_add_msvc_pch)
-       set(CMAKE_CXX_FLAGS_DEBUG
-               "${CMAKE_CXX_FLAGS_DEBUG} /DLYX_PCH_STL /DLYX_PCH_BOOST /DLYX_PCH_QT4")
-       set(CMAKE_CXX_FLAGS_RELEASE
-               "${CMAKE_CXX_FLAGS_RELEASE} /DLYX_PCH_STL /DLYX_PCH_BOOST /DLYX_PCH_QT4")
-       set(CMAKE_CXX_FLAGS_MINSIZEREL
-               "${CMAKE_CXX_FLAGS_MINSIZEREL} /DLYX_PCH_STL /DLYX_PCH_BOOST")
+message(STATUS "")
+
+
+# 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)
+if (MSVC)
+       option(disable-pch "Disable precompiled headers" ON)
+else()
+       option(disable-pch "Disable precompiled headers" ON)
+endif()
+
+if(NOT disable-pch)
+
+       message(STATUS "-----")
+       message(STATUS "----- using precompiled headers, disable with -Ddisable-pch=1")
+       message(STATUS "-----")
+       configure_file(${CMAKE_SOURCE_DIR}/pcheaders.h ${CMAKE_BINARY_DIR}/pcheaders.h)
+       configure_file(${CMAKE_SOURCE_DIR}/config.cpp.cmake ${CMAKE_BINARY_DIR}/config_pch.cpp)
+       add_definitions(-DLYX_ENABLE_PCH)
+
+       if(MSVC AND NOT MERGE_FILES)
+               macro(lyx_add_msvc_pch name_)
+                       set_source_files_properties(${${name_}_sources} PROPERTIES
+                               COMPILE_FLAGS "/Yuconfig.h /Fp\$(IntDir)/config.pch")
+                       set_source_files_properties(${CMAKE_BINARY_DIR}/config_pch.cpp PROPERTIES
+                               COMPILE_FLAGS "/Ycconfig.h /Fp\$(IntDir)/config.pch")
+                       set(${name_}_sources ${${name_}_sources} ${CMAKE_BINARY_DIR}/config_pch.cpp
+                               ${CMAKE_BINARY_DIR}/pcheaders.h)
+                       set(CMAKE_CXX_FLAGS_DEBUG       "${CMAKE_CXX_FLAGS_DEBUG} /DLYX_PCH_STL /DLYX_PCH_BOOST /DLYX_PCH_QT4")
+                       set(CMAKE_CXX_FLAGS_RELEASE     "${CMAKE_CXX_FLAGS_RELEASE} /DLYX_PCH_STL /DLYX_PCH_BOOST /DLYX_PCH_QT4")
+                       set(CMAKE_CXX_FLAGS_MINSIZEREL  "${CMAKE_CXX_FLAGS_MINSIZEREL} /DLYX_PCH_STL /DLYX_PCH_BOOST")                  
+               endmacro(lyx_add_msvc_pch)
+               macro(lyx_add_gcc_pch name_)
+               endmacro()
+       else()
+               macro(lyx_add_msvc_pch name_)
+               endmacro()
+               macro(lyx_add_gcc_pch name_)
+                       add_definitions(-DLYX_PCH_STL -DLYX_PCH_BOOST -DLYX_PCH_QT4)
+                       ADD_PRECOMPILED_HEADER(${name_} ${CMAKE_BINARY_DIR}/config_pch.cpp ${CMAKE_BINARY_DIR}/config.h.gch)
+               endmacro()
+       endif()
 else()
        if(MSVC)
-               message("-----")
-               message("----- precompiled headers disabled, enable with -Ddisable-pch=0")
-               message("-----")
+               message(STATUS "-----")
+               message(STATUS "----- precompiled headers disabled, enable with -Ddisable-pch=0")
+               message(STATUS "-----")
        endif()
        set(disable-pch TRUE CACHE TYPE STRING)
        macro(lyx_add_msvc_pch)
        endmacro(lyx_add_msvc_pch)
+       macro(lyx_add_gcc_pch name_)
+       endmacro()
 endif()
 
-if(MSVC)       
+if(MSVC)
        if(vld)
                set(vld 1 CACHE TYPE STRING FORCE)
                set(LYX_LEAK_DETECTION 1 CACHE TYPE STRING FORCE)
@@ -299,67 +358,87 @@ if(MSVC)
 
        if(WALL)
                set(WALL 1 CACHE TYPE STRING FORCE)
-               
+
                # Use the highest warning level
                set(CMAKE_CXX_WARNING_LEVEL 4 CACHE TYPE STRING FORCE)
                set(WARNING_LEVEL_MESSAGE "(switch to warning level 3 with -DWALL=0)")
-               
+
                if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
                        string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
                else()
                        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
                endif()
-               
+
                if(CMAKE_C_FLAGS MATCHES "/W[0-4]")
                        string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
                else()
                        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
                endif()
-               
+
                # add here warnings which should produce an error /weXXXX
                set(MSVC_W_ERROR   "/we4101 /we4189")
                # add here warnings which should be disabled /wdXXXX
-               set(MSVC_W_DISABLE "/wd4288 /wd4355 /wd4800 /wd4996 /wd4311 /wd4312 /wd4505 /wd4267 /wd4512 /wd4245 /wd4127 /wd4180")
-               
+               set(MSVC_W_DISABLE "/wd4288 /wd4355 /wd4800 /wd4996 /wd4311 /wd4312 /wd4505 /wd4267 /wd4512 /wd4245 /wd4127 /wd4180 /wd4231")
+
                set(CMAKE_CXX_FLAGS_DEBUG
                        "${CMAKE_CXX_FLAGS_DEBUG} /Wp64 ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
-               set(CMAKE_CXX_FLAGS_RELEASEs
+               set(CMAKE_CXX_FLAGS_RELEASE
                        "${CMAKE_CXX_FLAGS_RELEASE} /Wp64 ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
                set(CMAKE_CXX_FLAGS_MINSIZEREL
                        "${CMAKE_CXX_FLAGS_MINSIZEREL} /Wp64 ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
-               
-       else()  
+
+       else()
                set(WALL 0 CACHE TYPE STRING FORCE)
-               
+
                set(CMAKE_CXX_WARNING_LEVEL 3 CACHE TYPE STRING FORCE)
                set(WARNING_LEVEL_MESSAGE "(switch to warning level 4 with -DWALL=1)")
-       
+
                # add here warnings which should produce an error /weXXXX
                set(MSVC_W_ERROR   "/we4101 /we4189")
                # add here warnings which should be disabled /wdXXXX
-               set(MSVC_W_DISABLE "/wd4288 /wd4355 /wd4800 /wd4996 /wd4267 /wd4180")
-               
+               set(MSVC_W_DISABLE "/wd4288 /wd4355 /wd4800 /wd4996 /wd4267 /wd4180 /wd4231")
+
                set(CMAKE_CXX_FLAGS_DEBUG
                        "${CMAKE_CXX_FLAGS_DEBUG} ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
                set(CMAKE_CXX_FLAGS_RELEASE
                        "${CMAKE_CXX_FLAGS_RELEASE} ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
                set(CMAKE_CXX_FLAGS_MINSIZEREL
                        "${CMAKE_CXX_FLAGS_MINSIZEREL} ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
-               
+
        endif()
-       
-       message("----- Warning level      : ${CMAKE_CXX_WARNING_LEVEL}  ${WARNING_LEVEL_MESSAGE}")
-       message("----- Warnings as errors : ${MSVC_W_ERROR}")
-       message("----- Warnings disabled  : ${MSVC_W_DISABLE}")
-       message("")
-       
+       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-")
+
+       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}")
+       message(STATUS "")
+
 endif()
 
 
-if(nls OR all)
-  find_package(LyXGettext REQUIRED)
-  include_directories(${TOP_SRC_DIR}/po)
-  add_subdirectory(po)
+FIND_PROGRAM(_PERL_EXECUTABLE perl)
+if(NOT ${_PERL_EXECUTABLE} MATCHES "-NOTFOUND")
+    if(nls OR all)
+      find_package(LyXGettext REQUIRED)
+      include_directories(${TOP_SRC_DIR}/po)
+      add_subdirectory(po)
+    endif()
+endif()
+
+option(debug_glibc "Enable libstdc++ debug mode" OFF)
+option(debug_glibc_pedantic "Enable libstdc++pedantic debug mode" OFF)
+
+if(debug_glibc)
+  set(_GLIBCXX_DEBUG 1)
+endif()
+
+if(debug_glibc_pedantic)
+  set(_GLIBCXX_DEBUG_PEDANTIC 1)
 endif()
 
 # compiler tests, config.h generation
@@ -369,56 +448,119 @@ else()
        include(ConfigureChecks.cmake)
        configure_file(configCompiler.h.cmake ${CMAKE_BINARY_DIR}/configCompiler.h)
 endif()
-configure_file(config.h.cmake ${CMAKE_BINARY_DIR}/config.h)
 
+configure_file(config.h.cmake ${CMAKE_BINARY_DIR}/config.h)
 
 find_package(ICONV REQUIRED)
 add_definitions(-DHAVE_ICONV=1)
 
+
 include_directories(
-       ${CMAKE_BINARY_DIR}
-       ${TOP_SRC_DIR}/src
-       ${TOP_SRC_DIR}/boost)
+  ${CMAKE_BINARY_DIR}
+  ${TOP_SRC_DIR}/src)
+
+option(UseExternalBoost "Use external boost" OFF)
+if(UseExternalBoost)
+  message(STATUS "Searching for boost")
+  find_package(Boost COMPONENTS signals regex)
+  if(Boost_FOUND)
+    message(STATUS "Boost found")
+    message(STATUS "Boost-libs = ${Boost_LIBRARIES}")
+    set(Lyx_Boost_Libraries ${Boost_LIBRARIES})
+  else()
+    message(FATAL_ERROR "Boost not found" ${Boost_ERROR_REASON})
+  endif()
+else()
+  message(STATUS "----- Using internal boost. To build with installed version use -DUseExternalBoost:BOOL=ON")
+  set(Lyx_Boost_Libraries boost_signals boost_regex)
+  add_definitions(-DBOOST_USER_CONFIG="<config.h>")
+  include_directories(${TOP_SRC_DIR}/boost)
+  add_subdirectory(boost)
+endif()
+
 
-add_subdirectory(boost)
 if(NOT use_external_libintl)
-       add_subdirectory(intl)
+  add_subdirectory(intl)
 endif()
 add_subdirectory(src)
 
-add_subdirectory(man)
-add_subdirectory(doc)
+if(lyxinstall)
+       add_subdirectory(man)
+       if(NOT ${_PERL_EXECUTABLE} MATCHES "-NOTFOUND")
+               add_subdirectory(doc)
+       endif()
+endif()
 add_subdirectory(lyx2lyx)
 add_subdirectory(scripts)
 
-include(../Install)
+if(lyxinstall)
+       include(../Install)
+endif()
 
 SET(CPACK_PACKAGE_VERSION_MAJOR "${LYX_MAJOR_VERSION}")
 SET(CPACK_PACKAGE_VERSION_MINOR "${LYX_MINOR_VERSION}")
-SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A WYSIWYM (What You See Is What You Mean) document processor")
+FILE(STRINGS "${TOP_SRC_DIR}/development/cmake/LyX_summary.txt" CPACK_PACKAGE_DESCRIPTION_SUMMARY)
 
 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${LYX_INSTALL_SUFFIX}")
 #
 # needed by rpm
 SET(CPACK_SET_DESTDIR "ON")
-SET(CPACK_RPM_PACKAGE_LICENSE "GPL")
+FILE(READ "${TOP_SRC_DIR}/development/cmake/LyX_license.txt" CPACK_RPM_PACKAGE_LICENSE)
 SET(CPACK_RPM_PACKAGE_GROUP "Applications/Publishing")
 SET(CPACK_RPM_PACKAGE_VENDOR "The LyX team")
 #
 # the next ones are needed by deb
 SET(CPACK_PACKAGE_CONTACT "${PACKAGE_BUGREPORT}")
-SET(CPACK_SOURCE_PACKAGE_FILE_NAME "lyx-${LYX_INSTALL_SUFFIX}")
-SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LyX is a document processor that encourages an approach to writing\n based on the structure of your documents, not their appearance. It\n is released under a Free Software/Open Source license (GPL v.2).\n \n LyX is for people that write and want their writing to look great,\n right out of the box. No more endless tinkering with formatting\n details, 'finger painting' font attributes or futzing around with\n page boundaries. You just write. In the background, Prof. Knuth's\n legendary TeX typesetting engine makes you look good.\n \n On screen, LyX looks like any word processor; its printed output --\n or richly cross-referenced PDF, just as readily produced -- looks\n like nothing else. Gone are the days of industrially bland .docs,\n all looking similarly not-quite-right, yet coming out unpredictably\n different on different printer drivers. Gone are the crashes\n 'eating' your dissertation the evening before going to press.\n \n LyX is stable and fully featured. It is a multi-platform, fully\n internationalized application running natively on Unix/Linux, the\n Macintosh and modern Windows platforms.")
+SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${project}-${LYX_INSTALL_SUFFIX}")
+
+# This is experimental, valid on _my_ system (Kornel)
+SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libqtgui4 (>= 4.4.3-0)")
+IF(ASPELL_FOUND)
+  SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libaspell15 (>= 0.60.6-1),${CPACK_DEBIAN_PACKAGE_DEPENDS}")
+ENDIF()
+#
+# for the next ones, cpack insists on data with values in some file
+SET(CPACK_PACKAGE_DESCRIPTION_FILE "${TOP_SRC_DIR}/development/cmake/LyX_description.txt")
+SET(CPACK_RESOURCE_FILE_LICENSE "${TOP_SRC_DIR}/development/cmake/LyX_license.txt")
+
+# Find the revision number and use it as the release in rpm-package-build.
+# This way we may omit the otherwise needed "--force" parameter when
+# installing from that rpm package.
+FIND_PROGRAM(_svnversion svnversion)
+message(STATUS "svnversion = ${_svnversion}")
+if(NOT ${_svnversion} MATCHES "-NOTFOUND")
+  EXECUTE_PROCESS(COMMAND ${_svnversion} WORKING_DIRECTORY "${TOP_SRC_DIR}" OUTPUT_VARIABLE CPACK_RPM_PACKAGE_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE)
+  # We use this value also to set the package-patch-value
+  if(CPACK_RPM_PACKAGE_RELEASE MATCHES "^\([0-9]+\)")
+    set(CPACK_PACKAGE_VERSION_PATCH ${CMAKE_MATCH_1})
+  endif()
+endif()
+
+# we do not have a readme or welcome data,
+# so we do not provide infofiles for
+# CPACK_RESOURCE_FILE_README and CPACK_RESOURCE_FILE_WELCOME
+
+if(lyxinstall)
+       include(CPack)
+endif()
 
-include(CPack)
 #Now it is possible to create some packages
 # cd <BuildDir>
 # make package
+#############################################################################################
+# So, e.g. for variables
+#    CMAKE_PROJECT_NAME                     : lyx
+#    CPACK_PACKAGE_VERSION_MAJOR            : 2
+#    CPACK_PACKAGE_VERSION_MINOR            : 0
+#    CPACK_PACKAGE_VERSION_PATCH            : 1
+#    CMAKE_SYSTEM_NAME                      : Linux
+#    CPACK_BINARY_DEB:BOOL                  : ON
+#
+# the package name builds as "lyx-2.0.1-Linux.deb"
+#
 ############################## rpm ################################### deb ##################
 # create    # cpack -G RPM --config CPackConfig.cmake   # cpack -G DEB --config CPackConfig.cmake
-# creates =># lyx-2.0.1-Linux.rpm                       #  ==> lyx-2.0.1-Linux.deb
+# creates =># lyx-2.0.1-Linux.rpm                       # lyx-2.0.1-Linux.deb
 # list      # rpm -qlp lyx-2.0.1-Linux.rpm              # dpkg-deb -c lyx-2.0.1-Linux.deb
 # install   # rpm -U lyx-2.0.1-Linux.rpm                # dpkg -i lyx-2.0.1-Linux.deb
 #
-
-