1# - Building a licensing description file 2# 3# Original Author: 4# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net> 5# http://academic.cleardefinition.com 6# Iowa State University HCI Graduate Program/VRAC 7# 8# Copyright Iowa State University 2009-2010. 9# Distributed under the Boost Software License, Version 1.0. 10# (See accompanying file LICENSE_1_0.txt or copy at 11# http://www.boost.org/LICENSE_1_0.txt) 12 13define_property(GLOBAL 14 PROPERTY 15 PROPRIETARY_LICENSES 16 BRIEF_DOCS 17 "Text for proprietary licenses" 18 FULL_DOCS 19 "Text for proprietary licenses") 20define_property(GLOBAL 21 PROPERTY 22 SHAREALIKE_LICENSES 23 BRIEF_DOCS 24 "Text for share-alike licenses" 25 FULL_DOCS 26 "Text for share-alike licenses (e.g. GPL)") 27define_property(GLOBAL 28 PROPERTY 29 PERMISSIVE_LICENSES 30 BRIEF_DOCS 31 "Text for permissive licenses" 32 FULL_DOCS 33 "Text for permissive licenses (e.g. BSD, MIT, X11)") 34define_property(GLOBAL 35 PROPERTY 36 PACKAGES_LICENSED 37 BRIEF_DOCS 38 "List of all packages whose licenses are registered here" 39 FULL_DOCS 40 "List of all packages whose licenses are registered here") 41define_property(GLOBAL 42 PROPERTY 43 REDISTRIBUTION_WARNINGS 44 BRIEF_DOCS 45 "Text for important redistribution warnings" 46 FULL_DOCS 47 "Text for important redistribution warnings, such as 'This is not redistributable!'") 48 49 50function(add_license LICENSE_TYPE_PROPERTY package license) 51 get_property(def GLOBAL PROPERTY LICENSE_PACKAGE_${package} DEFINED) 52 if(NOT def) 53 define_property(GLOBAL 54 PROPERTY 55 LICENSE_PACKAGE_${package} 56 BRIEF_DOCS 57 "Flag to indicate the addition of the license for ${package}" 58 FULL_DOCS 59 "Flag to indicate the addition of the license for ${package}") 60 get_property(existing GLOBAL PROPERTY ${LICENSE_TYPE_PROPERTY}) 61 set_property(GLOBAL 62 PROPERTY 63 ${LICENSE_TYPE_PROPERTY} 64 "${existing}${license}\n\n") 65 66 if(ARGN) 67 define_property(GLOBAL 68 PROPERTY 69 LICENSE_EXTRAS_PACKAGE_${package} 70 BRIEF_DOCS 71 "Extras (like URL) for the license for ${package}" 72 FULL_DOCS 73 "Extras (like URL) for the license for ${package}") 74 set_property(GLOBAL 75 PROPERTY 76 LICENSE_EXTRAS_PACKAGE_${package} 77 "${ARGN}") 78 endif() 79 80 get_property(allpackages GLOBAL PROPERTY PACKAGES_LICENSED) 81 list(APPEND allpackages "${package}") 82 set_property(GLOBAL PROPERTY PACKAGES_LICENSED "${allpackages}") 83 endif() 84endfunction() 85 86function(add_proprietary_license package license) 87 add_license(PROPRIETARY_LICENSES "${package}" "${license}" ${ARGN}) 88endfunction() 89 90function(add_sharealike_license package license) 91 add_license(SHAREALIKE_LICENSES "${package}" "${license}" ${ARGN}) 92endfunction() 93 94function(add_permissive_license package license) 95 add_license(PERMISSIVE_LICENSES "${package}" "${license}" ${ARGN}) 96endfunction() 97 98function(add_redistribution_warning warning) 99 get_property(existing GLOBAL PROPERTY REDISTRIBUTION_WARNINGS) 100 set_property(GLOBAL 101 PROPERTY 102 REDISTRIBUTION_WARNINGS 103 "${warning} ${existing}") 104endfunction() 105 106function(configure_license_file input output) 107 get_property(PACKAGES_LICENSED GLOBAL PROPERTY PACKAGES_LICENSED) 108 if(PACKAGES_LICENSED) 109 list(SORT PACKAGES_LICENSED) 110 set(PACKAGES_LICENSED_BULLETED) 111 foreach(package ${PACKAGES_LICENSED}) 112 set(EXTRAS) 113 get_property(package_extras 114 GLOBAL 115 PROPERTY 116 "LICENSE_EXTRAS_PACKAGE_${package}") 117 if(package_extras) 118 set(EXTRAS " ${package_extras}") 119 endif() 120 set(PACKAGES_LICENSED_BULLETED 121 "${PACKAGES_LICENSED_BULLETED} * ${package}${EXTRAS}\n") 122 endforeach() 123 endif() 124 get_property(REDISTRIBUTION_WARNINGS 125 GLOBAL 126 PROPERTY 127 REDISTRIBUTION_WARNINGS) 128 get_property(PROPRIETARY_LICENSES GLOBAL PROPERTY PROPRIETARY_LICENSES) 129 get_property(SHAREALIKE_LICENSES GLOBAL PROPERTY SHAREALIKE_LICENSES) 130 get_property(PERMISSIVE_LICENSES GLOBAL PROPERTY PERMISSIVE_LICENSES) 131 configure_file("${input}" "${output}" ${ARGN}) 132endfunction() 133 134