aboutsummaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorKevin Funk <kfunk@kde.org>2019-06-06 22:42:18 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2020-03-18 21:26:20 +0100
commita59826003e2e361bbe1beb9c899afc2ca25bc736 (patch)
tree86ff52611693aeeeb1c8fd66d8a51d10a4844c5f /cmake
parent34bbbedb78de9686949ea533306fa4e6468f2b70 (diff)
Start the CMake superbuild
Also import and use ECMOptionalAddSubdirectory.cmake to add other module's as subdirectories, in case the directories exist. Additionally this module allows to disable the build of submodules by passing e.g. BUILD_qtsvg=OFF. This probably needs more though on how to hande the intermodule dependencies, but it's a start. Task-number: QTBUG-75582 Change-Id: Ic3de9711d9b865b2d96bdaee0089f570408b9693 Reviewed-by: Qt CMake Build Bot Reviewed-by: Cristian Adam <cristian.adam@qt.io> (cherry picked from commit 7509458d5f1ed5a48285471e32eda333cc3eeb8c) Reviewed-by: Leander Beernaert <leander.beernaert@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/ECMOptionalAddSubdirectory.cmake73
1 files changed, 73 insertions, 0 deletions
diff --git a/cmake/ECMOptionalAddSubdirectory.cmake b/cmake/ECMOptionalAddSubdirectory.cmake
new file mode 100644
index 00000000..79a533d4
--- /dev/null
+++ b/cmake/ECMOptionalAddSubdirectory.cmake
@@ -0,0 +1,73 @@
+#.rst:
+# ECMOptionalAddSubdirectory
+# --------------------------
+#
+# Make subdirectories optional.
+#
+# ::
+#
+# ecm_optional_add_subdirectory(<dir>)
+#
+# This behaves like add_subdirectory(), except that it does not complain if the
+# directory does not exist. Additionally, if the directory does exist, it
+# creates an option to allow the user to skip it. The option will be named
+# BUILD_<dir>.
+#
+# This is useful for "meta-projects" that combine several mostly-independent
+# sub-projects.
+#
+# If the CMake variable DISABLE_ALL_OPTIONAL_SUBDIRECTORIES is set to TRUE for
+# the first CMake run on the project, all optional subdirectories will be
+# disabled by default (but can of course be enabled via the respective options).
+# For example, the following will disable all optional subdirectories except the
+# one named "foo":
+#
+# .. code-block:: sh
+#
+# cmake -DDISABLE_ALL_OPTIONAL_SUBDIRECTORIES=TRUE -DBUILD_foo=TRUE myproject
+#
+# Since pre-1.0.0.
+
+#=============================================================================
+# Copyright 2007 Alexander Neundorf <neundorf@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.
+
+function(ECM_OPTIONAL_ADD_SUBDIRECTORY _dir)
+ get_filename_component(_fullPath ${_dir} ABSOLUTE)
+ if(EXISTS ${_fullPath}/CMakeLists.txt)
+ if(DISABLE_ALL_OPTIONAL_SUBDIRECTORIES)
+ set(_DEFAULT_OPTION_VALUE FALSE)
+ else()
+ set(_DEFAULT_OPTION_VALUE TRUE)
+ endif()
+ if(DISABLE_ALL_OPTIONAL_SUBDIRS AND NOT DEFINED BUILD_${_dir})
+ set(_DEFAULT_OPTION_VALUE FALSE)
+ endif()
+ option(BUILD_${_dir} "Build directory ${_dir}" ${_DEFAULT_OPTION_VALUE})
+ if(BUILD_${_dir})
+ add_subdirectory(${_dir})
+ endif()
+ endif()
+endfunction()