Mercurial > irccd
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 () |