Commit Graph

50 Commits

Author SHA1 Message Date
Brad King 86578eccf2 Simplify CMake per-source license notices
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.
2016-09-27 15:14:44 -04:00
Nils Gladitz a12b0f1b19 CMake: Prevent WiX installations over existing NSIS installations
Use a custom action to look for Uninstall.exe in the user
selected installation prefix.

Its presence indicates a previous NSIS installation.
Inform the user and request manual resolution of the issue.
2016-02-09 10:28:57 -05:00
Brad King ef7a1b4144 Utilities/Release: Pass pre-built docs tarball
Avoid requiring all build machines for the upstream packaging process to
have Python and Sphinx installed.  Instead create a way to build the
documentation once on the host machine and copy it to each build machine
as a tarball with content to include in the installation tree for
packaging.
2014-01-29 10:10:15 -05:00
Brad King bfe07aa97e Build Help documentation during CMake build using Sphinx
Add a Utilities/Sphinx directory to hold CMake build code to run the
Sphinx (sphinx-doc.org) documentation generation tool.  Create a
CMakeLists.txt file there capable of building either as a subdirectory
of the main CMake build, or as a standalone documentation build.

Add cache options SPHINX_MAN and SPHINX_HTML to select output formats
and SPHINX_EXECUTABLE to specify the sphinx-build executable.  Add
bootstrap options --sphix-man and --sphinx-html to select output formats
and --sphinx-build=<sb> to specify the sphinx-build executable.

Create a "conf.py.in" file to configure_file into "conf.py" to tell
sphinx-build how to build our documents.  Create a "cmake.py" Sphinx
extension module defining:

