1// Copyright (C) 2016 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Headers module is in frameworks/av/Android.bp because modules are not allowed
16// to refer to headers in parent directories and the headers live in
17// frameworks/av/include.
18
19package {
20    default_applicable_licenses: ["frameworks_av_media_ndk_license"],
21}
22
23// Added automatically by a large-scale-change that took the approach of
24// 'apply every license found to every target'. While this makes sure we respect
25// every license restriction, it may not be entirely correct.
26//
27// e.g. GPL in an MIT project might only apply to the contrib/ directory.
28//
29// Please consider splitting the single license below into multiple licenses,
30// taking care not to lose any license_kind information, and overriding the
31// default license using the 'licenses: [...]' property on targets as needed.
32//
33// For unused files, consider creating a 'fileGroup' with "//visibility:private"
34// to attach the license to, and including a comment whether the files may be
35// used in the current project.
36// See: http://go/android-license-faq
37license {
38    name: "frameworks_av_media_ndk_license",
39    visibility: [":__subpackages__"],
40    license_kinds: [
41        "SPDX-license-identifier-Apache-2.0",
42        "SPDX-license-identifier-MIT",
43        "SPDX-license-identifier-Unicode-DFS",
44    ],
45    license_text: [
46        "NOTICE",
47    ],
48}
49
50ndk_library {
51    name: "libmediandk",
52    symbol_file: "libmediandk.map.txt",
53    first_version: "21",
54    unversioned_until: "current",
55}
56
57ndk_headers {
58    name: "libmediandk_headers",
59    from: "include/media",
60    to: "media",
61    srcs: ["include/media/**/*.h"],
62    license: "NOTICE",
63}
64
65// for use with header_libs
66cc_library_headers {
67    name: "media_ndk_headers",
68    vendor_available: true,
69    // TODO(b/153609531): remove when no longer needed.
70    native_bridge_supported: true,
71    apex_available: [
72        "//apex_available:platform",
73        "com.android.media",
74        "com.android.media.swcodec",
75    ],
76    min_sdk_version: "29",
77    export_include_dirs: ["include"],
78    host_supported: true,
79    target: {
80        darwin: {
81            enabled: false,
82        },
83    },
84}
85
86cc_library_shared {
87    name: "libmediandk",
88    llndk: {
89        symbol_file: "libmediandk.map.txt",
90    },
91
92    srcs: [
93        "NdkJavaVMHelper.cpp",
94        "NdkMediaCodec.cpp",
95        "NdkMediaCrypto.cpp",
96        "NdkMediaDataSource.cpp",
97        "NdkMediaExtractor.cpp",
98        "NdkMediaFormat.cpp",
99        "NdkMediaMuxer.cpp",
100        "NdkMediaDrm.cpp",
101        "NdkImage.cpp",
102        "NdkImageReader.cpp",
103    ],
104
105    include_dirs: [
106        "frameworks/base/core/jni",
107        "frameworks/native/include/media/openmax",
108        "system/media/camera/include",
109    ],
110
111    cflags: [
112        "-DEXPORT=__attribute__((visibility(\"default\")))",
113        "-Werror",
114        "-Wall",
115    ],
116
117    static_libs: [
118        "libgrallocusage",
119        "libnativehelper_lazy",
120    ],
121
122    header_libs: [
123        "jni_headers",
124        "libmediadrm_headers",
125        "libmediametrics_headers",
126    ],
127
128    shared_libs: [
129        "android.hardware.graphics.bufferqueue@1.0",
130        "android.hidl.token@1.0-utils",
131        "libandroid_runtime_lazy",
132        "libbase",
133        "libdatasource",
134        "libmedia",
135        "libmediadrm",
136        "libmedia_omx",
137        "libmedia_jni_utils",
138        "libstagefright",
139        "libstagefright_foundation",
140        "liblog",
141        "libutils",
142        "libcutils",
143        "libnativewindow",
144        "libhidlbase",
145        "libgui",
146        "libui",
147        "libmediandk_utils",
148    ],
149
150    export_header_lib_headers: ["jni_headers"],
151
152    export_include_dirs: [
153        "include",
154        "include_platform",
155    ],
156
157    export_shared_lib_headers: [
158        "libgui",
159    ],
160
161    product_variables: {
162        pdk: {
163            enabled: false,
164        },
165    },
166    version_script: "libmediandk.map.txt",
167    stubs: {
168        symbol_file: "libmediandk.map.txt",
169        versions: ["29"],
170    },
171}
172
173cc_library {
174    name: "libmediandk_utils",
175
176    srcs: [
177        "NdkMediaDataSourceCallbacks.cpp",
178    ],
179
180    include_dirs: [
181        "frameworks/av/media/libstagefright/include",
182        "frameworks/av/media/ndk/include",
183    ],
184
185    export_include_dirs: [
186        "include",
187    ],
188
189    cflags: [
190        "-Werror",
191        "-Wno-error=deprecated-declarations",
192        "-Wall",
193    ],
194
195    header_libs: [
196        "libmedia_headers",
197    ],
198
199    shared_libs: [
200    ],
201
202    sanitize: {
203        misc_undefined: [
204            "unsigned-integer-overflow",
205            "signed-integer-overflow",
206        ],
207        cfi: true,
208    },
209}
210
211cc_test {
212    name: "AImageReaderWindowHandleTest",
213    test_suites: ["device-tests"],
214    srcs: ["tests/AImageReaderWindowHandleTest.cpp"],
215    shared_libs: [
216        "libbinder",
217        "libmediandk",
218        "libmediautils",
219        "libnativewindow",
220        "libgui",
221        "libutils",
222        "libui",
223        "libcutils",
224        "android.hardware.graphics.bufferqueue@1.0",
225    ],
226    header_libs: [
227        "libstagefright_foundation_headers",
228    ],
229
230    cflags: [
231        "-D__ANDROID_VNDK__",
232    ],
233    include_dirs: [
234        "frameworks/av/media/ndk/",
235    ],
236}
237
238cc_library_static {
239    name: "libmediandk_format",
240
241    host_supported: true,
242
243    srcs: [
244        "NdkMediaFormat.cpp",
245    ],
246
247    header_libs: [
248        "libstagefright_foundation_headers",
249    ],
250
251    cflags: [
252        "-DEXPORT=__attribute__((visibility(\"default\")))",
253        "-Werror",
254        "-Wall",
255    ],
256
257    export_include_dirs: ["include"],
258
259    sanitize: {
260        misc_undefined: [
261            "unsigned-integer-overflow",
262            "signed-integer-overflow",
263        ],
264        cfi: true,
265    },
266
267    target: {
268        darwin: {
269            enabled: false,
270        },
271    },
272
273    apex_available: [
274        "//apex_available:platform",
275        "com.android.media",
276        "com.android.media.swcodec",
277    ],
278}
279