--- Modules/Internal/CPack/CPackBSDSUniX.cmake.orig 2021-07-10 13:38:26 UTC +++ Modules/Internal/CPack/CPackBSDSUniX.cmake @@ -0,0 +1,107 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + + +if(CMAKE_BINARY_DIR) + message(FATAL_ERROR "CPackBSDSUniX.cmake may only be used by CPack internally.") +endif() + +if(NOT UNIX) + message(FATAL_ERROR "CPackBSDSUniX.cmake may only be used under UNIX.") +endif() + + +### +# +# These bits are copied from the Debian packaging file; slightly modified. +# They are used for filling in BSDSUniX-packaging variables that can take +# on values from elsewhere -- e.g. the package description may as well be +# copied from Debian. +# +function(_cpack_bsdsunix_fallback_var OUTPUT_VAR_NAME) + set(FALLBACK_VAR_NAMES ${ARGN}) + + set(VALUE "${${OUTPUT_VAR_NAME}}") + if(VALUE) + return() + endif() + + foreach(variable_name IN LISTS FALLBACK_VAR_NAMES) + if(${variable_name}) + set(${OUTPUT_VAR_NAME} "${${variable_name}}" PARENT_SCOPE) + set(VALUE "${${variable_name}}") + break() + endif() + endforeach() + if(NOT VALUE) + message(WARNING "Variable ${OUTPUT_VAR_NAME} could not be given a fallback value from (any of) ${FALLBACK_VAR_NAMES}.") + endif() +endfunction() + +function(check_required_var VAR_NAME) + if(NOT ${VAR_NAME}) + message(FATAL_ERROR "Variable ${VAR_NAME} is not set.") + endif() +endfunction() + +set(_cpack_bsdsunix_fallback_origin "misc/bogus") + +_cpack_bsdsunix_fallback_var("CPACK_BSDSUNIX_PACKAGE_NAME" + "CPACK_PACKAGE_NAME" + "CMAKE_PROJECT_NAME" + ) + +set(_cpack_bsdsunix_fallback_www "http://example.com/?pkg=${CPACK_BSDSUNIX_PACKAGE_NAME}") + +_cpack_bsdsunix_fallback_var("CPACK_BSDSUNIX_PACKAGE_COMMENT" + "CPACK_PACKAGE_DESCRIPTION_SUMMARY" + ) + +# TODO: maybe read the PACKAGE_DESCRIPTION file for the longer +# BSDSUniX pkg-descr? +_cpack_bsdsunix_fallback_var("CPACK_BSDSUNIX_PACKAGE_DESCRIPTION" + "CPACK_DEBIAN_PACKAGE_DESCRIPTION" + "CPACK_PACKAGE_DESCRIPTION_SUMMARY" + "PACKAGE_DESCRIPTION" + ) + +# There's really only one homepage for a project, so +# re-use the Debian setting if it's there. +_cpack_bsdsunix_fallback_var("CPACK_BSDSUNIX_PACKAGE_WWW" + "CPACK_PACKAGE_HOMEPAGE_URL" + "CPACK_DEBIAN_PACKAGE_HOMEPAGE" + "_cpack_bsdsunix_fallback_www" + ) + +_cpack_bsdsunix_fallback_var("CPACK_BSDSUNIX_PACKAGE_VERSION" + "CMAKE_PROJECT_VERSION" + "${CMAKE_PROJECT_NAME}_VERSION" + "PROJECT_VERSION" + "CPACK_PACKAGE_VERSION" + "CPACK_PACKAGE_VERSION" + ) + +_cpack_bsdsunix_fallback_var("CPACK_BSDSUNIX_PACKAGE_MAINTAINER" + "CPACK_PACKAGE_CONTACT" + ) + +_cpack_bsdsunix_fallback_var("CPACK_BSDSUNIX_PACKAGE_LICENSE" + "CPACK_RPM_PACKAGE_LICENSE" + ) + +_cpack_bsdsunix_fallback_var("CPACK_BSDSUNIX_PACKAGE_ORIGIN" + "_cpack_bsdsunix_fallback_origin" + ) + +if(NOT CPACK_BSDSUNIX_PACKAGE_CATEGORIES) + string(REGEX REPLACE "/.*" "" CPACK_BSDSUNIX_PACKAGE_CATEGORIES ${CPACK_BSDSUNIX_PACKAGE_ORIGIN}) +endif() + +check_required_var("CPACK_BSDSUNIX_PACKAGE_NAME") +check_required_var("CPACK_BSDSUNIX_PACKAGE_ORIGIN") +check_required_var("CPACK_BSDSUNIX_PACKAGE_VERSION") +check_required_var("CPACK_BSDSUNIX_PACKAGE_MAINTAINER") +check_required_var("CPACK_BSDSUNIX_PACKAGE_COMMENT") +check_required_var("CPACK_BSDSUNIX_PACKAGE_DESCRIPTION") +check_required_var("CPACK_BSDSUNIX_PACKAGE_WWW") +check_required_var("CPACK_BSDSUNIX_PACKAGE_LICENSE")