288 lines
8.6 KiB
Python
288 lines
8.6 KiB
Python
# -*- 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/.
|
|
|
|
SPHINX_TREES["/toolkit/components/glean"] = "docs"
|
|
|
|
# Needed so that we can include IPC things.
|
|
include("/ipc/chromium/chromium-config.mozbuild")
|
|
|
|
FINAL_LIBRARY = "xul"
|
|
|
|
EXPORTS.mozilla += [
|
|
"ipc/FOGIPC.h",
|
|
]
|
|
|
|
EXPORTS.mozilla.glean += [
|
|
"!GleanMetrics.h",
|
|
"!GleanPings.h",
|
|
]
|
|
|
|
EXPORTS.mozilla.glean.bindings += [
|
|
"!GleanJSMetricsLookup.h",
|
|
"!GleanJSPingsLookup.h",
|
|
"bindings/Category.h",
|
|
"bindings/EventGIFFTMap.h",
|
|
"bindings/Glean.h",
|
|
"bindings/GleanMetric.h",
|
|
"bindings/GleanPings.h",
|
|
"bindings/HistogramGIFFTMap.h",
|
|
"bindings/MetricTypes.h",
|
|
"bindings/private/Boolean.h",
|
|
"bindings/private/Common.h",
|
|
"bindings/private/Counter.h",
|
|
"bindings/private/CustomDistribution.h",
|
|
"bindings/private/Datetime.h",
|
|
"bindings/private/Denominator.h",
|
|
"bindings/private/DistributionData.h",
|
|
"bindings/private/Event.h",
|
|
"bindings/private/Labeled.h",
|
|
"bindings/private/MemoryDistribution.h",
|
|
"bindings/private/Numerator.h",
|
|
"bindings/private/Object.h",
|
|
"bindings/private/Ping.h",
|
|
"bindings/private/Quantity.h",
|
|
"bindings/private/Rate.h",
|
|
"bindings/private/String.h",
|
|
"bindings/private/StringList.h",
|
|
"bindings/private/Text.h",
|
|
"bindings/private/Timespan.h",
|
|
"bindings/private/TimingDistribution.h",
|
|
"bindings/private/Url.h",
|
|
"bindings/private/Uuid.h",
|
|
"bindings/ScalarGIFFTMap.h",
|
|
]
|
|
|
|
EXPORTS.mozilla.glean.bindings.jog += [
|
|
"bindings/jog/JOG.h",
|
|
]
|
|
|
|
if CONFIG["COMPILE_ENVIRONMENT"]:
|
|
EXPORTS.mozilla.glean += [
|
|
"!fog_ffi_generated.h",
|
|
]
|
|
|
|
EXPORTS.mozilla.glean.bindings.jog += [
|
|
"!jog_ffi_generated.h",
|
|
]
|
|
|
|
CbindgenHeader("fog_ffi_generated.h", inputs=["/toolkit/components/glean"])
|
|
CbindgenHeader(
|
|
"jog_ffi_generated.h", inputs=["/toolkit/components/glean/bindings/jog"]
|
|
)
|
|
|
|
UNIFIED_SOURCES += [
|
|
"bindings/Category.cpp",
|
|
"bindings/Glean.cpp",
|
|
"bindings/GleanMetric.cpp",
|
|
"bindings/GleanPings.cpp",
|
|
"bindings/jog/JOG.cpp",
|
|
"bindings/private/Boolean.cpp",
|
|
"bindings/private/Common.cpp",
|
|
"bindings/private/Counter.cpp",
|
|
"bindings/private/CustomDistribution.cpp",
|
|
"bindings/private/Datetime.cpp",
|
|
"bindings/private/Denominator.cpp",
|
|
"bindings/private/Event.cpp",
|
|
"bindings/private/Labeled.cpp",
|
|
"bindings/private/MemoryDistribution.cpp",
|
|
"bindings/private/Numerator.cpp",
|
|
"bindings/private/Object.cpp",
|
|
"bindings/private/Ping.cpp",
|
|
"bindings/private/Quantity.cpp",
|
|
"bindings/private/Rate.cpp",
|
|
"bindings/private/String.cpp",
|
|
"bindings/private/StringList.cpp",
|
|
"bindings/private/Text.cpp",
|
|
"bindings/private/Timespan.cpp",
|
|
"bindings/private/TimingDistribution.cpp",
|
|
"bindings/private/Url.cpp",
|
|
"bindings/private/Uuid.cpp",
|
|
"ipc/FOGIPC.cpp",
|
|
"ipc/Support.cpp",
|
|
]
|
|
|
|
SOURCES += [
|
|
"!EventGIFFTMap.cpp",
|
|
"!GleanJSMetricsLookup.cpp",
|
|
"!GleanJSPingsLookup.cpp",
|
|
"!HistogramGIFFTMap.cpp",
|
|
"!ScalarGIFFTMap.cpp",
|
|
]
|
|
|
|
# Provides us the list of dependent metrics|pings.yaml.
|
|
include("metrics_index.py")
|
|
|
|
# Provides the function to convert a metrics.yaml path to the name of a header.
|
|
include("build_scripts/glean_parser_ext/metrics_header_names.py")
|
|
|
|
|
|
# Allow defining metrics/pings/tags elsewhere (like for Thunderbird).
|
|
# See https://source-docs.thunderbird.net/en/latest/telemetry/index.html
|
|
# See also: MOZ_GLEAN_INTERESTING_METRICS_FILES
|
|
if CONFIG["MOZ_GLEAN_EXTRA_METRICS_FILES"]:
|
|
metrics_yamls.extend(CONFIG["MOZ_GLEAN_EXTRA_METRICS_FILES"])
|
|
metrics_yamls = sorted(metrics_yamls)
|
|
|
|
if CONFIG["MOZ_GLEAN_EXTRA_PINGS_FILES"]:
|
|
pings_yamls.extend(CONFIG["MOZ_GLEAN_EXTRA_PINGS_FILES"])
|
|
pings_yamls = sorted(pings_yamls)
|
|
|
|
if CONFIG["MOZ_GLEAN_EXTRA_TAGS_FILES"]:
|
|
tags_yamls.extend(CONFIG["MOZ_GLEAN_EXTRA_TAGS_FILES"])
|
|
tags_yamls = sorted(tags_yamls)
|
|
|
|
metrics_headers = sorted(
|
|
{
|
|
convert_yaml_path_to_header_name(path) + ".h"
|
|
for path in metrics_yamls
|
|
if path != "toolkit/components/glean/metrics.yaml"
|
|
}
|
|
)
|
|
EXPORTS.mozilla.glean += [("!" + filename) for filename in metrics_headers]
|
|
|
|
# GeneratedFile's `inputs` are relative to our dir.
|
|
# The yamls arrays are relative to topsrcdir, so we need to transform:
|
|
metrics_yamls = ["../../../" + x for x in metrics_yamls]
|
|
pings_yamls = ["../../../" + x for x in pings_yamls]
|
|
tags_yamls = ["../../../" + x for x in tags_yamls]
|
|
|
|
glean_parser_flags = [CONFIG["MOZ_APP_VERSION"]]
|
|
|
|
# In local developer builds, we optimize for speed of recompilation above
|
|
# binary size, see bug 1944663.
|
|
if CONFIG["DEVELOPER_OPTIONS"]:
|
|
glean_parser_flags += ["--fast-rebuild"]
|
|
|
|
GeneratedFile(
|
|
"metrics_yamls.cached",
|
|
script="build_scripts/glean_parser_ext/cache_yaml.py",
|
|
flags=glean_parser_flags,
|
|
inputs=metrics_yamls + tags_yamls,
|
|
)
|
|
|
|
GeneratedFile(
|
|
"pings_yamls.cached",
|
|
script="build_scripts/glean_parser_ext/cache_yaml.py",
|
|
flags=glean_parser_flags,
|
|
inputs=pings_yamls + tags_yamls,
|
|
)
|
|
|
|
GeneratedFile(
|
|
"GleanMetrics.h",
|
|
*metrics_headers,
|
|
script="build_scripts/glean_parser_ext/run_glean_parser.py",
|
|
flags=glean_parser_flags,
|
|
inputs=["!metrics_yamls.cached"],
|
|
)
|
|
|
|
GeneratedFile(
|
|
"GleanJSMetricsLookup.cpp",
|
|
"GleanJSMetricsLookup.h",
|
|
entry_point="js_metrics",
|
|
script="build_scripts/glean_parser_ext/run_glean_parser.py",
|
|
flags=glean_parser_flags
|
|
+ [
|
|
"GleanJSMetricsLookup.h",
|
|
],
|
|
inputs=["!metrics_yamls.cached"],
|
|
)
|
|
|
|
GeneratedFile(
|
|
"api/src/metrics.rs",
|
|
entry_point="rust_metrics",
|
|
script="build_scripts/glean_parser_ext/run_glean_parser.py",
|
|
flags=glean_parser_flags,
|
|
inputs=["!metrics_yamls.cached"],
|
|
)
|
|
|
|
GeneratedFile(
|
|
"GleanPings.h",
|
|
"GleanJSPingsLookup.h",
|
|
"GleanJSPingsLookup.cpp",
|
|
"api/src/pings.rs",
|
|
entry_point="pings",
|
|
script="build_scripts/glean_parser_ext/run_glean_parser.py",
|
|
flags=glean_parser_flags
|
|
+ [
|
|
"GleanJSPingsLookup.h",
|
|
"GleanJSPingsLookup.cpp",
|
|
"api/src/pings.rs",
|
|
],
|
|
inputs=["!pings_yamls.cached"],
|
|
)
|
|
|
|
# Glean Interface For Firefox Telemetry Maps from Glean MetricId to Telemetry ProbeId
|
|
# We split it one map per header to avoid unused function warnings on build.
|
|
GeneratedFile(
|
|
"EventGIFFTMap.cpp",
|
|
script="build_scripts/glean_parser_ext/run_glean_parser.py",
|
|
entry_point="gifft_map",
|
|
flags=glean_parser_flags + ["Event"],
|
|
inputs=["!metrics_yamls.cached"],
|
|
)
|
|
|
|
GeneratedFile(
|
|
"HistogramGIFFTMap.cpp",
|
|
script="build_scripts/glean_parser_ext/run_glean_parser.py",
|
|
entry_point="gifft_map",
|
|
flags=glean_parser_flags + ["Histogram"],
|
|
inputs=["!metrics_yamls.cached"],
|
|
)
|
|
|
|
GeneratedFile(
|
|
"ScalarGIFFTMap.cpp",
|
|
script="build_scripts/glean_parser_ext/run_glean_parser.py",
|
|
entry_point="gifft_map",
|
|
flags=glean_parser_flags + ["Scalar"],
|
|
inputs=["!metrics_yamls.cached"],
|
|
)
|
|
|
|
# JOG provides both the Rust factory for building runtime-registered metrics
|
|
# and pings _and_ the YAML file used at runtime to register those metrics and
|
|
# pings for Artifact Builds.
|
|
# The factory lives inside the `fog` crate to avoid a circular dependency.
|
|
GeneratedFile(
|
|
"api/src/factory.rs",
|
|
script="build_scripts/glean_parser_ext/run_glean_parser.py",
|
|
entry_point="jog_factory",
|
|
flags=glean_parser_flags,
|
|
inputs=["!metrics_yamls.cached", "!pings_yamls.cached"],
|
|
)
|
|
|
|
# Only generate jogfile.json in Artifact Builds since
|
|
# its presence triggers main-thread I/O.
|
|
if CONFIG["MOZ_ARTIFACT_BUILDS"]:
|
|
GeneratedFile(
|
|
"jogfile.json",
|
|
script="build_scripts/glean_parser_ext/run_glean_parser.py",
|
|
entry_point="jog_file",
|
|
flags=glean_parser_flags,
|
|
inputs=["!metrics_yamls.cached", "!pings_yamls.cached"],
|
|
)
|
|
# Once generated, it needs to be placed in GreD so it can be found.
|
|
FINAL_TARGET_FILES += ["!jogfile.json"]
|
|
|
|
if CONFIG["MOZ_GLEAN_INTERESTING_METRICS_FILES"]:
|
|
GeneratedFile(
|
|
"interesting_serverknobs.json",
|
|
script="build_scripts/glean_parser_ext/interesting_serverknobs.py",
|
|
flags=[CONFIG["MOZ_APP_VERSION"]],
|
|
inputs=["!metrics_yamls.cached"],
|
|
)
|
|
# Once generated, it needs to be placed in GreD so it can be found.
|
|
FINAL_TARGET_FILES += ["!interesting_serverknobs.json"]
|
|
|
|
|
|
DIRS += [
|
|
"tests", # Must be in DIRS, not TEST_DIRS or python-test won't find it.
|
|
"xpcom",
|
|
]
|
|
|
|
with Files("docs/**"):
|
|
SCHEDULES.exclusive = ["docs"]
|
|
|
|
with Files("**"):
|
|
BUG_COMPONENT = ("Toolkit", "Telemetry")
|