From 5c092c2b40199ba05bc4a5bd4daed503a65d6c49 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 24 Aug 2020 21:05:05 +0200 Subject: [PATCH] CMake: Implement configure -trace Task-number: QTBUG-85373 Change-Id: Ib9ac35ec98dd5b6c272f58f8a61a124d1d262ec0 Reviewed-by: Cristian Adam --- cmake/QtTargetHelpers.cmake | 36 +++++++++++++++++++++++++++----- cmake/configure-cmake-mapping.md | 3 ++- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake index c79ce47363..d7a8e3c86b 100644 --- a/cmake/QtTargetHelpers.cmake +++ b/cmake/QtTargetHelpers.cmake @@ -326,10 +326,36 @@ function(qt_internal_export_modern_cmake_config_targets_file) qt_install(EXPORT ${export_name} NAMESPACE Qt:: DESTINATION "${__arg_CONFIG_INSTALL_DIR}") endfunction() -function(qt_create_tracepoints name tracePointsFile) - #### TODO - string(TOLOWER "${name}" name) +function(qt_create_tracepoints name tracepoints_file) + string(TOLOWER "${name}" provider_name) + string(PREPEND provider_name "qt") + set(header_filename "${provider_name}_tracepoints_p.h") + set(header_path "${CMAKE_CURRENT_BINARY_DIR}/${header_filename}") - file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/qt${name}_tracepoints_p.h" CONTENT - "#include ") + if(QT_FEATURE_lttng OR QT_FEATURE_etw) + set(source_path "${CMAKE_CURRENT_BINARY_DIR}/${provider_name}_tracepoints.cpp") + qt_configure_file(OUTPUT "${source_path}" + CONTENT "#define TRACEPOINT_CREATE_PROBES +#define TRACEPOINT_DEFINE +#define include \"${header_filename}\"") + target_sources(${name} PRIVATE "${source_path}") + target_compile_definitions(${name} PRIVATE Q_TRACEPOINT) + + if(QT_FEATURE_lttng) + set(tracegen_arg "lttng") + target_link_libraries(${name} PRIVATE LTTng::UST) + elseif(QT_FEATURE_etw) + set(tracegen_arg "etw") + endif() + + qt_get_tool_target_name(tracegen_target tracegen) + get_filename_component(tracepoints_filepath "${tracepoints_file}" ABSOLUTE) + add_custom_command(OUTPUT "${header_path}" + COMMAND ${tracegen_target} ${tracegen_arg} "${tracepoints_filepath}" "${header_path}" + VERBATIM) + add_custom_target(${name}_tracepoints_header DEPENDS "${header_path}") + add_dependencies(${name} ${name}_tracepoints_header) + else() + qt_configure_file(OUTPUT "${header_path}" CONTENT "#include \n") + endif() endfunction() diff --git a/cmake/configure-cmake-mapping.md b/cmake/configure-cmake-mapping.md index 62e4e1acd7..2f6814e283 100644 --- a/cmake/configure-cmake-mapping.md +++ b/cmake/configure-cmake-mapping.md @@ -50,7 +50,8 @@ The effort of this is tracked in QTBUG-85373 and QTBUG-85349. | -qtlibinfix | | | | -testcocoon | | | | -gcov | | | -| -trace [backend] | | | +| -trace [backend] | -DINPUT_trace=yes or -DINPUT_trace= | | +| | or -DFEATURE_ | | | -sanitize | -DFEATURE_sanitize_ | | | -coverage | | | | -c++std c++2a | -DFEATURE_cxx2a=ON | |