From 9b5f96e465bc77baf36ab3deaf4a1f2e65884fed Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sun, 4 Oct 2020 12:50:58 +0200 Subject: Fix inclusion order for phpize builds on Windows `configure` for `phpize` builds on Windows creates Makefile and config.pickle.h and includes the latter via the command line option `/FI`. That implies that config.pickle.h is always included before config.w32.h, which means that standard definitions always override extension specific definitions, while it should be the other way round. Therefore, we change the inclusion order by including config.pickle.h at the end of config.w32.h if the former is available, and also make sure to avoid any potential C4005 warnings by `#undef`ining the macros before defining them. Closes GH-6269. --- win32/build/confutils.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'win32') diff --git a/win32/build/confutils.js b/win32/build/confutils.js index d080140d03..1871e582ab 100644 --- a/win32/build/confutils.js +++ b/win32/build/confutils.js @@ -1542,7 +1542,6 @@ function EXTENSION(extname, file_list, shared, cflags, dllname, obj_dir) var _tmp = FSO.CreateTextFile(PHP_DIR + "/include/main/config.pickle.h", true); _tmp.Close(); } - cflags = "/FI main/config.pickle.h " + cflags; } ADD_FLAG("CFLAGS_" + EXT, cflags); @@ -2207,7 +2206,7 @@ function generate_config_pickle_h() var ln = outfile.ReadLine(); for (var i in keys) { - var reg = new RegExp("#define[\s ]+" + keys[i] + "[\s ]*.*", "g"); + var reg = new RegExp("#define[\s ]+" + keys[i] + "[\s ]*.*|#undef[\s ]+" + keys[i], "g"); if (ln.match(reg)) { found = true; @@ -2233,6 +2232,7 @@ function generate_config_pickle_h() continue; }*/ + lines.push("#undef " + keys[i]); lines.push("#define " + keys[i] + " " + item[0]); } @@ -2309,6 +2309,11 @@ function generate_config_h() outfile.WriteLine("#define " + keys[i] + " " + pieces); } + outfile.WriteBlankLines(1); + outfile.WriteLine("#if __has_include(\"main/config.pickle.h\")"); + outfile.WriteLine("#include \"main/config.pickle.h\""); + outfile.WriteLine("#endif"); + outfile.Close(); } -- cgit v1.2.1