# CPack packaging # # http://cmake.org/cmake/help/cmake-2-8-docs.html#module:CPack if(LYX_BUNDLE) if(APPLE) set(CPACK_GENERATOR DragNDrop) set(CPACK_DMG_BACKGROUND_IMAGE "${TOP_CMAKE_PATH}/../MacOSX/dmg-background.png") set(CPACK_DMG_DS_STORE "${CMAKE_BINARY_DIR}/ds_store/.DS_Store") elseif(UNIX) set(CPACK_GENERATOR STGZ) elseif(WIN32) set(CPACK_GENERATOR ZIP) endif() endif() # Overwrite package name dependent on platform # (Ignores the top project) if(APPLE) # true on all systems whre __APPLE__ is defined in header files set(CPACK_PACKAGE_NAME "LyX${LYX_MAJOR_VERSION}${LYX_MINOR_VERSION}") elseif(UNIX) # True also for cygwin set(CPACK_PACKAGE_NAME "lyx${LYX_MAJOR_VERSION}${LYX_MINOR_VERSION}") else() set(CPACK_PACKAGE_NAME "LyX${LYX_MAJOR_VERSION}${LYX_MINOR_VERSION}") endif() set(CPACK_PACKAGE_VERSION_MAJOR "${LYX_MAJOR_VERSION}") set(CPACK_PACKAGE_VERSION_MINOR "${LYX_MINOR_VERSION}") FILE(STRINGS "${TOP_CMAKE_PATH}/LyX_summary.txt" CPACK_PACKAGE_DESCRIPTION_SUMMARY) set(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${LYX_INSTALL_SUFFIX}") if (APPLE) # We don't need absolute paths set(CPACK_SET_DESTDIR "OFF") elseif(WIN32) set(CPACK_GENERATOR ZIP) set(CPACK_BINARY_ZIP 1) if(MINGW) set(runtime) if(LYX_XMINGW) execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-libgcc-file-name OUTPUT_VARIABLE GCC_LIBGCC OUTPUT_STRIP_TRAILING_WHITESPACE) else() set(GCC_LIBGCC ${CMAKE_CXX_COMPILER}) endif() # RKH # get_filename_component(MINGW_RUNTIME_PATH ${GCC_LIBGCC} PATH) set(MINGW_RUNTIME_PATH "/usr/i686-w64-mingw32/sys-root/mingw/bin") macro(add_runtime_dll _DLL) file(GLOB GCC_RUNTIME ${MINGW_RUNTIME_PATH}/${_DLL}) list(APPEND runtime ${GCC_RUNTIME}) endmacro() add_runtime_dll(iconv.dll) add_runtime_dll(libgcc*.dll) add_runtime_dll(libstd*.dll) add_runtime_dll(libwin*.dll) add_runtime_dll(libbz2-1.dll) add_runtime_dll(libfreetype-6.dll) add_runtime_dll(libglib-2.0-0.dll) add_runtime_dll(libgraphite2.dll) add_runtime_dll(libharfbuzz-0.dll) add_runtime_dll(libicudt6*.dll) add_runtime_dll(libicuin6*.dll) add_runtime_dll(libicuuc6*.dll) add_runtime_dll(libintl-8.dll) add_runtime_dll(libjpeg-62.dll) add_runtime_dll(libpcre-1.dll) add_runtime_dll(libpcre2-16-0.dll) add_runtime_dll(libpng16-16.dll) add_runtime_dll(libtiff-5.dll) add_runtime_dll(libwebp-7.dll) add_runtime_dll(libwebpdemux-2.dll) add_runtime_dll(zlib1.dll) if(NOT runtime) message(FATAL_ERROR "No mingw runtime found in ${MINGW_RUNTIME_PATH}") endif() if(LYX_USE_QT MATCHES "QT5") get_target_property(qmakebin Qt5::qmake IMPORTED_LOCATION) # RKH # get_filename_component(QT_BINARY_DIR ${qmakebin} PATH) set(QT_BINARY_DIR "/usr/i686-w64-mingw32/sys-root/mingw/bin") install(FILES ${runtime} ${QT_BINARY_DIR}/Qt5Core.dll ${QT_BINARY_DIR}/Qt5Network.dll ${QT_BINARY_DIR}/Qt5Gui.dll ${QT_BINARY_DIR}/Qt5Widgets.dll ${QT_BINARY_DIR}/Qt5Concurrent.dll ${QT_BINARY_DIR}/Qt5OpenGL.dll ${QT_BINARY_DIR}/Qt5PrintSupport.dll ${QT_BINARY_DIR}/Qt5Svg.dll ${QT_BINARY_DIR}/Qt5WinExtras.dll DESTINATION bin) install(FILES ${QT_BINARY_DIR}/../lib/qt5/plugins/platforms/qminimal.dll ${QT_BINARY_DIR}/../lib/qt5/plugins/platforms/qwindows.dll DESTINATION bin/platforms) install(FILES ${QT_BINARY_DIR}/../lib/qt5/plugins/printsupport/windowsprintersupport.dll DESTINATION bin/printsupport) install(FILES ${QT_BINARY_DIR}/../lib/qt5/plugins/imageformats/qgif.dll ${QT_BINARY_DIR}/../lib/qt5/plugins/imageformats/qicns.dll ${QT_BINARY_DIR}/../lib/qt5/plugins/imageformats/qico.dll ${QT_BINARY_DIR}/../lib/qt5/plugins/imageformats/qjpeg.dll ${QT_BINARY_DIR}/../lib/qt5/plugins/imageformats/qsvg.dll ${QT_BINARY_DIR}/../lib/qt5/plugins/imageformats/qtga.dll ${QT_BINARY_DIR}/../lib/qt5/plugins/imageformats/qtiff.dll ${QT_BINARY_DIR}/../lib/qt5/plugins/imageformats/qwbmp.dll ${QT_BINARY_DIR}/../lib/qt5/plugins/imageformats/qwebp.dll DESTINATION bin/imageformats) install(FILES ${QT_BINARY_DIR}/../lib/qt5/plugins/styles/qwindowsvistastyle.dll DESTINATION bin/styles) install(FILES ${QT_BINARY_DIR}/../lib/qt5/plugins/iconengines/qsvgicon.dll DESTINATION bin/iconengines) else() install(FILES ${runtime} ${QT_BINARY_DIR}/QtCore4.dll ${QT_BINARY_DIR}/QtGui4.dll ${QT_BINARY_DIR}/QtNetwork4.dll ${QT_PLUGINS_DIR}/imageformats/qgif4.dll ${QT_PLUGINS_DIR}/imageformats/qico4.dll ${QT_PLUGINS_DIR}/imageformats/qmng4.dll ${QT_PLUGINS_DIR}/imageformats/qsvg4.dll ${QT_PLUGINS_DIR}/imageformats/qtga4.dll ${QT_PLUGINS_DIR}/imageformats/qtiff4.dll DESTINATION bin) endif() endif() else() # needed by rpm set(CPACK_SET_DESTDIR "ON") endif() FILE(READ "${TOP_CMAKE_PATH}/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_PROJECT}-${LYX_INSTALL_SUFFIX}") # We depend on python scripting set(CPACK_DEBIAN_PACKAGE_DEPENDS "python (>= 2.6)") # use dpkg-shlibdeps to generate additional info for package dependency list. set(CPACK_DEBIAN_PACKAGE_RELEASE ${LYX_PACKAGE_RELEASE}) set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set(CPACK_DEBIAN_PACKAGE_DEBUG ON) # # for the next ones, cpack insists on data with values in some file set(CPACK_PACKAGE_DESCRIPTION_FILE "${TOP_CMAKE_PATH}/LyX_description.txt") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING") # Use the revision number saved in ${LYX_PACKAGE_RELEASE} # as the release in rpm-package-build. # This way we maycan omit the otherwise needed "--force" parameter when # installing from that rpm package. set(CPACK_RPM_PACKAGE_RELEASE ${LYX_PACKAGE_RELEASE}) set(CPACK_PACKAGE_VERSION_PATCH ${LYX_REVISION_VERSION}) # 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 # sources set(CPACK_SOURCE_INSTALLED_DIRECTORIES "${TOP_SRC_DIR};/") # http://www.mail-archive.com/cmake@cmake.org/msg33720.html set(CPACK_STRIP_FILES 1) # Finaly give some hints about files not to be included in source package SET(CPACK_SOURCE_IGNORE_FILES "/CVS/" "/\\\\.svn/" "/\\\\.bzr/" "/\\\\.hg/" "/\\\\.git/" "/\\\\.project$" "/\\\\.cproject$" "/\\\\.history$" "/\\\\.gitignore$" "/\\\\.gitattributes$" "\\\\.#" "\\\\.swp$" "\\\\.my$" "\\\\.pyc$" "\\\\.patch$" "~$" "/#" "/_CPack_Packages/" "/CMakeCache.txt$" "/CPackSourceConfig\\\\.cmake$" "/configCompiler\\\\.h$" "/install_manifest\\\\.txt$" "/cmake_install\\\\.cmake$" "/POTFILES" "\\\\.tar\\\\.gz$" "\\\\.tar\\\\.bz2$" "\\\\.tar\\\\.Z$" "\\\\.deb$" "\\\\.rpm$" "\\\\.rej$" "\\\\.orig$" "/core$" "/CMakeFiles/" "/Makefile\\\\.in$" "/Makefile$" "/autom4te\\\\.cache/" "/\\\\.deps/" "/build/" "/attic/" "/HTML/" "/lyx-2\\\\." "/expectedTestFailures$" "/MergedManuals.lyx$" ) if(LYX_CPACK) include(CPack) endif() #Now it is possible to create some packages # cd # 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 # 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 #