1*35238bceSAndroid Build Coastguard Worker# -*- coding: utf-8 -*- 2*35238bceSAndroid Build Coastguard Worker 3*35238bceSAndroid Build Coastguard Worker#------------------------------------------------------------------------- 4*35238bceSAndroid Build Coastguard Worker# drawElements Quality Program utilities 5*35238bceSAndroid Build Coastguard Worker# -------------------------------------- 6*35238bceSAndroid Build Coastguard Worker# 7*35238bceSAndroid Build Coastguard Worker# Copyright 2024 The Android Open Source Project 8*35238bceSAndroid Build Coastguard Worker# 9*35238bceSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 10*35238bceSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 11*35238bceSAndroid Build Coastguard Worker# You may obtain a copy of the License at 12*35238bceSAndroid Build Coastguard Worker# 13*35238bceSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 14*35238bceSAndroid Build Coastguard Worker# 15*35238bceSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 16*35238bceSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 17*35238bceSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18*35238bceSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 19*35238bceSAndroid Build Coastguard Worker# limitations under the License. 20*35238bceSAndroid Build Coastguard Worker# 21*35238bceSAndroid Build Coastguard Worker#------------------------------------------------------------------------- 22*35238bceSAndroid Build Coastguard Worker 23*35238bceSAndroid Build Coastguard Workerimport os 24*35238bceSAndroid Build Coastguard Workerimport posixpath 25*35238bceSAndroid Build Coastguard Workerfrom fnmatch import fnmatch 26*35238bceSAndroid Build Coastguard Worker 27*35238bceSAndroid Build Coastguard Workerfrom ctsbuild.common import DEQP_DIR, writeFile, which, execute 28*35238bceSAndroid Build Coastguard Worker 29*35238bceSAndroid Build Coastguard Worker# source code to compile into static lib libkhronoscts_common 30*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_COMMON_SRC_ROOTS = [ 31*35238bceSAndroid Build Coastguard Worker "execserver", 32*35238bceSAndroid Build Coastguard Worker "executor", 33*35238bceSAndroid Build Coastguard Worker "framework/common", 34*35238bceSAndroid Build Coastguard Worker "framework/delibs", 35*35238bceSAndroid Build Coastguard Worker "framework/egl", 36*35238bceSAndroid Build Coastguard Worker "framework/opengl", 37*35238bceSAndroid Build Coastguard Worker "framework/qphelper", 38*35238bceSAndroid Build Coastguard Worker "framework/randomshaders", 39*35238bceSAndroid Build Coastguard Worker "framework/referencerenderer", 40*35238bceSAndroid Build Coastguard Worker "framework/xexml", 41*35238bceSAndroid Build Coastguard Worker] 42*35238bceSAndroid Build Coastguard Worker 43*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_COMMON_INCLUDE_PATTERNS = [ 44*35238bceSAndroid Build Coastguard Worker "*.cpp", 45*35238bceSAndroid Build Coastguard Worker "*.c", 46*35238bceSAndroid Build Coastguard Worker] 47*35238bceSAndroid Build Coastguard Worker 48*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_COMMON_EXCLUDE_PATTERNS = [ 49*35238bceSAndroid Build Coastguard Worker "execserver/xsWin32TestProcess.cpp", 50*35238bceSAndroid Build Coastguard Worker "framework/delibs/dethread/standalone_test.c", 51*35238bceSAndroid Build Coastguard Worker "framework/randomshaders/rsgTest.cpp", 52*35238bceSAndroid Build Coastguard Worker "execserver/tools/*", 53*35238bceSAndroid Build Coastguard Worker "executor/tools/*", 54*35238bceSAndroid Build Coastguard Worker] 55*35238bceSAndroid Build Coastguard Worker 56*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_COMMON_EXTRA_INCLUDE_DIRS = [] 57*35238bceSAndroid Build Coastguard Worker 58*35238bceSAndroid Build Coastguard Worker# source code to compile into static lib libkhronoscts_modules_gles 59*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_MODULES_SRC_ROOTS = [ 60*35238bceSAndroid Build Coastguard Worker "modules", 61*35238bceSAndroid Build Coastguard Worker] 62*35238bceSAndroid Build Coastguard Worker 63*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_MODULES_INCLUDE_PATTERNS = [ 64*35238bceSAndroid Build Coastguard Worker "*.cpp", 65*35238bceSAndroid Build Coastguard Worker "*.c", 66*35238bceSAndroid Build Coastguard Worker] 67*35238bceSAndroid Build Coastguard Worker 68*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_MODULES_EXCLUDE_PATTERNS = [ 69*35238bceSAndroid Build Coastguard Worker "modules/egl/teglTestPackageEntry.cpp", 70*35238bceSAndroid Build Coastguard Worker "modules/gles2/tes2TestPackageEntry.cpp", 71*35238bceSAndroid Build Coastguard Worker "modules/gles3/tes3TestPackageEntry.cpp", 72*35238bceSAndroid Build Coastguard Worker "modules/gles31/tes31TestPackageEntry.cpp", 73*35238bceSAndroid Build Coastguard Worker "modules/internal/ditTestPackageEntry.cpp", 74*35238bceSAndroid Build Coastguard Worker] 75*35238bceSAndroid Build Coastguard Worker 76*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_MODULES_EXTRA_INCLUDE_DIRS = [ 77*35238bceSAndroid Build Coastguard Worker "external/vulkancts/framework/vulkan", 78*35238bceSAndroid Build Coastguard Worker "external/vulkancts/framework/vulkan/generated/vulkan", 79*35238bceSAndroid Build Coastguard Worker] 80*35238bceSAndroid Build Coastguard Worker 81*35238bceSAndroid Build Coastguard Worker# source code to compile into static lib libkhronoscts_openglcts 82*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_OPENGLCTS_SRC_ROOTS = [ 83*35238bceSAndroid Build Coastguard Worker "external/openglcts", 84*35238bceSAndroid Build Coastguard Worker] 85*35238bceSAndroid Build Coastguard Worker 86*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_OPENGLCTS_INCLUDE_PATTERNS = [ 87*35238bceSAndroid Build Coastguard Worker "*.cpp", 88*35238bceSAndroid Build Coastguard Worker "*.c", 89*35238bceSAndroid Build Coastguard Worker] 90*35238bceSAndroid Build Coastguard Worker 91*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_OPENGLCTS_EXCLUDE_PATTERNS = [ 92*35238bceSAndroid Build Coastguard Worker "external/openglcts/modules/gl/gl4cContextFlushControlTests.cpp", 93*35238bceSAndroid Build Coastguard Worker "external/openglcts/modules/glcTestPackageEntry.cpp", 94*35238bceSAndroid Build Coastguard Worker "external/openglcts/modules/runner/glcAndroidMain.cpp", 95*35238bceSAndroid Build Coastguard Worker "external/openglcts/modules/runner/glcAndroidTestActivity.cpp", 96*35238bceSAndroid Build Coastguard Worker "external/openglcts/modules/runner/glcTestRunner.cpp", 97*35238bceSAndroid Build Coastguard Worker "external/openglcts/modules/runner/glcTestRunnerMain.cpp", 98*35238bceSAndroid Build Coastguard Worker] 99*35238bceSAndroid Build Coastguard Worker 100*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_OPENGLCTS_EXTRA_INCLUDE_DIRS = [ 101*35238bceSAndroid Build Coastguard Worker] 102*35238bceSAndroid Build Coastguard Worker 103*35238bceSAndroid Build Coastguard Worker# source code to compile into static lib libkhronoscts_vulkancts 104*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_VULKANCTS_SRC_ROOTS = [ 105*35238bceSAndroid Build Coastguard Worker "external/vulkancts", 106*35238bceSAndroid Build Coastguard Worker] 107*35238bceSAndroid Build Coastguard Worker 108*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_VULKANCTS_INCLUDE_PATTERNS = [ 109*35238bceSAndroid Build Coastguard Worker "*.cpp", 110*35238bceSAndroid Build Coastguard Worker "*.c", 111*35238bceSAndroid Build Coastguard Worker] 112*35238bceSAndroid Build Coastguard Worker 113*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_VULKANCTS_EXCLUDE_PATTERNS = [ 114*35238bceSAndroid Build Coastguard Worker "external/vulkancts/framework/vulkan/vkRenderDocUtil.cpp", 115*35238bceSAndroid Build Coastguard Worker "external/vulkancts/modules/vulkan/vktBuildPrograms.cpp", 116*35238bceSAndroid Build Coastguard Worker "external/vulkancts/modules/vulkan/sc/*", 117*35238bceSAndroid Build Coastguard Worker "external/vulkancts/modules/vulkan/vktTestPackageEntrySC.cpp", 118*35238bceSAndroid Build Coastguard Worker "external/vulkancts/vkscpc/*", 119*35238bceSAndroid Build Coastguard Worker "external/vulkancts/vkscserver/*", 120*35238bceSAndroid Build Coastguard Worker "external/vulkancts/modules/vulkan/video/*", 121*35238bceSAndroid Build Coastguard Worker] 122*35238bceSAndroid Build Coastguard Worker 123*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_VULKANCTS_EXTRA_INCLUDE_DIRS = [ 124*35238bceSAndroid Build Coastguard Worker "external/vulkancts/framework/vulkan/generated/vulkan", 125*35238bceSAndroid Build Coastguard Worker] 126*35238bceSAndroid Build Coastguard Worker 127*35238bceSAndroid Build Coastguard Worker# source code to compile into static lib libkhronoscts_platform 128*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_PLATFORM_SRC_ROOTS = [ 129*35238bceSAndroid Build Coastguard Worker "framework/platform/android", 130*35238bceSAndroid Build Coastguard Worker "framework/platform/surfaceless", 131*35238bceSAndroid Build Coastguard Worker "external/openglcts/modules/runner", 132*35238bceSAndroid Build Coastguard Worker] 133*35238bceSAndroid Build Coastguard Worker 134*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_PLATFORM_INCLUDE_PATTERNS = [ 135*35238bceSAndroid Build Coastguard Worker "*.cpp", 136*35238bceSAndroid Build Coastguard Worker "*.c", 137*35238bceSAndroid Build Coastguard Worker] 138*35238bceSAndroid Build Coastguard Worker 139*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_PLATFORM_EXCLUDE_PATTERNS = [ 140*35238bceSAndroid Build Coastguard Worker "external/openglcts/modules/runner/glcAndroidMain.cpp", 141*35238bceSAndroid Build Coastguard Worker "framework/platform/android/tcuAndroidJNI.cpp", 142*35238bceSAndroid Build Coastguard Worker "framework/platform/android/tcuAndroidMain.cpp", 143*35238bceSAndroid Build Coastguard Worker "framework/platform/android/tcuAndroidPlatformCapabilityQueryJNI.cpp", 144*35238bceSAndroid Build Coastguard Worker] 145*35238bceSAndroid Build Coastguard Worker 146*35238bceSAndroid Build Coastguard WorkerLIB_KHRONOS_CTS_PLATFORM_EXTRA_INCLUDE_DIRS = [ 147*35238bceSAndroid Build Coastguard Worker] 148*35238bceSAndroid Build Coastguard Worker 149*35238bceSAndroid Build Coastguard WorkerAUTO_GEN_WARNING = """// WARNING: This is auto-generated file. Do not modify, since changes will 150*35238bceSAndroid Build Coastguard Worker// be lost! Modify scripts/gen_khronos_cts_bp.py instead. 151*35238bceSAndroid Build Coastguard Worker""" 152*35238bceSAndroid Build Coastguard Worker 153*35238bceSAndroid Build Coastguard WorkerCC_LIBRARY_KHRONOS_COMPILE_OPTION = """ 154*35238bceSAndroid Build Coastguard Workercc_defaults { 155*35238bceSAndroid Build Coastguard Worker name: "khronosctscompilationflag_default", 156*35238bceSAndroid Build Coastguard Worker cppflags: [ 157*35238bceSAndroid Build Coastguard Worker "-fexceptions", 158*35238bceSAndroid Build Coastguard Worker "-Wno-non-virtual-dtor", 159*35238bceSAndroid Build Coastguard Worker "-Wno-delete-non-virtual-dtor", 160*35238bceSAndroid Build Coastguard Worker "-Wno-implicit-int-conversion", 161*35238bceSAndroid Build Coastguard Worker "-Wno-implicit-float-conversion", 162*35238bceSAndroid Build Coastguard Worker "-Wno-unused-function", 163*35238bceSAndroid Build Coastguard Worker "-Wno-enum-float-conversion", 164*35238bceSAndroid Build Coastguard Worker "-Wno-missing-field-initializers", 165*35238bceSAndroid Build Coastguard Worker "-Wno-switch", 166*35238bceSAndroid Build Coastguard Worker "-Wno-unused-parameter", 167*35238bceSAndroid Build Coastguard Worker "-Wno-unused-variable", 168*35238bceSAndroid Build Coastguard Worker "-Wno-macro-redefined", 169*35238bceSAndroid Build Coastguard Worker ], 170*35238bceSAndroid Build Coastguard Worker 171*35238bceSAndroid Build Coastguard Worker cpp_std: "c++17", 172*35238bceSAndroid Build Coastguard Worker cflags: [ 173*35238bceSAndroid Build Coastguard Worker // Amber defines. 174*35238bceSAndroid Build Coastguard Worker "-DAMBER_CTS_VULKAN_HEADER=1", 175*35238bceSAndroid Build Coastguard Worker "-DAMBER_ENABLE_CLSPV=0", 176*35238bceSAndroid Build Coastguard Worker "-DAMBER_ENABLE_DXC=0", 177*35238bceSAndroid Build Coastguard Worker "-DAMBER_ENABLE_LODEPNG=1", // This has no effect. 178*35238bceSAndroid Build Coastguard Worker "-DAMBER_ENABLE_RTTI=1", 179*35238bceSAndroid Build Coastguard Worker "-DAMBER_ENABLE_SHADERC=0", 180*35238bceSAndroid Build Coastguard Worker "-DAMBER_ENABLE_SPIRV_TOOLS=0", 181*35238bceSAndroid Build Coastguard Worker "-DAMBER_ENABLE_VK_DEBUGGING=0", 182*35238bceSAndroid Build Coastguard Worker "-DAMBER_ENGINE_DAWN=0", 183*35238bceSAndroid Build Coastguard Worker "-DAMBER_ENGINE_VULKAN=1", 184*35238bceSAndroid Build Coastguard Worker 185*35238bceSAndroid Build Coastguard Worker // glslang defines: 186*35238bceSAndroid Build Coastguard Worker "-DENABLE_HLSL", 187*35238bceSAndroid Build Coastguard Worker "-DENABLE_OPT=0", 188*35238bceSAndroid Build Coastguard Worker "-DGLSLANG_OSINCLUDE_UNIX", 189*35238bceSAndroid Build Coastguard Worker 190*35238bceSAndroid Build Coastguard Worker // SPIRV-Tools defines: 191*35238bceSAndroid Build Coastguard Worker "-DSPIRV_ANDROID", 192*35238bceSAndroid Build Coastguard Worker "-DSPIRV_CHECK_CONTEXT", 193*35238bceSAndroid Build Coastguard Worker "-DSPIRV_COLOR_TERMINAL", 194*35238bceSAndroid Build Coastguard Worker "-DSPIRV_TIMER_ENABLED", 195*35238bceSAndroid Build Coastguard Worker 196*35238bceSAndroid Build Coastguard Worker // Android/Clang defines (not needed): 197*35238bceSAndroid Build Coastguard Worker // -D_FORTIFY_SOURCE=2 198*35238bceSAndroid Build Coastguard Worker // -DANDROID 199*35238bceSAndroid Build Coastguard Worker // -DNDEBUG 200*35238bceSAndroid Build Coastguard Worker 201*35238bceSAndroid Build Coastguard Worker // dEQP defines that we don't want/need: 202*35238bceSAndroid Build Coastguard Worker // -DDE_DEBUG 203*35238bceSAndroid Build Coastguard Worker // -DDEQP_USE_RELEASE_INFO_FILE 204*35238bceSAndroid Build Coastguard Worker // -DPNG_DEBUG 205*35238bceSAndroid Build Coastguard Worker 206*35238bceSAndroid Build Coastguard Worker // dEQP defines that are worked out in deDefs.h, without needing 207*35238bceSAndroid Build Coastguard Worker // explicit defs: 208*35238bceSAndroid Build Coastguard Worker // -DDE_PTR_SIZE=8 209*35238bceSAndroid Build Coastguard Worker // -DDE_CPU=DE_CPU_ARM_64 210*35238bceSAndroid Build Coastguard Worker //"-DDE_FENV_ACCESS_ON=_Pragma(\"STDC FENV_ACCESS ON\")", 211*35238bceSAndroid Build Coastguard Worker 212*35238bceSAndroid Build Coastguard Worker // dEQP defines: 213*35238bceSAndroid Build Coastguard Worker "-D_XOPEN_SOURCE=600", 214*35238bceSAndroid Build Coastguard Worker "-DDE_ANDROID_API=28", 215*35238bceSAndroid Build Coastguard Worker "-DDE_ASSERT_FAILURE_CALLBACK", 216*35238bceSAndroid Build Coastguard Worker "-DDE_COMPILER=DE_COMPILER_CLANG", 217*35238bceSAndroid Build Coastguard Worker "-DDE_MINGW=0", 218*35238bceSAndroid Build Coastguard Worker "-DDE_OS=DE_OS_ANDROID", 219*35238bceSAndroid Build Coastguard Worker "-DDEQP_GLES2_DIRECT_LINK=1", 220*35238bceSAndroid Build Coastguard Worker "-DDEQP_HAVE_RENDERDOC_HEADER=0", // Needs to be 0. 221*35238bceSAndroid Build Coastguard Worker "-DDEQP_EXCLUDE_VK_VIDEO_TESTS", 222*35238bceSAndroid Build Coastguard Worker "-DDEQP_SUPPORT_DRM=0", 223*35238bceSAndroid Build Coastguard Worker "-DDEQP_SUPPORT_GLES1=1", 224*35238bceSAndroid Build Coastguard Worker "-DDEQP_TARGET_NAME=\\"Android\\"", 225*35238bceSAndroid Build Coastguard Worker "-DQP_SUPPORT_PNG", 226*35238bceSAndroid Build Coastguard Worker "-DCTS_USES_VULKAN", 227*35238bceSAndroid Build Coastguard Worker 228*35238bceSAndroid Build Coastguard Worker "-Wall", 229*35238bceSAndroid Build Coastguard Worker "-Werror", 230*35238bceSAndroid Build Coastguard Worker "-Wconversion", 231*35238bceSAndroid Build Coastguard Worker 232*35238bceSAndroid Build Coastguard Worker "-fwrapv", 233*35238bceSAndroid Build Coastguard Worker 234*35238bceSAndroid Build Coastguard Worker "-Wno-implicit-fallthrough", 235*35238bceSAndroid Build Coastguard Worker "-Wno-sign-conversion", 236*35238bceSAndroid Build Coastguard Worker "-Wno-unused-private-field", 237*35238bceSAndroid Build Coastguard Worker "-Wno-shorten-64-to-32", 238*35238bceSAndroid Build Coastguard Worker ], 239*35238bceSAndroid Build Coastguard Worker 240*35238bceSAndroid Build Coastguard Worker include_dirs: [ 241*35238bceSAndroid Build Coastguard Worker "external/deqp-deps/SPIRV-Headers/include", 242*35238bceSAndroid Build Coastguard Worker ], 243*35238bceSAndroid Build Coastguard Worker 244*35238bceSAndroid Build Coastguard Worker header_libs: ["jni_headers"], 245*35238bceSAndroid Build Coastguard Worker shared_libs: ["libandroid"], 246*35238bceSAndroid Build Coastguard Worker 247*35238bceSAndroid Build Coastguard Worker sdk_version: "current", 248*35238bceSAndroid Build Coastguard Worker rtti: true, 249*35238bceSAndroid Build Coastguard Worker stl: "c++_static", 250*35238bceSAndroid Build Coastguard Worker} 251*35238bceSAndroid Build Coastguard Worker""" 252*35238bceSAndroid Build Coastguard Worker 253*35238bceSAndroid Build Coastguard WorkerCC_LIBRARY_STATIC_TEMPLATE = """ 254*35238bceSAndroid Build Coastguard Worker 255*35238bceSAndroid Build Coastguard Workercc_library_static { 256*35238bceSAndroid Build Coastguard Worker name: "{CC_STATIC_LIB_NAME}", 257*35238bceSAndroid Build Coastguard Worker 258*35238bceSAndroid Build Coastguard Worker defaults: ["khronosctscompilationflag_default"], 259*35238bceSAndroid Build Coastguard Worker 260*35238bceSAndroid Build Coastguard Worker srcs: [ 261*35238bceSAndroid Build Coastguard Worker{SRC_FILES} ], 262*35238bceSAndroid Build Coastguard Worker export_include_dirs: [ 263*35238bceSAndroid Build Coastguard Worker{EXPORT_INCLUDES} ], 264*35238bceSAndroid Build Coastguard Worker static_libs: [ 265*35238bceSAndroid Build Coastguard Worker{STATIC_LIBS} ], 266*35238bceSAndroid Build Coastguard Worker} 267*35238bceSAndroid Build Coastguard Worker 268*35238bceSAndroid Build Coastguard Worker"""[1:-1] 269*35238bceSAndroid Build Coastguard Worker 270*35238bceSAndroid Build Coastguard Workerdef matchesAny (filename, patterns): 271*35238bceSAndroid Build Coastguard Worker for ptrn in patterns: 272*35238bceSAndroid Build Coastguard Worker if fnmatch(filename, ptrn): 273*35238bceSAndroid Build Coastguard Worker return True 274*35238bceSAndroid Build Coastguard Worker return False 275*35238bceSAndroid Build Coastguard Worker 276*35238bceSAndroid Build Coastguard Workerdef isSourceFile (filename, include_patterns, exclude_patterns): 277*35238bceSAndroid Build Coastguard Worker return matchesAny(filename, include_patterns) and not matchesAny(filename, exclude_patterns) 278*35238bceSAndroid Build Coastguard Worker 279*35238bceSAndroid Build Coastguard Workerdef toPortablePath (nativePath): 280*35238bceSAndroid Build Coastguard Worker # os.path is so convenient... 281*35238bceSAndroid Build Coastguard Worker head, tail = os.path.split(nativePath) 282*35238bceSAndroid Build Coastguard Worker components = [tail] 283*35238bceSAndroid Build Coastguard Worker 284*35238bceSAndroid Build Coastguard Worker while head != None and head != '': 285*35238bceSAndroid Build Coastguard Worker head, tail = os.path.split(head) 286*35238bceSAndroid Build Coastguard Worker components.append(tail) 287*35238bceSAndroid Build Coastguard Worker 288*35238bceSAndroid Build Coastguard Worker components.reverse() 289*35238bceSAndroid Build Coastguard Worker 290*35238bceSAndroid Build Coastguard Worker portablePath = "" 291*35238bceSAndroid Build Coastguard Worker for component in components: 292*35238bceSAndroid Build Coastguard Worker portablePath = posixpath.join(portablePath, component) 293*35238bceSAndroid Build Coastguard Worker 294*35238bceSAndroid Build Coastguard Worker return portablePath 295*35238bceSAndroid Build Coastguard Worker 296*35238bceSAndroid Build Coastguard Workerdef getSourceFiles (src_roots, include_patterns, exclude_patterns): 297*35238bceSAndroid Build Coastguard Worker sources = [] 298*35238bceSAndroid Build Coastguard Worker 299*35238bceSAndroid Build Coastguard Worker for srcRoot in src_roots: 300*35238bceSAndroid Build Coastguard Worker baseDir = os.path.join(DEQP_DIR, srcRoot) 301*35238bceSAndroid Build Coastguard Worker for root, dirs, files in os.walk(baseDir): 302*35238bceSAndroid Build Coastguard Worker for file in files: 303*35238bceSAndroid Build Coastguard Worker absPath = os.path.join(root, file) 304*35238bceSAndroid Build Coastguard Worker nativeRelPath = os.path.relpath(absPath, DEQP_DIR) 305*35238bceSAndroid Build Coastguard Worker portablePath = toPortablePath(nativeRelPath) 306*35238bceSAndroid Build Coastguard Worker 307*35238bceSAndroid Build Coastguard Worker if isSourceFile(portablePath, include_patterns, exclude_patterns): 308*35238bceSAndroid Build Coastguard Worker sources.append(portablePath) 309*35238bceSAndroid Build Coastguard Worker 310*35238bceSAndroid Build Coastguard Worker sources.sort() 311*35238bceSAndroid Build Coastguard Worker 312*35238bceSAndroid Build Coastguard Worker return sources 313*35238bceSAndroid Build Coastguard Worker 314*35238bceSAndroid Build Coastguard Workerdef getSourceDirs (sourceFiles, extra_include_dirs): 315*35238bceSAndroid Build Coastguard Worker seenDirs = set() 316*35238bceSAndroid Build Coastguard Worker sourceDirs = [] 317*35238bceSAndroid Build Coastguard Worker 318*35238bceSAndroid Build Coastguard Worker for sourceFile in sourceFiles: 319*35238bceSAndroid Build Coastguard Worker sourceDir = posixpath.dirname(sourceFile) 320*35238bceSAndroid Build Coastguard Worker 321*35238bceSAndroid Build Coastguard Worker if not sourceDir in seenDirs: 322*35238bceSAndroid Build Coastguard Worker sourceDirs.append(sourceDir) 323*35238bceSAndroid Build Coastguard Worker seenDirs.add(sourceDir) 324*35238bceSAndroid Build Coastguard Worker 325*35238bceSAndroid Build Coastguard Worker sourceDirs.extend(extra_include_dirs) 326*35238bceSAndroid Build Coastguard Worker sourceDirs.sort() 327*35238bceSAndroid Build Coastguard Worker 328*35238bceSAndroid Build Coastguard Worker return sourceDirs 329*35238bceSAndroid Build Coastguard Worker 330*35238bceSAndroid Build Coastguard Workerdef genBpStringList (items): 331*35238bceSAndroid Build Coastguard Worker src = "" 332*35238bceSAndroid Build Coastguard Worker 333*35238bceSAndroid Build Coastguard Worker for item in items: 334*35238bceSAndroid Build Coastguard Worker src += " \"%s\",\n" % item 335*35238bceSAndroid Build Coastguard Worker 336*35238bceSAndroid Build Coastguard Worker return src 337*35238bceSAndroid Build Coastguard Worker 338*35238bceSAndroid Build Coastguard Workerdef genCCStaticLibrary (ccStaticLibName, sourceDirs, sourceFiles, staticLibs): 339*35238bceSAndroid Build Coastguard Worker src = CC_LIBRARY_STATIC_TEMPLATE 340*35238bceSAndroid Build Coastguard Worker src = src.replace("{EXPORT_INCLUDES}", genBpStringList(sourceDirs)) 341*35238bceSAndroid Build Coastguard Worker src = src.replace("{SRC_FILES}", genBpStringList(sourceFiles)) 342*35238bceSAndroid Build Coastguard Worker src = src.replace("{CC_STATIC_LIB_NAME}", ccStaticLibName) 343*35238bceSAndroid Build Coastguard Worker src = src.replace("{STATIC_LIBS}", genBpStringList(staticLibs)) 344*35238bceSAndroid Build Coastguard Worker 345*35238bceSAndroid Build Coastguard Worker return src 346*35238bceSAndroid Build Coastguard Worker 347*35238bceSAndroid Build Coastguard Workerif __name__ == "__main__": 348*35238bceSAndroid Build Coastguard Worker # Android bp content for compiling static lib libkhronoscts_common 349*35238bceSAndroid Build Coastguard Worker libKhronosCTSCommonSourceFiles = getSourceFiles(LIB_KHRONOS_CTS_COMMON_SRC_ROOTS, 350*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_COMMON_INCLUDE_PATTERNS, 351*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_COMMON_EXCLUDE_PATTERNS) 352*35238bceSAndroid Build Coastguard Worker libKhronosCTSCommonSourceDirs = getSourceDirs(libKhronosCTSCommonSourceFiles, 353*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_COMMON_EXTRA_INCLUDE_DIRS) 354*35238bceSAndroid Build Coastguard Worker libKhronosCTSCommonStaticLibs = ["libpng_ndk"] 355*35238bceSAndroid Build Coastguard Worker libKhronosCTSCommonAndroidBpText = genCCStaticLibrary("libkhronoscts_common", 356*35238bceSAndroid Build Coastguard Worker libKhronosCTSCommonSourceDirs, 357*35238bceSAndroid Build Coastguard Worker libKhronosCTSCommonSourceFiles, 358*35238bceSAndroid Build Coastguard Worker libKhronosCTSCommonStaticLibs) 359*35238bceSAndroid Build Coastguard Worker 360*35238bceSAndroid Build Coastguard Worker # Android bp content for compiling static lib libkhronoscts_modules_gles 361*35238bceSAndroid Build Coastguard Worker libKhronosCTSModulesSourceFiles = getSourceFiles(LIB_KHRONOS_CTS_MODULES_SRC_ROOTS, 362*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_MODULES_INCLUDE_PATTERNS, 363*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_MODULES_EXCLUDE_PATTERNS) 364*35238bceSAndroid Build Coastguard Worker libKhronosCTSModulesSourceDirs = getSourceDirs(libKhronosCTSModulesSourceFiles, 365*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_MODULES_EXTRA_INCLUDE_DIRS) 366*35238bceSAndroid Build Coastguard Worker libKhronosCTSModulesStaticLibs = ["libkhronoscts_common"] 367*35238bceSAndroid Build Coastguard Worker libKhronosCTSModulesAndroidBpText = genCCStaticLibrary("libkhronoscts_modules_gles", 368*35238bceSAndroid Build Coastguard Worker libKhronosCTSModulesSourceDirs, 369*35238bceSAndroid Build Coastguard Worker libKhronosCTSModulesSourceFiles, 370*35238bceSAndroid Build Coastguard Worker libKhronosCTSModulesStaticLibs) 371*35238bceSAndroid Build Coastguard Worker 372*35238bceSAndroid Build Coastguard Worker # Android bp content for compiling static lib libkhronoscts_openglcts 373*35238bceSAndroid Build Coastguard Worker libKhronosCTSOpenGLCTSSourceFiles = getSourceFiles(LIB_KHRONOS_CTS_OPENGLCTS_SRC_ROOTS, 374*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_OPENGLCTS_INCLUDE_PATTERNS, 375*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_OPENGLCTS_EXCLUDE_PATTERNS) 376*35238bceSAndroid Build Coastguard Worker libKhronosCTSOpenGLCTSSourceDirs = getSourceDirs(libKhronosCTSOpenGLCTSSourceFiles, 377*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_OPENGLCTS_EXTRA_INCLUDE_DIRS) 378*35238bceSAndroid Build Coastguard Worker libKhronosCTSOpenGLCTSStaticLibs = ["libkhronoscts_common", 379*35238bceSAndroid Build Coastguard Worker "libkhronoscts_modules_gles", 380*35238bceSAndroid Build Coastguard Worker "deqp_glslang_SPIRV", 381*35238bceSAndroid Build Coastguard Worker "deqp_spirv-tools"] 382*35238bceSAndroid Build Coastguard Worker libKhronosCTSOpenGLCTSAndroidBpText = genCCStaticLibrary("libkhronoscts_openglcts", 383*35238bceSAndroid Build Coastguard Worker libKhronosCTSOpenGLCTSSourceDirs, 384*35238bceSAndroid Build Coastguard Worker libKhronosCTSOpenGLCTSSourceFiles, 385*35238bceSAndroid Build Coastguard Worker libKhronosCTSOpenGLCTSStaticLibs) 386*35238bceSAndroid Build Coastguard Worker 387*35238bceSAndroid Build Coastguard Worker # Android bp content for compiling static lib libkhronoscts_vulkancts 388*35238bceSAndroid Build Coastguard Worker libKhronosCTSVulkanCTSSourceFiles = getSourceFiles(LIB_KHRONOS_CTS_VULKANCTS_SRC_ROOTS, 389*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_VULKANCTS_INCLUDE_PATTERNS, 390*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_VULKANCTS_EXCLUDE_PATTERNS) 391*35238bceSAndroid Build Coastguard Worker libKhronosCTSVulkanCTSSourceDirs = getSourceDirs(libKhronosCTSVulkanCTSSourceFiles, 392*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_VULKANCTS_EXTRA_INCLUDE_DIRS) 393*35238bceSAndroid Build Coastguard Worker libKhronosCTSVulkanCTSStaticLibs = ["libkhronoscts_common", 394*35238bceSAndroid Build Coastguard Worker "deqp_glslang_glslang", 395*35238bceSAndroid Build Coastguard Worker "deqp_spirv-tools", 396*35238bceSAndroid Build Coastguard Worker "deqp_amber"] 397*35238bceSAndroid Build Coastguard Worker libKhronosCTSVulkanCTSAndroidBpText = genCCStaticLibrary("libkhronoscts_vulkancts", 398*35238bceSAndroid Build Coastguard Worker libKhronosCTSVulkanCTSSourceDirs, 399*35238bceSAndroid Build Coastguard Worker libKhronosCTSVulkanCTSSourceFiles, 400*35238bceSAndroid Build Coastguard Worker libKhronosCTSVulkanCTSStaticLibs) 401*35238bceSAndroid Build Coastguard Worker 402*35238bceSAndroid Build Coastguard Worker # Android bp content for compiling libkhronoscts_platform 403*35238bceSAndroid Build Coastguard Worker libKhronosCTSPlatformSourceFiles = getSourceFiles(LIB_KHRONOS_CTS_PLATFORM_SRC_ROOTS, 404*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_PLATFORM_INCLUDE_PATTERNS, 405*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_PLATFORM_EXCLUDE_PATTERNS) 406*35238bceSAndroid Build Coastguard Worker libKhronosCTSPlatformSourceDirs = getSourceDirs(libKhronosCTSPlatformSourceFiles, 407*35238bceSAndroid Build Coastguard Worker LIB_KHRONOS_CTS_PLATFORM_EXTRA_INCLUDE_DIRS) 408*35238bceSAndroid Build Coastguard Worker libKhronosCTSPlatformStaticLibs = ["libkhronoscts_common", 409*35238bceSAndroid Build Coastguard Worker "libkhronoscts_modules_gles", 410*35238bceSAndroid Build Coastguard Worker "libkhronoscts_vulkancts", 411*35238bceSAndroid Build Coastguard Worker "libkhronoscts_openglcts"] 412*35238bceSAndroid Build Coastguard Worker libKhronosCTSPlatformAndroidBpText = genCCStaticLibrary("libkhronoscts_platform", 413*35238bceSAndroid Build Coastguard Worker libKhronosCTSPlatformSourceDirs, 414*35238bceSAndroid Build Coastguard Worker libKhronosCTSPlatformSourceFiles, 415*35238bceSAndroid Build Coastguard Worker libKhronosCTSPlatformStaticLibs) 416*35238bceSAndroid Build Coastguard Worker 417*35238bceSAndroid Build Coastguard Worker # put everything together into the final Android bp content 418*35238bceSAndroid Build Coastguard Worker libKhronosCTSAndroidBpText = "".join([AUTO_GEN_WARNING, 419*35238bceSAndroid Build Coastguard Worker CC_LIBRARY_KHRONOS_COMPILE_OPTION, 420*35238bceSAndroid Build Coastguard Worker libKhronosCTSCommonAndroidBpText, 421*35238bceSAndroid Build Coastguard Worker libKhronosCTSModulesAndroidBpText, 422*35238bceSAndroid Build Coastguard Worker libKhronosCTSOpenGLCTSAndroidBpText, 423*35238bceSAndroid Build Coastguard Worker libKhronosCTSVulkanCTSAndroidBpText, 424*35238bceSAndroid Build Coastguard Worker libKhronosCTSPlatformAndroidBpText]) 425*35238bceSAndroid Build Coastguard Worker writeFile(os.path.join(DEQP_DIR, "AndroidKhronosCTSGen.bp"), libKhronosCTSAndroidBpText) 426