diff options
Diffstat (limited to 'configure.cmake')
-rw-r--r-- | configure.cmake | 83 |
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 ) |