Split libnbaio into libnbaio + libnbaio_mono.
When the vndk is enabled (BOARD_VNDK_VERSION=current),
vendor libraries must only link against vendor variants
in the build system. This also means that they receive restricted
sets of headers and that automatic global headers are restricted.
Test: mma -j BOARD_VNDK_VERSION=current
Test: boots device, audio plays over YouTube
Bug: 37342627
Bug: 63269228
Change-Id: Ifa9c96f6b98b456def485be6bc5046ee54c3c3ca
diff --git a/media/libnbaio/Android.bp b/media/libnbaio/Android.bp
index a7cfe4a..02f7529 100644
--- a/media/libnbaio/Android.bp
+++ b/media/libnbaio/Android.bp
@@ -1,12 +1,46 @@
+
+cc_defaults {
+ name: "libnbaio_mono_defaults",
+ srcs: [
+ "MonoPipe.cpp",
+ "MonoPipeReader.cpp",
+ "NBAIO.cpp",
+ ],
+ header_libs: [
+ "libaudioclient_headers",
+ "libaudio_system_headers",
+ "libmedia_headers",
+ ],
+ export_header_lib_headers: [
+ "libaudioclient_headers",
+ "libmedia_headers",
+ ],
+
+ shared_libs: [
+ "libaudioutils",
+ "liblog",
+ "libutils",
+ ],
+
+ export_include_dirs: ["include_mono"],
+}
+
+// libnbaio_mono is the part of libnbaio that is available for vendors to use. Vendor modules can't
+// link against libnbaio and system modules can't link against libnbaio_mono. The rest of libnbaio
+// pulls in too many other dependencies.
+cc_library_shared {
+ name: "libnbaio_mono",
+ vendor: true,
+ defaults: ["libnbaio_mono_defaults"],
+}
+
cc_library_shared {
name: "libnbaio",
+ defaults: ["libnbaio_mono_defaults"],
srcs: [
"AudioBufferProviderSource.cpp",
"AudioStreamInSource.cpp",
"AudioStreamOutSink.cpp",
- "MonoPipe.cpp",
- "MonoPipeReader.cpp",
- "NBAIO.cpp",
"NBLog.cpp",
"PerformanceAnalysis.cpp",
"Pipe.cpp",
@@ -25,8 +59,8 @@
"libaudioutils",
"libbinder",
"libcutils",
- "libutils",
"liblog",
+ "libutils",
],
cflags: [
@@ -36,7 +70,5 @@
include_dirs: ["system/media/audio_utils/include"],
- local_include_dirs: ["include"],
-
export_include_dirs: ["include"],
}