* The "cmake-module" directive used in Help/module/*.rst files to
  scan .rst markup from the corresponding Modules/*.cmake file.

* A Sphinx domain called "cmake" defining documentation object types
  for CMake Help/<type> directories: command, generator, manual,
  module, policy, prop_*, and variable.  Add a "role" for each type
  to perform cross-references.  Teach the roles to treat "<XYZ>"
  as placeholders instead of explicit targets if not preceded by
  a space.  Add cmake domain directives to define command and
  variable objects explicitly in .rst file content.  This will
  allow modules to define their own commands and variables and
  have them indexed and linkable.

* A Sphinx document transform that converts Help/<type>/*.rst documents
  into cmake domain objects of the corresponding <type> and adds index
  entries for them.  This will automatically index all CMake documentation
  objects and provide cross-reference targets for them with no special
  markup in the .rst files.
2013-10-16 09:22:37 -04:00
Brad King 678aaad133 Drop documentation generation during build
Drop the 'documentation' build target.  We will no longer use the
executables to generate their own documentation.  New infrastructure
will be introduced later to generate documentation.
2013-10-15 10:47:37 -04:00
Brad King e49efe9150 Drop xmllint documentation tests
Drop these tests since we will drop docbook output along with other
documentation formatters.
2013-10-15 10:46:54 -04:00
Brad King 189008ea5c Move cmake.m4 from Utilities to Auxiliary
The latter fits more consistently with other third party integration
files.
2013-10-15 10:46:54 -04:00
Stephen Kelly e4e5b28c27 cmTarget: Deprecate the LOCATION target property with a policy.
The final location and name of a build-target is not determined
until generate-time. However, reading the LOCATION property from
a target is currently allowed at configure time. Apart from creating
possibly-erroneous results, this has an impact on the implementation
of cmake itself, and prevents some major cleanups from being made.

Disallow reading LOCATION from build-targets with a policy. Port some
existing uses of it in CMake itself to use the TARGET_FILE generator
expression.
2013-10-11 21:17:27 +02:00
Brad King df62f64db7 Clean up install rules of CMake itself (#14371)
Ensure CMAKE_DATA_DIR, CMAKE_DOC_DIR, and CMAKE_MAN_DIR are always
relative paths in CMake code, and set defaults accordingly.  Use the
install() command instead of install_files() and install_targets().
This is more modern and also avoids stripping of the first character
from user-specified destinations.

While at it, fix the default destinations reported in the bootstrap
help.
2013-08-26 11:54:07 -04:00
Brad King 8120e13f40 cmake-gui: Fix build rules for Qt5 on Windows
Set policy CMP0020 to NEW to get WinMain from Qt.  Fix the documentation
custom command PATH for cmake-gui to find the Qt5 DLLs.
2013-08-07 09:59:33 -04:00
Daniel Pfeifer 9468b41daf docbook: Add CMake.DocBook test to validate xml (#13508)
The DocBook DTD is provided in "Utilities/xml/docbook-4.5".
2012-09-08 07:42:10 -04:00
Daniel Pfeifer 2f520d304a Simplify CMake.HTML documentation test command line
Drop the "cmake -E chdir" wrapper and instead pass the DTD directory to
xmllint's --path option using url encoding.  While at it, move the
XHTML1 DTD to "Utilities/xml/xhtml1" to make room for additional DTDs.
2012-09-07 10:05:50 -04:00
Marcin Wojdyr 84b49be8f0 Remove CMake multiline block-end command arguments
removing arguments omitted in 9db3116226
2012-08-15 16:50:29 -04:00
Kitware Robot 9db3116226 Remove CMake-language block-end command arguments
Ancient versions of CMake required else(), endif(), and similar block
termination commands to have arguments matching the command starting the
block.  This is no longer the preferred style.

Run the following shell code:

for c in else endif endforeach endfunction endmacro endwhile; do
    echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/'
done >convert.sed &&
git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
egrep -z -v 'Tests/CMakeTests/While-Endwhile-' |
xargs -0 sed -i -f convert.sed &&
rm convert.sed
2012-08-13 14:19:16 -04:00
Kitware Robot 77543bde41 Convert CMake-language commands to lower case
Ancient CMake versions required upper-case commands.  Later command
names became case-insensitive.  Now the preferred style is lower-case.

Run the following shell code:

cmake --help-command-list |
grep -v "cmake version" |
while read c; do
    echo 's/\b'"$(echo $c | tr '[:lower:]' '[:upper:]')"'\(\s*\)(/'"$c"'\1(/g'
done >convert.sed &&
git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
xargs -0 sed -i -f convert.sed &&
rm convert.sed
2012-08-13 14:19:16 -04:00
Kitware Robot 7bbaa4283d Remove trailing whitespace from most CMake and C/C++ code
Our Git commit hooks disallow modification or addition of lines with
trailing whitespace.  Wipe out all remnants of trailing whitespace
everywhere except third-party code.

Run the following shell code:

git ls-files -z -- \
 bootstrap doxygen.config '*.readme' \
 '*.c' '*.cmake' '*.cpp' '*.cxx' \
 '*.el' '*.f' '*.f90' '*.h' '*.in' '*.in.l' '*.java' \
 '*.mm' '*.pike' '*.py' '*.txt' '*.vim' |
egrep -z -v '^(Utilities/cm|Source/(kwsys|CursesDialog/form)/)' |
egrep -z -v '^(Modules/CPack\..*\.in)' |
xargs -0 sed -i 's/ \+$//'
2012-08-13 14:18:39 -04:00
David Cole a2a0a8e0d5 cmake.m4: Use modern signature of install(FILES ...)
The older install_files command uses a leading slash in front
of the destination directory, whereas the modern signature does
not. Use the modern signature since that's what the CMake devs
are now used to.
2011-08-26 13:51:32 -04:00
Alex Neundorf bf07375264 Add a cmake.m4 for using cmake in autoconf projects instead of pkgconfig
This file has been written today from scratch by Matthias Kretz
and it BSD-licensed.

Alex
2011-08-11 22:43:33 +02:00
David Cole 5d3cfdc1f8 No CMake.HTML test if xmllint has no --nonet.
In commit bb1df1ec, we temporarily ran an alternate test,
guaranteed to fail when the --help output of xmllint did
not contain --nonet and --path.

This commit simply eliminates the test altogether in
this condition rather than make an attempt (doomed to
fail) to pull down the dtd over the internet.

On date=2010-11-04, the CMake dashboard results showed that
the test failed on the following CMake dashboard machines:

  dash8.kitware
  dash8.kitwarein.com
  dashsun1
  dashsun1.kitware
  ferrari

This is a very small subset of the dashboard machines, and
we have enough proof from enough other machines that the test
passes with xmllint versions new enough to have the --nonet
support.

Therefore, eliminate the CMake.HTML test on machines with old
versions of xmllint. To run the test, make sure you run it
on a machine with a new enough xmllint.
2010-11-04 10:07:11 -04:00
David Cole bb1df1ec8e Make HTML test fail when --nonet arg is not available.
Also, emit "xmllint" and "xmllint --version" output before
failing so that we can inspect the output from all the
dashboard machines in CDash test results.
2010-11-02 10:41:11 -04:00
Brad King 1819d9d617 Run CMake.HTML test with older xmllint (#10857)
Old versions of xmllint do not have --nonet or --path options.
Fall back to the network-access form in this case.
2010-06-23 07:38:33 -04:00
Brad King 8c0e79f824 Run CMake.HTML test without net access (#10857)
Use xmllint's --nonet option to avoid downloading the xhtml DTD.
Provide the DTD and its dependencies locally.
2010-06-22 09:39:02 -04:00
Brad King 370e5b9425 Documentation: Test XHTML compliance
Use xmllint to validate our generated HTML documentation.
See issue #10338.
2010-03-01 08:51:22 -05:00
Brad King 03f8820e64 Documentation: Cleanup installation rules
Organize Utilities/CMakeLists.txt to avoid duplicate install command
calls.  We collect each type of documentation in a variable listing its
files for installation and then use one install call at the end.
2010-03-01 08:50:12 -05:00
Brad King 96afb12087 Convert CMake to OSI-approved BSD License
This converts the CMake license to a pure 3-clause OSI-approved BSD
License.  We drop the previous license clause requiring modified
versions to be plainly marked.  We also update the CMake copyright to
cover the full development time range.
2009-09-28 11:43:28 -04:00
Brad King 1353ed0bd8 BUG: Fix cmake-gui docs generation PATH feature
Automatic addition of the Qt DLL location to PATH can be done only for
generators that use a Windows shell.
2009-02-24 17:07:04 -05:00
Brad King 0d2f241e1a ENH: Help cmake-gui docs generation on Windows
We use a custom command to run 'cmake-gui --help...' to generate the
documentation for the application.  Since this is a Qt application, the
executable must find the Qt DLLs in order to run.  As a convenience, if
QtCore4.dll appears next to qmake.exe, we put its location in the PATH
environment variable when running the custom command on Windows.
2009-02-24 09:00:42 -05:00
Bill Hoffman f59e3348b9 ENH: add cmake gui docs 2009-02-13 21:51:46 -05:00
Alexander Neundorf 9a4e1c5cff STYLE: add "--help-policy" and "--help-policies" to the documentation
-generate and install the policy documentation files
-generate and install the docbook files for cmake, ctest, cpack, ccmake (cmake-gui not yet ?)

Alex
2008-05-13 15:43:00 -04:00
Ken Martin c2f0aac146 ENH: some more cleanup, fixes, and patch for HTML output 2007-10-24 11:36:47 -04:00
Alexander Neundorf 1941b1c5d2 STYLE: better error message, name the new manpages cmakecommands,
cmakecompat, cmakeprops and cmakemodules

Alex
2007-07-13 12:03:13 -04:00
Alexander Neundorf 919988b7b4 BUG: the cmake deps depend on cmake
Alex
2007-07-06 13:08:20 -04:00
Alexander Neundorf 55fa3825c0 BUG: fix build with cmake < 2.4
Alex
2007-07-02 11:05:43 -04:00
Alexander Neundorf 151d55557e ENH: generate separate documentation for the commands, compatiblity
commands, modules and properties as html, text and man pages.
The names of the man pages are cmcommands, cmcompat, cmprops and cmmodules,
so they are easy to type.

Alex
2007-06-28 15:04:28 -04:00
Alexander Neundorf c95dc91237 ENH:
-in the full documentation there is now an extra section for
compatibility commands, so users see which commands they shouldn't use
-cmake -h <command> now also works with lower case commands
--help-fullm --help-command, --help-module and --help-property now determine
the output format from the extension of the given filename

Let me know if there are some things I overlooked.

Alex
2007-06-28 11:00:57 -04:00
Alexander Neundorf c2f7a3c027 STYLE: use a macro for generating the documentation
Alex
2007-06-15 08:53:33 -04:00
Alexander Neundorf 756f455565 STYLE: add man page for cpack
Alex
2007-06-14 11:17:43 -04:00
Alexander Neundorf ca3a613595 STYLE: use GET_TARGET_PROPERTY(LOCATION) instead of manually building the
path to the executables (tested with cmake 2.2.3)

Alex
2007-06-07 13:05:08 -04:00
Bill Hoffman 3c45e181cf ENH: add KWStyle support 2007-05-10 15:13:52 -04:00
Brad King 6fe45fe9c3 ENH: Added option BUILD_CursesDialog if curses is found. This allows people to disable building the dialog even when curses is found. 2006-02-08 10:13:13 -05:00
Brad King 02f743c896 COMP: Fixed build on VC++ Express 2005. Explicitly testing for MFC to determine whether to build the MFCDialog. 2006-02-02 20:18:39 -05:00
Ken Martin 0dbf895780 BUG: converted to 1.8 form of custom commands 2005-07-15 12:01:20 -04:00
Andy Cedilnik 89f603b620 ENH: More cleanups and reorganization 2005-03-04 11:38:34 -05:00
Brad King c59cc5a542 ENH: Moved decision to build MFCDialog up to top level. It is used in both the Source and Utilities directories. 2003-08-22 12:53:25 -04:00
Brad King 1471a1a6f1 ENH: Added documentation for ctest. 2003-08-06 15:03:56 -04:00
Brad King dfdcd239ec ENH: Added build of documentation for CMakeSetup. 2003-07-23 17:59:37 -04:00
Brad King 0662fefca0 BUG: Don't install ccmake documentation if no ccmake was built. 2003-07-23 08:58:43 -04:00
Brad King 3c30dae03a ENH: Added generation of ccmake documentation on UNIX. 2003-07-21 17:14:16 -04:00
Brad King a1bb1a4712 ENH: Added optional configuration of data/doc/man dirs. This will be useful for package maintainers. 2003-07-21 16:38:53 -04:00
Sebastien Barre bc673070bc Doxygen doc generator 2001-11-02 16:05:37 -05:00