GN hack to tag targets as poisonous (and use it with audio codecs)

Only specially taggged targets may transitively depend on poisonous
targets. We first apply it to audio codecs.

This makes it much clearer exactly what parts of the code still have
dependencies on the audio codecs (and we want to eventually get rid of
pretty much all of them).

Bug: webrtc:8396, webrtc:9121
Change-Id: Iba5c2e806c702b5cfe881022674705f647896d43
Reviewed-on: https://webrtc-review.googlesource.com/69520
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22979}
This commit is contained in:
Karl Wiberg 2018-04-22 19:55:00 +02:00 committed by Commit Bot
parent e999b3fdf7
commit bb23c838f5
22 changed files with 239 additions and 3 deletions

View file

@ -587,3 +587,15 @@ if (rtc_include_tests) {
} }
} }
} }
# ---- Poisons ----
#
# Here is one empty dummy target for each poison type (needed because
# "being poisonous with poison type foo" is implemented as "depends on
# //:poison_foo").
#
# The set of poison_* targets needs to be kept in sync with the
# `all_poison_types` list in webrtc.gni.
#
group("poison_audio_codecs") {
}

View file

@ -268,6 +268,7 @@ rtc_source_set("video_stream_decoder") {
rtc_source_set("video_stream_decoder_create") { rtc_source_set("video_stream_decoder_create") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"video/video_stream_decoder_create.cc", "video/video_stream_decoder_create.cc",
"video/video_stream_decoder_create.h", "video/video_stream_decoder_create.h",

View file

@ -44,6 +44,7 @@ rtc_source_set("aec3_config") {
rtc_source_set("aec3_factory") { rtc_source_set("aec3_factory") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
configs += [ "../../modules/audio_processing:apm_debug_dump" ] configs += [ "../../modules/audio_processing:apm_debug_dump" ]
sources = [ sources = [
"echo_canceller3_factory.cc", "echo_canceller3_factory.cc",

View file

@ -44,6 +44,7 @@ rtc_source_set("audio_codecs_api") {
rtc_static_library("builtin_audio_decoder_factory") { rtc_static_library("builtin_audio_decoder_factory") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ]
sources = [ sources = [
"builtin_audio_decoder_factory.cc", "builtin_audio_decoder_factory.cc",
"builtin_audio_decoder_factory.h", "builtin_audio_decoder_factory.h",
@ -73,6 +74,7 @@ rtc_static_library("builtin_audio_decoder_factory") {
rtc_static_library("builtin_audio_encoder_factory") { rtc_static_library("builtin_audio_encoder_factory") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ]
sources = [ sources = [
"builtin_audio_encoder_factory.cc", "builtin_audio_encoder_factory.cc",
"builtin_audio_encoder_factory.h", "builtin_audio_encoder_factory.h",

View file

@ -14,6 +14,7 @@ if (is_android) {
rtc_static_library("audio_encoder_L16") { rtc_static_library("audio_encoder_L16") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_encoder_L16.cc", "audio_encoder_L16.cc",
"audio_encoder_L16.h", "audio_encoder_L16.h",
@ -29,6 +30,7 @@ rtc_static_library("audio_encoder_L16") {
rtc_static_library("audio_decoder_L16") { rtc_static_library("audio_decoder_L16") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_decoder_L16.cc", "audio_decoder_L16.cc",
"audio_decoder_L16.h", "audio_decoder_L16.h",

View file

@ -14,6 +14,7 @@ if (is_android) {
rtc_static_library("audio_encoder_g711") { rtc_static_library("audio_encoder_g711") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_encoder_g711.cc", "audio_encoder_g711.cc",
"audio_encoder_g711.h", "audio_encoder_g711.h",
@ -30,6 +31,7 @@ rtc_static_library("audio_encoder_g711") {
rtc_static_library("audio_decoder_g711") { rtc_static_library("audio_decoder_g711") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_decoder_g711.cc", "audio_decoder_g711.cc",
"audio_decoder_g711.h", "audio_decoder_g711.h",

View file

@ -21,6 +21,7 @@ rtc_source_set("audio_encoder_g722_config") {
rtc_static_library("audio_encoder_g722") { rtc_static_library("audio_encoder_g722") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_encoder_g722.cc", "audio_encoder_g722.cc",
"audio_encoder_g722.h", "audio_encoder_g722.h",
@ -38,6 +39,7 @@ rtc_static_library("audio_encoder_g722") {
rtc_static_library("audio_decoder_g722") { rtc_static_library("audio_decoder_g722") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_decoder_g722.cc", "audio_decoder_g722.cc",
"audio_decoder_g722.h", "audio_decoder_g722.h",

View file

@ -21,6 +21,7 @@ rtc_source_set("audio_encoder_ilbc_config") {
rtc_static_library("audio_encoder_ilbc") { rtc_static_library("audio_encoder_ilbc") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_encoder_ilbc.cc", "audio_encoder_ilbc.cc",
"audio_encoder_ilbc.h", "audio_encoder_ilbc.h",
@ -38,6 +39,7 @@ rtc_static_library("audio_encoder_ilbc") {
rtc_static_library("audio_decoder_ilbc") { rtc_static_library("audio_decoder_ilbc") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_decoder_ilbc.cc", "audio_decoder_ilbc.cc",
"audio_decoder_ilbc.h", "audio_decoder_ilbc.h",

View file

@ -19,6 +19,7 @@ if (is_android) {
rtc_source_set("audio_encoder_isac") { rtc_source_set("audio_encoder_isac") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
public = [ public = [
"audio_encoder_isac.h", "audio_encoder_isac.h",
] ]
@ -36,6 +37,7 @@ rtc_source_set("audio_encoder_isac") {
rtc_source_set("audio_decoder_isac") { rtc_source_set("audio_decoder_isac") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
public = [ public = [
"audio_decoder_isac.h", "audio_decoder_isac.h",
] ]
@ -68,6 +70,7 @@ config("isac_config") {
rtc_static_library("audio_encoder_isac_fix") { rtc_static_library("audio_encoder_isac_fix") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_encoder_isac_fix.cc", "audio_encoder_isac_fix.cc",
"audio_encoder_isac_fix.h", "audio_encoder_isac_fix.h",
@ -83,6 +86,7 @@ rtc_static_library("audio_encoder_isac_fix") {
rtc_static_library("audio_decoder_isac_fix") { rtc_static_library("audio_decoder_isac_fix") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_decoder_isac_fix.cc", "audio_decoder_isac_fix.cc",
"audio_decoder_isac_fix.h", "audio_decoder_isac_fix.h",
@ -98,6 +102,7 @@ rtc_static_library("audio_decoder_isac_fix") {
rtc_static_library("audio_encoder_isac_float") { rtc_static_library("audio_encoder_isac_float") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_encoder_isac_float.cc", "audio_encoder_isac_float.cc",
"audio_encoder_isac_float.h", "audio_encoder_isac_float.h",
@ -113,6 +118,7 @@ rtc_static_library("audio_encoder_isac_float") {
rtc_static_library("audio_decoder_isac_float") { rtc_static_library("audio_decoder_isac_float") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_decoder_isac_float.cc", "audio_decoder_isac_float.cc",
"audio_decoder_isac_float.h", "audio_decoder_isac_float.h",

View file

@ -32,6 +32,7 @@ rtc_static_library("audio_encoder_opus_config") {
rtc_source_set("audio_encoder_opus") { rtc_source_set("audio_encoder_opus") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
public = [ public = [
"audio_encoder_opus.h", "audio_encoder_opus.h",
] ]
@ -49,6 +50,7 @@ rtc_source_set("audio_encoder_opus") {
rtc_static_library("audio_decoder_opus") { rtc_static_library("audio_decoder_opus") {
visibility = [ "*" ] visibility = [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"audio_decoder_opus.cc", "audio_decoder_opus.cc",
"audio_decoder_opus.h", "audio_decoder_opus.h",

View file

@ -64,6 +64,7 @@ rtc_source_set("rtc_media_config") {
rtc_static_library("rtc_media_base") { rtc_static_library("rtc_media_base") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
defines = [] defines = []
libs = [] libs = []
deps = [ deps = [
@ -155,6 +156,7 @@ rtc_static_library("rtc_constants") {
rtc_static_library("rtc_internal_video_codecs") { rtc_static_library("rtc_internal_video_codecs") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
defines = [] defines = []
libs = [] libs = []
deps = [ deps = [
@ -253,6 +255,7 @@ rtc_static_library("rtc_software_fallback_wrappers") {
rtc_static_library("rtc_audio_video") { rtc_static_library("rtc_audio_video") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
defines = [] defines = []
libs = [] libs = []
deps = [ deps = [
@ -420,6 +423,7 @@ rtc_static_library("rtc_data") {
rtc_source_set("rtc_media") { rtc_source_set("rtc_media") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
deps = [ deps = [
":rtc_audio_video", ":rtc_audio_video",
":rtc_data", ":rtc_data",

View file

@ -104,6 +104,7 @@ rtc_source_set("audio_coding_module_typedefs") {
rtc_static_library("audio_coding") { rtc_static_library("audio_coding") {
visibility += [ "*" ] visibility += [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"acm2/acm_receiver.cc", "acm2/acm_receiver.cc",
"acm2/acm_receiver.h", "acm2/acm_receiver.h",
@ -220,6 +221,7 @@ config("g711_config") {
rtc_static_library("g711") { rtc_static_library("g711") {
visibility += [ "*" ] visibility += [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/g711/audio_decoder_pcm.cc", "codecs/g711/audio_decoder_pcm.cc",
"codecs/g711/audio_decoder_pcm.h", "codecs/g711/audio_decoder_pcm.h",
@ -242,6 +244,7 @@ rtc_static_library("g711") {
} }
rtc_source_set("g711_c") { rtc_source_set("g711_c") {
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/g711/g711.c", "codecs/g711/g711.c",
"codecs/g711/g711.h", "codecs/g711/g711.h",
@ -260,6 +263,7 @@ config("g722_config") {
rtc_static_library("g722") { rtc_static_library("g722") {
visibility += [ "*" ] visibility += [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/g722/audio_decoder_g722.cc", "codecs/g722/audio_decoder_g722.cc",
"codecs/g722/audio_decoder_g722.h", "codecs/g722/audio_decoder_g722.h",
@ -283,6 +287,7 @@ rtc_static_library("g722") {
} }
rtc_source_set("g722_c") { rtc_source_set("g722_c") {
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/g722/g722_decode.c", "codecs/g722/g722_decode.c",
"codecs/g722/g722_enc_dec.h", "codecs/g722/g722_enc_dec.h",
@ -302,6 +307,7 @@ config("ilbc_config") {
rtc_static_library("ilbc") { rtc_static_library("ilbc") {
visibility += webrtc_default_visibility visibility += webrtc_default_visibility
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/ilbc/audio_decoder_ilbc.cc", "codecs/ilbc/audio_decoder_ilbc.cc",
"codecs/ilbc/audio_decoder_ilbc.h", "codecs/ilbc/audio_decoder_ilbc.h",
@ -326,6 +332,7 @@ rtc_static_library("ilbc") {
} }
rtc_source_set("ilbc_c") { rtc_source_set("ilbc_c") {
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/ilbc/abs_quant.c", "codecs/ilbc/abs_quant.c",
"codecs/ilbc/abs_quant.h", "codecs/ilbc/abs_quant.h",
@ -483,6 +490,7 @@ rtc_source_set("ilbc_c") {
} }
rtc_static_library("isac_common") { rtc_static_library("isac_common") {
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/isac/audio_decoder_isac_t.h", "codecs/isac/audio_decoder_isac_t.h",
"codecs/isac/audio_decoder_isac_t_impl.h", "codecs/isac/audio_decoder_isac_t_impl.h",
@ -508,6 +516,7 @@ config("isac_config") {
rtc_static_library("isac") { rtc_static_library("isac") {
visibility += [ "*" ] visibility += [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/isac/main/include/audio_decoder_isac.h", "codecs/isac/main/include/audio_decoder_isac.h",
"codecs/isac/main/include/audio_encoder_isac.h", "codecs/isac/main/include/audio_encoder_isac.h",
@ -525,6 +534,7 @@ rtc_static_library("isac") {
} }
rtc_static_library("isac_c") { rtc_static_library("isac_c") {
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/isac/main/include/isac.h", "codecs/isac/main/include/isac.h",
"codecs/isac/main/source/arith_routines.c", "codecs/isac/main/source/arith_routines.c",
@ -602,6 +612,7 @@ config("isac_fix_config") {
rtc_static_library("isac_fix") { rtc_static_library("isac_fix") {
visibility += [ "*" ] visibility += [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/isac/fix/source/audio_decoder_isacfix.cc", "codecs/isac/fix/source/audio_decoder_isacfix.cc",
"codecs/isac/fix/source/audio_encoder_isacfix.cc", "codecs/isac/fix/source/audio_encoder_isacfix.cc",
@ -625,6 +636,7 @@ rtc_static_library("isac_fix") {
} }
rtc_source_set("isac_fix_common") { rtc_source_set("isac_fix_common") {
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/isac/fix/source/codec.h", "codecs/isac/fix/source/codec.h",
"codecs/isac/fix/source/entropy_coding.h", "codecs/isac/fix/source/entropy_coding.h",
@ -645,6 +657,7 @@ rtc_source_set("isac_fix_common") {
} }
rtc_source_set("isac_fix_c_arm_asm") { rtc_source_set("isac_fix_c_arm_asm") {
poisonous = [ "audio_codecs" ]
sources = [] sources = []
if (current_cpu == "arm" && arm_version >= 7) { if (current_cpu == "arm" && arm_version >= 7) {
sources += [ sources += [
@ -659,6 +672,7 @@ rtc_source_set("isac_fix_c_arm_asm") {
} }
rtc_source_set("isac_fix_c") { rtc_source_set("isac_fix_c") {
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/isac/fix/include/audio_decoder_isacfix.h", "codecs/isac/fix/include/audio_decoder_isacfix.h",
"codecs/isac/fix/include/audio_encoder_isacfix.h", "codecs/isac/fix/include/audio_encoder_isacfix.h",
@ -760,6 +774,7 @@ rtc_source_set("isac_fix_c") {
if (rtc_build_with_neon) { if (rtc_build_with_neon) {
rtc_static_library("isac_neon") { rtc_static_library("isac_neon") {
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/isac/fix/source/entropy_coding_neon.c", "codecs/isac/fix/source/entropy_coding_neon.c",
"codecs/isac/fix/source/filterbanks_neon.c", "codecs/isac/fix/source/filterbanks_neon.c",
@ -801,6 +816,7 @@ config("pcm16b_config") {
rtc_static_library("pcm16b") { rtc_static_library("pcm16b") {
visibility += [ "*" ] visibility += [ "*" ]
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/pcm16b/audio_decoder_pcm16b.cc", "codecs/pcm16b/audio_decoder_pcm16b.cc",
"codecs/pcm16b/audio_decoder_pcm16b.h", "codecs/pcm16b/audio_decoder_pcm16b.h",
@ -825,6 +841,7 @@ rtc_static_library("pcm16b") {
} }
rtc_source_set("pcm16b_c") { rtc_source_set("pcm16b_c") {
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/pcm16b/pcm16b.c", "codecs/pcm16b/pcm16b.c",
"codecs/pcm16b/pcm16b.h", "codecs/pcm16b/pcm16b.h",
@ -839,6 +856,7 @@ rtc_source_set("pcm16b_c") {
rtc_static_library("webrtc_opus") { rtc_static_library("webrtc_opus") {
visibility += webrtc_default_visibility visibility += webrtc_default_visibility
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/opus/audio_decoder_opus.cc", "codecs/opus/audio_decoder_opus.cc",
"codecs/opus/audio_decoder_opus.h", "codecs/opus/audio_decoder_opus.h",
@ -874,6 +892,7 @@ rtc_static_library("webrtc_opus") {
} }
rtc_source_set("webrtc_opus_c") { rtc_source_set("webrtc_opus_c") {
poisonous = [ "audio_codecs" ]
sources = [ sources = [
"codecs/opus/opus_inst.h", "codecs/opus/opus_inst.h",
"codecs/opus/opus_interface.c", "codecs/opus/opus_interface.c",

View file

@ -29,6 +29,7 @@ config("apm_debug_dump") {
rtc_static_library("audio_processing") { rtc_static_library("audio_processing") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
configs += [ ":apm_debug_dump" ] configs += [ ":apm_debug_dump" ]
sources = [ sources = [
"aec/aec_resampler.cc", "aec/aec_resampler.cc",

View file

@ -11,6 +11,7 @@ import("../../../webrtc.gni")
rtc_static_library("aec3") { rtc_static_library("aec3") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
configs += [ "..:apm_debug_dump" ] configs += [ "..:apm_debug_dump" ]
sources = [ sources = [
"adaptive_fir_filter.cc", "adaptive_fir_filter.cc",

View file

@ -14,6 +14,7 @@ import("../../webrtc.gni")
# use the internal capturer. # use the internal capturer.
rtc_static_library("video_capture_module") { rtc_static_library("video_capture_module") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"device_info_impl.cc", "device_info_impl.cc",
"device_info_impl.h", "device_info_impl.h",
@ -50,6 +51,7 @@ rtc_static_library("video_capture_module") {
rtc_static_library("video_capture") { rtc_static_library("video_capture") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"external/device_info_external.cc", "external/device_info_external.cc",
"external/video_capture_external.cc", "external/video_capture_external.cc",

View file

@ -38,6 +38,7 @@ rtc_static_library("encoded_frame") {
rtc_static_library("video_coding") { rtc_static_library("video_coding") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
deps = [] deps = []
sources = [ sources = [
@ -249,6 +250,7 @@ rtc_source_set("video_coding_utility") {
rtc_static_library("webrtc_h264") { rtc_static_library("webrtc_h264") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"codecs/h264/h264.cc", "codecs/h264/h264.cc",
"codecs/h264/include/h264.h", "codecs/h264/include/h264.h",

View file

@ -27,6 +27,7 @@ config("rtc_pc_config") {
rtc_static_library("rtc_pc_base") { rtc_static_library("rtc_pc_base") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
defines = [] defines = []
sources = [ sources = [
"audiomonitor.h", "audiomonitor.h",
@ -102,6 +103,7 @@ rtc_static_library("rtc_pc_base") {
rtc_source_set("rtc_pc") { rtc_source_set("rtc_pc") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
deps = [ deps = [
":rtc_pc_base", ":rtc_pc_base",
"../media:rtc_audio_video", "../media:rtc_audio_video",
@ -119,6 +121,7 @@ config("libjingle_peerconnection_warnings_config") {
rtc_static_library("peerconnection") { rtc_static_library("peerconnection") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
cflags = [] cflags = []
sources = [ sources = [
"audiotrack.cc", "audiotrack.cc",
@ -250,6 +253,7 @@ rtc_static_library("create_pc_factory") {
rtc_source_set("libjingle_peerconnection") { rtc_source_set("libjingle_peerconnection") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
deps = [ deps = [
":create_pc_factory", ":create_pc_factory",
":peerconnection", ":peerconnection",

View file

@ -203,6 +203,7 @@ if (!build_with_chromium) {
rtc_static_library("event_log_visualizer_utils") { rtc_static_library("event_log_visualizer_utils") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"event_log_visualizer/analyzer.cc", "event_log_visualizer/analyzer.cc",
"event_log_visualizer/analyzer.h", "event_log_visualizer/analyzer.h",

View file

@ -229,6 +229,7 @@ if (is_ios || is_mac) {
rtc_static_library("ui_objc") { rtc_static_library("ui_objc") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
if (is_ios) { if (is_ios) {
sources = [ sources = [
"objc/Framework/Classes/UI/RTCCameraPreviewView.m", "objc/Framework/Classes/UI/RTCCameraPreviewView.m",
@ -255,6 +256,7 @@ if (is_ios || is_mac) {
if (rtc_use_metal_rendering) { if (rtc_use_metal_rendering) {
rtc_static_library("metal_objc") { rtc_static_library("metal_objc") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"objc/Framework/Classes/Metal/RTCMTLI420Renderer.h", "objc/Framework/Classes/Metal/RTCMTLI420Renderer.h",
"objc/Framework/Classes/Metal/RTCMTLI420Renderer.mm", "objc/Framework/Classes/Metal/RTCMTLI420Renderer.mm",
@ -316,6 +318,7 @@ if (is_ios || is_mac) {
rtc_static_library("videocapture_objc") { rtc_static_library("videocapture_objc") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"objc/Framework/Classes/PeerConnection/RTCCameraVideoCapturer.m", "objc/Framework/Classes/PeerConnection/RTCCameraVideoCapturer.m",
"objc/Framework/Headers/WebRTC/RTCCameraVideoCapturer.h", "objc/Framework/Headers/WebRTC/RTCCameraVideoCapturer.h",
@ -347,6 +350,8 @@ if (is_ios || is_mac) {
} }
rtc_static_library("videocodec_objc") { rtc_static_library("videocodec_objc") {
visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"objc/Framework/Classes/PeerConnection/RTCEncodedImage.mm", "objc/Framework/Classes/PeerConnection/RTCEncodedImage.mm",
"objc/Framework/Classes/PeerConnection/RTCRtpFragmentationHeader.mm", "objc/Framework/Classes/PeerConnection/RTCRtpFragmentationHeader.mm",
@ -363,7 +368,6 @@ if (is_ios || is_mac) {
# (bugs.webrtc.org/163). # (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
} }
visibility = [ "*" ]
public_configs = [ ":common_config_objc" ] public_configs = [ ":common_config_objc" ]
deps = [ deps = [
":common_objc", ":common_objc",
@ -398,6 +402,7 @@ if (is_ios || is_mac) {
rtc_static_library("vp8") { rtc_static_library("vp8") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"objc/Framework/Classes/PeerConnection/RTCVideoCodecVP8.mm", "objc/Framework/Classes/PeerConnection/RTCVideoCodecVP8.mm",
"objc/Framework/Headers/WebRTC/RTCVideoDecoderVP8.h", "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP8.h",
@ -419,6 +424,7 @@ if (is_ios || is_mac) {
rtc_static_library("vp9") { rtc_static_library("vp9") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"objc/Framework/Classes/PeerConnection/RTCVideoCodecVP9.mm", "objc/Framework/Classes/PeerConnection/RTCVideoCodecVP9.mm",
"objc/Framework/Headers/WebRTC/RTCVideoDecoderVP9.h", "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP9.h",
@ -447,6 +453,7 @@ if (is_ios || is_mac) {
# The applications which only use WebRTC DataChannel can depend on this. # The applications which only use WebRTC DataChannel can depend on this.
rtc_static_library("peerconnectionfactory_no_media_objc") { rtc_static_library("peerconnectionfactory_no_media_objc") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
defines = [ "HAVE_NO_MEDIA" ] defines = [ "HAVE_NO_MEDIA" ]
sources = [ sources = [
@ -500,6 +507,8 @@ if (is_ios || is_mac) {
} }
rtc_static_library("videorendereradapter_objc") { rtc_static_library("videorendereradapter_objc") {
visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter+Private.h", "objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter+Private.h",
"objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.h", "objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.h",
@ -507,7 +516,6 @@ if (is_ios || is_mac) {
] ]
configs += [ "..:common_objc" ] configs += [ "..:common_objc" ]
visibility = [ "*" ]
public_configs = [ ":common_config_objc" ] public_configs = [ ":common_config_objc" ]
deps = [ deps = [
@ -537,6 +545,8 @@ if (is_ios || is_mac) {
} }
rtc_static_library("peerconnectionfactory_base_objc") { rtc_static_library("peerconnectionfactory_base_objc") {
visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"objc/Framework/Classes/PeerConnection/RTCAudioSource+Private.h", "objc/Framework/Classes/PeerConnection/RTCAudioSource+Private.h",
"objc/Framework/Classes/PeerConnection/RTCAudioSource.mm", "objc/Framework/Classes/PeerConnection/RTCAudioSource.mm",
@ -624,7 +634,6 @@ if (is_ios || is_mac) {
] ]
configs += [ "..:common_objc" ] configs += [ "..:common_objc" ]
visibility = [ "*" ]
public_configs = [ ":common_config_objc" ] public_configs = [ ":common_config_objc" ]
if (!build_with_chromium && is_clang) { if (!build_with_chromium && is_clang) {
@ -958,6 +967,7 @@ if (is_ios || is_mac) {
# The native API is currently experimental and may change without notice. # The native API is currently experimental and may change without notice.
rtc_static_library("native_api") { rtc_static_library("native_api") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"objc/Framework/Native/api/video_capturer.h", "objc/Framework/Native/api/video_capturer.h",
"objc/Framework/Native/api/video_capturer.mm", "objc/Framework/Native/api/video_capturer.mm",
@ -1067,6 +1077,7 @@ if (is_ios || is_mac) {
rtc_static_library("videotoolbox_objc") { rtc_static_library("videotoolbox_objc") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"objc/Framework/Classes/VideoToolbox/RTCVideoDecoderH264.mm", "objc/Framework/Classes/VideoToolbox/RTCVideoDecoderH264.mm",
"objc/Framework/Classes/VideoToolbox/RTCVideoEncoderH264.mm", "objc/Framework/Classes/VideoToolbox/RTCVideoEncoderH264.mm",

View file

@ -519,6 +519,7 @@ rtc_static_library("peerconnection_jni") {
# made public because we don't have a proper NDK yet. Header APIs here are not # made public because we don't have a proper NDK yet. Header APIs here are not
# considered public and are subject to change. # considered public and are subject to change.
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"src/jni/androidnetworkmonitor_jni.h", "src/jni/androidnetworkmonitor_jni.h",
@ -611,6 +612,7 @@ rtc_static_library("peerconnection_jni") {
rtc_static_library("libjingle_peerconnection_jni") { rtc_static_library("libjingle_peerconnection_jni") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
public_deps = [ public_deps = [
":audio_jni", ":audio_jni",
":base_jni", ":base_jni",
@ -631,6 +633,7 @@ generate_jni("generated_metrics_jni") {
rtc_static_library("libjingle_peerconnection_metrics_default_jni") { rtc_static_library("libjingle_peerconnection_metrics_default_jni") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"src/jni/androidmetrics.cc", "src/jni/androidmetrics.cc",
] ]
@ -1143,6 +1146,7 @@ rtc_static_library("native_api_jni") {
# objects. # objects.
rtc_static_library("native_api_codecs") { rtc_static_library("native_api_codecs") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"native_api/codecs/wrapper.cc", "native_api/codecs/wrapper.cc",
"native_api/codecs/wrapper.h", "native_api/codecs/wrapper.h",
@ -1160,6 +1164,7 @@ rtc_static_library("native_api_codecs") {
# API for creating Java PeerConnectionFactory from C++ equivalents. # API for creating Java PeerConnectionFactory from C++ equivalents.
rtc_static_library("native_api_peerconnection") { rtc_static_library("native_api_peerconnection") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"native_api/peerconnection/peerconnectionfactory.cc", "native_api/peerconnection/peerconnectionfactory.cc",
"native_api/peerconnection/peerconnectionfactory.h", "native_api/peerconnection/peerconnectionfactory.h",
@ -1186,6 +1191,7 @@ rtc_static_library("native_api_peerconnection") {
# video interfaces from their Java equivalents. # video interfaces from their Java equivalents.
rtc_static_library("native_api_video") { rtc_static_library("native_api_video") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"native_api/video/wrapper.cc", "native_api/video/wrapper.cc",
"native_api/video/wrapper.h", "native_api/video/wrapper.h",

View file

@ -108,6 +108,7 @@ rtc_static_library("video") {
rtc_source_set("video_stream_decoder_impl") { rtc_source_set("video_stream_decoder_impl") {
visibility = [ "*" ] visibility = [ "*" ]
allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove.
sources = [ sources = [
"video_stream_decoder_impl.cc", "video_stream_decoder_impl.cc",
"video_stream_decoder_impl.h", "video_stream_decoder_impl.h",

View file

@ -278,6 +278,41 @@ if (build_with_chromium) {
webrtc_default_visibility += [ webrtc_root + "/../webrtc_overrides/*" ] webrtc_default_visibility += [ webrtc_root + "/../webrtc_overrides/*" ]
} }
# ---- Poisons ----
#
# The general idea is that some targets declare that they contain some
# kind of poison, which makes it impossible for other targets to
# depend on them (even transitively) unless they declare themselves
# immune to that particular type of poison.
#
# Targets that *contain* poison of type foo should contain the line
#
# poisonous = [ "foo" ]
#
# and targets that *are immune but arent't themselves poisonous*
# should contain
#
# allow_poison = [ "foo" ]
#
# This useful in cases where we have some large target or set of
# targets and want to ensure that most other targets do not
# transitively depend on them. For example, almost no high-level
# target should depend on the audio codecs, since we want WebRTC users
# to be able to inject any subset of them and actually end up with a
# binary that doesn't include the codecs they didn't inject.
#
# Test-only targets (`testonly` set to true) and non-public targets
# (`visibility` not containing "*") are automatically immune to all
# types of poison.
#
# Here's the complete list of all types of poison. It must be kept in
# 1:1 correspondence with the set of //:poison_* targets.
#
all_poison_types = [
# Encoders and decoders for specific audio codecs such as Opus and iSAC.
"audio_codecs",
]
template("rtc_test") { template("rtc_test") {
test(target_name) { test(target_name) {
forward_variables_from(invoker, forward_variables_from(invoker,
@ -321,6 +356,45 @@ template("rtc_source_set") {
if (!defined(visibility)) { if (!defined(visibility)) {
visibility = webrtc_default_visibility visibility = webrtc_default_visibility
} }
# What's your poison?
if (defined(testonly) && testonly) {
assert(!defined(poisonous))
assert(!defined(allow_poison))
} else {
if (!defined(poisonous)) {
poisonous = []
}
if (!defined(allow_poison)) {
allow_poison = []
}
if (!defined(assert_no_deps)) {
assert_no_deps = []
}
if (!defined(deps)) {
deps = []
}
foreach(p, poisonous) {
deps += [ webrtc_root + ":poison_" + p ]
}
foreach(poison_type, all_poison_types) {
allow_dep = true
foreach(v, visibility) {
if (v == "*") {
allow_dep = false
}
}
foreach(p, allow_poison + poisonous) {
if (p == poison_type) {
allow_dep = true
}
}
if (!allow_dep) {
assert_no_deps += [ webrtc_root + ":poison_" + poison_type ]
}
}
}
configs += invoker.configs configs += invoker.configs
configs -= rtc_remove_configs configs -= rtc_remove_configs
configs -= invoker.suppressed_configs configs -= invoker.suppressed_configs
@ -375,6 +449,45 @@ template("rtc_static_library") {
if (!defined(visibility)) { if (!defined(visibility)) {
visibility = webrtc_default_visibility visibility = webrtc_default_visibility
} }
# What's your poison?
if (defined(testonly) && testonly) {
assert(!defined(poisonous))
assert(!defined(allow_poison))
} else {
if (!defined(poisonous)) {
poisonous = []
}
if (!defined(allow_poison)) {
allow_poison = []
}
if (!defined(assert_no_deps)) {
assert_no_deps = []
}
if (!defined(deps)) {
deps = []
}
foreach(p, poisonous) {
deps += [ webrtc_root + ":poison_" + p ]
}
foreach(poison_type, all_poison_types) {
allow_dep = true
foreach(v, visibility) {
if (v == "*") {
allow_dep = false
}
}
foreach(p, allow_poison + poisonous) {
if (p == poison_type) {
allow_dep = true
}
}
if (!allow_dep) {
assert_no_deps += [ webrtc_root + ":poison_" + poison_type ]
}
}
}
configs += invoker.configs configs += invoker.configs
configs -= rtc_remove_configs configs -= rtc_remove_configs
configs -= invoker.suppressed_configs configs -= invoker.suppressed_configs
@ -399,6 +512,45 @@ template("rtc_shared_library") {
if (!defined(visibility)) { if (!defined(visibility)) {
visibility = webrtc_default_visibility visibility = webrtc_default_visibility
} }
# What's your poison?
if (defined(testonly) && testonly) {
assert(!defined(poisonous))
assert(!defined(allow_poison))
} else {
if (!defined(poisonous)) {
poisonous = []
}
if (!defined(allow_poison)) {
allow_poison = []
}
if (!defined(assert_no_deps)) {
assert_no_deps = []
}
if (!defined(deps)) {
deps = []
}
foreach(p, poisonous) {
deps += [ webrtc_root + ":poison_" + p ]
}
foreach(poison_type, all_poison_types) {
allow_dep = true
foreach(v, visibility) {
if (v == "*") {
allow_dep = false
}
}
foreach(p, allow_poison + poisonous) {
if (p == poison_type) {
allow_dep = true
}
}
if (!allow_dep) {
assert_no_deps += [ webrtc_root + ":poison_" + poison_type ]
}
}
}
configs += invoker.configs configs += invoker.configs
configs -= rtc_remove_configs configs -= rtc_remove_configs
configs -= invoker.suppressed_configs configs -= invoker.suppressed_configs