Skip to content

Commit 2c1a019

Browse files
Merge pull request #413 from nexusformat/Ticket412_CPack_Install
Ticket412 CPack install. Looks good for me
2 parents 6fa9d54 + 7144746 commit 2c1a019

File tree

5 files changed

+75
-9
lines changed

5 files changed

+75
-9
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*.txt text
1616
*.in text
1717
*.rst text
18+
*.nsh text
1819

1920
# Declare files that will always have CRLF line endings on checkout.
2021
*.sln text eol=crlf

CMakeLists.txt

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ endif()
107107
#-----------------------------------------------------------------------------
108108
include(Utilities)
109109
include(CompilerChecks)
110-
110+
include(InstallRequiredSystemLibraries)
111111

112112
#-----------------------------------------------------------------------------
113113
# check for package config
@@ -266,3 +266,48 @@ endif()
266266
#add_subdirectory (third_party)
267267
#add_subdirectory (windows)
268268
#add_subdirectory (Windows_extra)
269+
270+
#
271+
# set CPack packaging options
272+
#
273+
274+
# needed for windows NSIS installer
275+
if (CMAKE_SIZEOF_VOID_P MATCHES "8")
276+
set(ARCH64 1)
277+
set(ARCHSUFFIX "64")
278+
else()
279+
set(ARCH64 0)
280+
set(ARCHSUFFIX "")
281+
endif()
282+
283+
if(WIN32)
284+
file(GLOB HDF4_DLLS "${HDF4_LIBRARY_DIRS}/../bin/*.dll")
285+
# for some reason HDF5_LIBRARY_DIRS is blank
286+
file(GLOB HDF5_DLLS "${HDF5_INCLUDE_DIRS}/../bin/*.dll")
287+
file(GLOB_RECURSE MXML_DLLS "${MXML_LIBRARY_DIRS}/*.dll")
288+
install(FILES ${HDF4_DLLS} ${HDF5_DLLS} ${MXML_DLLS} DESTINATION bin COMPONENT Runtime)
289+
INSTALL(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION bin COMPONENT Runtime)
290+
endif()
291+
292+
file(TO_NATIVE_PATH ${PROJECT_SOURCE_DIR} PROJECT_SOURCE_DIR_NATIVE)
293+
file(TO_NATIVE_PATH ${PROJECT_BINARY_DIR} PROJECT_BINARY_DIR_NATIVE)
294+
string(REPLACE "\\" "\\\\" PROJECT_SOURCE_DIR_NATIVE_D ${PROJECT_SOURCE_DIR_NATIVE})
295+
string(REPLACE "\\" "\\\\" PROJECT_BINARY_DIR_NATIVE_D ${PROJECT_BINARY_DIR_NATIVE})
296+
297+
configure_file("${PROJECT_SOURCE_DIR}/CPackOptions.cmake.in" "${PROJECT_BINARY_DIR}/CPackOptions.cmake" @ONLY)
298+
set (CPACK_PROJECT_CONFIG_FILE "${PROJECT_BINARY_DIR}/CPackOptions.cmake")
299+
set (CPACK_GENERATOR TGZ) # not use ZIP on UNIX as problem with symlinks
300+
set (CPACK_SOURCE_GENERATOR TGZ) # not use ZIP on UNIX as problem with symlinks
301+
if(WIN32)
302+
set (CPACK_GENERATOR ${CPACK_GENERATOR};ZIP;NSIS)
303+
set (CPACK_SOURCE_GENERATOR ${CPACK_SOURCE_GENERATOR};ZIP)
304+
elseif(APPLE)
305+
set (CPACK_GENERATOR ${CPACK_GENERATOR};PackageMaker)
306+
elseif(CYGWIN)
307+
set (CPACK_GENERATOR ${CPACK_GENERATOR};CygwinBinary)
308+
set (CPACK_SOURCE_GENERATOR ${CPACK_SOURCE_GENERATOR};CygwinSource)
309+
elseif(UNIX)
310+
set (CPACK_GENERATOR ${CPACK_GENERATOR};DEB;RPM)
311+
endif()
312+
# Include of CPack must always be last
313+
include(CPack)

CPackOptions.cmake.in

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ endif()
4242

