134 lines
3.8 KiB
CMake
134 lines
3.8 KiB
CMake
# - Building a licensing description file
|
|
#
|
|
# Original Author:
|
|
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
|
|
# http://academic.cleardefinition.com
|
|
# Iowa State University HCI Graduate Program/VRAC
|
|
#
|
|
# Copyright Iowa State University 2009-2010.
|
|
# Distributed under the Boost Software License, Version 1.0.
|
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
|
# http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
define_property(GLOBAL
|
|
PROPERTY
|
|
PROPRIETARY_LICENSES
|
|
BRIEF_DOCS
|
|
"Text for proprietary licenses"
|
|
FULL_DOCS
|
|
"Text for proprietary licenses")
|
|
define_property(GLOBAL
|
|
PROPERTY
|
|
SHAREALIKE_LICENSES
|
|
BRIEF_DOCS
|
|
"Text for share-alike licenses"
|
|
FULL_DOCS
|
|
"Text for share-alike licenses (e.g. GPL)")
|
|
define_property(GLOBAL
|
|
PROPERTY
|
|
PERMISSIVE_LICENSES
|
|
BRIEF_DOCS
|
|
"Text for permissive licenses"
|
|
FULL_DOCS
|
|
"Text for permissive licenses (e.g. BSD, MIT, X11)")
|
|
define_property(GLOBAL
|
|
PROPERTY
|
|
PACKAGES_LICENSED
|
|
BRIEF_DOCS
|
|
"List of all packages whose licenses are registered here"
|
|
FULL_DOCS
|
|
"List of all packages whose licenses are registered here")
|
|
define_property(GLOBAL
|
|
PROPERTY
|
|
REDISTRIBUTION_WARNINGS
|
|
BRIEF_DOCS
|
|
"Text for important redistribution warnings"
|
|
FULL_DOCS
|
|
"Text for important redistribution warnings, such as 'This is not redistributable!'")
|
|
|
|
|
|
function(add_license LICENSE_TYPE_PROPERTY package license)
|
|
get_property(def GLOBAL PROPERTY LICENSE_PACKAGE_${package} DEFINED)
|
|
if(NOT def)
|
|
define_property(GLOBAL
|
|
PROPERTY
|
|
LICENSE_PACKAGE_${package}
|
|
BRIEF_DOCS
|
|
"Flag to indicate the addition of the license for ${package}"
|
|
FULL_DOCS
|
|
"Flag to indicate the addition of the license for ${package}")
|
|
get_property(existing GLOBAL PROPERTY ${LICENSE_TYPE_PROPERTY})
|
|
set_property(GLOBAL
|
|
PROPERTY
|
|
${LICENSE_TYPE_PROPERTY}
|
|
"${existing}${license}\n\n")
|
|
|
|
if(ARGN)
|
|
define_property(GLOBAL
|
|
PROPERTY
|
|
LICENSE_EXTRAS_PACKAGE_${package}
|
|
BRIEF_DOCS
|
|
"Extras (like URL) for the license for ${package}"
|
|
FULL_DOCS
|
|
"Extras (like URL) for the license for ${package}")
|
|
set_property(GLOBAL
|
|
PROPERTY
|
|
LICENSE_EXTRAS_PACKAGE_${package}
|
|
"${ARGN}")
|
|
endif()
|
|
|
|
get_property(allpackages GLOBAL PROPERTY PACKAGES_LICENSED)
|
|
list(APPEND allpackages "${package}")
|
|
set_property(GLOBAL PROPERTY PACKAGES_LICENSED "${allpackages}")
|
|
endif()
|
|
endfunction()
|
|
|
|
function(add_proprietary_license package license)
|
|
add_license(PROPRIETARY_LICENSES "${package}" "${license}" ${ARGN})
|
|
endfunction()
|
|
|
|
function(add_sharealike_license package license)
|
|
add_license(SHAREALIKE_LICENSES "${package}" "${license}" ${ARGN})
|
|
endfunction()
|
|
|
|
function(add_permissive_license package license)
|
|
add_license(PERMISSIVE_LICENSES "${package}" "${license}" ${ARGN})
|
|
endfunction()
|
|
|
|
function(add_redistribution_warning warning)
|
|
get_property(existing GLOBAL PROPERTY REDISTRIBUTION_WARNINGS)
|
|
set_property(GLOBAL
|
|
PROPERTY
|
|
REDISTRIBUTION_WARNINGS
|
|
"${warning} ${existing}")
|
|
endfunction()
|
|
|
|
function(configure_license_file input output)
|
|
get_property(PACKAGES_LICENSED GLOBAL PROPERTY PACKAGES_LICENSED)
|
|
if(PACKAGES_LICENSED)
|
|
list(SORT PACKAGES_LICENSED)
|
|
set(PACKAGES_LICENSED_BULLETED)
|
|
foreach(package ${PACKAGES_LICENSED})
|
|
set(EXTRAS)
|
|
get_property(package_extras
|
|
GLOBAL
|
|
PROPERTY
|
|
"LICENSE_EXTRAS_PACKAGE_${package}")
|
|
if(package_extras)
|
|
set(EXTRAS " ${package_extras}")
|
|
endif()
|
|
set(PACKAGES_LICENSED_BULLETED
|
|
"${PACKAGES_LICENSED_BULLETED} * ${package}${EXTRAS}\n")
|
|
endforeach()
|
|
endif()
|
|
get_property(REDISTRIBUTION_WARNINGS
|
|
GLOBAL
|
|
PROPERTY
|
|
REDISTRIBUTION_WARNINGS)
|
|
get_property(PROPRIETARY_LICENSES GLOBAL PROPERTY PROPRIETARY_LICENSES)
|
|
get_property(SHAREALIKE_LICENSES GLOBAL PROPERTY SHAREALIKE_LICENSES)
|
|
get_property(PERMISSIVE_LICENSES GLOBAL PROPERTY PERMISSIVE_LICENSES)
|
|
configure_file("${input}" "${output}" ${ARGN})
|
|
endfunction()
|
|
|