diff options
author | Rafael Roquetto <rafael.roquetto@kdab.com> | 2017-02-01 17:32:13 -0200 |
---|---|---|
committer | Sérgio Martins <sergio.martins@kdab.com> | 2018-01-28 19:17:02 +0000 |
commit | 48bce2e8f0d787342f3e0f86335460fa25e8ac8f (patch) | |
tree | 038af77f6e112f6c9a348a386e9c1eaff3aeab47 /mkspecs | |
parent | 2b7de16fbe399daa00986f2d32d05cfe51966b66 (diff) |
Support for LTTNG and ETW tracing
This commit introduces minimal support for instrumentation within Qt.
Currently, only LTTNG/Linux and ETW/Windows are supported.
Change-Id: I59b48cf83acf5532a998bb493e6379e9177e14c8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'mkspecs')
-rw-r--r-- | mkspecs/features/exclusive_builds.prf | 4 | ||||
-rw-r--r-- | mkspecs/features/qt_build_config.prf | 1 | ||||
-rw-r--r-- | mkspecs/features/qt_tracepoints.prf | 54 |
3 files changed, 57 insertions, 2 deletions
diff --git a/mkspecs/features/exclusive_builds.prf b/mkspecs/features/exclusive_builds.prf index f40cc99172..b477cff162 100644 --- a/mkspecs/features/exclusive_builds.prf +++ b/mkspecs/features/exclusive_builds.prf @@ -38,5 +38,5 @@ defineTest(addExclusiveBuilds) { } # Default directories to process -QMAKE_DIR_REPLACE = OBJECTS_DIR MOC_DIR RCC_DIR PRECOMPILED_DIR QGLTF_DIR DESTDIR -QMAKE_DIR_REPLACE_SANE += QGLTF_DIR +QMAKE_DIR_REPLACE = OBJECTS_DIR MOC_DIR RCC_DIR PRECOMPILED_DIR QGLTF_DIR DESTDIR TRACEGEN_DIR +QMAKE_DIR_REPLACE_SANE += QGLTF_DIR TRACEGEN_DIR diff --git a/mkspecs/features/qt_build_config.prf b/mkspecs/features/qt_build_config.prf index 76e1d15319..a2fa1be481 100644 --- a/mkspecs/features/qt_build_config.prf +++ b/mkspecs/features/qt_build_config.prf @@ -25,6 +25,7 @@ OBJECTS_DIR = .obj MOC_DIR = .moc RCC_DIR = .rcc UI_DIR = .uic +TRACEGEN_DIR = .tracegen intel_icl { # ICL 14.0 has a bug that makes it not find #includes in dirs starting with . MOC_DIR = tmp/moc diff --git a/mkspecs/features/qt_tracepoints.prf b/mkspecs/features/qt_tracepoints.prf new file mode 100644 index 0000000000..d1b45a47cb --- /dev/null +++ b/mkspecs/features/qt_tracepoints.prf @@ -0,0 +1,54 @@ +# W A R N I N G +# ------------- +# +# This file is not part of the Qt API. It exists purely as an +# implementation detail. It may change from version to version +# without notice, or even be removed. +# +# We mean it. +# + +qtPrepareTool(QMAKE_TRACEGEN, tracegen) + +isEmpty(TRACEGEN_DIR): TRACEGEN_DIR = . + +PROVIDER_NAME = qt$$lower($$MODULE) +INCLUDEPATH += $$absolute_path($$TRACEGEN_DIR, $$OUT_PWD) +HEADER_PATH = $$OUT_PWD/$$TRACEGEN_DIR/$${PROVIDER_NAME}_tracepoints_p$${first(QMAKE_EXT_H)} + +!force_bootstrap:if(qtConfig(lttng)|qtConfig(etw)) { + SOURCE_PATH = $$OUT_PWD/$$TRACEGEN_DIR/$${PROVIDER_NAME}_tracepoints$${first(QMAKE_EXT_CPP)} + + isEmpty(BUILDS)|build_pass { + impl_file_contents = \ + "$${LITERAL_HASH}define TRACEPOINT_CREATE_PROBES" \ + "$${LITERAL_HASH}define TRACEPOINT_DEFINE" \ + "$${LITERAL_HASH}include \"$${HEADER_PATH}\"" + + write_file($$SOURCE_PATH, impl_file_contents)|error() + } + + GENERATED_SOURCES += $$SOURCE_PATH + + tracegen.input = TRACEPOINT_PROVIDER + tracegen.output = $$HEADER_PATH + tracegen.variable_out = HEADERS + tracegen.depends += $$QMAKE_TRACEGEN_EXE + tracegen.CONFIG = target_predeps + + qtConfig(lttng) { + tracegen.commands = $$QMAKE_TRACEGEN lttng ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT} + QMAKE_USE_PRIVATE += lttng-ust + } else { + tracegen.commands = $$QMAKE_TRACEGEN etw ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT} + } + + QMAKE_EXTRA_COMPILERS += tracegen + + DEFINES += Q_TRACEPOINT +} else { + isEmpty(BUILDS)|build_pass { + header_file_contents = "$${LITERAL_HASH}include <private/qtrace_p.h>" + write_file($$HEADER_PATH, header_file_contents)|error() + } +} |