Mercurial > irccd
diff cmake/IrccdPackage.cmake @ 0:1158cffe5a5e
Initial import
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 08 Feb 2016 16:43:14 +0100 |
parents | |
children | af9b35bf1585 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmake/IrccdPackage.cmake Mon Feb 08 16:43:14 2016 +0100 @@ -0,0 +1,104 @@ +# +# CPackConfing.cmake -- CMake build system for irccd +# +# Copyright (c) 2013-2016 David Demelier <markand@malikania.fr> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +set(CPACK_SOURCE_PACKAGE_FILE_NAME "irccd-${IRCCD_VERSION}") +set(CPACK_SOURCE_GENERATOR "TXZ") +set(CPACK_SOURCE_IGNORE_FILES ".hg") + +# +# Define the binary package name. +# ------------------------------------------------------------------- +# + +if (WIN32) + set(PKGSYS "Windows") + set(PKGSUFFIX "exe") +endif () + +if (IRCCD_64BITS) + set(PKGARCH "amd64") +else () + set(PKGARCH "x86") +endif () + +# +# Create the QtIFW hierarchy. +# ------------------------------------------------------------------- +# + +# Custom package_ifw on Windows +if (IRCCD_PACKAGE) + set(CONFDIR ${CMAKE_BINARY_DIR}/installer/config) + set(PKGDIR ${CMAKE_BINARY_DIR}/installer/packages) + set(PKGNAME "irccd-${IRCCD_VERSION}-${PKGSYS}-${PKGARCH}.${PKGSUFFIX}") + + # Configure some QtIFW files and their meta packages. + file(COPY cmake/installer/LICENSE DESTINATION ${PKGDIR}/base/meta) + + # QtIFW configuration file + configure_file(cmake/installer/config/config.xml.in ${CONFDIR}/config.xml) + + # Meta packages + configure_file(cmake/installer/packages/meta-programs.xml.in ${PKGDIR}/base/meta/package.xml) + configure_file(cmake/installer/packages/meta-plugins.xml.in ${PKGDIR}/plugins/meta/package.xml) + + # Irccd, irccdctl and docs + file( + MAKE_DIRECTORY + ${PKGDIR}/base.irccd/data/${WITH_BINDIR} + ${PKGDIR}/base.irccdctl/data/${WITH_BINDIR} + ${PKGDIR}/docs/data/${WITH_DOCDIR} + ) + + configure_file(cmake/installer/packages/irccd.xml.in ${PKGDIR}/base.irccd/meta/package.xml) + configure_file(cmake/installer/packages/irccd.xml.in ${PKGDIR}/base.irccdctl/meta/package.xml) + configure_file(cmake/installer/packages/docs.xml.in ${PKGDIR}/docs/meta/package.xml) + + # Main dependencies. + set(dependencies irccd irccdctl docs) + + # Build commands for plugins. + foreach (plugin ${IRCCD_PLUGINS}) + list(APPEND dependencies plugin-${plugin}) + file(MAKE_DIRECTORY ${PKGDIR}/plugins.${plugin}/data/${WITH_PLUGINDIR}) + set(IRCCD_PLUGIN_NAME ${plugin}) + configure_file(cmake/installer/packages/plugin.xml.in ${PKGDIR}/plugins.${plugin}/meta/package.xml) + list( + APPEND + PLUGIN_COMMANDS + COMMAND ${CMAKE_COMMAND} -E copy ${IRCCD_FAKEDIR}/${WITH_PLUGINDIR}/${plugin}.js ${PKGDIR}/plugins.${plugin}/data/${WITH_PLUGINDIR} + ) + endforeach () + + # Target for building the package. + add_custom_target( + package_ifw + ${PLUGIN_COMMANDS} + COMMAND + ${CMAKE_COMMAND} -E copy $<TARGET_FILE:irccd> ${PKGDIR}/base.irccd/data/${WITH_BINDIR} + COMMAND + ${CMAKE_COMMAND} -E copy $<TARGET_FILE:irccdctl> ${PKGDIR}/base.irccdctl/data/${WITH_BINDIR} + COMMAND + ${CMAKE_COMMAND} -E copy_directory ${IRCCD_FAKEDIR}/${WITH_DOCDIR} ${PKGDIR}/docs/data/${WITH_DOCDIR} + COMMAND + ${QtIFW_CREATOR} -c ${CONFDIR}/config.xml -p ${PKGDIR} ${CMAKE_BINARY_DIR}/${PKGNAME} + COMMENT "Generating ${CMAKE_BINARY_DIR}/${PKGNAME}" + DEPENDS ${dependencies} + VERBATIM + ) +endif ()