4343
set (CPACK_PACKAGE_NAME "NeXus")
4444
set (CPACK_PACKAGE_VENDOR "NeXus International Advisory Committee")
45-
set (CPACK_PACKAGE_VERSION_MAJOR "4")
46-
set (CPACK_PACKAGE_VERSION_MINOR "3")
47-
set (CPACK_PACKAGE_VERSION_PATCH "0")
45+
set (CPACK_PACKAGE_VERSION_MAJOR "@NEXUS_VERSION_MAJOR@")
46+
set (CPACK_PACKAGE_VERSION_MINOR "@NEXUS_VERSION_MINOR@")
47+
set (CPACK_PACKAGE_VERSION_PATCH "@NEXUS_VERSION_PATCH@")
4848
set (CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
4949
set (CPACK_PACKAGE_CONTACT "NeXus Developers <nexus-tech@nexusformat.org>")
5050
set (CPACK_PACKAGE_DESCRIPTION_FILE "@PROJECT_SOURCE_DIR@/cmake_include/nexus_description.txt")
@@ -53,7 +53,7 @@ set (CPACK_PACKAGE_FILE_NAME "nexus-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKA
5353
set (CPACK_SOURCE_PACKAGE_FILE_NAME "nexus-source-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
5454
set (CPACK_PACKAGE_INSTALL_DIRECTORY "NeXus Data Format")
5555

56-
set (CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/InstallerBits/Licences/COPYING.txt")
56+
set (CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/InstallerBits/Licences/COPYING.rtf")
5757
set (CPACK_RESOURCE_FILE_README "@PROJECT_SOURCE_DIR@/cmake_include/nexus_description.txt")
5858
set (CPACK_RESOURCE_FILE_WELCOME "@PROJECT_SOURCE_DIR@/cmake_include/WELCOME.txt")
5959
set (CPACK_PACKAGE_ICON "@PROJECT_SOURCE_DIR@/InstallerBits/nexus.ico")
@@ -129,13 +129,14 @@ if (${CPACK_GENERATOR} STREQUAL "NSIS")
129129
set(CPACK_NSIS_URL_INFO_ABOUT "http://www.nexusformat.org/")
130130
set(CPACK_NSIS_CONTACT "${CPACK_PACKAGE_CONTACT}")
131131
set(CPACK_NSIS_MODIFY_PATH OFF)
132-
set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "!include '@PROJECT_SOURCE_DIR_NATIVE@\nsis_install.nsh'")
133-
set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "!include '@PROJECT_SOURCE_DIR_NATIVE@\nsis_uninstall.nsh'")
132+
## set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "!include '@PROJECT_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nsis_install.nsh'")
133+
## set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "!include '@PROJECT_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nsis_uninstall.nsh'")
134134
# set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\MyExecutable.exe")
135135
set(CPACK_PACKAGE_ICON "@PROJECT_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nexus.ico")
136136
set(CPACK_NSIS_MUI_ICON "@PROJECT_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nexus.ico")
137137
set(CPACK_NSIS_MUI_UNIICON "@PROJECT_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nexus.ico")
138-
set(CPACK_NSIS_MENU_LINKS "http://www.nexusformat.org/" "NeXus Web Site" "bin\\nxvalidate.bat" "NXvalidate")
138+
# set(CPACK_NSIS_MENU_LINKS "http://www.nexusformat.org/" "NeXus Web Site" "bin\\nxvalidate.bat" "NXvalidate")
139+
set(CPACK_NSIS_MENU_LINKS "http://www.nexusformat.org/" "NeXus Web Site")
139140
if (@ARCH64@)
140141
set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
141142
set(CPACK_NSIS_DEFINES "!define NEXUSDIRENVSUFFIX 64")
@@ -158,7 +159,8 @@ if(WIN32)
158159
else()
159160
set(NXVALIDATE nxvalidate)
160161
endif()
161-
set(CPACK_CREATE_DESKTOP_LINKS "nxbrowse" ${NXVALIDATE})
162+
#set(CPACK_CREATE_DESKTOP_LINKS "nxbrowse" "nxbrowse")
163+
162164
set(CPACK_PACKAGE_EXECUTABLES "nxbrowse" "NXbrowse")
163165

164166
#cpack_add_component(Runtime

InstallerBits/nsis_install.nsh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
;;;;;;;;; !include "EnvVarUpdate.nsh"
2+
${EnvVarUpdate} $0 "NEXUSDIR" "A" "HKLM" "$INSTDIR"
3+
${EnvVarUpdate} $0 "NEXUSDIR${NEXUSDIRENVSUFFIX}" "A" "HKLM" "$INSTDIR"
4+
${EnvVarUpdate} $0 "PATH" "A" "HKLM" "$INSTDIR\bin"
5+
${EnvVarUpdate} $0 "LIB" "A" "HKLM" "$INSTDIR\lib"
6+
${EnvVarUpdate} $0 "INCLUDE" "A" "HKLM" "$INSTDIR\include"
7+
${EnvVarUpdate} $0 "PYTHONPATH" "A" "HKLM" "$INSTDIR\python"
8+
${EnvVarUpdate} $0 "PYTHONPATH" "A" "HKLM" "$INSTDIR\bin"
9+
${EnvVarUpdate} $0 "CLASSPATH" "A" "HKLM" "$INSTDIR\java\jnexus.jar"

InstallerBits/nsis_uninstall.nsh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
;;;;;;;; !include "EnvVarUpdate.nsh"
2+
${un.EnvVarUpdate} $0 "NEXUSDIR" "R" "HKLM" "$INSTDIR"
3+
${un.EnvVarUpdate} $0 "NEXUSDIR${NEXUSDIRENVSUFFIX}" "R" "HKLM" "$INSTDIR"
4+
${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" "$INSTDIR\bin"
5+
${un.EnvVarUpdate} $0 "LIB" "R" "HKLM" "$INSTDIR\lib"
6+
${un.EnvVarUpdate} $0 "INCLUDE" "R" "HKLM" "$INSTDIR\include"
7+
${un.EnvVarUpdate} $0 "PYTHONPATH" "R" "HKLM" "$INSTDIR\python"
8+
${un.EnvVarUpdate} $0 "PYTHONPATH" "R" "HKLM" "$INSTDIR\bin"
9+
${un.EnvVarUpdate} $0 "CLASSPATH" "R" "HKLM" "$INSTDIR\java\jnexus.jar"

0 commit comments

Comments
 (0)