summaryrefslogtreecommitdiffstats
path: root/util/cmake/pro2cmake.py
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2020-03-26 17:42:48 +0100
committerAlexandru Croitor <alexandru.croitor@qt.io>2020-04-02 09:39:36 +0200
commit622894f96e93d62147a28a6f37b7ee6a90d74042 (patch)
treecb6250f435fcab8624312521b16cc768bfe7638b /util/cmake/pro2cmake.py
parent560e8547b322b067348f57690462332b5943b394 (diff)
CMake: Allow excluding tools and apps from the default 'all' target
Qt uses the qtNomakeTools() function to mark a directory which will not be built as part of the default target. This is especially important when cross-compiling (to iOS for example) because the build process might fail. The condition for not building these "GUI tool sub-directory projects" is the absence of the "tools" value in qmake's QT_BUILD_PARTS variable. Introduce a QT_NO_MAKE_TOOLS CMake variable. If the value is true, it's equivalent to "tools" not being present in QT_BUILD_PARTS. Introduce qt_exclude_tool_directories_from_default_target(). It's the qmake counter part to qtNomakeTools(). Teach pro2cmake to generate it where appropriate. Change-Id: If2e5958d91847ab139af0e452608510286e73fa0 Reviewed-by: Leander Beernaert <leander.beernaert@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'util/cmake/pro2cmake.py')
-rwxr-xr-xutil/cmake/pro2cmake.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/util/cmake/pro2cmake.py b/util/cmake/pro2cmake.py
index d4bcf81063..e496a2448d 100755
--- a/util/cmake/pro2cmake.py
+++ b/util/cmake/pro2cmake.py
@@ -1064,6 +1064,13 @@ class Scope(object):
if project_required_condition:
scope._append_operation("_REQUIREMENTS", AddOperation(project_required_condition))
+ qt_no_make_tools = statement.get("qt_no_make_tools_arguments")
+ if qt_no_make_tools:
+ qt_no_make_tools = qt_no_make_tools.strip("()").strip()
+ qt_no_make_tools = qt_no_make_tools.split()
+ for entry in qt_no_make_tools:
+ scope._append_operation("_QT_NO_MAKE_TOOLS", AddOperation(entry))
+
scope.settle_condition()
if scope.scope_debug:
@@ -1783,6 +1790,16 @@ def handle_subdir(
)
group_and_print_sub_dirs(scope, indent=indent)
+ qt_no_make_tools = scope.get("_QT_NO_MAKE_TOOLS")
+ if qt_no_make_tools:
+ ind = spaces(indent + 1)
+ directories_string = ""
+ for directory in qt_no_make_tools:
+ directories_string += f"{ind}{directory}\n"
+ cm_fh.write(
+ f"\nqt_exclude_tool_directories_from_default_target(\n{directories_string})\n\n"
+ )
+
def sort_sources(sources: List[str]) -> List[str]:
to_sort = {} # type: Dict[str, List[str]]