summaryrefslogtreecommitdiffstats
path: root/tests/auto/tools/moc/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/tools/moc/CMakeLists.txt')
-rw-r--r--tests/auto/tools/moc/CMakeLists.txt159
1 files changed, 159 insertions, 0 deletions
diff --git a/tests/auto/tools/moc/CMakeLists.txt b/tests/auto/tools/moc/CMakeLists.txt
new file mode 100644
index 0000000000..1377c48306
--- /dev/null
+++ b/tests/auto/tools/moc/CMakeLists.txt
@@ -0,0 +1,159 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+#####################################################################
+## tst_moc Test:
+#####################################################################
+
+if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT)
+ cmake_minimum_required(VERSION 3.16)
+ project(tst_moc LANGUAGES CXX)
+ find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST)
+endif()
+
+set(JSON_HEADERS
+ backslash-newlines.h
+ c-comments.h
+ cstyle-enums.h
+ cxx11-enums.h
+ cxx11-explicit-override-control.h
+ cxx11-final-classes.h
+ cxx11-trailing-return.h
+ cxx17-namespaces.h
+ dir-in-include-path.h
+ escapes-in-string-literals.h
+ enum_with_include.h
+ forward-declared-param.h
+ function-with-attributes.h
+ gadgetwithnoenums.h
+ grand-parent-gadget-class.h
+ moc_include.h
+ namespace.h
+ namespaced-flags.h
+ namespaced-base-class.h
+ no-keywords.h
+ non-gadget-parent-class.h
+ oldstyle-casts.h
+ parse-defines.h
+ plugin_metadata.h
+ pointery_to_incomplete.h
+ pure-virtual-signals.h
+ qinvokable.h
+ qprivateslots.h
+ qtbug-35657-gadget.h
+ related-metaobjects-in-gadget.h
+ related-metaobjects-in-namespaces.h
+ related-metaobjects-name-conflict.h
+ signal-with-default-arg.h
+ single-quote-digit-separator-n3781.h
+ single_function_keyword.h
+ slots-with-void-template.h
+ task192552.h
+ task234909.h
+ task240368.h
+ task87883.h
+ trigraphs.h
+ using-namespaces.h
+)
+
+qt_wrap_cpp(comparison_relevant_moc_list ${JSON_HEADERS}
+ TARGET tst_moc
+ OPTIONS
+ "-Muri=com.company.app"
+ "-Muri=com.company.app.private"
+ "-DDEFINE_CMDLINE_EMPTY="
+ "-DDEFINE_CMDLINE_SIGNAL=void cmdlineSignal(const QMap<int, int> &i)"
+ "--output-json"
+)
+
+list(TRANSFORM comparison_relevant_moc_list APPEND ".json" OUTPUT_VARIABLE moc_json_files)
+
+qt_internal_add_test(tst_moc
+ SOURCES
+ cxx-attributes.h
+ tst_moc.cpp
+ ${comparison_relevant_moc_list}
+ INCLUDE_DIRECTORIES
+ testproject
+ testproject/include
+ MOC_OPTIONS
+ "-Muri=com.company.app"
+ "-Muri=com.company.app.private"
+ "-DDEFINE_CMDLINE_EMPTY="
+ "-DDEFINE_CMDLINE_SIGNAL=void cmdlineSignal(const QMap<int, int> &i)"
+ "--output-json"
+ EXCEPTIONS
+)
+
+qt_internal_extend_target(tst_moc LIBRARIES Qt::CorePrivate)
+
+qt_internal_extend_target(tst_moc CONDITION CMAKE_CROSSCOMPILING
+ DEFINES
+ MOC_CROSS_COMPILED
+)
+
+if (UNIX AND (CLANG OR GCC OR QCC))
+ qt_wrap_cpp(os9_moc os9-newlines.h)
+endif()
+
+qt_internal_extend_target(tst_moc CONDITION UNIX AND (CLANG OR GCC OR QCC)
+ SOURCES
+ os9-newlines.h
+ win-newlines.h
+ ${os9_moc}
+)
+
+qt_internal_extend_target(tst_moc CONDITION CLANG OR GCC
+ SOURCES
+ dollars.h
+)
+
+qt_internal_extend_target(tst_moc CONDITION TARGET Qt::DBus
+ LIBRARIES
+ Qt::DBus
+)
+
+qt_internal_extend_target(tst_moc CONDITION TARGET Qt::Concurrent
+ LIBRARIES
+ Qt::Concurrent
+)
+
+qt_internal_extend_target(tst_moc CONDITION TARGET Qt::Network
+ LIBRARIES
+ Qt::Network
+)
+
+qt_internal_extend_target(tst_moc CONDITION TARGET Qt::Sql
+ LIBRARIES
+ Qt::Sql
+)
+
+get_target_property(target_binary_dir tst_moc BINARY_DIR)
+set(cmake_autogen_cache_file
+ "${target_binary_dir}/CMakeFiles/tst_moc_autogen.dir/ParseCache.txt")
+set(cmake_autogen_info_file
+ "${target_binary_dir}/CMakeFiles/tst_moc_autogen.dir/AutogenInfo.json")
+set(moc_json_out ${target_binary_dir}/moc_json_out)
+
+file(REMOVE ${moc_json_out})
+foreach(filename ${moc_json_files})
+ file(APPEND ${moc_json_out} "${filename}\n")
+endforeach()
+
+set(metatype_file "allmocs.json")
+configure_file("allmocs_baseline_in.json" "${target_binary_dir}/allmocs_baseline.json")
+
+add_custom_command(TARGET tst_moc
+ POST_BUILD
+ COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::moc
+ -o "allmocs.json"
+ --collect-json "@${moc_json_out}"
+ COMMENT "Running moc with --collect-json"
+ VERBATIM
+)
+
+# Add dependencies that are implicitly used inside the test
+add_dependencies(tst_moc
+ Qt::qtpaths
+ Qt::moc
+)