From defd45adc20ac2080d6ee37ea4f1f9ca484577d2 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 3 Jan 2017 17:43:55 +0100 Subject: [PATCH] implement makefile fragment support for nmake --- ext/standard/Makefile.frag.w32 | 7 +++++++ ext/standard/config.w32 | 2 ++ win32/build/confutils.js | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 ext/standard/Makefile.frag.w32 diff --git a/ext/standard/Makefile.frag.w32 b/ext/standard/Makefile.frag.w32 new file mode 100644 index 0000000000..d65b7daf5c --- /dev/null +++ b/ext/standard/Makefile.frag.w32 @@ -0,0 +1,7 @@ + +ext\standard\var_unserializer.c: ext\standard\var_unserializer.re + $(RE2C) --no-generation-date -b -o ext/standard/var_unserializer.c ext/standard/var_unserializer.re + +ext\standard\url_scanner_ex.c: ext\standard\url_scanner_ex.re + $(RE2C) --no-generation-date -b -o ext/standard/url_scanner_ex.c ext/standard/url_scanner_ex.re + diff --git a/ext/standard/config.w32 b/ext/standard/config.w32 index 8154e7936c..00b2166abe 100644 --- a/ext/standard/config.w32 +++ b/ext/standard/config.w32 @@ -37,4 +37,6 @@ EXTENSION("standard", "array.c base64.c basic_functions.c browscap.c \ if (PHP_MBREGEX != "no") { CHECK_HEADER_ADD_INCLUDE("oniguruma.h", "CFLAGS_STANDARD", PHP_MBREGEX + ";ext\\mbstring\\oniguruma") } +ADD_MAKEFILE_FRAGMENT(); PHP_INSTALL_HEADERS("", "ext/standard"); + diff --git a/win32/build/confutils.js b/win32/build/confutils.js index eafc8f315d..e0233bd0d8 100644 --- a/win32/build/confutils.js +++ b/win32/build/confutils.js @@ -44,6 +44,8 @@ var PHP_TEST_INI_PATH = ""; var PHP_TEST_INI = ""; var PHP_TEST_INI_EXT_EXCLUDE = ""; +var PHP_MAKEFILE_FRAGMENTS = PHP_SRC_DIR + "\\Makefile.fragments.w32"; + /* Care also about NTDDI_VERSION and _WIN32_WINNT in config.w32.h.in */ var WINVER = "0x0601"; /* 7/2008r2 */ @@ -2474,6 +2476,17 @@ function generate_makefile() MF.Write(TF.ReadAll()); } TF.Close(); + MF.WriteBlankLines(2); + + if (FSO.FileExists(PHP_MAKEFILE_FRAGMENTS)) { + TF = FSO.OpenTextFile(PHP_MAKEFILE_FRAGMENTS, 1); + if (!TF.AtEndOfStream) { + MF.Write(TF.ReadAll()); + } + TF.Close(); + MF.WriteBlankLines(2); + FSO.DeleteFile(PHP_MAKEFILE_FRAGMENTS, true); + } MF.Close(); } @@ -3273,3 +3286,24 @@ function force_all_shared() return !!PHP_ALL_SHARED && "yes" == PHP_ALL_SHARED; } +function ADD_MAKEFILE_FRAGMENT() +{ + var fn_in = configure_module_dirname + "\\Makefile.frag.w32"; + if (FSO.FileExists(fn_in)) { + var h_in, h_out; + var create_out_fl = !FSO.FileExists(PHP_MAKEFILE_FRAGMENTS); + var open_flags = create_out_fl ? 8 : 2; + + h_in = FSO.OpenTextFile(fn_in, 1); + h_out = FSO.OpenTextFile(PHP_MAKEFILE_FRAGMENTS, open_flags, create_out_fl); + + if (!TF.AtEndOfStream) { + h_out.Write(h_in.ReadAll()); + h_out.WriteBlankLines(1); + } + + h_in.Close(); + h_out.Close(); + } +} + -- 2.50.1