Use source_sets in component builds and static_library in release builds.

Static libraries don't guarantee that an exported symbol gets linked
into a shared library (and in order to support Chromium's component
build mode, WebRTC needs to be linked as a shared library).

Source sets always pass all the object files to the linker.

On the flip side, source_sets link more object files in release builds
and to avoid this, this CL introduces a the GN template "rtc_library" that
expands to static_library during release builds and to source_set during
component builds.

See: https://gn.googlesource.com/gn/+/master/docs/reference.md#func_source_set

Bug: webrtc:9419
Change-Id: I4667e820c2b3fcec417becbd2034acc13e4f04fe
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157168
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#29525}
This commit is contained in:
Mirko Bonadei
2019-10-17 21:32:04 +02:00
committed by Commit Bot
parent e8b962bd3c
commit 86d053c2db
100 changed files with 756 additions and 654 deletions

View File

@ -36,7 +36,7 @@ rtc_source_set("rtc_event_log_api") {
]
}
rtc_source_set("rtc_stream_config") {
rtc_library("rtc_stream_config") {
sources = [
"rtc_event_log/rtc_stream_config.cc",
"rtc_event_log/rtc_stream_config.h",
@ -48,7 +48,7 @@ rtc_source_set("rtc_stream_config") {
]
}
rtc_source_set("rtc_event_pacing") {
rtc_library("rtc_event_pacing") {
sources = [
"rtc_event_log/events/rtc_event_alr_state.cc",
"rtc_event_log/events/rtc_event_alr_state.h",
@ -61,7 +61,7 @@ rtc_source_set("rtc_event_pacing") {
]
}
rtc_source_set("rtc_event_audio") {
rtc_library("rtc_event_audio") {
sources = [
"rtc_event_log/events/rtc_event_audio_network_adaptation.cc",
"rtc_event_log/events/rtc_event_audio_network_adaptation.h",
@ -83,7 +83,7 @@ rtc_source_set("rtc_event_audio") {
]
}
rtc_source_set("rtc_event_bwe") {
rtc_library("rtc_event_bwe") {
sources = [
"rtc_event_log/events/rtc_event_bwe_update_delay_based.cc",
"rtc_event_log/events/rtc_event_bwe_update_delay_based.h",
@ -110,7 +110,7 @@ rtc_source_set("rtc_event_bwe") {
]
}
rtc_source_set("rtc_event_generic_packet_events") {
rtc_library("rtc_event_generic_packet_events") {
visibility = [ "*" ]
sources = [
"rtc_event_log/events/rtc_event_generic_ack_received.cc",
@ -128,7 +128,7 @@ rtc_source_set("rtc_event_generic_packet_events") {
]
}
rtc_source_set("rtc_event_rtp_rtcp") {
rtc_library("rtc_event_rtp_rtcp") {
sources = [
"rtc_event_log/events/rtc_event_rtcp_packet_incoming.cc",
"rtc_event_log/events/rtc_event_rtcp_packet_incoming.h",
@ -151,7 +151,7 @@ rtc_source_set("rtc_event_rtp_rtcp") {
]
}
rtc_source_set("rtc_event_video") {
rtc_library("rtc_event_video") {
sources = [
"rtc_event_log/events/rtc_event_video_receive_stream_config.cc",
"rtc_event_log/events/rtc_event_video_receive_stream_config.h",
@ -170,7 +170,7 @@ rtc_source_set("rtc_event_video") {
# TODO(eladalon): Break down into (1) encoder and (2) decoder; we don't need
# the decoder code in the WebRTC library, only in unit tests and tools.
rtc_static_library("rtc_event_log_impl_encoder") {
rtc_library("rtc_event_log_impl_encoder") {
sources = [
"rtc_event_log/encoder/blob_encoding.cc",
"rtc_event_log/encoder/blob_encoding.h",
@ -235,7 +235,7 @@ rtc_source_set("rtc_event_log_impl_output") {
}
if (rtc_enable_protobuf) {
rtc_source_set("rtc_event_log_impl") {
rtc_library("rtc_event_log_impl") {
visibility = [ "../api/rtc_event_log:rtc_event_log_factory" ]
sources = [
"rtc_event_log/rtc_event_log_impl.cc",
@ -258,7 +258,7 @@ if (rtc_enable_protobuf) {
}
}
rtc_source_set("fake_rtc_event_log") {
rtc_library("fake_rtc_event_log") {
testonly = true
sources = [
"rtc_event_log/fake_rtc_event_log.cc",
@ -292,7 +292,7 @@ if (rtc_enable_protobuf) {
proto_out_dir = "logging/rtc_event_log"
}
rtc_static_library("rtc_event_log_parser") {
rtc_library("rtc_event_log_parser") {
visibility = [ "*" ]
sources = [
"rtc_event_log/logged_events.cc",
@ -335,7 +335,7 @@ if (rtc_enable_protobuf) {
}
if (rtc_include_tests) {
rtc_source_set("rtc_event_log_tests") {
rtc_library("rtc_event_log_tests") {
testonly = true
assert(rtc_enable_protobuf)
defines = [ "ENABLE_RTC_EVENT_LOG" ]
@ -412,7 +412,7 @@ if (rtc_enable_protobuf) {
}
}
rtc_source_set("ice_log") {
rtc_library("ice_log") {
sources = [
"rtc_event_log/events/rtc_event_dtls_transport_state.cc",
"rtc_event_log/events/rtc_event_dtls_transport_state.h",
@ -436,7 +436,7 @@ rtc_source_set("ice_log") {
}
if (rtc_include_tests) {
rtc_source_set("mocks") {
rtc_library("mocks") {
testonly = true
sources = [
"rtc_event_log/mock/mock_rtc_event_log.cc",