diff cmake/IrccdPackage.cmake @ 256:f04acabfbbe5

CMake: switch to NSIS with various fixes, closes #533
author David Demelier <markand@malikania.fr>
date Mon, 12 Sep 2016 17:54:27 +0200
parents 6635b9187d71
children 08a041011599
line wrap: on
line diff
--- a/cmake/IrccdPackage.cmake	Thu Sep 08 13:11:10 2016 +0200
+++ b/cmake/IrccdPackage.cmake	Mon Sep 12 17:54:27 2016 +0200
@@ -20,91 +20,28 @@
 set(CPACK_SOURCE_GENERATOR TXZ ZIP)
 set(CPACK_SOURCE_IGNORE_FILES "/[.]hg" "/CMakeLists[.]txt[.]user")
 
+set(CPACK_PACKAGE_NAME "irccd")
+set(CPACK_PACKAGE_VENDOR "malikania")
+set(CPACK_PACKAGE_VERSION_MAJOR ${IRCCD_VERSION_MAJOR})
+set(CPACK_PACKAGE_VERSION_MINOR ${IRCCD_VERSION_MINOR})
+set(CPACK_PACKAGE_VERSION_PATCH ${IRCCD_VERSION_PATCH})
+set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE.md)
+
 #
-# Define the binary package name.
+# Installer hierarchy.
 # -------------------------------------------------------------------
 #
+#   -- Applications         (Group: Applications)
+#       | -- irccd          (Component: irccd)
+#       | -- irccdctl       (Component: irccdctl)
+#   -- Development          (Group: Development)
+#       | -- C++ Headers    (Component: headers)
+#   -- Plugins              (Group: Plugins)
+#       | -- *              (Component: *)
+#
+# Replace * with the appropriate plugin name.
+#
 
 if (WIN32)
-    set(PKGSYS "Windows")
-    set(PKGSUFFIX "exe")
-
-    if (IRCCD_64BITS)
-        set(PKGTARGETDIR "C:/Program Files/irccd-${IRCCD_VERSION}")
-    else ()
-        set(PKGTARGETDIR "C:/Program Files (x86)/irccd-${IRCCD_VERSION}")
-    endif ()
-endif ()
-
-if (IRCCD_64BITS)
-    set(PKGARCH "amd64")
-else ()
-    set(PKGARCH "x86")
+    set(CPACK_GENERATOR "NSIS")
 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 all-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 ()