1# Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2# file Copyright.txt or https://cmake.org/licensing for details. 3 4 5if(CMAKE_BINARY_DIR) 6 message(FATAL_ERROR "CPackFreeBSD.cmake may only be used by CPack internally.") 7endif() 8 9if(NOT UNIX) 10 message(FATAL_ERROR "CPackFreeBSD.cmake may only be used under UNIX.") 11endif() 12 13 14### 15# 16# These bits are copied from the Debian packaging file; slightly modified. 17# They are used for filling in FreeBSD-packaging variables that can take 18# on values from elsewhere -- e.g. the package description may as well be 19# copied from Debian. 20# 21function(_cpack_freebsd_fallback_var OUTPUT_VAR_NAME) 22 set(FALLBACK_VAR_NAMES ${ARGN}) 23 24 set(VALUE "${${OUTPUT_VAR_NAME}}") 25 if(VALUE) 26 return() 27 endif() 28 29 foreach(variable_name IN LISTS FALLBACK_VAR_NAMES) 30 if(${variable_name}) 31 set(${OUTPUT_VAR_NAME} "${${variable_name}}" PARENT_SCOPE) 32 set(VALUE "${${variable_name}}") 33 break() 34 endif() 35 endforeach() 36 if(NOT VALUE) 37 message(WARNING "Variable ${OUTPUT_VAR_NAME} could not be given a fallback value from any variable ${FALLBACK_VAR_NAMES}.") 38 endif() 39endfunction() 40 41function(check_required_var VAR_NAME) 42 if(NOT ${VAR_NAME}) 43 message(FATAL_ERROR "Variable ${VAR_NAME} is not set.") 44 endif() 45endfunction() 46 47set(_cpack_freebsd_fallback_origin "misc/bogus") 48 49_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_NAME" 50 "CPACK_PACKAGE_NAME" 51 "CMAKE_PROJECT_NAME" 52 ) 53 54set(_cpack_freebsd_fallback_www "http://example.com/?pkg=${CPACK_FREEBSD_PACKAGE_NAME}") 55 56_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_COMMENT" 57 "CPACK_PACKAGE_DESCRIPTION_SUMMARY" 58 ) 59 60# TODO: maybe read the PACKAGE_DESCRIPTION file for the longer 61# FreeBSD pkg-descr? 62_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_DESCRIPTION" 63 "CPACK_DEBIAN_PACKAGE_DESCRIPTION" 64 "CPACK_PACKAGE_DESCRIPTION_SUMMARY" 65 "PACKAGE_DESCRIPTION" 66 ) 67 68# There's really only one homepage for a project, so 69# re-use the Debian setting if it's there. 70_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_WWW" 71 "CPACK_PACKAGE_HOMEPAGE_URL" 72 "CPACK_DEBIAN_PACKAGE_HOMEPAGE" 73 "_cpack_freebsd_fallback_www" 74 ) 75 76_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_VERSION" 77 "CMAKE_PROJECT_VERSION" 78 "${CMAKE_PROJECT_NAME}_VERSION" 79 "PROJECT_VERSION" 80 "CPACK_PACKAGE_VERSION" 81 "CPACK_PACKAGE_VERSION" 82 ) 83 84_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_MAINTAINER" 85 "CPACK_PACKAGE_CONTACT" 86 ) 87 88_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_LICENSE" 89 "CPACK_RPM_PACKAGE_LICENSE" 90 ) 91 92_cpack_freebsd_fallback_var("CPACK_FREEBSD_PACKAGE_ORIGIN" 93 "_cpack_freebsd_fallback_origin" 94 ) 95 96if(NOT CPACK_FREEBSD_PACKAGE_CATEGORIES) 97 string(REGEX REPLACE "/.*" "" CPACK_FREEBSD_PACKAGE_CATEGORIES ${CPACK_FREEBSD_PACKAGE_ORIGIN}) 98endif() 99 100check_required_var("CPACK_FREEBSD_PACKAGE_NAME") 101check_required_var("CPACK_FREEBSD_PACKAGE_ORIGIN") 102check_required_var("CPACK_FREEBSD_PACKAGE_VERSION") 103check_required_var("CPACK_FREEBSD_PACKAGE_MAINTAINER") 104check_required_var("CPACK_FREEBSD_PACKAGE_COMMENT") 105check_required_var("CPACK_FREEBSD_PACKAGE_DESCRIPTION") 106check_required_var("CPACK_FREEBSD_PACKAGE_WWW") 107check_required_var("CPACK_FREEBSD_PACKAGE_LICENSE") 108