From 697e981e84a5c9db1eee24703e669b6fdbeda90a Mon Sep 17 00:00:00 2001 From: Owen Arnold <owen.arnold@stfc.ac.uk> Date: Fri, 13 Apr 2012 15:11:17 +0100 Subject: [PATCH] refs #5088. Pull all the CPack and NSIS code out. . Better to keep this modular --- Code/Mantid/Build/CMake/WindowsNSIS.cmake | 125 +++++++++++++++++++++ Code/Mantid/CMakeLists.txt | 128 +--------------------- 2 files changed, 127 insertions(+), 126 deletions(-) create mode 100644 Code/Mantid/Build/CMake/WindowsNSIS.cmake diff --git a/Code/Mantid/Build/CMake/WindowsNSIS.cmake b/Code/Mantid/Build/CMake/WindowsNSIS.cmake new file mode 100644 index 00000000000..3c7b24b0072 --- /dev/null +++ b/Code/Mantid/Build/CMake/WindowsNSIS.cmake @@ -0,0 +1,125 @@ + #Windows CPACK specifics + set( CPACK_GENERATOR "NSIS" ) + set( CPACK_SET_DESTDIR "ON") + set( CPACK_INSTALL_PREFIX "/") + set( CPACK_PACKAGE_INSTALL_DIRECTORY "Mantid${CPACK_PACKAGE_SUFFIX}") + set( CPACK_NSIS_INSTALL_ROOT "C:\\\\MantidInstall") + + #set( CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON") + set( CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/Images\\\\MantidPlot_Icon_32offset.png" ) + set( CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/Images\\\\MantidPlot_Icon_32offset.ico" ) + set( CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/Images\\\\MantidPlot_Icon_32offset.ico" ) + set( WINDOWS_DEPLOYMENT_TYPE "Release" CACHE STRING "Type of deployment used") + set_property(CACHE WINDOWS_DEPLOYMENT_TYPE PROPERTY STRINGS Release Debug) + mark_as_advanced(WINDOWS_DEPLOYMENT_TYPE) + + #TODO: Tidy this up by excluding .git as well as .svn! + #TODO check destinations are relative to the actual install location. + + #Manually place necessary files and directories + + #python bundle here. + install ( DIRECTORY ${CMAKE_LIBRARY_PATH}/Python27/DLLs DESTINATION bin PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + install ( DIRECTORY ${CMAKE_LIBRARY_PATH}/Python27/Lib DESTINATION bin PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + install ( DIRECTORY ${CMAKE_LIBRARY_PATH}/Python27/Scripts DESTINATION bin PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + install ( FILES ${CMAKE_LIBRARY_PATH}/Python27/python.exe ${CMAKE_LIBRARY_PATH}/Python27/python27.dll DESTINATION bin ) + + #TODO: remove old pyc files on uninstall + + install ( DIRECTORY ${CMAKE_LIBRARY_PATH}/qt_plugins/imageformats DESTINATION plugins/qtplugins PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + install ( FILES ${CMAKE_LIBRARY_PATH}/qt.conf DESTINATION bin ) + + #TODO: put these commands in the associated CMakeLists. + + #Handle includes + install ( DIRECTORY ${CMAKE_INCLUDE_PATH}/boost DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + install ( DIRECTORY ${CMAKE_INCLUDE_PATH}/Poco DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + install ( DIRECTORY ${CMAKE_INCLUDE_PATH}/nexus DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + install ( FILES ${CMAKE_INCLUDE_PATH}/napi.h DESTINATION include ) + install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/Kernel/inc/MantidKernel DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/Geometry/inc/MantidGeometry DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/API/inc/MantidAPI DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/NexusCPP/inc/MantidNexusCPP DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + + #Copy scons directory + install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Installers/WinInstaller/scons-local/ DESTINATION scons-local PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) + #User algorithms + install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/UserAlgorithms/ DESTINATION UserAlgorithms FILES_MATCHING PATTERN "*.h" ) + install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/UserAlgorithms/ DESTINATION UserAlgorithms FILES_MATCHING PATTERN "*.cpp" ) + install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/Framework/UserAlgorithms/build.bat ${CMAKE_CURRENT_SOURCE_DIR}/Framework/UserAlgorithms/createAlg.py ${CMAKE_CURRENT_SOURCE_DIR}/Framework/UserAlgorithms/SConstruct DESTINATION UserAlgorithms ) + install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidKernel.lib" DESTINATION UserAlgorithms) + install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidGeometry.lib" DESTINATION UserAlgorithms) + install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidAPI.lib" DESTINATION UserAlgorithms) + install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidNexusCPP.lib" DESTINATION UserAlgorithms) + install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidDataObjects.lib" DESTINATION UserAlgorithms) + install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidCurveFitting.lib" DESTINATION UserAlgorithms) + install ( FILES ${CMAKE_LIBRARY_PATH}/PocoFoundation.lib ${CMAKE_LIBRARY_PATH}/PocoXML.lib ${CMAKE_LIBRARY_PATH}/boost_date_time-vc100-mt-1_43.lib DESTINATION UserAlgorithms) + + # Copy third party dlls excluding selected Qt ones and debug ones + install ( DIRECTORY ${CMAKE_LIBRARY_PATH}/ DESTINATION bin FILES_MATCHING PATTERN "*.dll" REGEX "(QtDesigner4.dll)|(QtDesignerComponents4.dll)|(QtScript4.dll)|(-gd-)|(d4.dll)|(_d.dll)" EXCLUDE PATTERN ".git" EXCLUDE ) + + #set(CPACK_NSIS_ON_INIT "Exec $INSTDIR\\\\Uninstall.exe") + + #Release deployments do modify enviromental varialbes, other deployments do not. + if(CPACK_PACKAGE_SUFFIX STREQUAL "") + # On install + set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS "Push \\\"MANTIDPATH\\\" + Push \\\"A\\\" + Push \\\"HKCU\\\" + Push \\\"$INSTDIR\\\\bin\\\" + Call EnvVarUpdate + Pop \\\$0 + + Push \\\"PATH\\\" + Push \\\"A\\\" + Push \\\"HKCU\\\" + Push \\\"$INSTDIR\\\\bin\\\" + Call EnvVarUpdate + Pop \\\$0 + + CreateShortCut \\\"$DESKTOP\\\\MantidPlot.lnk\\\" \\\"$INSTDIR\\\\bin\\\\MantidPlot.exe\\\" + + CreateDirectory \\\"$INSTDIR\\\\logs\\\" + + CreateDirectory \\\"$INSTDIR\\\\docs\\\" + ") + # On unistall reverse stages listed above. + set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS + "Push \\\"PATH\\\" + Push \\\"R\\\" + Push \\\"HKCU\\\" + Push \\\"$INSTDIR\\\\bin\\\" + Call un.EnvVarUpdate + Pop \\\$0 + + Push \\\"MANTIDPATH\\\" + Push \\\"R\\\" + Push \\\"HKCU\\\" + Push \\\"$INSTDIR\\\\bin\\\" + Call un.EnvVarUpdate + Pop \\\$0 + + Delete \\\"$DESKTOP\\\\MantidPlot.lnk\\\" + + RMDir \\\"$INSTDIR\\\\logs\\\" + + RMDir \\\"$INSTDIR\\\\docs\\\" + ") + else () + # On install + set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS " + CreateShortCut \\\"$DESKTOP\\\\MantidPlot.lnk\\\" \\\"$INSTDIR\\\\bin\\\\MantidPlot.exe\\\" + + CreateDirectory \\\"$INSTDIR\\\\logs\\\" + + CreateDirectory \\\"$INSTDIR\\\\docs\\\" + ") + # On unistall reverse stages listed above. + set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS " + Delete \\\"$DESKTOP\\\\MantidPlot.lnk\\\" + + RMDir \\\"$INSTDIR\\\\logs\\\" + + RMDir \\\"$INSTDIR\\\\docs\\\" + ") + endif() \ No newline at end of file diff --git a/Code/Mantid/CMakeLists.txt b/Code/Mantid/CMakeLists.txt index 78353d6903c..2ea95c819f8 100644 --- a/Code/Mantid/CMakeLists.txt +++ b/Code/Mantid/CMakeLists.txt @@ -32,7 +32,6 @@ include ( UseSystemQt4 ) ########################################################################### IF(${CMAKE_SYSTEM_NAME} MATCHES "Windows") - if ( NOT THIRD_PARTY ) set ( THIRD_PARTY "${PROJECT_SOURCE_DIR}/../Third_Party" ) endif () @@ -46,132 +45,9 @@ IF(${CMAKE_SYSTEM_NAME} MATCHES "Windows") include ( WindowsSetup ) - #Windows CPACK specifics - set( CPACK_GENERATOR "NSIS" ) - set( CPACK_SET_DESTDIR "ON") - set( CPACK_INSTALL_PREFIX "/") - set( CPACK_PACKAGE_INSTALL_DIRECTORY "Mantid${CPACK_PACKAGE_SUFFIX}") - set( CPACK_NSIS_INSTALL_ROOT "C:\\\\MantidInstall") - set( TARGET_TYPE RUNTIME) - set( CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON") - set( CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/Images\\\\MantidPlot_Icon_32offset.png" ) - set( CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/Images\\\\MantidPlot_Icon_32offset.ico" ) - set( CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/Images\\\\MantidPlot_Icon_32offset.ico" ) - set( WINDOWS_DEPLOYMENT_TYPE "Release" CACHE STRING "Type of deployment used") - set_property(CACHE WINDOWS_DEPLOYMENT_TYPE PROPERTY STRINGS Release Debug) - mark_as_advanced(WINDOWS_DEPLOYMENT_TYPE) - - #TODO: Tidy this up by excluding .git as well as .svn! - #TODO check destinations are relative to the actual install location. - - #Manually place necessary files and directories - - #python bundle here. - install ( DIRECTORY ${CMAKE_LIBRARY_PATH}/Python27/DLLs DESTINATION bin PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - install ( DIRECTORY ${CMAKE_LIBRARY_PATH}/Python27/Lib DESTINATION bin PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - install ( DIRECTORY ${CMAKE_LIBRARY_PATH}/Python27/Scripts DESTINATION bin PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - install ( FILES ${CMAKE_LIBRARY_PATH}/Python27/python.exe ${CMAKE_LIBRARY_PATH}/Python27/python27.dll DESTINATION bin ) - - #TODO: remove old pyc files on uninstall - - install ( DIRECTORY ${CMAKE_LIBRARY_PATH}/qt_plugins/imageformats DESTINATION plugins/qtplugins PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - install ( FILES ${CMAKE_LIBRARY_PATH}/qt.conf DESTINATION bin ) - - #TODO: put these commands in the associated CMakeLists. - - #Handle includes - install ( DIRECTORY ${CMAKE_INCLUDE_PATH}/boost DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - install ( DIRECTORY ${CMAKE_INCLUDE_PATH}/Poco DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - install ( DIRECTORY ${CMAKE_INCLUDE_PATH}/nexus DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - install ( FILES ${CMAKE_INCLUDE_PATH}/napi.h DESTINATION include ) - install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/Kernel/inc/MantidKernel DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/Geometry/inc/MantidGeometry DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/API/inc/MantidAPI DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/NexusCPP/inc/MantidNexusCPP DESTINATION include PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - - #Copy scons directory - install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Installers/WinInstaller/scons-local/ DESTINATION scons-local PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE ) - #User algorithms - install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/UserAlgorithms/ DESTINATION UserAlgorithms FILES_MATCHING PATTERN "*.h" ) - install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Framework/UserAlgorithms/ DESTINATION UserAlgorithms FILES_MATCHING PATTERN "*.cpp" ) - install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/Framework/UserAlgorithms/build.bat ${CMAKE_CURRENT_SOURCE_DIR}/Framework/UserAlgorithms/createAlg.py ${CMAKE_CURRENT_SOURCE_DIR}/Framework/UserAlgorithms/SConstruct DESTINATION UserAlgorithms ) - install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidKernel.lib" DESTINATION UserAlgorithms) - install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidGeometry.lib" DESTINATION UserAlgorithms) - install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidAPI.lib" DESTINATION UserAlgorithms) - install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidNexusCPP.lib" DESTINATION UserAlgorithms) - install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidDataObjects.lib" DESTINATION UserAlgorithms) - install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${WINDOWS_DEPLOYMENT_TYPE}/MantidCurveFitting.lib" DESTINATION UserAlgorithms) - install ( FILES ${CMAKE_LIBRARY_PATH}/PocoFoundation.lib ${CMAKE_LIBRARY_PATH}/PocoXML.lib ${CMAKE_LIBRARY_PATH}/boost_date_time-vc100-mt-1_43.lib DESTINATION UserAlgorithms) - - # Copy third party dlls excluding selected Qt ones and debug ones - install ( DIRECTORY ${CMAKE_LIBRARY_PATH}/ DESTINATION bin FILES_MATCHING PATTERN "*.dll" REGEX "(QtDesigner4.dll)|(QtDesignerComponents4.dll)|(QtScript4.dll)|(-gd-)|(d4.dll)|(_d.dll)" EXCLUDE PATTERN ".git" EXCLUDE ) - - #Release deployments do modify enviromental varialbes, other deployments do not. - if(CPACK_PACKAGE_SUFFIX STREQUAL "") - # On install - set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS "Push \\\"MANTIDPATH\\\" - Push \\\"A\\\" - Push \\\"HKCU\\\" - Push \\\"$INSTDIR\\\\bin\\\" - Call EnvVarUpdate - Pop \\\$0 - - Push \\\"PATH\\\" - Push \\\"A\\\" - Push \\\"HKCU\\\" - Push \\\"$INSTDIR\\\\bin\\\" - Call EnvVarUpdate - Pop \\\$0 - - CreateShortCut \\\"$DESKTOP\\\\MantidPlot.lnk\\\" \\\"$INSTDIR\\\\bin\\\\MantidPlot.exe\\\" - - CreateDirectory \\\"$INSTDIR\\\\logs\\\" - - CreateDirectory \\\"$INSTDIR\\\\docs\\\" - ") - # On unistall reverse stages listed above. - set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS - "Push \\\"PATH\\\" - Push \\\"R\\\" - Push \\\"HKCU\\\" - Push \\\"$INSTDIR\\\\bin\\\" - Call un.EnvVarUpdate - Pop \\\$0 - - Push \\\"MANTIDPATH\\\" - Push \\\"R\\\" - Push \\\"HKCU\\\" - Push \\\"$INSTDIR\\\\bin\\\" - Call un.EnvVarUpdate - Pop \\\$0 - - Delete \\\"$DESKTOP\\\\MantidPlot.lnk\\\" - - RMDir \\\"$INSTDIR\\\\logs\\\" - - RMDir \\\"$INSTDIR\\\\docs\\\" - ") - else () - # On install - set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS " - CreateShortCut \\\"$DESKTOP\\\\MantidPlot.lnk\\\" \\\"$INSTDIR\\\\bin\\\\MantidPlot.exe\\\" - - CreateDirectory \\\"$INSTDIR\\\\logs\\\" - - CreateDirectory \\\"$INSTDIR\\\\docs\\\" - ") - # On unistall reverse stages listed above. - set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS " - Delete \\\"$DESKTOP\\\\MantidPlot.lnk\\\" - - RMDir \\\"$INSTDIR\\\\logs\\\" - - RMDir \\\"$INSTDIR\\\\docs\\\" - ") - endif() - + # Settings for generating the windows Nullsoft package via CPack + include ( WindowsNSIS ) - ENDIF() ########################################################################### -- GitLab