abseil-cpp's gn-derived moz.build subtree previously declared
FINAL_LIBRARY = "xul" on every *_gn target, folding objects directly
into xul. That works for xul-linked code but leaves no .a archive for
non-xul Program() targets to USE_LIBS. Restructure the wiring so absl
becomes its own Library:
- Flip FINAL_LIBRARY to "abseil" in gn-configs/abseil.json (the source
of truth driving build/gn_processor.py output) and regenerate the
generated *_gn/moz.build files.
- Add config/external/abseil-cpp/moz.build declaring Library("abseil")
and DIRS-ing into the existing third_party/abseil-cpp tree, mirroring
the ICU wrapper pattern.
- Move /third_party/abseil-cpp out of toolkit/toolkit.mozbuild's DIRS
in favor of the new wrapper, and drop the now-redundant entry from
the MOZ_WEBRTC_SIGNALING-gated DIRS in dom/media/webrtc/moz.build.
- Add "abseil" to Library("xul")'s USE_LIBS so absl symbols still reach
xul-real (they no longer fold via FINAL_LIBRARY).
This unblocks future non-xul consumers - notably the
content_analysis_sdk_agent test fixture, which will start needing
absl symbols once newer protobuf releases land on top of this.
Differential Revision: https://phabricator.services.mozilla.com/D299290