//DEFINE("PHP_BUILD", PHP_PHP_BUILD);
+ARG_WITH("analyzer", "Enable static analyzer. Pass vs for Visual Studio, clang for clang, cppcheck for Cppcheck, pvs for PVS-Studio", "no");
+if (PHP_ANALYZER == "vs") {
+ ADD_FLAG("CFLAGS", " /analyze ");
+ ADD_FLAG("CFLAGS", " /wd6308 ");
+} else if (PHP_ANALYZER == "clang") {
+ var clang_cl = false;
+
+ if (FSO.FileExists(PROGRAM_FILES + "\\LLVM\\bin\\clang-cl.exe")) {
+ clang_cl = PROGRAM_FILES + "\\LLVM\\bin\\clang-cl.exe";
+ } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\LLVM\\bin\\clang-cl.exe")) {
+ clang_cl = PROGRAM_FILESx86 + "\\LLVM\\bin\\clang-cl.exe";
+ }
+
+ if (!clang_cl) {
+ if (false == PATH_PROG('clang-cl', null, 'CLANG_CL')) {
+ WARNING("Couldn't find clang binaries, static analyze was disabled");
+ PHP_ANALYZER = "no";
+ }
+ } else {
+ DEFINE("CLANG_CL", clang_cl);
+ }
+} else if (PHP_ANALYZER == "cppcheck") {
+
+ var cppcheck = false;
+
+ if (FSO.FileExists(PROGRAM_FILES + "\\Cppcheck\\cppcheck.exe")) {
+ cppcheck = PROGRAM_FILES + "\\Cppcheck\\cppcheck.exe";
+ } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\Cppcheck\\cppcheck.exe")) {
+ cppcheck = PROGRAM_FILESx86 + "\\Cppcheck\\cppcheck.exe";
+ }
+ if (!cppcheck) {
+ if (false == PATH_PROG('cppcheck', null, 'CPPCHECK')) {
+ WARNING("Couldn't find Cppcheck binaries, static analyze was disabled");
+ PHP_ANALYZER = "no";
+ } else {
+ cppcheck = get_define("CPPCHECK");
+ }
+ } else {
+ DEFINE("CPPCHECK", cppcheck);
+ }
+
+ if (cppcheck) {
+ var _tmp = execute(cppcheck + " --version").split(/ /)[1];
+ var cppcheck_ver = [
+ parseInt(_tmp.split(".")[0]),
+ parseInt(_tmp.split(".")[1]),
+ ];
+ if (cppcheck_ver[0] > 1 || cppcheck_ver[0] == 1 && cppcheck_ver[1] >= 77) {
+ var build_dir = get_define("BUILD_DIR");
+ var cppcheck_build_dir = build_dir + "\\cppcheck_build";
+ if (!FSO.FolderExists(cppcheck_build_dir)) {
+ FSO.CreateFolder(cppcheck_build_dir);
+ }
+ DEFINE("CPPCHECK_BUILD_DIR", cppcheck_build_dir);
+ }
+ }
+
+} else if (PHP_ANALYZER == "pvs") {
+ var pvs_studio = false;
+
+ if (FSO.FileExists(PROGRAM_FILES + "\\PVS-Studio\\x64\\PVS-Studio.exe")) {
+ pvs_studio = PROGRAM_FILES + "\\PVS-Studio\\x86\\PVS-Studio.exe";
+ } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\PVS-Studio\\x64\\PVS-Studio.exe")) {
+ pvs_studio = PROGRAM_FILESx86 + "\\PVS-Studio\\x64\\PVS-Studio.exe";
+ }
+
+ if (!pvs_studio) {
+ WARNING("Couldn't find PVS-Studio binaries, static analyze was disabled");
+ PHP_ANALYZER = "no";
+ } else {
+ var pvscfg = FSO.CreateTextFile("PVS-Studio.conf", true);
+ DEFINE("PVS_STUDIO", pvs_studio);
+
+ pvscfg.WriteLine("exclude-path = " + VCINSTALLDIR);
+ if (FSO.FolderExists(PROGRAM_FILESx86 + "\\windows kits\\")) {
+ pvscfg.WriteLine("exclude-path = " + PROGRAM_FILESx86 + "\\windows kits\\");
+ } else if (FSO.FolderExists(PROGRAM_FILES + "\\windows kits\\")) {
+ pvscfg.WriteLine("exclude-path = " + PROGRAM_FILES + "\\windows kits\\");
+ }
+ pvscfg.WriteLine("vcinstalldir = " + VCINSTALLDIR);
+ pvscfg.WriteLine("platform = " + (X64 ? 'x64' : 'Win32'));
+ pvscfg.WriteLine("preprocessor = visualcpp");
+ pvscfg.WriteLine("language = C");
+ }
+} else {
+ PHP_ANALYZER = "no"
+}
+
STDOUT.WriteBlankLines(1);
STDOUT.WriteLine("Build dir: " + get_define('BUILD_DIR'));
STDOUT.WriteLine("PHP Core: " + get_define('PHPDLL') + " and " + get_define('PHPLIB'));
ADD_FLAG("LDFLAGS", "/NXCOMPAT /DYNAMICBASE ");
}
-ARG_WITH("analyzer", "Enable static analyzer. Pass vs for Visual Studio, clang for clang, cppcheck for Cppcheck, pvs for PVS-Studio", "no");
-if (PHP_ANALYZER == "vs") {
- ADD_FLAG("CFLAGS", " /analyze ");
- ADD_FLAG("CFLAGS", " /wd6308 ");
-} else if (PHP_ANALYZER == "clang") {
- var clang_cl = false;
-
- if (FSO.FileExists(PROGRAM_FILES + "\\LLVM\\bin\\clang-cl.exe")) {
- clang_cl = PROGRAM_FILES + "\\LLVM\\bin\\clang-cl.exe";
- } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\LLVM\\bin\\clang-cl.exe")) {
- clang_cl = PROGRAM_FILESx86 + "\\LLVM\\bin\\clang-cl.exe";
- }
-
- if (!clang_cl) {
- if (false == PATH_PROG('clang-cl', null, 'CLANG_CL')) {
- WARNING("Couldn't find clang binaries, static analyze was disabled");
- PHP_ANALYZER = "no";
- }
- } else {
- DEFINE("CLANG_CL", clang_cl);
- }
-} else if (PHP_ANALYZER == "cppcheck") {
-
- var cppcheck = false;
-
- if (FSO.FileExists(PROGRAM_FILES + "\\Cppcheck\\cppcheck.exe")) {
- cppcheck = PROGRAM_FILES + "\\Cppcheck\\cppcheck.exe";
- } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\Cppcheck\\cppcheck.exe")) {
- cppcheck = PROGRAM_FILESx86 + "\\Cppcheck\\cppcheck.exe";
- }
- if (!cppcheck) {
- if (false == PATH_PROG('cppcheck', null, 'CPPCHECK')) {
- WARNING("Couldn't find Cppcheck binaries, static analyze was disabled");
- PHP_ANALYZER = "no";
- }
- } else {
- DEFINE("CPPCHECK", cppcheck);
- }
-} else if (PHP_ANALYZER == "pvs") {
- var pvs_studio = false;
-
- if (FSO.FileExists(PROGRAM_FILES + "\\PVS-Studio\\x64\\PVS-Studio.exe")) {
- pvs_studio = PROGRAM_FILES + "\\PVS-Studio\\x86\\PVS-Studio.exe";
- } else if (FSO.FileExists(PROGRAM_FILESx86 + "\\PVS-Studio\\x64\\PVS-Studio.exe")) {
- pvs_studio = PROGRAM_FILESx86 + "\\PVS-Studio\\x64\\PVS-Studio.exe";
- }
-
- if (!pvs_studio) {
- WARNING("Couldn't find PVS-Studio binaries, static analyze was disabled");
- PHP_ANALYZER = "no";
- } else {
- var pvscfg = FSO.CreateTextFile("PVS-Studio.conf", true);
- DEFINE("PVS_STUDIO", pvs_studio);
-
- pvscfg.WriteLine("exclude-path = " + VCINSTALLDIR);
- if (FSO.FolderExists(PROGRAM_FILESx86 + "\\windows kits\\")) {
- pvscfg.WriteLine("exclude-path = " + PROGRAM_FILESx86 + "\\windows kits\\");
- } else if (FSO.FolderExists(PROGRAM_FILES + "\\windows kits\\")) {
- pvscfg.WriteLine("exclude-path = " + PROGRAM_FILES + "\\windows kits\\");
- }
- pvscfg.WriteLine("vcinstalldir = " + VCINSTALLDIR);
- pvscfg.WriteLine("platform = " + (X64 ? 'x64' : 'Win32'));
- pvscfg.WriteLine("preprocessor = visualcpp");
- pvscfg.WriteLine("language = C");
- }
-} else {
- PHP_ANALYZER = "no"
-}
-
if (CLANG_TOOLSET) {
ARG_WITH("uncritical-warn-choke", "Disable some uncritical warnings", "yes");
if (PHP_UNCRITICAL_WARN_CHOKE != "no") {