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:
committed by
Commit Bot
parent
e8b962bd3c
commit
86d053c2db
@ -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",
|
||||
|
||||
Reference in New Issue
Block a user