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