diff options
Diffstat (limited to '')
-rw-r--r-- | toolkit/components/glean/moz.build | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/toolkit/components/glean/moz.build b/toolkit/components/glean/moz.build new file mode 100644 index 0000000000..f5e7622d22 --- /dev/null +++ b/toolkit/components/glean/moz.build @@ -0,0 +1,229 @@ +# -*- 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 += [ + "!EventGIFFTMap.h", + "!GleanJSMetricsLookup.h", + "!GleanJSPingsLookup.h", + "!HistogramGIFFTMap.h", + "!ScalarGIFFTMap.h", + "bindings/Category.h", + "bindings/Glean.h", + "bindings/GleanPings.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/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", +] + +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/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/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 += [ + "!EventExtraGIFFTMaps.cpp", + "!GleanJSMetricsLookup.cpp", + "!GleanJSPingsLookup.cpp", +] + +# Provides us the list of dependent metrics|pings.yaml. +include("metrics_index.py") +# 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] +# If you change the length of this deps list, update DEPS_LEN in run_glean_parser.py +deps = [ + "metrics_index.py", + "build_scripts/glean_parser_ext/cpp.py", + "build_scripts/glean_parser_ext/jog.py", + "build_scripts/glean_parser_ext/js.py", + "build_scripts/glean_parser_ext/run_glean_parser.py", + "build_scripts/glean_parser_ext/rust.py", + "build_scripts/glean_parser_ext/string_table.py", + "build_scripts/glean_parser_ext/util.py", + "build_scripts/glean_parser_ext/templates/cpp.jinja2", + "build_scripts/glean_parser_ext/templates/cpp_pings.jinja2", + "build_scripts/glean_parser_ext/templates/gifft.jinja2", + "build_scripts/glean_parser_ext/templates/gifft_events.jinja2", + "build_scripts/glean_parser_ext/templates/jog_factory.jinja2", + "build_scripts/glean_parser_ext/templates/js.jinja2", + "build_scripts/glean_parser_ext/templates/js_h.jinja2", + "build_scripts/glean_parser_ext/templates/js_pings.jinja2", + "build_scripts/glean_parser_ext/templates/js_pings_h.jinja2", + "build_scripts/glean_parser_ext/templates/rust.jinja2", + "build_scripts/glean_parser_ext/templates/rust_pings.jinja2", +] + +GeneratedFile( + "GleanMetrics.h", + "GleanJSMetricsLookup.h", + "GleanJSMetricsLookup.cpp", + "api/src/metrics.rs", + script="build_scripts/glean_parser_ext/run_glean_parser.py", + flags=[ + CONFIG["MOZ_APP_VERSION"], + "GleanJSMetricsLookup.h", + "GleanJSMetricsLookup.cpp", + "api/src/metrics.rs", + ], + inputs=deps + metrics_yamls + tags_yamls, +) + +GeneratedFile( + "GleanPings.h", + "GleanJSPingsLookup.h", + "GleanJSPingsLookup.cpp", + "api/src/pings.rs", + script="build_scripts/glean_parser_ext/run_glean_parser.py", + flags=[ + CONFIG["MOZ_APP_VERSION"], + "GleanJSPingsLookup.h", + "GleanJSPingsLookup.cpp", + "api/src/pings.rs", + ], + inputs=deps + pings_yamls + tags_yamls, +) + +# 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.h", + script="build_scripts/glean_parser_ext/run_glean_parser.py", + entry_point="gifft_map", + flags=[CONFIG["MOZ_APP_VERSION"], "Event"], + inputs=deps + metrics_yamls + tags_yamls, +) + +GeneratedFile( + "HistogramGIFFTMap.h", + script="build_scripts/glean_parser_ext/run_glean_parser.py", + entry_point="gifft_map", + flags=[CONFIG["MOZ_APP_VERSION"], "Histogram"], + inputs=deps + metrics_yamls + tags_yamls, +) + +GeneratedFile( + "ScalarGIFFTMap.h", + script="build_scripts/glean_parser_ext/run_glean_parser.py", + entry_point="gifft_map", + flags=[CONFIG["MOZ_APP_VERSION"], "Scalar"], + inputs=deps + metrics_yamls + tags_yamls, +) + +# 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=[CONFIG["MOZ_APP_VERSION"]], + inputs=deps + pings_yamls + metrics_yamls + tags_yamls, +) + +# 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=[CONFIG["MOZ_APP_VERSION"]], + inputs=deps + pings_yamls + metrics_yamls + tags_yamls, + ) + # Once generated, it needs to be placed in GreD so it can be found. + FINAL_TARGET_FILES += ["!jogfile.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") |