blob: e8ab7564195831de3a589ad0d69485696cb4e79c [file] [log] [blame]
Jarkko Poyry3c827362014-09-02 11:48:52 +03001# -*- coding: utf-8 -*-
2
3import os
4import sys
5import shlex
6import subprocess
7
8SRC_DIRS = [
9 "delibs/debase",
10 "delibs/deimage",
11 "delibs/depool",
12 "delibs/dethread",
13 "delibs/deutil",
14 "delibs/decpp",
15
16 "deqp/execserver",
17 "deqp/executor",
18 "deqp/modules/candytest",
19 "deqp/modules/egl",
20 "deqp/modules/gles2",
21 "deqp/modules/gles3",
22 "deqp/modules/gles31",
23 "deqp/modules/gl3",
24 "deqp/modules/glshared",
25 "deqp/modules/glusecases",
26 "deqp/modules/opencl",
27 "deqp/modules/internal",
28 "deqp/framework/qphelper",
29 "deqp/framework/common",
30 "deqp/framework/egl",
31 "deqp/framework/opengl",
32 "deqp/framework/opencl",
33 "deqp/framework/platform",
34 "deqp/framework/randomshaders",
35 "deqp/framework/referencerenderer",
36 "deqp/wrappers/dynlib",
37 "deqp/wrappers/gles3",
38
39 "gapir",
40]
41
42INCLUDE_DIRS = [
43 "delibs/libpng",
44 "delibs/libzip",
45 "delibs/zlib",
46
47 "deqp/wrappers/dynlib/inc",
48 "deqp/wrappers/gles3/inc",
49 "deqp/modules/gles2/accuracy",
50 "deqp/modules/gles2/functional",
51 "deqp/modules/gles2/performance",
52 "deqp/modules/gles2/stress",
53 "deqp/modules/gles2/usecases",
54 "deqp/modules/gles3/accuracy",
55 "deqp/modules/gles3/functional",
56 "deqp/modules/gles3/stress",
57 "deqp/modules/gles3/usecases",
58 "deqp/modules/gles3/performance",
59 "deqp/modules/gles31/functional",
60 "deqp/modules/gles31/stress",
61 "deqp/modules/gl3/functional",
62 "deqp/modules/gl3/performance",
63 "deqp/modules/gl3/stress",
64 "deqp/framework/opengl/simplereference",
65 "deqp/framework/opencl/inc",
66 "deqp/framework/opengl/wrapper",
67 "deqp/framework/opengl/simplereference",
68
69 "gapir/base",
70 "gapir/egl",
71 "gapir/gles2",
72 "gapir/util",
73
74 "domeni/eigen2",
75 "domeni/base",
76 "domeni/engine",
77 "domeni/m3g",
78 "domeni/m3g_adapter",
79 "domeni/renderer",
80 "domeni/resource",
81 "domeni/tools"
82] + SRC_DIRS
83
84ARGS = [
85 "--enable=all,style",
86 "--xml-version=2",
87 "--platform=win64",
88 "-D__cplusplus",
89 "-D_M_X64",
90 "-D_WIN32",
91 "-D_MSC_VER=1600",
92 "-DDE_DEBUG=1",
93 "-DDE_COMPILER=1", # Is preprocessor buggy in recent cppcheck?
94 "-DDE_OS=1",
95 "-DDE_CPU=1",
96 "-DDE_PTR_SIZE=4",
97 "-DAB_COMPILER=1",
98 "-DAB_OS=1",
99 "-DDEQP_SUPPORT_GLES2=1",
100 "-DDEQP_SUPPORT_GLES3=1",
101 "-DDEQP_SUPPORT_OPENCL=1",
102 "-DDEQP_SUPPORT_OPENGL=1",
103 "-DDEQP_TARGET_NAME=\"Cppcheck\"",
104 "-D_XOPEN_SOURCE=600",
105 "--suppress=arrayIndexOutOfBounds:deqp/framework/common/tcuVector.hpp",
106 "--suppress=invalidPointerCast:deqp/framework/common/tcuTexture.cpp",
107 "--suppress=*:deqp/framework/opencl/cl.hpp",
108 "--suppress=invalidPointerCast:deqp/modules/opencl/tclSIRLogger.cpp",
109 "--suppress=preprocessorErrorDirective:deqp/framework/platform/android/tcuAndroidMain.cpp",
110 "--suppress=invalidPointerCast:deqp/modules/gles3/functional/es3fTransformFeedbackTests.cpp",
111 "--suppress=invalidPointerCast:deqp/modules/gles3/functional/es3fUniformBlockCase.cpp",
112 "--suppress=unusedStructMember",
113 "--suppress=postfixOperator",
114 "--suppress=unusedFunction",
115 "--suppress=unusedPrivateFunction",
116 "--rule-file=deqp/scripts/no_empty_fail.rule"
117]
118
119def runCppCheck (srcBaseDir, dstFile):
120 fullDstFile = os.path.realpath(dstFile)
121 command = '"C:\\Program Files (x86)\\Cppcheck\\cppcheck.exe"'
122
123 for arg in ARGS + ["--xml"]:
124 command += " %s" % arg
125
126 for path in INCLUDE_DIRS:
127 command += " -I %s" % path
128
129 for path in SRC_DIRS:
130 command += " %s" % path
131
132 command += ' 2> "%s"' % fullDstFile
133
134 os.chdir(srcBaseDir)
135 os.system('"%s"' % command) # Double-quotes needed for some reason
136
137if __name__ == "__main__":
138 if len(sys.argv) != 2:
139 print "%s: [reportfile]" % sys.argv[0]
140 sys.exit(-1)
141
142 dstFile = sys.argv[1]
143 srcDir = os.path.realpath(os.path.normpath(os.path.join(os.path.dirname(__file__), "..", "..")))
144 runCppCheck(srcDir, dstFile)