simh-testsetgenerator/cmake/cpack-setup.cmake
B. Scott Michel 8b14bb69be
CMake build infrastructure II (#53)
* CMake build infrastructure

The squashed commit that builds and packages releases for the SIMH
simulator suite with CMake, version 3.14 or newer.

See README-CMake.md for documentation.
2023-05-17 20:18:42 -04:00

139 lines
4.4 KiB
CMake

## CPack setup -- sets the CPACK_* variables for the sundry installers
##
## Author: B. Scott Michel (scooter.phd@gmail.com)
## "scooter me fecit"
## pre_runtime_exclusions: These are the names of dependency libraries, esp. on Windows
## that should not get installed as runtime or library dependencies.
##
## post_runtime_exclusions: These are regex expressions for the dependency paths to filter out,
## notably Windows system32 DLLs.
set(pre_runtime_exclusions)
list(APPEND pre_runtime_exclusions
## Windows:
"(ext|api)-ms-.*"
"hvsifiletrust.dll"
"pdmutilities.dll"
)
set(post_runtime_exclusions)
list(APPEND post_runtime_exclusions
".*system32/.*\\.dll"
)
## Make runtime_support the default component (vice "Unspecified")
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "runtime_support")
# After we know where everything will install, let CPack figure out
# how to assemble it into a package file.
set(CPACK_PACKAGE_VENDOR "The Open-SIMH project")
if (SIMH_PACKAGE_SUFFIX)
set(buildSuffix "${SIMH_PACKAGE_SUFFIX}")
else ()
set(buildSuffix "")
if (WIN32)
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
list(APPEND buildSuffix "win64")
else ()
list(APPEND buildSuffix "win32")
endif ()
list(APPEND buildSuffix "\${CPACK_BUILD_CONFIG}")
## If using Visual Studio, append the compiler and toolkit:
if (CMAKE_GENERATOR MATCHES "Visual Studio 17 .*")
list(APPEND buildSuffix "vs2022")
elseif (CMAKE_GENERATOR MATCHES "Visual Studio 16 .*")
list(APPEND buildSuffix "vs2019")
elseif (CMAKE_GENERATOR MATCHES "Visual Studio 15 .*")
list(APPEND buildSuffix "vs2017")
elseif (CMAKE_GENERATOR MATCHES "Visual Studio 14 .*")
list(APPEND buildSuffix "vs2015")
endif ()
if (CMAKE_GENERATOR_TOOLSET MATCHES "v[0-9][0-9][0-9]_xp")
string(APPEND buildSuffix "xp")
endif ()
else ()
list(APPEND buildSuffix ${CMAKE_SYSTEM_NAME})
endif ()
list(JOIN buildSuffix "-" buildSuffix)
message(STATUS "No SIMH_PACKAGE_SUFFIX supplied, default is ${buildSuffix}.")
endif ()
string(JOIN "-" CPACK_PACKAGE_FILE_NAME
"${CMAKE_PROJECT_NAME}"
"${CMAKE_PROJECT_VERSION}"
"${buildSuffix}"
)
message(STATUS "CPack output file name: ${CPACK_PACKAGE_FILE_NAME}")
unset(buildSuffix)
## When applicable (e.g., NSIS Windows), install under the SIMH-x.y directory:
set(CPACK_PACKAGE_INSTALL_DIRECTORY "SIMH-${SIMH_VERSION_MAJOR}.${SIMH_VERSION_MINOR}")
## License file:
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE.txt)
set(CPACK_PACKAGE_CONTACT "open-simh@nowhere.org")
set(CPACK_PACKAGE_MAINTAINER "open-simh@nowhere.org")
## Runtime dependencies:
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.21")
## Don't install runtime dependencies on Linux platforms. The platform's
## package management system will take care of this for us.
if (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
install(RUNTIME_DEPENDENCY_SET simhRuntime
COMPONENT runtime_support
PRE_EXCLUDE_REGEXES ${pre_runtime_exclusions}
POST_EXCLUDE_REGEXES ${post_runtime_exclusions}
)
endif ()
endif ()
## Extra properties and variables:
set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_BINARY_DIR}/CPackSimhCustom.cmake)
configure_file(${CMAKE_SOURCE_DIR}/cmake/installer-customizations/CPackSimhCustom.cmake.in
${CMAKE_BINARY_DIR}/CPackSimhCustom.cmake
@ONLY)
## CPack generator-specific configs:
##+
## NullSoft Installation System (NSIS) Windows installer. Creates an installer EXE.
##-
set(CPACK_NSIS_PACKAGE_NAME ${CPACK_PACKAGE_INSTALL_DIRECTORY})
set(CPACK_NSIS_INSTALL_ROOT "$LocalAppData\\\\Programs")
## CPack does this configure_file on its own to genreate the project.nsi file.
## Keeping these lines for history.
# configure_file(${CMAKE_SOURCE_DIR}/cmake/installer-customizations/NSIS.template.in
# ${CMAKE_BINARY_DIR}/NSIS.template
# @ONLY)
###+
### WIX MSI Windows installer.
###
###
### Upgrade GUID shouldn't really change.
###-
set(CPACK_WIX_UPGRADE_GUID "ed5dba4c-7c9e-4af8-ac36-37e14c637696")
##+
## Debian:
##-
list(APPEND debian_depends
libsdl2-2.0-0
libsdl2-ttf-2.0-0
libpcap0.8
libvdeplug2
libedit2
)
string(JOIN ", " CPACK_DEBIAN_PACKAGE_DEPENDS ${debian_depends})
include(CPack)