diff options
Diffstat (limited to 'Tests/CMakeTests/ModuleNoticesTest.cmake.in')
-rw-r--r-- | Tests/CMakeTests/ModuleNoticesTest.cmake.in | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Tests/CMakeTests/ModuleNoticesTest.cmake.in b/Tests/CMakeTests/ModuleNoticesTest.cmake.in new file mode 100644 index 0000000..3e4d104 --- /dev/null +++ b/Tests/CMakeTests/ModuleNoticesTest.cmake.in @@ -0,0 +1,45 @@ +# Regex to match copyright/license notices. +# We require the Kitware copyright on the first line, but the ".*" can +# match any additional copyright holder notices. +set(notice_regex " +#============================================================================= +# Copyright (20[0-9][0-9]-)?20[0-9][0-9] Kitware.* +# +# Distributed under the OSI-approved BSD License \\(the \"License\"\\); +# see accompanying file Copyright\\.txt for details\\. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\\. +# See the License for more information\\. +#============================================================================= +# \\(To distributed this file outside of CMake, substitute the full +# License text for the above reference.\\) +") +string(REPLACE "\n" "\r?\n" notice_regex "${notice_regex}") +string(REPLACE "\r\r" "\r" notice_regex "${notice_regex}") + +# Modules that do not require our notice. +set(notice_exceptions + FindCUDA.cmake # MIT License, distributed here from upstream project + ) + +# Load the list of modules to check. +set(dir "@CMake_SOURCE_DIR@/Modules") +file(GLOB all_modules RELATIVE "${dir}" "${dir}/*.cmake") +list(REMOVE_ITEM all_modules ${notice_exceptions}) + +# Check each module. +set(notice_missing) +foreach(module ${all_modules}) + message(STATUS "module: ${module}") + file(READ "${dir}/${module}" module_content) + if(NOT "${module_content}" MATCHES "${notice_regex}") + set(notice_missing "${notice_missing} ${module}\n") + endif() +endforeach() + +# Report the list of bad modules. +if(notice_missing) + message(FATAL_ERROR + "Some modules do not have a valid copyright notice:\n${notice_missing}") +endif() |