mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Merge branch 'PHP-7.1'
* PHP-7.1: sync with the incremental and inter-file analysis option
This commit is contained in:
commit
c20ae623c2
2 changed files with 93 additions and 69 deletions
|
@ -127,6 +127,94 @@ add_extra_dirs();
|
||||||
|
|
||||||
//DEFINE("PHP_BUILD", PHP_PHP_BUILD);
|
//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.WriteBlankLines(1);
|
||||||
STDOUT.WriteLine("Build dir: " + get_define('BUILD_DIR'));
|
STDOUT.WriteLine("Build dir: " + get_define('BUILD_DIR'));
|
||||||
STDOUT.WriteLine("PHP Core: " + get_define('PHPDLL') + " and " + get_define('PHPLIB'));
|
STDOUT.WriteLine("PHP Core: " + get_define('PHPDLL') + " and " + get_define('PHPLIB'));
|
||||||
|
@ -216,75 +304,6 @@ if (PHP_SECURITY_FLAGS == "yes") {
|
||||||
ADD_FLAG("LDFLAGS", "/NXCOMPAT /DYNAMICBASE ");
|
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) {
|
if (CLANG_TOOLSET) {
|
||||||
ARG_WITH("uncritical-warn-choke", "Disable some uncritical warnings", "yes");
|
ARG_WITH("uncritical-warn-choke", "Disable some uncritical warnings", "yes");
|
||||||
if (PHP_UNCRITICAL_WARN_CHOKE != "no") {
|
if (PHP_UNCRITICAL_WARN_CHOKE != "no") {
|
||||||
|
|
|
@ -1650,6 +1650,11 @@ function ADD_SOURCES(dir, file_list, target, obj_dir)
|
||||||
/* "--rule-file=win32\build\cppcheck_rules.xml " + */
|
/* "--rule-file=win32\build\cppcheck_rules.xml " + */
|
||||||
" --std=c89 --std=c++11 " +
|
" --std=c89 --std=c++11 " +
|
||||||
"--quiet --inconclusive --template=vs ";
|
"--quiet --inconclusive --template=vs ";
|
||||||
|
|
||||||
|
var cppcheck_build_dir = get_define("CPPCHECK_BUILD_DIR");
|
||||||
|
if (!!cppcheck_build_dir) {
|
||||||
|
analyzer_base_args += "--cppcheck-build-dir=$(CPPCHECK_BUILD_DIR)";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PHP_MP_DISABLED) {
|
if (PHP_MP_DISABLED) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue