Merge branch 'PHP-7.1'

* PHP-7.1:
  sync with the incremental and inter-file analysis option
This commit is contained in:
Anatol Belski 2017-03-07 15:31:54 +01:00
commit c20ae623c2
2 changed files with 93 additions and 69 deletions

View file

@ -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") {

View file

@ -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) {