diff options
Diffstat (limited to 'src/qml/configure.cmake')
-rw-r--r-- | src/qml/configure.cmake | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/src/qml/configure.cmake b/src/qml/configure.cmake new file mode 100644 index 0000000000..1bc647ff29 --- /dev/null +++ b/src/qml/configure.cmake @@ -0,0 +1,195 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + + + +#### Inputs + + + +#### Libraries + + +qt_find_package(LTTngUST PROVIDED_TARGETS LTTng::UST MODULE_NAME qml QMAKE_LIB lttng-ust) +qt_find_package(Python REQUIRED) +if(Python_Interpreter_FOUND) + # Need to make it globally available to the project + set(QT_INTERNAL_DECLARATIVE_PYTHON "${Python_EXECUTABLE}" CACHE STRING "" FORCE) +endif() + +#### Tests + +# arm_thumb +qt_config_compile_test(arm_thumb + LABEL "THUMB mode on ARM" + CODE +" + + +int main(int argc, char **argv) +{ + (void)argc; (void)argv; + /* BEGIN TEST: */ +#if defined(thumb2) || defined(__thumb2__) +# define THUMB_OK +#elif (defined(__thumb) || defined(__thumb__)) && __TARGET_ARCH_THUMB-0 == 4 +# define THUMB_OK +#elif defined(__ARM_ARCH_ISA_THUMB) && __ARM_ARCH_ISA_THUMB == 2 +// clang 3.5 and later will set this if the core supports the Thumb-2 ISA. +# define THUMB_OK +#else +# error \"fail\" +#endif + /* END TEST: */ + return 0; +} +") + +# arm_fp +qt_config_compile_test(arm_fp + LABEL "Sufficiently recent FPU on ARM" + CODE +" + + +int main(int argc, char **argv) +{ + (void)argc; (void)argv; + /* BEGIN TEST: */ +// if !defined(__ARM_FP) we might be on MSVC or we might have a device +// without an FPU. +// TODO: The latter case is not supported, but the test still succeeds. +#if defined(__ARM_FP) && (__ARM_FP <= 0x04) +# error \"fail\" +#endif + /* END TEST: */ + return 0; +} +") + + + +#### Features + +qt_feature("qml-network" PUBLIC + SECTION "QML" + LABEL "QML network support" + PURPOSE "Provides network transparency." + CONDITION QT_FEATURE_network +) + +qt_feature("qml-ssl" PUBLIC + SECTION "QML" + LABEL "QML SSL support" + PURPOSE "Provides ssl support in QML." + CONDITION QT_FEATURE_qml_network AND QT_FEATURE_ssl +) + +# On arm and arm64 we need a specialization of cacheFlush() for each OS to be +# enabled. Therefore the config white list. Finally, ios and tvos can +# technically use the JIT but Apple does not allow it. Therefore, it's disabled +# by default. +qt_feature("qml-jit" PRIVATE + SECTION "QML" + LABEL "QML just-in-time compiler" + PURPOSE "Provides a JIT for QML and JavaScript" + AUTODETECT NOT IOS AND NOT TVOS + CONDITION ( ( TEST_architecture_arch STREQUAL i386 AND QT_FEATURE_sse2 ) OR + ( TEST_architecture_arch STREQUAL x86_64 AND QT_FEATURE_sse2 ) OR + ( TEST_architecture_arch STREQUAL arm AND TEST_arm_fp AND TEST_arm_thumb AND ( ANDROID OR LINUX OR IOS OR TVOS OR QNX ) ) OR + ( TEST_architecture_arch STREQUAL arm64 AND TEST_arm_fp AND ( ANDROID OR LINUX OR IOS OR TVOS OR QNX OR INTEGRITY ) ) ) +) +# special case begin +# When doing macOS universal builds, JIT needs to be disabled for the ARM slice. +# Because both arm and x86_64 slices are built in one clang frontend invocation +# we need this hack to ensure each backend invocation sees the correct value +# of the feature definition. +qt_extra_definition("QT_QML_JIT_SUPPORTED_IMPL" "0 +// Unset dummy value +#undef QT_QML_JIT_SUPPORTED_IMPL +// Compute per-arch value and save in extra define +#if QT_CONFIG(qml_jit) && !(defined(Q_OS_MACOS) && defined(Q_PROCESSOR_ARM)) +#define QT_QML_JIT_SUPPORTED_IMPL 1 +#else +#define QT_QML_JIT_SUPPORTED_IMPL 0 +#endif +// Unset original feature value +#undef QT_FEATURE_qml_jit +// Set new value based on previous computation +#if QT_QML_JIT_SUPPORTED_IMPL +#define QT_FEATURE_qml_jit 1 +#else +#define QT_FEATURE_qml_jit -1 +#endif +" PRIVATE) +# special case end +qt_feature("qml-debug" PUBLIC + SECTION "QML" + LABEL "QML debugging and profiling support" + PURPOSE "Provides infrastructure and plugins for debugging and profiling." +) +qt_feature("qml-profiler" PRIVATE + SECTION "QML" + LABEL "Command line QML Profiler" + PURPOSE "Supports retrieving QML tracing data from an application." + CONDITION ( QT_FEATURE_commandlineparser ) AND ( QT_FEATURE_qml_debug ) AND ( QT_FEATURE_qml_network AND QT_FEATURE_localserver ) AND ( QT_FEATURE_xmlstreamwriter ) AND QT_FEATURE_process +) +qt_feature("qml-preview" PRIVATE + SECTION "QML" + LABEL "Command line QML Preview tool" + PURPOSE "Updates QML documents in your application live as you change them on disk" + CONDITION ( QT_FEATURE_commandlineparser ) AND ( QT_FEATURE_filesystemwatcher ) AND ( QT_FEATURE_qml_network AND QT_FEATURE_localserver ) AND ( QT_FEATURE_process ) AND ( QT_FEATURE_qml_debug ) +) +qt_feature("qml-xml-http-request" PRIVATE + SECTION "QML" + LABEL "QML XML http request" + PURPOSE "Provides support for sending XML http requests." + CONDITION ( QT_FEATURE_xmlstreamreader ) AND ( QT_FEATURE_qml_network ) +) +qt_feature("qml-locale" PRIVATE + SECTION "QML" + LABEL "QML Locale" + PURPOSE "Provides support for locales in QML." +) +qt_feature("qml-animation" PRIVATE + SECTION "QML" + LABEL "QML Animations" + PURPOSE "Provides support for animations and timers in QML." + CONDITION QT_FEATURE_animation +) +qt_feature("qml-worker-script" PRIVATE + SECTION "QML" + LABEL "QML WorkerScript" + PURPOSE "Enables the use of threads in QML." + CONDITION QT_FEATURE_thread +) +qt_feature("qml-itemmodel" PRIVATE + SECTION "QML" + LABEL "QML Item Model" + PURPOSE "Provides the item model for item views in QML" + CONDITION QT_FEATURE_itemmodel +) +qt_feature("qml-xmllistmodel" PRIVATE + SECTION "QML" + LABEL "QML XmlListModel" + PURPOSE "Enable XmlListModel in QML" + CONDITION QT_FEATURE_qml_itemmodel AND QT_FEATURE_future +) + +qt_feature("qml-python" PRIVATE + LABEL "python" + CONDITION Python_Interpreter_FOUND +) +qt_configure_add_summary_section(NAME "Qt QML") +qt_configure_add_summary_entry(ARGS "qml-network") +qt_configure_add_summary_entry(ARGS "qml-debug") +qt_configure_add_summary_entry(ARGS "qml-jit") +qt_configure_add_summary_entry(ARGS "qml-xml-http-request") +qt_configure_add_summary_entry(ARGS "qml-locale") +qt_configure_add_summary_entry(ARGS "qml-ssl") +qt_configure_end_summary_section() # end of "Qt QML" section +qt_configure_add_report_entry( + TYPE ERROR + MESSAGE "Python is required to build QtQml." + CONDITION NOT QT_FEATURE_qml_python +) |