Per-source copyright/license notice headers that spell out copyright holder
names and years are hard to maintain and often out-of-date or plain wrong.
Precise contributor information is already maintained automatically by the
version control tool. Ultimately it is the receiver of a file who is
responsible for determining its licensing status, and per-source notices are
merely a convenience. Therefore it is simpler and more accurate for
each source to have a generic notice of the license name and references to
more detailed information on copyright holders and full license terms.
Our `Copyright.txt` file now contains a list of Contributors whose names
appeared source-level copyright notices. It also references version control
history for more precise information. Therefore we no longer need to spell
out the list of Contributors in each source file notice.
Replace CMake per-source copyright/license notice headers with a short
description of the license and links to `Copyright.txt` and online information
available from "https://cmake.org/licensing". The online URL also handles
cases of modules being copied out of our source into other projects, so we
can drop our notices about replacing links with full license text.
Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
of the replacements mechanically. Manually fix up shebang lines and trailing
newlines in a few files. Manually update the notices in a few files that the
script does not handle.
The DELETE option to ctest_coverage_collect_gcov now properly
removes all the .gcov files that were created by this function.
Previously it left behind any files that were excluded by
CTEST_CUSTOM_COVERAGE_EXCLUDE.
This option now also deletes the following files/directory that
are created by ctest_coverage_collect_gcov:
data.json
coverage_file_list.txt
the uncovered/ directory
Teach CTestCoverageCollectGCOV to honor the
CTEST_EXTRA_COVERAGE_GLOB variable. When this variable is set,
this module will glob for matching source files that were not
covered and include them in the resulting tar file.
Consistently glob for .gcda files in the binary directory.
Previously the behavior of this function depended on the
current working directory that it was called from.
This commit introduces two new options to CTestCoverageCollectGCOV.
When GLOB is set we recursively search in the source & binary
directories for .gcda files. Otherwise the default behavior is to
parse TargetDirectories.txt for a list of locations to search.
When DELETE is set we remove any .gcda file found after it has
been used to generate the corresponding .gcov file. The .gcov
file is also removed after the result tarball has been created.
Together these two new features help support the use case of
computing coverage across subprojects.
When loading the list of target support directories, read the file
with UTF-8 encoding since that is what CMake writes into the file.
This allows us to support international characters in the path to
the build tree containing the target support directories.
Add a GCOV_OPTIONS option to allow specification of custom flags. In
ctest_coverage gcov support, if you set CTEST_COVERAGE_EXTRA_FLAGS, they
get put on the command line before the -o. In this case we remove the
-b and replace it with GCOV_OPTIONS. All other arguments remain the
same.
Provide a function to run gcov and create a tarball of results.
Since CDash tracks the md5sum of the files uploaded, use the
--mtime option with "cmake -E tar" so that tar files could be
created that would have the same md5sum with the same content.