aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorAlex Merry <alex.merry@kde.org>2015-11-15 15:09:48 +0000
committerAlex Merry <alex.merry@kde.org>2015-11-22 10:39:45 +0000
commitc941061aa989bba945e296aad47df22f9c8ddd5f (patch)
tree02ce7b041d556579bd2c8c3c224776553c8cc5bd /cmake
parent8f0cbc9f8a8e3b60df6755da1d7d5369ef37b8f2 (diff)
downloadextra-cmake-modules-c941061aa989bba945e296aad47df22f9c8ddd5f.tar.gz
extra-cmake-modules-c941061aa989bba945e296aad47df22f9c8ddd5f.tar.bz2
Overhaul the ECM build system.
It should now be easier to read, and more featureful. Among other tweaks, we now print a summary of dependencies and build options, and the documentation is generated with more sensible breadcrumbs and builds properly with Sphinx 1.3. REVIEW: 126075
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindQCollectionGenerator.cmake94
-rw-r--r--cmake/FindSphinx.cmake91
2 files changed, 185 insertions, 0 deletions
diff --git a/cmake/FindQCollectionGenerator.cmake b/cmake/FindQCollectionGenerator.cmake
new file mode 100644
index 00000000..315f5fae
--- /dev/null
+++ b/cmake/FindQCollectionGenerator.cmake
@@ -0,0 +1,94 @@
+#.rst:
+# FindQCollectionGenerator
+# ------------------------
+#
+# Try to find the Qt help collection generator.
+#
+# This will define the following variables:
+#
+# ``QCollectionGenerator_FOUND``
+# True if (the requested version of) Sphinx is available
+# ``QCollectionGenerator_VERSION``
+# The version of the Qt help collection generator. Note that this not the
+# same as the version of Qt it is provided by.
+# ``QCollectionGenerator_QT_VERSION``
+# The version of Qt that the Qt help collection generator is from.
+# ``QCollectionGenerator_EXECUTABLE``
+# The path to the Qt help collection generator executable.
+#
+# If ``QCollectionGenerator_FOUND`` is TRUE, it will also define the following
+# imported target:
+#
+# ``QCollectionGenerator::Generator``
+# The Qt help collection generator.
+#
+# In general we recommend using the imported target, as it is easier to use.
+#
+# Since 5.17.0.
+
+#=============================================================================
+# Copyright 2015 Alex Merry <alex.merry@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+find_program(QCollectionGenerator_EXECUTABLE
+ NAMES
+ qcollectiongenerator
+ qcollectiongenerator-qt4
+ qcollectiongenerator-qt5
+ DOC "Qt help collection generator"
+)
+
+if (QCollectionGenerator_EXECUTABLE)
+ if(NOT TARGET QCollectionGenerator::Generator)
+ add_executable(QCollectionGenerator::Generator IMPORTED)
+ set_target_properties(QCollectionGenerator::Generator PROPERTIES
+ IMPORTED_LOCATION "${QCollectionGenerator_EXECUTABLE}"
+ )
+ endif()
+
+ execute_process(
+ COMMAND "${QCollectionGenerator_EXECUTABLE}" -v
+ OUTPUT_VARIABLE _QCollectionGenerator_version_raw
+ ERROR_VARIABLE _QCollectionGenerator_version_raw
+ )
+ if (_QCollectionGenerator_version_raw MATCHES "^Qt Collection Generator version ([0-9]+(\\.[0-9]+)*) \\(Qt ([0-9]+(\\.[0-9]+)*)\\)")
+ set(QCollectionGenerator_VERSION "${CMAKE_MATCH_1}")
+ set(QCollectionGenerator_QT_VERSION "${CMAKE_MATCH_3}")
+ endif()
+ unset(_QCollectionGenerator_version_raw)
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(QCollectionGenerator
+ FOUND_VAR
+ QCollectionGenerator_FOUND
+ REQUIRED_VARS
+ QCollectionGenerator_EXECUTABLE
+ VERSION_VAR
+ QCollectionGenerator_VERSION
+)
+
+mark_as_advanced(QCollectionGenerator_EXECUTABLE)
diff --git a/cmake/FindSphinx.cmake b/cmake/FindSphinx.cmake
new file mode 100644
index 00000000..276f3a28
--- /dev/null
+++ b/cmake/FindSphinx.cmake
@@ -0,0 +1,91 @@
+#.rst:
+# FindSphinx
+# ----------
+#
+# Try to find the Sphinx documentation builder.
+#
+# This will define the following variables:
+#
+# ``Sphinx_FOUND``
+# True if (the requested version of) Sphinx is available
+# ``Sphinx_VERSION``
+# The version of the Sphinx documentation builder.
+# ``Sphinx_BUILD_EXECUTABLE``
+# The path to the Sphinx documentation builder executable.
+#
+# If ``Sphinx_FOUND`` is TRUE, it will also define the following imported target:
+#
+# ``Sphinx::Build``
+# The Sphinx documentation builder.
+#
+# In general we recommend using the imported target, as it is easier to use.
+#
+# Since 5.17.0.
+
+#=============================================================================
+# Copyright 2015 Alex Merry <alex.merry@kde.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+# Distros sometimes rename Python executables to allow for parallel
+# installation of Python2 and Python3 versions
+find_program(Sphinx_BUILD_EXECUTABLE
+ NAMES
+ sphinx-build
+ sphinx-build2
+ sphinx-build3
+ DOC "Sphinx Documentation Builder (http://sphinx-doc.org/)"
+)
+
+if (Sphinx_BUILD_EXECUTABLE)
+ if(NOT TARGET Sphinx::Build)
+ add_executable(Sphinx::Build IMPORTED)
+ set_target_properties(Sphinx::Build PROPERTIES
+ IMPORTED_LOCATION "${Sphinx_BUILD_EXECUTABLE}"
+ )
+ endif()
+
+ execute_process(
+ COMMAND "${Sphinx_BUILD_EXECUTABLE}" --version
+ OUTPUT_VARIABLE _Sphinx_version_raw
+ ERROR_VARIABLE _Sphinx_version_raw
+ )
+ if (_Sphinx_version_raw MATCHES "^Sphinx \\([^)]*\\) ([0-9]+(\\.[0-9]+)*)")
+ set(Sphinx_VERSION "${CMAKE_MATCH_1}")
+ endif()
+ unset(_Sphinx_version_raw)
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Sphinx
+ FOUND_VAR
+ Sphinx_FOUND
+ REQUIRED_VARS
+ Sphinx_BUILD_EXECUTABLE
+ VERSION_VAR
+ Sphinx_VERSION
+)
+
+mark_as_advanced(Sphinx_BUILD_EXECUTABLE)