# 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 "CPackFreeBSD.cmake may only be used by CPack internally.") endif() if(NOT UNIX) message(FATAL_ERROR "CPackFreeBSD.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 FreeBSD-packaging variables that can take # on values from elsewhere -- e.g. the package description may as well be # copied from Debian. # function(_cpack_freebsd_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_freebsd_fallback_origin "misc/bogus") _cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_NAME" "CPACK_PACKAGE_NAME" "CMAKE_PROJECT_NAME" ) set(_cpack_freebsd_fallback_www "http://example.com/?pkg=${CPACK_FREEBSD_PACKAGE_NAME}") _cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_COMMENT" "CPACK_PACKAGE_DESCRIPTION_SUMMARY" ) # TODO: maybe read the PACKAGE_DESCRIPTION file for the longer # FreeBSD pkg-descr? _cpack_freebsd_fallback_var("CPACK_FREEBSD_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_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_WWW" "CPACK_PACKAGE_HOMEPAGE_URL" "CPACK_DEBIAN_PACKAGE_HOMEPAGE" "_cpack_freebsd_fallback_www" ) _cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_VERSION" "CMAKE_PROJECT_VERSION" "${CMAKE_PROJECT_NAME}_VERSION" "PROJECT_VERSION" "CPACK_PACKAGE_VERSION" "CPACK_PACKAGE_VERSION" ) _cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_MAINTAINER" "CPACK_PACKAGE_CONTACT" ) _cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_LICENSE" "CPACK_RPM_PACKAGE_LICENSE" ) _cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_ORIGIN" "_cpack_freebsd_fallback_origin" ) if(NOT CPACK_FREEBSD_PACKAGE_CATEGORIES) string(REGEX REPLACE "/.*" "" CPACK_FREEBSD_PACKAGE_CATEGORIES ${CPACK_FREEBSD_PACKAGE_ORIGIN}) endif() check_required_var("CPACK_FREEBSD_PACKAGE_NAME") check_required_var("CPACK_FREEBSD_PACKAGE_ORIGIN") check_required_var("CPACK_FREEBSD_PACKAGE_VERSION") check_required_var("CPACK_FREEBSD_PACKAGE_MAINTAINER") check_required_var("CPACK_FREEBSD_PACKAGE_COMMENT") check_required_var("CPACK_FREEBSD_PACKAGE_DESCRIPTION") check_required_var("CPACK_FREEBSD_PACKAGE_WWW") check_required_var("CPACK_FREEBSD_PACKAGE_LICENSE")