diff options
Diffstat (limited to '')
-rw-r--r-- | toolkit/components/telemetry/moz.build | 279 |
1 files changed, 279 insertions, 0 deletions
diff --git a/toolkit/components/telemetry/moz.build b/toolkit/components/telemetry/moz.build new file mode 100644 index 0000000000..9e224d89c5 --- /dev/null +++ b/toolkit/components/telemetry/moz.build @@ -0,0 +1,279 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +include("/ipc/chromium/chromium-config.mozbuild") + +FINAL_LIBRARY = "xul" + +DIRS = [ + "pingsender", +] + +if CONFIG["COMPILE_ENVIRONMENT"]: + EXPORTS.mozilla += ["!dap_ffi_generated.h"] + + CbindgenHeader("dap_ffi_generated.h", inputs=["dap/ffi"]) + +DEFINES["MOZ_APP_VERSION"] = '"%s"' % CONFIG["MOZ_APP_VERSION"] + +LOCAL_INCLUDES += [ + "/xpcom/build", + "/xpcom/threads", +] + +SPHINX_TREES["/toolkit/components/telemetry"] = "docs" + +with Files("docs/**"): + SCHEDULES.exclusive = ["docs"] + +if CONFIG["ENABLE_TESTS"]: + # We used to need GeckoView tests as a separate directory. This + # is no longer true and we could probably move it to tests/gtest. + DIRS += ["geckoview/gtest", "tests/gtest"] + +TEST_DIRS += ["tests", "dap/ffi-gtest"] + +XPCSHELL_TESTS_MANIFESTS += [ + "dap/tests/xpcshell/xpcshell.ini", + "tests/unit/xpcshell.ini", +] +BROWSER_CHROME_MANIFESTS += ["tests/browser/browser.ini"] + +XPIDL_SOURCES += [ + "core/nsITelemetry.idl", + "dap/nsIDAPTelemetry.idl", +] + +XPIDL_MODULE = "telemetry" + +EXPORTS.mozilla += [ + "!TelemetryEventEnums.h", + "!TelemetryHistogramEnums.h", + "!TelemetryProcessEnums.h", + "!TelemetryScalarEnums.h", + "core/ipc/TelemetryComms.h", + "core/ipc/TelemetryIPC.h", + "core/Telemetry.h", + "dap/DAPTelemetry.h", + "dap/DAPTelemetryBindings.h", + "other/CombinedStacks.h", + "other/ProcessedStack.h", +] + +EXPORTS.mozilla.telemetry += [ + "core/Stopwatch.h", +] + +SOURCES += [ + "core/ipc/TelemetryIPC.cpp", + "core/ipc/TelemetryIPCAccumulator.cpp", + "core/Stopwatch.cpp", + "core/Telemetry.cpp", + "core/TelemetryCommon.cpp", + "core/TelemetryEvent.cpp", + "core/TelemetryHistogram.cpp", + "core/TelemetryScalar.cpp", + "core/TelemetryUserInteraction.cpp", + "dap/DAPTelemetry.cpp", + "geckoview/streaming/GeckoViewStreamingTelemetry.cpp", + "other/CombinedStacks.cpp", + "other/ProcessedStack.cpp", + "other/TelemetryIOInterposeObserver.cpp", +] + +if CONFIG["OS_ARCH"] == "WINNT": + SOURCES += [ + "other/UntrustedModules.cpp", + "other/UntrustedModulesBackupService.cpp", + "other/UntrustedModulesDataSerializer.cpp", + ] + +XPCOM_MANIFESTS += [ + "components.conf", + "core/components.conf", + "dap/components.conf", +] + +EXTRA_COMPONENTS += ["TelemetryStartup.manifest"] + +EXTRA_JS_MODULES += [ + "app/ClientID.sys.mjs", + "app/TelemetryArchive.sys.mjs", + "app/TelemetryController.sys.mjs", + "app/TelemetryControllerBase.sys.mjs", + "app/TelemetryControllerContent.sys.mjs", + "app/TelemetryControllerParent.sys.mjs", + "app/TelemetryEnvironment.sys.mjs", + "app/TelemetryReportingPolicy.sys.mjs", + "app/TelemetryScheduler.sys.mjs", + "app/TelemetrySend.sys.mjs", + "app/TelemetryStorage.sys.mjs", + "app/TelemetryTimestamps.sys.mjs", + "app/TelemetryUtils.sys.mjs", + "dap/DAPTelemetrySender.sys.mjs", + "pings/CoveragePing.sys.mjs", + "pings/EventPing.sys.mjs", + "pings/HealthPing.sys.mjs", + "pings/ModulesPing.sys.mjs", + "pings/TelemetrySession.sys.mjs", + "pings/UntrustedModulesPing.sys.mjs", + "pings/UpdatePing.sys.mjs", + "TelemetryStartup.sys.mjs", +] + +EXTRA_JS_MODULES.backgroundtasks += [ + "pings/BackgroundTask_pingsender.sys.mjs", +] + +if CONFIG["OS_ARCH"] == "WINNT": + EXTRA_JS_MODULES += [ + "pings/UninstallPing.sys.mjs", + ] + +TESTING_JS_MODULES += [ + "tests/unit/TelemetryArchiveTesting.sys.mjs", + "tests/unit/TelemetryEnvironmentTesting.sys.mjs", +] + +PYTHON_UNITTEST_MANIFESTS += [ + "tests/integration/tests/python.ini", + "tests/python/python.ini", +] + +# Generate histogram files. +histogram_files = [ + "Histograms.json", + "/dom/base/UseCounters.conf", + "/dom/base/nsDeprecatedOperationList.h", + "!/layout/style/ServoCSSPropList.py", + "/servo/components/style/properties/counted_unknown_properties.py", + "/dom/base/UseCountersWorker.conf", +] +if CONFIG["MOZ_TELEMETRY_EXTRA_HISTOGRAM_FILES"]: + histogram_files.extend(CONFIG["MOZ_TELEMETRY_EXTRA_HISTOGRAM_FILES"]) + +GeneratedFile( + "TelemetryHistogramData.inc", + script="build_scripts/gen_histogram_data.py", + inputs=histogram_files, +) +GeneratedFile( + "TelemetryHistogramEnums.h", + script="build_scripts/gen_histogram_enum.py", + inputs=histogram_files, +) +GeneratedFile( + "TelemetryHistogramNameMap.h", + script="build_scripts/gen_histogram_phf.py", + inputs=histogram_files, +) + +# Generate scalar files. +scalar_files = [ + "Scalars.yaml", +] +if CONFIG["MOZ_TELEMETRY_EXTRA_SCALAR_FILES"]: + scalar_files.extend(CONFIG["MOZ_TELEMETRY_EXTRA_SCALAR_FILES"]) + +GeneratedFile( + "TelemetryScalarData.h", + script="build_scripts/gen_scalar_data.py", + inputs=scalar_files, +) +GeneratedFile( + "TelemetryScalarEnums.h", + script="build_scripts/gen_scalar_enum.py", + inputs=scalar_files, +) + +# Generate the JSON scalar definitions. They will only be +# used in artifact or "build faster" builds. +GeneratedFile( + "ScalarArtifactDefinitions.json", + script="build_scripts/gen_scalar_data.py", + entry_point="generate_JSON_definitions", + inputs=scalar_files, +) + +# Move the scalars JSON file to the directory where the Firefox binary is. +FINAL_TARGET_FILES += ["!ScalarArtifactDefinitions.json"] + +# Generate event files. +event_files = [ + "Events.yaml", +] +if CONFIG["MOZ_TELEMETRY_EXTRA_EVENT_FILES"]: + event_files.extend(CONFIG["MOZ_TELEMETRY_EXTRA_EVENT_FILES"]) + +GeneratedFile( + "TelemetryEventData.h", script="build_scripts/gen_event_data.py", inputs=event_files +) + +GeneratedFile( + "TelemetryEventEnums.h", + script="build_scripts/gen_event_enum.py", + inputs=event_files, +) + +# Generate the JSON event definitions. They will only be +# used in artifact or "build faster" builds. +GeneratedFile( + "EventArtifactDefinitions.json", + script="build_scripts/gen_event_data.py", + entry_point="generate_JSON_definitions", + inputs=event_files, +) + +# Move the events JSON file to the directory where the Firefox binary is. +FINAL_TARGET_FILES += ["!EventArtifactDefinitions.json"] + +# Generate data from Processes.yaml +processes_files = [ + "Processes.yaml", +] + +GeneratedFile( + "TelemetryProcessEnums.h", + script="build_scripts/gen_process_enum.py", + inputs=processes_files, +) + + +GeneratedFile( + "TelemetryProcessData.h", + script="build_scripts/gen_process_data.py", + inputs=processes_files, +) + +# Ensure that the GeckoView metrics file parses correctly prior to it +# being released in Android components. This triggers glean_parser by +# pretending to generate a file named 'glean_checks'. +# While this currently only applies to Android, in the medium-term it +# is going to generate code for Firefox as well (project FOG). +# Prior art for this was in bug 1063728, within SpiderMonkey tests. +GeneratedFile( + "glean_checks", + script="build_scripts/run_glean_parser.py", + inputs=["geckoview/streaming/metrics.yaml"], +) + +# Generate UserInteraction file +userinteraction_files = [ + "UserInteractions.yaml", +] +GeneratedFile( + "TelemetryUserInteractionData.h", + script="build_scripts/gen_userinteraction_data.py", + inputs=userinteraction_files, +) +GeneratedFile( + "TelemetryUserInteractionNameMap.h", + script="build_scripts/gen_userinteraction_phf.py", + inputs=userinteraction_files, +) + +with Files("**"): + BUG_COMPONENT = ("Toolkit", "Telemetry") |