xref: /aosp_15_r20/external/deqp/Android.bp (revision 35238bce31c2a825756842865a792f8cf7f89930)
1package {
2    default_team: "trendy_team_android_gpu",
3    default_applicable_licenses: ["external_deqp_license"],
4}
5
6// Added automatically by a large-scale-change that took the approach of
7// 'apply every license found to every target'. While this makes sure we respect
8// every license restriction, it may not be entirely correct.
9//
10// e.g. GPL in an MIT project might only apply to the contrib/ directory.
11//
12// Please consider splitting the single license below into multiple licenses,
13// taking care not to lose any license_kind information, and overriding the
14// default license using the 'licenses: [...]' property on targets as needed.
15//
16// For unused files, consider creating a 'fileGroup' with "//visibility:private"
17// to attach the license to, and including a comment whether the files may be
18// used in the current project.
19//
20// large-scale-change included anything that looked like it might be a license
21// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
22//
23// Please consider removing redundant or irrelevant files from 'license_text:'.
24// See: http://go/android-license-faq
25license {
26    name: "external_deqp_license",
27    visibility: [":__subpackages__"],
28    license_kinds: [
29        "SPDX-license-identifier-Apache-2.0",
30        "SPDX-license-identifier-BSD",
31        "SPDX-license-identifier-MIT",
32    ],
33    license_text: [
34        "LICENSE",
35        "NOTICE",
36    ],
37}
38
39build = [
40    "AndroidGen.bp",
41    "AndroidKhronosCTSGen.bp",
42]
43
44// Used by Amber.
45// Amber includes "vkDefs.h".
46cc_library_headers {
47    name: "deqp_vulkan_headers",
48    defaults: ["deqp_and_deps_defaults"],
49    export_include_dirs: [
50        "external/vulkancts/framework/vulkan",
51        "external/vulkancts/framework/vulkan/generated/vulkan",
52        "framework/delibs/debase",
53    ],
54}
55
56// These defaults ensure we have a consistent set of defines and compiler flags
57// across dEQP and its dependencies.
58cc_defaults {
59    name: "deqp_and_deps_defaults",
60    cpp_std: "c++17",
61    cflags: [
62        // Amber defines.
63        "-DAMBER_CTS_VULKAN_HEADER=1",
64        "-DAMBER_ENABLE_CLSPV=0",
65        "-DAMBER_ENABLE_DXC=0",
66        "-DAMBER_ENABLE_LODEPNG=1", // This has no effect.
67        "-DAMBER_ENABLE_RTTI=1",
68        "-DAMBER_ENABLE_SHADERC=0",
69        "-DAMBER_ENABLE_SPIRV_TOOLS=0",
70        "-DAMBER_ENABLE_VK_DEBUGGING=0",
71        "-DAMBER_ENGINE_DAWN=0",
72        "-DAMBER_ENGINE_VULKAN=1",
73
74        // glslang defines:
75        "-DENABLE_HLSL",
76        "-DENABLE_OPT=0",
77        "-DGLSLANG_OSINCLUDE_UNIX",
78
79        // SPIRV-Tools defines:
80        "-DSPIRV_ANDROID",
81        "-DSPIRV_CHECK_CONTEXT",
82        "-DSPIRV_COLOR_TERMINAL",
83        "-DSPIRV_TIMER_ENABLED",
84
85        // Android/Clang defines (not needed):
86        // -D_FORTIFY_SOURCE=2
87        // -DANDROID
88        // -DNDEBUG
89
90        // dEQP defines that we don't want/need:
91        // -DDE_DEBUG
92        // -DDEQP_USE_RELEASE_INFO_FILE
93        // -DPNG_DEBUG
94
95        // dEQP defines that are worked out in deDefs.h, without needing
96        // explicit defs:
97        // -DDE_PTR_SIZE=8
98        // -DDE_CPU=DE_CPU_ARM_64
99        //"-DDE_FENV_ACCESS_ON=_Pragma(\"STDC FENV_ACCESS ON\")",
100
101        // dEQP defines:
102        "-D_XOPEN_SOURCE=600",
103        "-DDE_ASSERT_FAILURE_CALLBACK",
104        "-DDE_COMPILER=DE_COMPILER_CLANG",
105        "-DDE_MINGW=0",
106        "-DDE_OS=DE_OS_ANDROID",
107        "-DDEQP_GLES2_DIRECT_LINK=1",
108        "-DDEQP_HAVE_RENDERDOC_HEADER=0", // Needs to be 0.
109        "-DDEQP_EXCLUDE_VK_VIDEO_TESTS",
110        "-DDEQP_SUPPORT_DRM=0",
111        "-DDEQP_SUPPORT_GLES1=1",
112        "-DDEQP_TARGET_NAME=\"Android\"",
113        "-DQP_SUPPORT_PNG",
114        "-DCTS_USES_VULKAN",
115
116        "-Wall",
117        "-Werror",
118        "-Wconversion",
119
120        "-fwrapv",
121    ],
122    cppflags: [
123        "-fexceptions",
124    ],
125    sdk_version: "27",
126    rtti: true,
127    stl: "c++_static",
128    product_variables: {
129        platform_sdk_version: {
130            cflags: [
131                // dEQP defines:
132                "-DDE_ANDROID_API=%d",
133            ],
134        },
135    },
136}
137
138cc_library_shared {
139    name: "libdeqp",
140    defaults: ["libdeqp_defaults"],
141}
142
143cc_defaults {
144    name: "libdeqp_defaults",
145    defaults: [
146        "libdeqp_gen",
147        "deqp_and_deps_defaults",
148    ],
149
150    tidy_checks: [
151        // The clang-tidy google-explicit-constructor warning is issued to nearly
152        // 1000 conversion constructors in this project. They are from more than
153        // 500 source files. Most of them should be declared explicit, but many
154        // of them need to be implicit. Until we correctly mark them as explicit
155        // or NOLINT(implicit), we suppress the google-explicit-constructor check.
156        "-google-explicit-constructor",
157
158        "-google-build-explicit-make-pair",
159        "-google-global-names-in-headers",
160        "-google-runtime-member-string-references",
161        "-google-runtime-operator",
162    ],
163
164    header_libs: ["jni_headers"],
165
166    include_dirs: [
167        "external/deqp-deps/SPIRV-Headers/include",
168    ],
169
170    shared_libs: [
171        "libEGL",
172        "libGLESv2",
173        "libandroid",
174        "liblog",
175        "libm",
176        "libc",
177        "libz",
178        "libdl",
179    ],
180
181    static_libs: [
182        "libpng_ndk",
183        "deqp_glslang_glslang",
184        "deqp_glslang_OSDependent",
185        "deqp_glslang_MachineIndependent",
186        "deqp_glslang_GenericCodeGen",
187        "deqp_glslang_SPIRV",
188        "deqp_glslang_SPVRemapper",
189        "deqp_spirv-tools",
190        "deqp_amber",
191    ],
192
193    cflags: [
194        "-Wno-implicit-fallthrough",
195        "-Wno-sign-conversion",
196        "-Wno-unused-private-field",
197        "-Wno-shorten-64-to-32",
198    ],
199
200    cppflags: [
201        "-Wno-non-virtual-dtor",
202        "-Wno-delete-non-virtual-dtor",
203        "-Wno-implicit-int-conversion",
204        "-Wno-missing-field-initializers",
205        "-Wno-switch",
206        "-Wno-unused-parameter",
207        "-Wno-unused-variable",
208    ],
209}
210
211android_test {
212    name: "com.drawelements.deqp",
213
214    test_suites: [
215        "vts10",
216    ],
217
218    srcs: ["android/package/src/**/*.java"],
219    resource_dirs: ["android/package/res"],
220    manifest: "android/package/AndroidManifest-integration.xml",
221
222    asset_dirs: [
223        "data",
224        "external/vulkancts/data",
225        "external/graphicsfuzz/data",
226    ],
227
228    jni_libs: ["libdeqp"],
229
230    compile_multilib: "both",
231
232    // We could go down all the way to API-13 for 32bit. 22 is required for 64bit ARM.
233    sdk_version: "test_current",
234
235    // Avoid apk installation failures ('Requires development platform...' errors)
236    min_sdk_version: "31",
237    target_sdk_version: "34",
238}
239
240cc_test {
241    name: "deqp-binary",
242    defaults: ["libdeqp_defaults"],
243
244    cflags: [
245        "-DDEQP_GLES3_RUNTIME_LOAD=1",
246    ],
247
248    cppflags: [
249        "-Wno-macro-redefined",
250    ],
251
252    srcs: [
253        "framework/platform/tcuMain.cpp",
254        "framework/platform/surfaceless/tcuSurfacelessPlatform.cpp",
255    ],
256
257    local_include_dirs: [
258        "framework/platform/surfaceless",
259    ],
260
261    multilib: {
262        lib32: {
263            suffix: "32",
264        },
265        lib64: {
266            suffix: "64",
267        },
268    },
269
270    compile_multilib: "both",
271
272    version_script: "deqp_binary.lds",
273
274    host_supported: false,
275    gtest: false,
276    auto_gen_config: false,
277    test_options: {
278        unit_test: false,
279    },
280    data: [
281        ":deqp_binary_incremental_test_lists",
282        ":deqp_binary_data",
283        ":deqp_binary_data_vulkancts",
284        ":deqp_binary_data_graphicsfuzz",
285    ],
286}
287
288cc_library_shared {
289    name: "libkhronosopenglcts",
290    defaults: ["khronoscts_default"],
291
292    srcs: [
293        "framework/platform/android/tcuAndroidMain.cpp",
294        "framework/platform/android/tcuAndroidJNI.cpp",
295        "framework/platform/android/tcuAndroidPlatformCapabilityQueryJNI.cpp",
296        "framework/platform/android/tcuTestLogParserJNI.cpp",
297        "external/openglcts/modules/runner/glcAndroidMain.cpp",
298        "external/openglcts/modules/glcTestPackageEntry.cpp",
299        "modules/gles2/tes2TestPackageEntry.cpp",
300        "modules/gles3/tes3TestPackageEntry.cpp",
301        "modules/gles31/tes31TestPackageEntry.cpp",
302        "modules/egl/teglTestPackageEntry.cpp",
303        "modules/internal/ditTestPackageEntry.cpp",
304    ],
305
306    local_include_dirs: [
307        "external/openglcts/modules/runner",
308        "external/openglcts/modules",
309        "framework/platform/android",
310        "modules/gles2",
311        "modules/gles3",
312        "modules/gles31",
313        "modules/egl",
314        "modules/internal",
315    ],
316
317    static_libs: [
318        "libkhronoscts_common",
319        "libkhronoscts_modules_gles",
320        "libkhronoscts_openglcts",
321        "libkhronoscts_vulkancts",
322        "libkhronoscts_platform",
323    ],
324}
325
326cc_defaults {
327    name: "khronoscts_default",
328
329    defaults: [
330        "khronosctscompilationflag_default",
331    ],
332
333    shared_libs: [
334        "libEGL",
335        "libGLESv2",
336        "libandroid",
337        "liblog",
338        "libm",
339        "libc",
340        "libz",
341        "libdl",
342    ],
343
344    static_libs: [
345        "libpng_ndk",
346        "deqp_glslang_glslang",
347        "deqp_glslang_OSDependent",
348        "deqp_glslang_MachineIndependent",
349        "deqp_glslang_GenericCodeGen",
350        "deqp_glslang_SPIRV",
351        "deqp_glslang_SPVRemapper",
352        "deqp_spirv-tools",
353        "deqp_amber",
354    ],
355}
356
357android_test {
358    name: "org.khronos.gl_cts",
359
360    srcs: ["android/openglcts/src/**/*.java"],
361    manifest: "android/openglcts/AndroidManifest.xml",
362
363    asset_dirs: [
364        "data",
365        "external/openglcts/data/",
366        "external/graphicsfuzz/data",
367        "external/vulkancts/data",
368    ],
369
370    jni_libs: ["libkhronosopenglcts"],
371    compile_multilib: "both",
372
373    sdk_version: "test_current",
374
375    min_sdk_version: "31",
376    target_sdk_version: "34",
377}
378
379filegroup {
380    name: "deqp_binary_incremental_test_lists",
381    srcs: [
382        "android/cts/main/*-incremental-deqp*.txt",
383    ],
384    path: "android/cts/main",
385}
386
387filegroup {
388    name: "deqp_binary_data",
389    srcs: [
390        "data/**/*",
391    ],
392    path: "data",
393}
394
395filegroup {
396    name: "deqp_binary_data_vulkancts",
397    srcs: [
398        "external/vulkancts/data/**/*",
399    ],
400    path: "external/vulkancts/data",
401}
402
403filegroup {
404    name: "deqp_binary_data_graphicsfuzz",
405    srcs: [
406        "external/graphicsfuzz/data/**/*",
407    ],
408    path: "external/graphicsfuzz/data",
409}
410
411filegroup {
412    name: "khronos_cts_gles_caselists",
413    srcs: [
414        "external/openglcts/data/gl_cts/data/mustpass/**/*.txt",
415    ],
416    path: "external/openglcts/data/",
417}
418