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);
|
||||
|
||||
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'));
|
||||
|
@ -216,75 +304,6 @@ if (PHP_SECURITY_FLAGS == "yes") {
|
|||
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") {
|
||||
|
|
|
@ -1650,6 +1650,11 @@ function ADD_SOURCES(dir, file_list, target, obj_dir)
|
|||
/* "--rule-file=win32\build\cppcheck_rules.xml " + */
|
||||
" --std=c89 --std=c++11 " +
|
||||
"--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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue