]> git.lyx.org Git - lyx.git/blob - development/cmake/CMakeLists.txt
cmake: add pch for gcc, it's sooo hairy, disable by default
[lyx.git] / development / cmake / CMakeLists.txt
1 # This file is part of LyX, the document processor.
2 # Licence details can be found in the file COPYING.
3 #
4 # Copyright (c) 2006, Peter Kümmel, <syntheticpp@gmx.net>
5 #
6
7 cmake_minimum_required(VERSION 2.4)
8
9 if(COMMAND cmake_policy)
10         cmake_policy(SET CMP0003 OLD)
11         cmake_policy(SET CMP0005 OLD)
12 endif(COMMAND cmake_policy)
13
14 project(lyx)
15
16 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
17
18 # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/
19 # is checked
20 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/modules")
21 set(EXECUTABLE_OUTPUT_PATH  ${CMAKE_BINARY_DIR}/bin)
22
23
24 option(lyxinstall "Build install projects/rules" ON)
25
26
27
28 # Supress regeneration
29 set(CMAKE_SUPPRESS_REGENERATION TRUE)
30
31 set(VERSION_INFO "CMake Build")
32
33 # Try to get some informations from configure.ac
34
35 include(LyXPaths)               #called here to define the needed TOP_SRC_DIR-variable
36 file(STRINGS "${TOP_SRC_DIR}/configure.ac" _config_lines)
37
38 if(WIN32)
39   set(USE_WINDOWS_PACKAGING 1)
40 elseif(APPLE)
41   set(USE_MACOSX_PACKAGING 1)
42 else()
43   set(USE_POSIX_PACKAGING 1)
44 endif()
45
46 macro(setstripped _varname _value)
47   string(STRIP ${_value} _v)
48   if(USE_POSIX_PACKAGING)
49     string(TOLOWER ${_v} ${_varname})
50   else()
51     set(${_varname} ${_v})
52   endif()
53 endmacro(setstripped)
54
55 foreach(_c_l ${_config_lines} )
56   if(_c_l MATCHES "^AC_INIT\\(\([^,]+\),\([^,]+\), *\\[\([^,]+\)\\] *,\(.*\)")
57     setstripped(PACKAGE_BASE ${CMAKE_MATCH_1})
58     setstripped(PACKAGE_VERSION ${CMAKE_MATCH_2})
59     setstripped(PACKAGE_BUGREPORT ${CMAKE_MATCH_3})
60     if(PACKAGE_VERSION MATCHES "^\([0-9]+\)\\.\([0-9]+\).*$")
61       set(LYX_MAJOR_VERSION ${CMAKE_MATCH_1})
62       set(LYX_MINOR_VERSION ${CMAKE_MATCH_2})
63       set(LYX_DIR_VER "LYX_DIR_${CMAKE_MATCH_1}${CMAKE_MATCH_2}x")
64       set(LYX_USERDIR_VER "LYX_USERDIR_${CMAKE_MATCH_1}${CMAKE_MATCH_2}x")
65       set(LYX_INSTALL_SUFFIX "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}")
66     endif()
67   endif()
68   if(_c_l MATCHES "^AC_SUBST\\( *LYX_DATE *, *\\[\\\"(.*)\\\"\\].*")
69     set(LYX_DATE "${CMAKE_MATCH_1}")
70   endif()
71 endforeach(_c_l)
72
73 if(UseVersionSuffix)
74   message(STATUS "-- Using versioned PACKAGE. Disable with -DUseVersionSuffix=0")
75   set(PACKAGE ${PACKAGE_BASE}${LYX_INSTALL_SUFFIX})
76   set(PROGRAM_SUFFIX "${LYX_INSTALL_SUFFIX}")
77 else()
78   message(STATUS "-- PACKAGE not versioned, to enable use -DUseVersionSuffix=1")
79   set(PACKAGE ${PACKAGE_BASE})
80   set(PROGRAM_SUFFIX "")
81 endif()
82
83 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
84   # see http://www.cmake.org/pipermail/cmake/2006-October/011559.html
85   if (UNIX)
86     # don't use the default "/usr/local"
87     # but respect the user-choice on the command-line
88     SET(CMAKE_INSTALL_PREFIX
89       "/usr/local/${project}${LYX_INSTALL_SUFFIX}" CACHE PATH "LyX install prefix" FORCE)
90   endif()
91   if(WIN32)
92     SET(CMAKE_INSTALL_PREFIX
93       ${CMAKE_INSTALL_PREFIX}/${LYX_INSTALL_SUFFIX} CACHE PATH "LyX install prefix" FORCE)
94   endif()
95 endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
96
97 set(LYX_ABS_INSTALLED_DATADIR "${CMAKE_INSTALL_PREFIX}")
98 set(LYX_LOCALEDIR "locale")
99 set(LYX_ABS_INSTALLED_LOCALEDIR "${LYX_ABS_INSTALLED_DATADIR}/${LYX_LOCALEDIR}")
100 set(LYX_ABS_TOP_SRCDIR "${TOP_SRC_DIR}")
101
102
103 if(NOT GROUP_CODE)
104         #set(GROUP_CODE "The Golden Code")
105         set(GROUP_CODE flat)
106 endif()
107
108 # lyx's source files
109 set(LYX_CPP_FILES *.cpp)
110 set(LYX_HPP_FILES *.h)
111
112 include(LyXMacros)
113 include(ProjectSourceGroup)
114
115 if(merge OR merge_rebuild)
116         set(merge 1 CACHE TYPE STRING FORCE)
117         set(MERGE_FILES 1 CACHE TYPE STRING FORCE)
118         message(STATUS "")
119         message(STATUS "All *.cpp files of a project are merged into two files, disable with -Dmerge=0")
120         message(STATUS "")
121 else()
122         set(merge 0 CACHE TYPE STRING FORCE)
123         set(MERGE_FILES 0 CACHE TYPE STRING FORCE)
124         message(STATUS "Enable merging files with -Dmerge=1")
125 endif()
126
127
128 set(CMAKE_BUILD_TYPE Release)
129
130 if(profile)
131         set(CMAKE_BUILD_TYPE Profile CACHE TYPE STRING FORCE)
132         set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg"
133             CACHE TYPE STRING FORCE)
134         set(profile)
135 endif()
136
137 if(release)
138         set(CMAKE_BUILD_TYPE Release CACHE TYPE STRING FORCE)
139         set(release TRUE CACHE TYPE STRING FORCE)
140         set(release)
141 endif()
142
143 if(debug)
144         set(CMAKE_BUILD_TYPE Debug CACHE TYPE STRING FORCE)
145         set(debug TRUE CACHE TYPE STRING FORCE)
146         set(debug)
147 endif()
148
149 if(shared)
150         set(library_type SHARED)
151         message(STATUS "building shared libraries")
152 else()
153         set(library_type STATIC)
154 endif()
155
156 if(NOT MSVC)
157         if(NOT quiet)
158                 set(CMAKE_VERBOSE_MAKEFILE ON CACHE TYPE STRING FORCE)
159                 message(STATUS "verbose Makefile, disable with -Dquiet=1")
160                 message(STATUS "")
161         else()
162                 set(CMAKE_VERBOSE_MAKEFILE OFF CACHE TYPE STRING FORCE)
163         endif()
164         set(LYX_CXX_FLAGS -Wall)
165         if(stdlib-debug)
166                 set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")
167         endif()
168         if(concept-checks)
169                 set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCPP_CONCEPT_CHECKS")
170         endif()
171         set(CMAKE_CXX_FLAGS          "${LYX_CXX_FLAGS}" CACHE TYPE STRING FORCE)
172         set(CMAKE_CXX_FLAGS_DEBUG    "${LYX_CXX_FLAGS} -O -g -D_DEBUG" CACHE TYPE STRING FORCE)
173         if(MINGW)
174                 set(CMAKE_CXX_FLAGS_RELEASE  "${LYX_CXX_FLAGS} -O2 -DNDEBUG" CACHE TYPE STRING FORCE)
175         else()
176                 set(CMAKE_CXX_FLAGS_RELEASE  "${LYX_CXX_FLAGS} -O3 -DNDEBUG" CACHE TYPE STRING FORCE)
177         endif()
178         set(CMAKE_CXX_FLAGS_PROFILE  "${CMAKE_CXX_FLAGS_RELEASE} -pg" CACHE TYPE STRING FORCE)
179 endif()
180
181
182 find_package(Qt4 REQUIRED)
183 add_definitions(-DQT_NO_STL -DQT_NO_KEYWORDS)
184
185 find_package(ZLIB REQUIRED)
186
187 if(all OR aspell)
188         set(aspell TRUE CACHE TYPE STRING)
189         find_package(ASPELL REQUIRED)
190 else()
191         find_package(ASPELL)
192 endif()
193 set(aspell)
194
195 set(use_external_libintl TRUE)
196
197 if(use_external_libintl)
198         find_package(Libintl REQUIRED)
199         add_definitions(-DHAVE_GETTEXT)
200 endif()
201
202 if(WIN32)
203   find_library(HUNSPELL_LIBRARY "libhunspell")
204 else()
205   #find_library(HUNSPELL_LIBRARY NAME "hunspell" PATH "/usr/local/lib" "/usr/lib" NO_DEFAULT_PATH)
206   find_library(HUNSPELL_LIBRARY "hunspell" "/usr/local/lib" "/usr/lib")
207 endif()
208 if (HUNSPELL_LIBRARY)
209   find_file(HUNSPELL_FOUND "hunspell/hunspell.hxx")
210 endif()
211
212 if (HUNSPELL_FOUND)
213   add_definitions(-DUSE_HUNSPELL=1)
214   message(STATUS "----- Building with USE_HUNSPELL")
215 else()
216   message(STATUS "----- Hunspell not found, building without hunspell support")
217 endif()
218
219 message(STATUS "")
220 if(nls OR all)
221         set(nls TRUE CACHE TYPE STRING)
222         add_definitions(-DENABLE_NLS=1)
223         message(STATUS "----- Building with ENABLE_NLS")
224 else()
225         message(STATUS "----- No nls, to enable use -Dnls=1")
226 endif()
227 set(nls)
228 if(ASPELL_FOUND)
229         add_definitions(-DUSE_ASPELL=1)
230         message(STATUS "----- Building with USE_ASPELL")
231 else()
232         message(STATUS "----- No aspell, to get more information use -Daspell=1")
233 endif()
234 set(all)
235
236 if(WIN32)
237         if(noconsole)
238                 set(noconsole TRUE CACHE TYPE STRING)
239                 set(WIN32_CONSOLE WIN32)
240                 set(LYX_QTMAIN_LIBRARY ${QT_QTMAIN_LIBRARY})
241                 message(STATUS "----- Console disabled")
242         else()
243                 message(STATUS "----- Console enabled, disable it with -Dnoconsole=1")
244         endif()
245         if(MSVC)
246                 add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DNOMINMAX)
247                 # disable checked iterators for msvc release builds to get maximum speed
248                 set(CMAKE_CXX_FLAGS_RELEASE  "${CMAKE_CXX_FLAGS_RELEASE} /D_SECURE_SCL=0")
249         else()
250                 add_definitions(-DWINVER=0x0500)
251         endif()
252 endif()
253
254 message(STATUS "")
255 foreach(_v PACKAGE PACKAGE_VERSION
256     PROGRAM_SUFFIX LYX_DATE LYX_DIR_VER LYX_USERDIR_VER
257     LYX_ABS_TOP_SRCDIR
258     LYX_ABS_INSTALLED_DATADIR LYX_ABS_INSTALLED_LOCALEDIR LYX_INSTALL_SUFFIX)
259   if(NOT DEFINED ${_v})
260     message(FATAL_ERROR "${_v} not defined")
261   endif()
262   string(SUBSTRING "${_v}                            " 0 28 _v1)
263   message(STATUS "----- ${_v1}: ${${_v}}")
264 endforeach(_v)
265 message(STATUS "")
266
267
268 # PCHs not supported by cmake: http://www.cmake.org/Bug/view.php?id=1260
269 # Not sure if it works for all non-msvc compilers
270 include(PCHSupport_26)
271 if (MSVC)
272         option(disable-pch "Disable precompiled headers" OFF)
273 else()
274         option(disable-pch "Disable precompiled headers" ON)
275 endif()
276
277 if(NOT disable-pch)
278
279         message(STATUS "-----")
280         message(STATUS "----- using precompiled headers, disable with -Ddisable-pch=1")
281         message(STATUS "-----")
282         configure_file(${CMAKE_SOURCE_DIR}/pcheaders.h ${CMAKE_BINARY_DIR}/pcheaders.h)
283         configure_file(${CMAKE_SOURCE_DIR}/config.cpp.cmake ${CMAKE_BINARY_DIR}/config_pch.cpp)
284
285
286         if(MSVC AND NOT MERGE_FILES)
287                 macro(lyx_add_msvc_pch name_)
288                         set_source_files_properties(${${name_}_sources} PROPERTIES
289                                 COMPILE_FLAGS "/Yuconfig.h /Fp\$(IntDir)/config.pch")
290                         set_source_files_properties(${CMAKE_BINARY_DIR}/config_pch.cpp PROPERTIES
291                                 COMPILE_FLAGS "/Ycconfig.h /Fp\$(IntDir)/config.pch")
292                         set(${name_}_sources ${${name_}_sources} ${CMAKE_BINARY_DIR}/config_pch.cpp
293                                 ${CMAKE_BINARY_DIR}/pcheaders.h)
294                         set(CMAKE_CXX_FLAGS_DEBUG       "${CMAKE_CXX_FLAGS_DEBUG} /DLYX_PCH_STL /DLYX_PCH_BOOST /DLYX_PCH_QT4")
295                         set(CMAKE_CXX_FLAGS_RELEASE     "${CMAKE_CXX_FLAGS_RELEASE} /DLYX_PCH_STL /DLYX_PCH_BOOST /DLYX_PCH_QT4")
296                         set(CMAKE_CXX_FLAGS_MINSIZEREL  "${CMAKE_CXX_FLAGS_MINSIZEREL} /DLYX_PCH_STL /DLYX_PCH_BOOST")                  
297                 endmacro(lyx_add_msvc_pch)
298                 macro(lyx_add_gcc_pch name_)
299                 endmacro()
300         else()
301                 macro(lyx_add_msvc_pch name_)
302                 endmacro()
303                 macro(lyx_add_gcc_pch name_)
304                         add_definitions(-DLYX_ENABLE_PCH -DLYX_PCH_STL -DLYX_PCH_BOOST -DLYX_PCH_QT4)
305                         ADD_PRECOMPILED_HEADER(${name_} ${CMAKE_BINARY_DIR}/config_pch.cpp ${CMAKE_BINARY_DIR}/config.h.gch)
306                 endmacro()
307         endif()
308 else()
309         if(MSVC)
310                 message(STATUS "-----")
311                 message(STATUS "----- precompiled headers disabled, enable with -Ddisable-pch=0")
312                 message(STATUS "-----")
313         endif()
314         set(disable-pch TRUE CACHE TYPE STRING)
315         macro(lyx_add_msvc_pch)
316         endmacro(lyx_add_msvc_pch)
317         macro(lyx_add_gcc_pch name_)
318         endmacro()
319 endif()
320
321 if(MSVC)
322        if(vld)
323                set(vld 1 CACHE TYPE STRING FORCE)
324                set(LYX_LEAK_DETECTION 1 CACHE TYPE STRING FORCE)
325                message(STATUS "")
326                message(STATUS "Leak detection enabled, disable with -Dvld=0")
327                message(STATUS "")
328                set(LIBRARY_OUTPUT_PATH  ${EXECUTABLE_OUTPUT_PATH})
329                set(vld_path ${CMAKE_CURRENT_SOURCE_DIR}/../Win32/vld)
330                include(${vld_path}/tools/cmake/vld.cmake)
331        else()
332                set(vld 0 CACHE TYPE STRING FORCE)
333                set(LYX_LEAK_DETECTION 0 CACHE TYPE STRING FORCE)
334                message(STATUS "")
335                message(STATUS "Enable leak detection with -Dvld=1")
336                message(STATUS "")
337        endif()
338
339         if(WALL)
340                 set(WALL 1 CACHE TYPE STRING FORCE)
341
342                 # Use the highest warning level
343                 set(CMAKE_CXX_WARNING_LEVEL 4 CACHE TYPE STRING FORCE)
344                 set(WARNING_LEVEL_MESSAGE "(switch to warning level 3 with -DWALL=0)")
345
346                 if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
347                         string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
348                 else()
349                         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
350                 endif()
351
352                 if(CMAKE_C_FLAGS MATCHES "/W[0-4]")
353                         string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
354                 else()
355                         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
356                 endif()
357
358                 # add here warnings which should produce an error /weXXXX
359                 set(MSVC_W_ERROR   "/we4101 /we4189")
360                 # add here warnings which should be disabled /wdXXXX
361                 set(MSVC_W_DISABLE "/wd4288 /wd4355 /wd4800 /wd4996 /wd4311 /wd4312 /wd4505 /wd4267 /wd4512 /wd4245 /wd4127 /wd4180")
362
363                 set(CMAKE_CXX_FLAGS_DEBUG
364                         "${CMAKE_CXX_FLAGS_DEBUG} /Wp64 ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
365                 set(CMAKE_CXX_FLAGS_RELEASE
366                         "${CMAKE_CXX_FLAGS_RELEASE} /Wp64 ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
367                 set(CMAKE_CXX_FLAGS_MINSIZEREL
368                         "${CMAKE_CXX_FLAGS_MINSIZEREL} /Wp64 ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
369
370         else()
371                 set(WALL 0 CACHE TYPE STRING FORCE)
372
373                 set(CMAKE_CXX_WARNING_LEVEL 3 CACHE TYPE STRING FORCE)
374                 set(WARNING_LEVEL_MESSAGE "(switch to warning level 4 with -DWALL=1)")
375
376                 # add here warnings which should produce an error /weXXXX
377                 set(MSVC_W_ERROR   "/we4101 /we4189")
378                 # add here warnings which should be disabled /wdXXXX
379                 set(MSVC_W_DISABLE "/wd4288 /wd4355 /wd4800 /wd4996 /wd4267 /wd4180")
380
381                 set(CMAKE_CXX_FLAGS_DEBUG
382                         "${CMAKE_CXX_FLAGS_DEBUG} ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
383                 set(CMAKE_CXX_FLAGS_RELEASE
384                         "${CMAKE_CXX_FLAGS_RELEASE} ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
385                 set(CMAKE_CXX_FLAGS_MINSIZEREL
386                         "${CMAKE_CXX_FLAGS_MINSIZEREL} ${MSVC_W_ERROR} ${MSVC_W_DISABLE}")
387
388         endif()
389
390         message(STATUS "----- Warning level      : ${CMAKE_CXX_WARNING_LEVEL}  ${WARNING_LEVEL_MESSAGE}")
391         message(STATUS "----- Warnings as errors : ${MSVC_W_ERROR}")
392         message(STATUS "----- Warnings disabled  : ${MSVC_W_DISABLE}")
393         message(STATUS "")
394
395 endif()
396
397
398 FIND_PROGRAM(_PERL_EXECUTABLE perl)
399 if(NOT ${_PERL_EXECUTABLE} MATCHES "-NOTFOUND")
400     if(nls OR all)
401       find_package(LyXGettext REQUIRED)
402       include_directories(${TOP_SRC_DIR}/po)
403       add_subdirectory(po)
404     endif()
405 endif()
406
407 # compiler tests, config.h generation
408 if(MSVC AND NOT CONFIGURECHECKS)
409         configure_file(configCompiler.h.msvc ${CMAKE_BINARY_DIR}/configCompiler.h)
410 else()
411         include(ConfigureChecks.cmake)
412         configure_file(configCompiler.h.cmake ${CMAKE_BINARY_DIR}/configCompiler.h)
413 endif()
414
415 configure_file(config.h.cmake ${CMAKE_BINARY_DIR}/config.h)
416
417 find_package(ICONV REQUIRED)
418 add_definitions(-DHAVE_ICONV=1)
419
420
421 include_directories(
422   ${CMAKE_BINARY_DIR}
423   ${TOP_SRC_DIR}/src)
424
425 option(UseExternalBoost "Use external boost" OFF)
426 if(UseExternalBoost)
427   message(STATUS "Searching for boost")
428   find_package(Boost COMPONENTS signals regex)
429   if(Boost_FOUND)
430     message(STATUS "Boost found")
431     message(STATUS "Boost-libs = ${Boost_LIBRARIES}")
432     set(Lyx_Boost_Libraries ${Boost_LIBRARIES})
433   else()
434     message(FATAL_ERROR "Boost not found" ${Boost_ERROR_REASON})
435   endif()
436 else()
437   message(STATUS "----- Using internal boost. To build with installed version use -DUseExternalBoost:BOOL=ON")
438   set(Lyx_Boost_Libraries boost_signals boost_regex)
439   add_definitions(-DBOOST_USER_CONFIG="<config.h>")
440   include_directories(${TOP_SRC_DIR}/boost)
441   add_subdirectory(boost)
442 endif()
443
444
445 if(NOT use_external_libintl)
446   add_subdirectory(intl)
447 endif()
448 add_subdirectory(src)
449
450 if(lyxinstall)
451         add_subdirectory(man)
452         if(NOT ${_PERL_EXECUTABLE} MATCHES "-NOTFOUND")
453                 add_subdirectory(doc)
454         endif()
455 endif()
456 add_subdirectory(lyx2lyx)
457 add_subdirectory(scripts)
458
459 if(lyxinstall)
460         include(../Install)
461 endif()
462
463 SET(CPACK_PACKAGE_VERSION_MAJOR "${LYX_MAJOR_VERSION}")
464 SET(CPACK_PACKAGE_VERSION_MINOR "${LYX_MINOR_VERSION}")
465 FILE(STRINGS "${TOP_SRC_DIR}/development/cmake/LyX_summary.txt" CPACK_PACKAGE_DESCRIPTION_SUMMARY)
466
467 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${LYX_INSTALL_SUFFIX}")
468 #
469 # needed by rpm
470 SET(CPACK_SET_DESTDIR "ON")
471 FILE(READ "${TOP_SRC_DIR}/development/cmake/LyX_license.txt" CPACK_RPM_PACKAGE_LICENSE)
472 SET(CPACK_RPM_PACKAGE_GROUP "Applications/Publishing")
473 SET(CPACK_RPM_PACKAGE_VENDOR "The LyX team")
474 #
475 # the next ones are needed by deb
476 SET(CPACK_PACKAGE_CONTACT "${PACKAGE_BUGREPORT}")
477 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${project}-${LYX_INSTALL_SUFFIX}")
478
479 # This is experimental, valid on _my_ system (Kornel)
480 SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libqtgui4 (>= 4.4.3-0)")
481 IF(ASPELL_FOUND)
482   SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libaspell15 (>= 0.60.6-1),${CPACK_DEBIAN_PACKAGE_DEPENDS}")
483 ENDIF()
484 #
485 # for the next ones, cpack insists on data with values in some file
486 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${TOP_SRC_DIR}/development/cmake/LyX_description.txt")
487 SET(CPACK_RESOURCE_FILE_LICENSE "${TOP_SRC_DIR}/development/cmake/LyX_license.txt")
488
489 # Find the revision number and use it as the release in rpm-package-build.
490 # This way we may omit the otherwise needed "--force" parameter when
491 # installing from that rpm package.
492 FIND_PROGRAM(_svnversion svnversion)
493 message(STATUS "svnversion = ${_svnversion}")
494 if(NOT ${_svnversion} MATCHES "-NOTFOUND")
495   EXECUTE_PROCESS(COMMAND ${_svnversion} WORKING_DIRECTORY "${TOP_SRC_DIR}" OUTPUT_VARIABLE CPACK_RPM_PACKAGE_RELEASE OUTPUT_STRIP_TRAILING_WHITESPACE)
496   # We use this value also to set the package-patch-value
497   if(CPACK_RPM_PACKAGE_RELEASE MATCHES "^\([0-9]+\)")
498     set(CPACK_PACKAGE_VERSION_PATCH ${CMAKE_MATCH_1})
499   endif()
500 endif()
501
502 # we do not have a readme or welcome data,
503 # so we do not provide infofiles for
504 # CPACK_RESOURCE_FILE_README and CPACK_RESOURCE_FILE_WELCOME
505
506 if(lyxinstall)
507         include(CPack)
508 endif()
509
510 #Now it is possible to create some packages
511 # cd <BuildDir>
512 # make package
513 #############################################################################################
514 # So, e.g. for variables
515 #    CMAKE_PROJECT_NAME                     : lyx
516 #    CPACK_PACKAGE_VERSION_MAJOR            : 2
517 #    CPACK_PACKAGE_VERSION_MINOR            : 0
518 #    CPACK_PACKAGE_VERSION_PATCH            : 1
519 #    CMAKE_SYSTEM_NAME                      : Linux
520 #    CPACK_BINARY_DEB:BOOL                  : ON
521 #
522 # the package name builds as "lyx-2.0.1-Linux.deb"
523 #
524 ############################## rpm ################################### deb ##################
525 # create    # cpack -G RPM --config CPackConfig.cmake   # cpack -G DEB --config CPackConfig.cmake
526 # creates =># lyx-2.0.1-Linux.rpm                       # lyx-2.0.1-Linux.deb
527 # list      # rpm -qlp lyx-2.0.1-Linux.rpm              # dpkg-deb -c lyx-2.0.1-Linux.deb
528 # install   # rpm -U lyx-2.0.1-Linux.rpm                # dpkg -i lyx-2.0.1-Linux.deb
529 #