Client library: make code gc-sections friendly
The problem we want to solve is the following: on Android
some targets (e.g. libsurfaceflinger) rely on the system
backend for production code but then want the in-process
backend for tests. Both backends are big in terms of binary
size (~200 KB).
Instead of relying on dedicated build targets this code
arranges the build targets in a way that allows the linker to
dead-code-eliminate unused backends if the caller doesn't
require them.
Test: manual: the size of /system/lib64/libsurfaceflinger.so
is == the size when completely removing the in-process
target.
Bug: 148198993
Change-Id: Ie891a9b2e6ec38a3781318d1204a694899b01656
diff --git a/Android.bp b/Android.bp
index c83a8cb..e60a9b7 100644
--- a/Android.bp
+++ b/Android.bp
@@ -478,7 +478,7 @@
":perfetto_src_ipc_common",
":perfetto_src_ipc_host",
":perfetto_src_protozero_protozero",
- ":perfetto_src_tracing_client_api_base",
+ ":perfetto_src_tracing_client_api_without_backends",
":perfetto_src_tracing_common",
":perfetto_src_tracing_core_core",
":perfetto_src_tracing_core_service",
@@ -488,7 +488,7 @@
":perfetto_src_tracing_ipc_producer_producer",
":perfetto_src_tracing_ipc_service_service",
":perfetto_src_tracing_platform_posix",
- ":perfetto_src_tracing_system_process_backend",
+ ":perfetto_src_tracing_system_backend",
],
export_include_dirs: [
"include",
@@ -1362,7 +1362,7 @@
":perfetto_src_traced_probes_probes_src",
":perfetto_src_traced_probes_ps_ps",
":perfetto_src_traced_probes_sys_stats_sys_stats",
- ":perfetto_src_tracing_client_api_base",
+ ":perfetto_src_tracing_client_api_without_backends",
":perfetto_src_tracing_common",
":perfetto_src_tracing_core_core",
":perfetto_src_tracing_core_service",
@@ -1372,7 +1372,7 @@
":perfetto_src_tracing_ipc_producer_producer",
":perfetto_src_tracing_ipc_service_service",
":perfetto_src_tracing_platform_posix",
- ":perfetto_src_tracing_system_process_backend",
+ ":perfetto_src_tracing_system_backend",
":perfetto_src_tracing_test_api_test_support",
":perfetto_src_tracing_test_client_api_integrationtests",
":perfetto_test_end_to_end_integrationtests",
@@ -6508,9 +6508,9 @@
],
}
-// GN: //src/tracing:client_api_base
+// GN: //src/tracing:client_api_without_backends
filegroup {
- name: "perfetto_src_tracing_client_api_base",
+ name: "perfetto_src_tracing_client_api_without_backends",
srcs: [
"src/tracing/data_source.cc",
"src/tracing/debug_annotation.cc",
@@ -6653,9 +6653,9 @@
],
}
-// GN: //src/tracing:system_process_backend
+// GN: //src/tracing:system_backend
filegroup {
- name: "perfetto_src_tracing_system_process_backend",
+ name: "perfetto_src_tracing_system_backend",
srcs: [
"src/tracing/internal/system_tracing_backend.cc",
],