1e5c31af7Sopenharmony_ci# -*- coding: utf-8 -*- 2e5c31af7Sopenharmony_ci 3e5c31af7Sopenharmony_ci#------------------------------------------------------------------------- 4e5c31af7Sopenharmony_ci# drawElements Quality Program utilities 5e5c31af7Sopenharmony_ci# -------------------------------------- 6e5c31af7Sopenharmony_ci# 7e5c31af7Sopenharmony_ci# Copyright 2015 The Android Open Source Project 8e5c31af7Sopenharmony_ci# 9e5c31af7Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 10e5c31af7Sopenharmony_ci# you may not use this file except in compliance with the License. 11e5c31af7Sopenharmony_ci# You may obtain a copy of the License at 12e5c31af7Sopenharmony_ci# 13e5c31af7Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 14e5c31af7Sopenharmony_ci# 15e5c31af7Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 16e5c31af7Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 17e5c31af7Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18e5c31af7Sopenharmony_ci# See the License for the specific language governing permissions and 19e5c31af7Sopenharmony_ci# limitations under the License. 20e5c31af7Sopenharmony_ci# 21e5c31af7Sopenharmony_ci#------------------------------------------------------------------------- 22e5c31af7Sopenharmony_ci 23e5c31af7Sopenharmony_ciimport os 24e5c31af7Sopenharmony_ciimport sys 25e5c31af7Sopenharmony_ciimport shlex 26e5c31af7Sopenharmony_ciimport subprocess 27e5c31af7Sopenharmony_ci 28e5c31af7Sopenharmony_ciSRC_DIRS = [ 29e5c31af7Sopenharmony_ci "delibs/debase", 30e5c31af7Sopenharmony_ci "delibs/deimage", 31e5c31af7Sopenharmony_ci "delibs/depool", 32e5c31af7Sopenharmony_ci "delibs/dethread", 33e5c31af7Sopenharmony_ci "delibs/deutil", 34e5c31af7Sopenharmony_ci "delibs/decpp", 35e5c31af7Sopenharmony_ci 36e5c31af7Sopenharmony_ci "deqp/execserver", 37e5c31af7Sopenharmony_ci "deqp/executor", 38e5c31af7Sopenharmony_ci "deqp/modules/candytest", 39e5c31af7Sopenharmony_ci "deqp/modules/egl", 40e5c31af7Sopenharmony_ci "deqp/modules/gles2", 41e5c31af7Sopenharmony_ci "deqp/modules/gles3", 42e5c31af7Sopenharmony_ci "deqp/modules/gles31", 43e5c31af7Sopenharmony_ci "deqp/modules/gl3", 44e5c31af7Sopenharmony_ci "deqp/modules/glshared", 45e5c31af7Sopenharmony_ci "deqp/modules/glusecases", 46e5c31af7Sopenharmony_ci "deqp/modules/opencl", 47e5c31af7Sopenharmony_ci "deqp/modules/internal", 48e5c31af7Sopenharmony_ci "deqp/framework/qphelper", 49e5c31af7Sopenharmony_ci "deqp/framework/common", 50e5c31af7Sopenharmony_ci "deqp/framework/egl", 51e5c31af7Sopenharmony_ci "deqp/framework/opengl", 52e5c31af7Sopenharmony_ci "deqp/framework/opencl", 53e5c31af7Sopenharmony_ci "deqp/framework/platform", 54e5c31af7Sopenharmony_ci "deqp/framework/randomshaders", 55e5c31af7Sopenharmony_ci "deqp/framework/referencerenderer", 56e5c31af7Sopenharmony_ci "deqp/wrappers/dynlib", 57e5c31af7Sopenharmony_ci "deqp/wrappers/gles3", 58e5c31af7Sopenharmony_ci 59e5c31af7Sopenharmony_ci "gapir", 60e5c31af7Sopenharmony_ci] 61e5c31af7Sopenharmony_ci 62e5c31af7Sopenharmony_ciINCLUDE_DIRS = [ 63e5c31af7Sopenharmony_ci "delibs/libpng", 64e5c31af7Sopenharmony_ci "delibs/libzip", 65e5c31af7Sopenharmony_ci "delibs/zlib", 66e5c31af7Sopenharmony_ci 67e5c31af7Sopenharmony_ci "deqp/wrappers/dynlib/inc", 68e5c31af7Sopenharmony_ci "deqp/wrappers/gles3/inc", 69e5c31af7Sopenharmony_ci "deqp/modules/gles2/accuracy", 70e5c31af7Sopenharmony_ci "deqp/modules/gles2/functional", 71e5c31af7Sopenharmony_ci "deqp/modules/gles2/performance", 72e5c31af7Sopenharmony_ci "deqp/modules/gles2/stress", 73e5c31af7Sopenharmony_ci "deqp/modules/gles2/usecases", 74e5c31af7Sopenharmony_ci "deqp/modules/gles3/accuracy", 75e5c31af7Sopenharmony_ci "deqp/modules/gles3/functional", 76e5c31af7Sopenharmony_ci "deqp/modules/gles3/stress", 77e5c31af7Sopenharmony_ci "deqp/modules/gles3/usecases", 78e5c31af7Sopenharmony_ci "deqp/modules/gles3/performance", 79e5c31af7Sopenharmony_ci "deqp/modules/gles31/functional", 80e5c31af7Sopenharmony_ci "deqp/modules/gles31/stress", 81e5c31af7Sopenharmony_ci "deqp/modules/gl3/functional", 82e5c31af7Sopenharmony_ci "deqp/modules/gl3/performance", 83e5c31af7Sopenharmony_ci "deqp/modules/gl3/stress", 84e5c31af7Sopenharmony_ci "deqp/framework/opengl/simplereference", 85e5c31af7Sopenharmony_ci "deqp/framework/opencl/inc", 86e5c31af7Sopenharmony_ci "deqp/framework/opengl/wrapper", 87e5c31af7Sopenharmony_ci "deqp/framework/opengl/simplereference", 88e5c31af7Sopenharmony_ci 89e5c31af7Sopenharmony_ci "gapir/base", 90e5c31af7Sopenharmony_ci "gapir/egl", 91e5c31af7Sopenharmony_ci "gapir/gles2", 92e5c31af7Sopenharmony_ci "gapir/util", 93e5c31af7Sopenharmony_ci 94e5c31af7Sopenharmony_ci "domeni/eigen2", 95e5c31af7Sopenharmony_ci "domeni/base", 96e5c31af7Sopenharmony_ci "domeni/engine", 97e5c31af7Sopenharmony_ci "domeni/m3g", 98e5c31af7Sopenharmony_ci "domeni/m3g_adapter", 99e5c31af7Sopenharmony_ci "domeni/renderer", 100e5c31af7Sopenharmony_ci "domeni/resource", 101e5c31af7Sopenharmony_ci "domeni/tools" 102e5c31af7Sopenharmony_ci] + SRC_DIRS 103e5c31af7Sopenharmony_ci 104e5c31af7Sopenharmony_ciARGS = [ 105e5c31af7Sopenharmony_ci "--enable=all,style", 106e5c31af7Sopenharmony_ci "--xml-version=2", 107e5c31af7Sopenharmony_ci "--platform=win64", 108e5c31af7Sopenharmony_ci "-D__cplusplus", 109e5c31af7Sopenharmony_ci "-D_M_X64", 110e5c31af7Sopenharmony_ci "-D_WIN32", 111e5c31af7Sopenharmony_ci "-D_MSC_VER=1600", 112e5c31af7Sopenharmony_ci "-DDE_DEBUG=1", 113e5c31af7Sopenharmony_ci "-DDE_COMPILER=1", # Is preprocessor buggy in recent cppcheck? 114e5c31af7Sopenharmony_ci "-DDE_OS=1", 115e5c31af7Sopenharmony_ci "-DDE_CPU=1", 116e5c31af7Sopenharmony_ci "-DDE_PTR_SIZE=4", 117e5c31af7Sopenharmony_ci "-DAB_COMPILER=1", 118e5c31af7Sopenharmony_ci "-DAB_OS=1", 119e5c31af7Sopenharmony_ci "-DDEQP_TARGET_NAME=\"Cppcheck\"", 120e5c31af7Sopenharmony_ci "-D_XOPEN_SOURCE=600", 121e5c31af7Sopenharmony_ci "--suppress=arrayIndexOutOfBounds:deqp/framework/common/tcuVector.hpp", 122e5c31af7Sopenharmony_ci "--suppress=invalidPointerCast:deqp/framework/common/tcuTexture.cpp", 123e5c31af7Sopenharmony_ci "--suppress=*:deqp/framework/opencl/cl.hpp", 124e5c31af7Sopenharmony_ci "--suppress=invalidPointerCast:deqp/modules/opencl/tclSIRLogger.cpp", 125e5c31af7Sopenharmony_ci "--suppress=preprocessorErrorDirective:deqp/framework/platform/android/tcuAndroidMain.cpp", 126e5c31af7Sopenharmony_ci "--suppress=invalidPointerCast:deqp/modules/gles3/functional/es3fTransformFeedbackTests.cpp", 127e5c31af7Sopenharmony_ci "--suppress=invalidPointerCast:deqp/modules/gles3/functional/es3fUniformBlockCase.cpp", 128e5c31af7Sopenharmony_ci "--suppress=unusedStructMember", 129e5c31af7Sopenharmony_ci "--suppress=postfixOperator", 130e5c31af7Sopenharmony_ci "--suppress=unusedFunction", 131e5c31af7Sopenharmony_ci "--suppress=unusedPrivateFunction", 132e5c31af7Sopenharmony_ci "--rule-file=deqp/scripts/no_empty_fail.rule" 133e5c31af7Sopenharmony_ci] 134e5c31af7Sopenharmony_ci 135e5c31af7Sopenharmony_cidef runCppCheck (srcBaseDir, dstFile): 136e5c31af7Sopenharmony_ci fullDstFile = os.path.realpath(dstFile) 137e5c31af7Sopenharmony_ci command = '"C:\\Program Files (x86)\\Cppcheck\\cppcheck.exe"' 138e5c31af7Sopenharmony_ci 139e5c31af7Sopenharmony_ci for arg in ARGS + ["--xml"]: 140e5c31af7Sopenharmony_ci command += " %s" % arg 141e5c31af7Sopenharmony_ci 142e5c31af7Sopenharmony_ci for path in INCLUDE_DIRS: 143e5c31af7Sopenharmony_ci command += " -I %s" % path 144e5c31af7Sopenharmony_ci 145e5c31af7Sopenharmony_ci for path in SRC_DIRS: 146e5c31af7Sopenharmony_ci command += " %s" % path 147e5c31af7Sopenharmony_ci 148e5c31af7Sopenharmony_ci command += ' 2> "%s"' % fullDstFile 149e5c31af7Sopenharmony_ci 150e5c31af7Sopenharmony_ci os.chdir(srcBaseDir) 151e5c31af7Sopenharmony_ci os.system('"%s"' % command) # Double-quotes needed for some reason 152e5c31af7Sopenharmony_ci 153e5c31af7Sopenharmony_ciif __name__ == "__main__": 154e5c31af7Sopenharmony_ci if len(sys.argv) != 2: 155e5c31af7Sopenharmony_ci print("%s: [reportfile]" % sys.argv[0]) 156e5c31af7Sopenharmony_ci sys.exit(-1) 157e5c31af7Sopenharmony_ci 158e5c31af7Sopenharmony_ci dstFile = sys.argv[1] 159e5c31af7Sopenharmony_ci srcDir = os.path.realpath(os.path.normpath(os.path.join(os.path.dirname(__file__), "..", ".."))) 160e5c31af7Sopenharmony_ci runCppCheck(srcDir, dstFile) 161