comparison 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
comparison
equal deleted inserted replaced
255:233366c94ddb 256:f04acabfbbe5
18 18
19 set(CPACK_SOURCE_PACKAGE_FILE_NAME "irccd-${IRCCD_VERSION}") 19 set(CPACK_SOURCE_PACKAGE_FILE_NAME "irccd-${IRCCD_VERSION}")
20 set(CPACK_SOURCE_GENERATOR TXZ ZIP) 20 set(CPACK_SOURCE_GENERATOR TXZ ZIP)
21 set(CPACK_SOURCE_IGNORE_FILES "/[.]hg" "/CMakeLists[.]txt[.]user") 21 set(CPACK_SOURCE_IGNORE_FILES "/[.]hg" "/CMakeLists[.]txt[.]user")
22 22
23 set(CPACK_PACKAGE_NAME "irccd")
24 set(CPACK_PACKAGE_VENDOR "malikania")
25 set(CPACK_PACKAGE_VERSION_MAJOR ${IRCCD_VERSION_MAJOR})
26 set(CPACK_PACKAGE_VERSION_MINOR ${IRCCD_VERSION_MINOR})
27 set(CPACK_PACKAGE_VERSION_PATCH ${IRCCD_VERSION_PATCH})
28 set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE.md)
29
23 # 30 #
24 # Define the binary package name. 31 # Installer hierarchy.
25 # ------------------------------------------------------------------- 32 # -------------------------------------------------------------------
33 #
34 # -- Applications (Group: Applications)
35 # | -- irccd (Component: irccd)
36 # | -- irccdctl (Component: irccdctl)
37 # -- Development (Group: Development)
38 # | -- C++ Headers (Component: headers)
39 # -- Plugins (Group: Plugins)
40 # | -- * (Component: *)
41 #
42 # Replace * with the appropriate plugin name.
26 # 43 #
27 44
28 if (WIN32) 45 if (WIN32)
29 set(PKGSYS "Windows") 46 set(CPACK_GENERATOR "NSIS")
30 set(PKGSUFFIX "exe")
31
32 if (IRCCD_64BITS)
33 set(PKGTARGETDIR "C:/Program Files/irccd-${IRCCD_VERSION}")
34 else ()
35 set(PKGTARGETDIR "C:/Program Files (x86)/irccd-${IRCCD_VERSION}")
36 endif ()
37 endif () 47 endif ()
38
39 if (IRCCD_64BITS)
40 set(PKGARCH "amd64")
41 else ()
42 set(PKGARCH "x86")
43 endif ()
44
45 #
46 # Create the QtIFW hierarchy.
47 # -------------------------------------------------------------------
48 #
49
50 # Custom package_ifw on Windows
51 if (IRCCD_PACKAGE)
52 set(CONFDIR ${CMAKE_BINARY_DIR}/installer/config)
53 set(PKGDIR ${CMAKE_BINARY_DIR}/installer/packages)
54 set(PKGNAME "irccd-${IRCCD_VERSION}-${PKGSYS}-${PKGARCH}.${PKGSUFFIX}")
55
56 # Configure some QtIFW files and their meta packages.
57 file(COPY cmake/installer/LICENSE DESTINATION ${PKGDIR}/base/meta)
58
59 # QtIFW configuration file
60 configure_file(cmake/installer/config/config.xml.in ${CONFDIR}/config.xml)
61
62 # Meta packages
63 configure_file(cmake/installer/packages/meta-programs.xml.in ${PKGDIR}/base/meta/package.xml)
64 configure_file(cmake/installer/packages/meta-plugins.xml.in ${PKGDIR}/plugins/meta/package.xml)
65
66 # Irccd, irccdctl and docs
67 file(
68 MAKE_DIRECTORY
69 ${PKGDIR}/base.irccd/data/${WITH_BINDIR}
70 ${PKGDIR}/base.irccdctl/data/${WITH_BINDIR}
71 ${PKGDIR}/docs/data/${WITH_DOCDIR}
72 )
73
74 configure_file(cmake/installer/packages/irccd.xml.in ${PKGDIR}/base.irccd/meta/package.xml)
75 configure_file(cmake/installer/packages/irccd.xml.in ${PKGDIR}/base.irccdctl/meta/package.xml)
76 configure_file(cmake/installer/packages/docs.xml.in ${PKGDIR}/docs/meta/package.xml)
77
78 # Main dependencies.
79 set(dependencies irccd irccdctl all-docs)
80
81 # Build commands for plugins.
82 foreach (plugin ${IRCCD_PLUGINS})
83 list(APPEND dependencies plugin-${plugin})
84 file(MAKE_DIRECTORY ${PKGDIR}/plugins.${plugin}/data/${WITH_PLUGINDIR})
85 set(IRCCD_PLUGIN_NAME ${plugin})
86 configure_file(cmake/installer/packages/plugin.xml.in ${PKGDIR}/plugins.${plugin}/meta/package.xml)
87 list(
88 APPEND
89 PLUGIN_COMMANDS
90 COMMAND ${CMAKE_COMMAND} -E copy ${IRCCD_FAKEDIR}/${WITH_PLUGINDIR}/${plugin}.js ${PKGDIR}/plugins.${plugin}/data/${WITH_PLUGINDIR}
91 )
92 endforeach ()
93
94 # Target for building the package.
95 add_custom_target(
96 package_ifw
97 ${PLUGIN_COMMANDS}
98 COMMAND
99 ${CMAKE_COMMAND} -E copy $<TARGET_FILE:irccd> ${PKGDIR}/base.irccd/data/${WITH_BINDIR}
100 COMMAND
101 ${CMAKE_COMMAND} -E copy $<TARGET_FILE:irccdctl> ${PKGDIR}/base.irccdctl/data/${WITH_BINDIR}
102 COMMAND
103 ${CMAKE_COMMAND} -E copy_directory ${IRCCD_FAKEDIR}/${WITH_DOCDIR} ${PKGDIR}/docs/data/${WITH_DOCDIR}
104 COMMAND
105 ${QtIFW_CREATOR} -c ${CONFDIR}/config.xml -p ${PKGDIR} ${CMAKE_BINARY_DIR}/${PKGNAME}
106 COMMENT "Generating ${CMAKE_BINARY_DIR}/${PKGNAME}"
107 DEPENDS ${dependencies}
108 VERBATIM
109 )
110 endif ()