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