xref: /aosp_15_r20/frameworks/native/opengl/libs/Android.bp (revision 38e8c45f13ce32b0dcecb25141ffecaf386fa17f)
1// Build the ETC1 library
2package {
3    // See: http://go/android-license-faq
4    // A large-scale-change added 'default_applicable_licenses' to import
5    // all of the 'license_kinds' from "frameworks_native_license"
6    // to get the below license kinds:
7    //   SPDX-license-identifier-Apache-2.0
8    default_applicable_licenses: ["frameworks_native_license"],
9}
10
11cc_library {
12    name: "libETC1",
13    srcs: ["ETC1/etc1.cpp"],
14    host_supported: true,
15    cflags: [
16        "-Wall",
17        "-Werror",
18    ],
19
20    target: {
21        android: {
22            static: {
23                enabled: false,
24            },
25        },
26        host: {
27            shared: {
28                enabled: false,
29            },
30        },
31        windows: {
32            enabled: true,
33        },
34    },
35}
36
37// The headers modules are in frameworks/native/opengl/Android.bp.
38ndk_library {
39    name: "libEGL",
40    symbol_file: "libEGL.map.txt",
41    first_version: "9",
42    unversioned_until: "current",
43}
44
45ndk_library {
46    name: "libGLESv1_CM",
47    symbol_file: "libGLESv1_CM.map.txt",
48    first_version: "9",
49    unversioned_until: "current",
50}
51
52ndk_library {
53    name: "libGLESv2",
54    symbol_file: "libGLESv2.map.txt",
55    first_version: "9",
56    unversioned_until: "current",
57}
58
59ndk_library {
60    name: "libGLESv3",
61    symbol_file: "libGLESv3.map.txt",
62    first_version: "18",
63    unversioned_until: "current",
64}
65
66aconfig_declarations {
67    name: "egl_flags",
68    package: "com.android.graphics.egl.flags",
69    container: "system",
70    srcs: ["EGL/egl_flags.aconfig"],
71}
72
73cc_aconfig_library {
74    name: "libegl_flags",
75    aconfig_declarations: "egl_flags",
76}
77
78cc_defaults {
79    name: "gl_libs_defaults",
80    cflags: [
81        "-DGL_GLEXT_PROTOTYPES",
82        "-DEGL_EGLEXT_PROTOTYPES",
83        "-fvisibility=hidden",
84        "-Wall",
85        "-Werror",
86        "-Wno-unused-variable",
87    ],
88    shared_libs: [
89        // ***** DO NOT ADD NEW DEPENDENCIES HERE *****
90        // In particular, DO NOT add libutils or anything "above" libcutils
91        "libcutils",
92        "liblog",
93        "libdl",
94    ],
95    static_libs: [
96        "libarect",
97    ],
98    header_libs: [
99        "bionic_libc_platform_headers",
100        "gl_headers",
101        "libsystem_headers",
102        "libnativebase_headers",
103    ],
104    export_header_lib_headers: ["gl_headers"],
105}
106
107//##############################################################################
108// Build META EGL library
109//
110cc_defaults {
111    name: "egl_libs_defaults",
112    defaults: ["gl_libs_defaults"],
113    cflags: [
114        "-DLOG_TAG=\"libEGL\"",
115        "-Wall",
116        "-Werror",
117        "-Wno-error=deprecated-register",
118        "-Wno-error=unknown-attributes",
119        "-Wno-unused-variable",
120    ],
121    shared_libs: [
122        // ***** DO NOT ADD NEW DEPENDENCIES HERE *****
123        // In particular, DO NOT add libutils nor anything "above" libui
124        "libgraphicsenv",
125        "libnativewindow",
126        "libbase",
127    ],
128}
129
130cc_library_static {
131    name: "libEGL_getProcAddress",
132    defaults: ["egl_libs_defaults"],
133    srcs: ["EGL/getProcAddress.cpp"],
134    arch: {
135        arm: {
136            instruction_set: "arm",
137        },
138    },
139}
140
141cc_library_static {
142    name: "libEGL_blobCache",
143    defaults: ["egl_libs_defaults"],
144    srcs: [
145        "EGL/BlobCache.cpp",
146        "EGL/FileBlobCache.cpp",
147        "EGL/MultifileBlobCache.cpp",
148    ],
149    export_include_dirs: ["EGL"],
150    shared_libs: [
151        "libegl_flags",
152        "libz",
153    ],
154}
155
156cc_library_shared {
157    name: "libEGL",
158    defaults: ["egl_libs_defaults"],
159    llndk: {
160        symbol_file: "libEGL.map.txt",
161        export_llndk_headers: ["gl_headers"],
162        // Don't export EGL/include from the LLNDK variant.
163        override_export_include_dirs: [],
164    },
165    srcs: [
166        "EGL/egl_tls.cpp",
167        "EGL/egl_cache.cpp",
168        "EGL/egl_display.cpp",
169        "EGL/egl_object.cpp",
170        "EGL/egl_layers.cpp",
171        "EGL/egl.cpp",
172        "EGL/eglApi.cpp",
173        "EGL/egl_platform_entries.cpp",
174        "EGL/Loader.cpp",
175        "EGL/egl_angle_platform.cpp",
176    ],
177    shared_libs: [
178        "libvndksupport",
179        "[email protected]",
180        "android.hardware.configstore-utils",
181        "libbase",
182        "libegl_flags",
183        "libhidlbase",
184        "libnativebridge_lazy",
185        "libnativeloader_lazy",
186        "libutils",
187        "libSurfaceFlingerProp",
188        "libunwindstack",
189        "libz",
190    ],
191    static_libs: [
192        "libEGL_getProcAddress",
193        "libEGL_blobCache",
194    ],
195    ldflags: [
196        "-Wl,--exclude-libs=libEGL_getProcAddress.a",
197        "-Wl,--exclude-libs=libEGL_blobCache.a",
198        "-Wl,--Bsymbolic-functions",
199    ],
200    export_include_dirs: ["EGL/include"],
201    stubs: {
202        symbol_file: "libEGL.map.txt",
203        versions: ["29"],
204    },
205    header_libs: ["libsurfaceflinger_headers"],
206}
207
208cc_test {
209    name: "libEGL_test",
210    defaults: ["egl_libs_defaults"],
211    srcs: [
212        "EGL/BlobCache.cpp",
213        "EGL/BlobCache_test.cpp",
214        "EGL/FileBlobCache.cpp",
215        "EGL/MultifileBlobCache.cpp",
216        "EGL/MultifileBlobCache_test.cpp",
217    ],
218    shared_libs: [
219        "libegl_flags",
220        "libutils",
221        "libz",
222    ],
223}
224
225cc_defaults {
226    name: "gles_libs_defaults",
227    defaults: ["gl_libs_defaults"],
228    arch: {
229        arm: {
230            instruction_set: "arm",
231
232            // TODO: This is to work around b/20093774. Remove after root cause is fixed
233            ldflags: ["-Wl,--hash-style,both"],
234        },
235    },
236    shared_libs: ["libEGL"],
237}
238
239//##############################################################################
240// Build the wrapper OpenGL ES 1.x library
241//
242cc_library_shared {
243    name: "libGLESv1_CM",
244    defaults: ["gles_libs_defaults"],
245    llndk: {
246        symbol_file: "libGLESv1_CM.map.txt",
247        export_llndk_headers: ["gl_headers"],
248        // Don't export EGL/include from the LLNDK variant.
249        override_export_include_dirs: [],
250    },
251    srcs: ["GLES_CM/gl.cpp"],
252    cflags: ["-DLOG_TAG=\"libGLESv1\""],
253    version_script: "libGLESv1_CM.map.txt",
254}
255
256//##############################################################################
257// Build the wrapper OpenGL ES 2.x library
258//
259cc_library_shared {
260    name: "libGLESv2",
261    defaults: ["gles_libs_defaults"],
262    llndk: {
263        symbol_file: "libGLESv2.map.txt",
264        export_llndk_headers: ["gl_headers"],
265        // Don't export EGL/include from the LLNDK variant.
266        override_export_include_dirs: [],
267    },
268    srcs: ["GLES2/gl2.cpp"],
269    cflags: ["-DLOG_TAG=\"libGLESv2\""],
270
271    // Bug: http://b/133874658  Disable native_coverage as we investigate a
272    // crash in surfaceflinger on coverage-enabled cuttlefish builds.
273    native_coverage: false,
274}
275
276//##############################################################################
277// Build the wrapper OpenGL ES 3.x library (this is just different name for v2)
278//
279cc_library_shared {
280    name: "libGLESv3",
281    defaults: ["gles_libs_defaults"],
282    llndk: {
283        symbol_file: "libGLESv3.map.txt",
284        export_llndk_headers: ["gl_headers"],
285        // Don't export EGL/include from the LLNDK variant.
286        override_export_include_dirs: [],
287    },
288    srcs: ["GLES2/gl2.cpp"],
289    cflags: ["-DLOG_TAG=\"libGLESv3\""],
290}
291