diff --git a/.gitattributes b/.gitattributes index dafb2fec..3a1e636a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -15,6 +15,7 @@ *.txt text *.in text *.rst text +*.nsh text # Declare files that will always have CRLF line endings on checkout. *.sln text eol=crlf diff --git a/CMakeLists.txt b/CMakeLists.txt index d5a9ac93..9a43765c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -107,7 +107,7 @@ endif() #----------------------------------------------------------------------------- include(Utilities) include(CompilerChecks) - +include(InstallRequiredSystemLibraries) #----------------------------------------------------------------------------- # check for package config @@ -266,3 +266,48 @@ endif() #add_subdirectory (third_party) #add_subdirectory (windows) #add_subdirectory (Windows_extra) + +# +# set CPack packaging options +# + +# needed for windows NSIS installer +if (CMAKE_SIZEOF_VOID_P MATCHES "8") + set(ARCH64 1) + set(ARCHSUFFIX "64") +else() + set(ARCH64 0) + set(ARCHSUFFIX "") +endif() + +if(WIN32) + file(GLOB HDF4_DLLS "${HDF4_LIBRARY_DIRS}/../bin/*.dll") + # for some reason HDF5_LIBRARY_DIRS is blank + file(GLOB HDF5_DLLS "${HDF5_INCLUDE_DIRS}/../bin/*.dll") + file(GLOB_RECURSE MXML_DLLS "${MXML_LIBRARY_DIRS}/*.dll") + install(FILES ${HDF4_DLLS} ${HDF5_DLLS} ${MXML_DLLS} DESTINATION bin COMPONENT Runtime) + INSTALL(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION bin COMPONENT Runtime) +endif() + +file(TO_NATIVE_PATH ${PROJECT_SOURCE_DIR} PROJECT_SOURCE_DIR_NATIVE) +file(TO_NATIVE_PATH ${PROJECT_BINARY_DIR} PROJECT_BINARY_DIR_NATIVE) +string(REPLACE "\\" "\\\\" PROJECT_SOURCE_DIR_NATIVE_D ${PROJECT_SOURCE_DIR_NATIVE}) +string(REPLACE "\\" "\\\\" PROJECT_BINARY_DIR_NATIVE_D ${PROJECT_BINARY_DIR_NATIVE}) + +configure_file("${PROJECT_SOURCE_DIR}/CPackOptions.cmake.in" "${PROJECT_BINARY_DIR}/CPackOptions.cmake" @ONLY) +set (CPACK_PROJECT_CONFIG_FILE "${PROJECT_BINARY_DIR}/CPackOptions.cmake") +set (CPACK_GENERATOR TGZ) # not use ZIP on UNIX as problem with symlinks +set (CPACK_SOURCE_GENERATOR TGZ) # not use ZIP on UNIX as problem with symlinks +if(WIN32) + set (CPACK_GENERATOR ${CPACK_GENERATOR};ZIP;NSIS) + set (CPACK_SOURCE_GENERATOR ${CPACK_SOURCE_GENERATOR};ZIP) +elseif(APPLE) + set (CPACK_GENERATOR ${CPACK_GENERATOR};PackageMaker) +elseif(CYGWIN) + set (CPACK_GENERATOR ${CPACK_GENERATOR};CygwinBinary) + set (CPACK_SOURCE_GENERATOR ${CPACK_SOURCE_GENERATOR};CygwinSource) +elseif(UNIX) + set (CPACK_GENERATOR ${CPACK_GENERATOR};DEB;RPM) +endif() +# Include of CPack must always be last +include(CPack) diff --git a/CPackOptions.cmake.in b/CPackOptions.cmake.in index b862a8e9..55f24910 100644 --- a/CPackOptions.cmake.in +++ b/CPackOptions.cmake.in @@ -42,9 +42,9 @@ endif() set (CPACK_PACKAGE_NAME "NeXus") set (CPACK_PACKAGE_VENDOR "NeXus International Advisory Committee") -set (CPACK_PACKAGE_VERSION_MAJOR "4") -set (CPACK_PACKAGE_VERSION_MINOR "3") -set (CPACK_PACKAGE_VERSION_PATCH "0") +set (CPACK_PACKAGE_VERSION_MAJOR "@NEXUS_VERSION_MAJOR@") +set (CPACK_PACKAGE_VERSION_MINOR "@NEXUS_VERSION_MINOR@") +set (CPACK_PACKAGE_VERSION_PATCH "@NEXUS_VERSION_PATCH@") set (CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set (CPACK_PACKAGE_CONTACT "NeXus Developers ") 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 set (CPACK_SOURCE_PACKAGE_FILE_NAME "nexus-source-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set (CPACK_PACKAGE_INSTALL_DIRECTORY "NeXus Data Format") -set (CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/InstallerBits/Licences/COPYING.txt") +set (CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/InstallerBits/Licences/COPYING.rtf") set (CPACK_RESOURCE_FILE_README "@PROJECT_SOURCE_DIR@/cmake_include/nexus_description.txt") set (CPACK_RESOURCE_FILE_WELCOME "@PROJECT_SOURCE_DIR@/cmake_include/WELCOME.txt") set (CPACK_PACKAGE_ICON "@PROJECT_SOURCE_DIR@/InstallerBits/nexus.ico") @@ -129,13 +129,14 @@ if (${CPACK_GENERATOR} STREQUAL "NSIS") set(CPACK_NSIS_URL_INFO_ABOUT "http://www.nexusformat.org/") set(CPACK_NSIS_CONTACT "${CPACK_PACKAGE_CONTACT}") set(CPACK_NSIS_MODIFY_PATH OFF) - set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "!include '@PROJECT_SOURCE_DIR_NATIVE@\nsis_install.nsh'") - set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "!include '@PROJECT_SOURCE_DIR_NATIVE@\nsis_uninstall.nsh'") +## set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "!include '@PROJECT_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nsis_install.nsh'") +## set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "!include '@PROJECT_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nsis_uninstall.nsh'") # set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\MyExecutable.exe") set(CPACK_PACKAGE_ICON "@PROJECT_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nexus.ico") set(CPACK_NSIS_MUI_ICON "@PROJECT_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nexus.ico") set(CPACK_NSIS_MUI_UNIICON "@PROJECT_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nexus.ico") - set(CPACK_NSIS_MENU_LINKS "http://www.nexusformat.org/" "NeXus Web Site" "bin\\nxvalidate.bat" "NXvalidate") +# set(CPACK_NSIS_MENU_LINKS "http://www.nexusformat.org/" "NeXus Web Site" "bin\\nxvalidate.bat" "NXvalidate") + set(CPACK_NSIS_MENU_LINKS "http://www.nexusformat.org/" "NeXus Web Site") if (@ARCH64@) set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") set(CPACK_NSIS_DEFINES "!define NEXUSDIRENVSUFFIX 64") @@ -158,7 +159,8 @@ if(WIN32) else() set(NXVALIDATE nxvalidate) endif() -set(CPACK_CREATE_DESKTOP_LINKS "nxbrowse" ${NXVALIDATE}) +#set(CPACK_CREATE_DESKTOP_LINKS "nxbrowse" "nxbrowse") + set(CPACK_PACKAGE_EXECUTABLES "nxbrowse" "NXbrowse") #cpack_add_component(Runtime diff --git a/InstallerBits/nsis_install.nsh b/InstallerBits/nsis_install.nsh new file mode 100644 index 00000000..586eb219 --- /dev/null +++ b/InstallerBits/nsis_install.nsh @@ -0,0 +1,9 @@ +;;;;;;;;; !include "EnvVarUpdate.nsh" +${EnvVarUpdate} $0 "NEXUSDIR" "A" "HKLM" "$INSTDIR" +${EnvVarUpdate} $0 "NEXUSDIR${NEXUSDIRENVSUFFIX}" "A" "HKLM" "$INSTDIR" +${EnvVarUpdate} $0 "PATH" "A" "HKLM" "$INSTDIR\bin" +${EnvVarUpdate} $0 "LIB" "A" "HKLM" "$INSTDIR\lib" +${EnvVarUpdate} $0 "INCLUDE" "A" "HKLM" "$INSTDIR\include" +${EnvVarUpdate} $0 "PYTHONPATH" "A" "HKLM" "$INSTDIR\python" +${EnvVarUpdate} $0 "PYTHONPATH" "A" "HKLM" "$INSTDIR\bin" +${EnvVarUpdate} $0 "CLASSPATH" "A" "HKLM" "$INSTDIR\java\jnexus.jar" \ No newline at end of file diff --git a/InstallerBits/nsis_uninstall.nsh b/InstallerBits/nsis_uninstall.nsh new file mode 100644 index 00000000..8da92bed --- /dev/null +++ b/InstallerBits/nsis_uninstall.nsh @@ -0,0 +1,9 @@ +;;;;;;;; !include "EnvVarUpdate.nsh" +${un.EnvVarUpdate} $0 "NEXUSDIR" "R" "HKLM" "$INSTDIR" +${un.EnvVarUpdate} $0 "NEXUSDIR${NEXUSDIRENVSUFFIX}" "R" "HKLM" "$INSTDIR" +${un.EnvVarUpdate} $0 "PATH" "R" "HKLM" "$INSTDIR\bin" +${un.EnvVarUpdate} $0 "LIB" "R" "HKLM" "$INSTDIR\lib" +${un.EnvVarUpdate} $0 "INCLUDE" "R" "HKLM" "$INSTDIR\include" +${un.EnvVarUpdate} $0 "PYTHONPATH" "R" "HKLM" "$INSTDIR\python" +${un.EnvVarUpdate} $0 "PYTHONPATH" "R" "HKLM" "$INSTDIR\bin" +${un.EnvVarUpdate} $0 "CLASSPATH" "R" "HKLM" "$INSTDIR\java\jnexus.jar" \ No newline at end of file