• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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    ldflags: [
137        // b/358374878 workaround suspected 32b linker bug
138        "-Wl,-icf=none",
139    ],
140}
141
142cc_library_shared {
143    name: "libdeqp",
144    defaults: ["libdeqp_defaults"],
145}
146
147cc_defaults {
148    name: "libdeqp_defaults",
149    defaults: [
150        "libdeqp_gen",
151        "deqp_and_deps_defaults",
152    ],
153
154    tidy_checks: [
155        // The clang-tidy google-explicit-constructor warning is issued to nearly
156        // 1000 conversion constructors in this project. They are from more than
157        // 500 source files. Most of them should be declared explicit, but many
158        // of them need to be implicit. Until we correctly mark them as explicit
159        // or NOLINT(implicit), we suppress the google-explicit-constructor check.
160        "-google-explicit-constructor",
161
162        "-google-build-explicit-make-pair",
163        "-google-global-names-in-headers",
164        "-google-runtime-member-string-references",
165        "-google-runtime-operator",
166    ],
167
168    header_libs: ["jni_headers"],
169
170    include_dirs: [
171        "external/deqp-deps/SPIRV-Headers/include",
172    ],
173
174    shared_libs: [
175        "libEGL",
176        "libGLESv2",
177        "libandroid",
178        "liblog",
179        "libm",
180        "libc",
181        "libz",
182        "libdl",
183    ],
184
185    static_libs: [
186        "libpng_ndk",
187        "deqp_glslang_glslang",
188        "deqp_glslang_OSDependent",
189        "deqp_glslang_MachineIndependent",
190        "deqp_glslang_GenericCodeGen",
191        "deqp_glslang_SPIRV",
192        "deqp_glslang_SPVRemapper",
193        "deqp_spirv-tools",
194        "deqp_amber",
195    ],
196
197    cflags: [
198        "-Wno-implicit-fallthrough",
199        "-Wno-sign-conversion",
200        "-Wno-unused-private-field",
201        "-Wno-shorten-64-to-32",
202    ],
203
204    cppflags: [
205        "-Wno-non-virtual-dtor",
206        "-Wno-delete-non-virtual-dtor",
207        "-Wno-implicit-int-conversion",
208        "-Wno-missing-field-initializers",
209        "-Wno-switch",
210        "-Wno-unused-parameter",
211        "-Wno-unused-variable",
212    ],
213}
214
215android_test {
216    name: "com.drawelements.deqp",
217
218    test_suites: [
219        "vts10",
220    ],
221
222    srcs: ["android/package/src/**/*.java"],
223    resource_dirs: ["android/package/res"],
224    manifest: "android/package/AndroidManifest-integration.xml",
225
226    asset_dirs: [
227        "data",
228        "external/vulkancts/data",
229        "external/graphicsfuzz/data",
230    ],
231
232    jni_libs: ["libdeqp"],
233
234    compile_multilib: "both",
235
236    // We could go down all the way to API-13 for 32bit. 22 is required for 64bit ARM.
237    sdk_version: "test_current",
238
239    // Avoid apk installation failures ('Requires development platform...' errors)
240    min_sdk_version: "31",
241    target_sdk_version: "34",
242}
243
244cc_test {
245    name: "deqp-binary",
246    defaults: ["libdeqp_defaults"],
247
248    cflags: [
249        "-DDEQP_GLES3_RUNTIME_LOAD=1",
250    ],
251
252    cppflags: [
253        "-Wno-macro-redefined",
254    ],
255
256    srcs: [
257        "framework/platform/tcuMain.cpp",
258        "framework/platform/surfaceless/tcuSurfacelessPlatform.cpp",
259    ],
260
261    local_include_dirs: [
262        "framework/platform/surfaceless",
263    ],
264
265    multilib: {
266        lib32: {
267            suffix: "32",
268        },
269        lib64: {
270            suffix: "64",
271        },
272    },
273
274    compile_multilib: "both",
275
276    version_script: "deqp_binary.lds",
277
278    host_supported: false,
279    gtest: false,
280    auto_gen_config: false,
281    test_options: {
282        unit_test: false,
283    },
284    data: [
285        ":deqp_binary_incremental_test_lists",
286        ":deqp_binary_data",
287        ":deqp_binary_data_vulkancts",
288        ":deqp_binary_data_graphicsfuzz",
289    ],
290}
291
292cc_library_shared {
293    name: "libkhronosopenglcts",
294    defaults: ["khronoscts_default"],
295
296    srcs: [
297        "framework/platform/android/tcuAndroidMain.cpp",
298        "framework/platform/android/tcuAndroidJNI.cpp",
299        "framework/platform/android/tcuAndroidPlatformCapabilityQueryJNI.cpp",
300        "framework/platform/android/tcuTestLogParserJNI.cpp",
301        "external/openglcts/modules/runner/glcAndroidMain.cpp",
302        "external/openglcts/modules/glcTestPackageEntry.cpp",
303        "modules/gles2/tes2TestPackageEntry.cpp",
304        "modules/gles3/tes3TestPackageEntry.cpp",
305        "modules/gles31/tes31TestPackageEntry.cpp",
306        "modules/egl/teglTestPackageEntry.cpp",
307        "modules/internal/ditTestPackageEntry.cpp",
308    ],
309
310    local_include_dirs: [
311        "external/openglcts/modules/runner",
312        "external/openglcts/modules",
313        "framework/platform/android",
314        "modules/gles2",
315        "modules/gles3",
316        "modules/gles31",
317        "modules/egl",
318        "modules/internal",
319    ],
320
321    static_libs: [
322        "libkhronoscts_common",
323        "libkhronoscts_modules_gles",
324        "libkhronoscts_openglcts",
325        "libkhronoscts_vulkancts",
326        "libkhronoscts_platform",
327    ],
328}
329
330cc_defaults {
331    name: "khronoscts_default",
332
333    defaults: [
334        "khronosctscompilationflag_default",
335    ],
336
337    shared_libs: [
338        "libEGL",
339        "libGLESv2",
340        "libandroid",
341        "liblog",
342        "libm",
343        "libc",
344        "libz",
345        "libdl",
346    ],
347
348    static_libs: [
349        "libpng_ndk",
350        "deqp_glslang_glslang",
351        "deqp_glslang_OSDependent",
352        "deqp_glslang_MachineIndependent",
353        "deqp_glslang_GenericCodeGen",
354        "deqp_glslang_SPIRV",
355        "deqp_glslang_SPVRemapper",
356        "deqp_spirv-tools",
357        "deqp_amber",
358    ],
359}
360
361android_test {
362    name: "org.khronos.gl_cts",
363
364    srcs: ["android/openglcts/src/**/*.java"],
365    manifest: "android/openglcts/AndroidManifest.xml",
366
367    asset_dirs: [
368        "data",
369        "external/openglcts/data/",
370        "external/graphicsfuzz/data",
371        "external/vulkancts/data",
372    ],
373
374    jni_libs: ["libkhronosopenglcts"],
375    compile_multilib: "both",
376
377    sdk_version: "test_current",
378
379    min_sdk_version: "31",
380    target_sdk_version: "34",
381}
382
383filegroup {
384    name: "deqp_binary_incremental_test_lists",
385    srcs: [
386        "android/cts/main/*-incremental-deqp*.txt",
387    ],
388    path: "android/cts/main",
389}
390
391filegroup {
392    name: "deqp_binary_data",
393    srcs: [
394        "data/**/*",
395    ],
396    path: "data",
397}
398
399filegroup {
400    name: "deqp_binary_data_vulkancts",
401    srcs: [
402        "external/vulkancts/data/**/*",
403    ],
404    path: "external/vulkancts/data",
405}
406
407filegroup {
408    name: "deqp_binary_data_graphicsfuzz",
409    srcs: [
410        "external/graphicsfuzz/data/**/*",
411    ],
412    path: "external/graphicsfuzz/data",
413}
414
415filegroup {
416    name: "khronos_cts_gles_caselists",
417    srcs: [
418        "external/openglcts/data/gl_cts/data/mustpass/**/*.txt",
419    ],
420    path: "external/openglcts/data/",
421}
422