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