summaryrefslogtreecommitdiffstats
path: root/configure.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'configure.cmake')
-rw-r--r--configure.cmake83
1 files changed, 56 insertions, 27 deletions
diff --git a/configure.cmake b/configure.cmake
index d0a64ea0f..e0facf0b9 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -1,4 +1,5 @@
-
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
#### Inputs
@@ -27,25 +28,44 @@ endif()
#### Features
+# Check whether the sqlite plugin is available.
+set(sqlite_plugin_available FALSE)
+if(NOT QT_CONFIGURE_RUNNING)
+ if(TARGET ${QT_CMAKE_EXPORT_NAMESPACE}::Sql)
+ get_target_property(sql_plugins ${QT_CMAKE_EXPORT_NAMESPACE}::Sql QT_PLUGINS)
+ if(QSQLiteDriverPlugin IN_LIST sql_plugins)
+ set(sqlite_plugin_available TRUE)
+ endif()
+ endif()
+endif()
+
qt_feature("assistant" PRIVATE
LABEL "Qt Assistant"
PURPOSE "Qt Assistant is a tool for viewing on-line documentation in Qt help file format."
+ CONDITION TARGET Qt::Widgets AND QT_FEATURE_png AND QT_FEATURE_pushbutton AND QT_FEATURE_toolbutton AND (sqlite_plugin_available OR QT_BUILD_SHARED_LIBS)
)
qt_feature("clang" PRIVATE
- LABEL "QDoc"
+ LABEL "libclang found"
CONDITION TEST_libclang
)
+qt_feature("qdoc" PRIVATE
+ LABEL "QDoc"
+ PURPOSE "QDoc is Qt's documentation generator for C++ and QML projects."
+ CONDITION TARGET Qt::QmlPrivate AND QT_FEATURE_clang AND QT_FEATURE_commandlineparser AND QT_FEATURE_thread AND QT_LIB_CLANG_VERSION VERSION_GREATER_EQUAL QDOC_MINIMUM_CLANG_VERSION
+)
qt_feature("clangcpp" PRIVATE
LABEL "Clang-based lupdate parser"
- CONDITION QT_FEATURE_clang AND TEST_libclang
+ CONDITION QT_FEATURE_clang AND (NOT MSVC OR MSVC_VERSION LESS "1939" OR QT_LIB_CLANG_VERSION_MAJOR GREATER_EQUAL "16")
)
qt_feature("designer" PRIVATE
- LABEL "Qt Designer"
- PURPOSE "Qt Designer is the Qt tool for designing and building graphical user interfaces (GUIs) with Qt Widgets. You can compose and customize your windows or dialogs in a what-you-see-is-what-you-get (WYSIWYG) manner, and test them using different styles and resolutions."
+ LABEL "Qt Widgets Designer"
+ PURPOSE "Qt Widgets Designer is the Qt tool for designing and building graphical user interfaces (GUIs) with Qt Widgets. You can compose and customize your windows or dialogs in a what-you-see-is-what-you-get (WYSIWYG) manner, and test them using different styles and resolutions."
+ CONDITION TARGET Qt::Widgets AND QT_FEATURE_png AND QT_FEATURE_pushbutton AND QT_FEATURE_toolbutton
)
qt_feature("distancefieldgenerator" PRIVATE
LABEL "Qt Distance Field Generator"
PURPOSE "The Qt Distance Field Generator tool can be used to pregenerate the font cache in order to optimize startup performance."
+ CONDITION TARGET Qt::Widgets AND QT_FEATURE_png AND QT_FEATURE_thread AND QT_FEATURE_toolbutton AND TARGET Qt::Quick
)
qt_feature("kmap2qmap" PRIVATE
LABEL "kmap2qmap"
@@ -55,18 +75,15 @@ qt_feature("linguist" PRIVATE
LABEL "Qt Linguist"
PURPOSE "Qt Linguist can be used by translator to translate text in Qt applications."
)
-qt_feature("macdeployqt" PRIVATE
- LABEL "Mac Deployment Tool"
- PURPOSE "The Mac deployment tool automates the process of creating a deployable application bundle that contains the Qt libraries as private frameworks."
- CONDITION APPLE
-)
qt_feature("pixeltool" PRIVATE
LABEL "pixeltool"
PURPOSE "The Qt Pixel Zooming Tool is a graphical application that magnifies the screen around the mouse pointer so you can look more closely at individual pixels."
+ CONDITION TARGET Qt::Widgets AND QT_FEATURE_png AND QT_FEATURE_pushbutton AND QT_FEATURE_toolbutton
)
qt_feature("qdbus" PRIVATE
LABEL "qdbus"
PURPOSE "qdbus is a communication interface for Qt-based applications."
+ CONDITION TARGET Qt::DBus
)
qt_feature("qev" PRIVATE
LABEL "qev"
@@ -75,23 +92,17 @@ qt_feature("qev" PRIVATE
qt_feature("qtattributionsscanner" PRIVATE
LABEL "Qt Attributions Scanner"
PURPOSE "Qt Attributions Scanner generates attribution documents for third-party code in Qt."
+ CONDITION QT_FEATURE_commandlineparser
)
qt_feature("qtdiag" PRIVATE
LABEL "qtdiag"
PURPOSE "qtdiag outputs information about the Qt installation it was built with."
-)
-qt_feature("qtpaths" PRIVATE
- LABEL "qtpaths"
- PURPOSE "qtpaths is a command line client to QStandardPaths."
+ CONDITION QT_FEATURE_commandlineparser AND TARGET Qt::Gui AND NOT ANDROID AND NOT QNX AND NOT UIKIT AND NOT WASM
)
qt_feature("qtplugininfo" PRIVATE
LABEL "qtplugininfo"
PURPOSE "qtplugininfo dumps metadata about Qt plugins in JSON format."
-)
-qt_feature("windeployqt" PRIVATE
- LABEL "Windows deployment tool"
- PURPOSE "The Windows deployment tool is designed to automate the process of creating a deployable folder containing the Qt-related dependencies (libraries, QML imports, plugins, and translations) required to run the application from that folder. It creates a sandbox for Universal Windows Platform (UWP) or an installation tree for Windows desktop applications, which can be easily bundled into an installation package."
- CONDITION WIN32
+ CONDITION QT_FEATURE_commandlineparser AND QT_FEATURE_library AND (android_app OR NOT ANDROID)
)
qt_configure_add_summary_section(NAME "Qt Tools")
qt_configure_add_summary_entry(ARGS "assistant")
@@ -99,26 +110,44 @@ qt_configure_add_summary_entry(ARGS "clang")
qt_configure_add_summary_entry(ARGS "clangcpp")
qt_configure_add_summary_entry(ARGS "designer")
qt_configure_add_summary_entry(ARGS "distancefieldgenerator")
-qt_configure_add_summary_entry(ARGS "kmap2qmap")
+#qt_configure_add_summary_entry(ARGS "kmap2qmap")
qt_configure_add_summary_entry(ARGS "linguist")
-qt_configure_add_summary_entry(ARGS "macdeployqt")
qt_configure_add_summary_entry(ARGS "pixeltool")
qt_configure_add_summary_entry(ARGS "qdbus")
-qt_configure_add_summary_entry(ARGS "qev")
+qt_configure_add_summary_entry(ARGS "qdoc")
+#qt_configure_add_summary_entry(ARGS "qev")
qt_configure_add_summary_entry(ARGS "qtattributionsscanner")
qt_configure_add_summary_entry(ARGS "qtdiag")
-qt_configure_add_summary_entry(ARGS "qtpaths")
qt_configure_add_summary_entry(ARGS "qtplugininfo")
-qt_configure_add_summary_entry(ARGS "windeployqt")
qt_configure_end_summary_section() # end of "Qt Tools" section
qt_configure_add_report_entry(
TYPE WARNING
- MESSAGE "QDoc will not be compiled, probably because libclang could not be located. This means that you cannot build the Qt documentation.
- Either ensure that llvm-config is in your PATH environment variable, or set LLVM_INSTALL_DIR to the location of your llvm installation. On Linux systems, you may be able to install libclang by installing the libclang-dev or libclang-devel package, depending on your distribution. On macOS, you can use Homebrew's llvm package. On Windows, you must set LLVM_INSTALL_DIR to the installation path."
+ MESSAGE "QDoc will not be compiled, probably because clang's C and C++ libraries could not be located. This means that you cannot build the Qt documentation.
+You may need to set CMAKE_PREFIX_PATH or LLVM_INSTALL_DIR to the location of your llvm installation.
+Other than clang's libraries, you may need to install another package, such as clang itself, to provide the ClangConfig.cmake file needed to detect your libraries. Once this
+file is in place, the configure script may be able to detect your system-installed libraries without further environment variables.
+On macOS, you can use Homebrew's llvm package.
+You will also need to set the FEATURE_clang CMake variable to ON to re-evaluate this check."
CONDITION NOT QT_FEATURE_clang
)
qt_configure_add_report_entry(
TYPE WARNING
- MESSAGE "Clang-based lupdate parser will not be available. LLVM and Clang C++ libraries have not been found."
+ MESSAGE "QDoc will not be compiled because the QmlPrivate library wasn't found."
+ CONDITION NOT TARGET Qt::QmlPrivate
+)
+qt_configure_add_report_entry(
+ TYPE WARNING
+ MESSAGE "QDoc cannot be compiled without Qt's commandline parser or thread features."
+ CONDITION NOT QT_FEATURE_commandlineparser OR NOT QT_FEATURE_thread
+)
+qt_configure_add_report_entry(
+ TYPE WARNING
+ MESSAGE "QDoc will not be compiled because it requires libclang ${QDOC_MINIMUM_CLANG_VERSION} or newer."
+ CONDITION QT_LIB_CLANG_VERSION VERSION_LESS QDOC_MINIMUM_CLANG_VERSION
+)
+qt_configure_add_report_entry(
+ TYPE WARNING
+ MESSAGE "Clang-based lupdate parser will not be available. Suitable LLVM and Clang C++ libraries have not been found.
+You will need to set the FEATURE_clangcpp CMake variable to ON to re-evaluate this check."
CONDITION NOT QT_FEATURE_clangcpp
)