Closed nono303 closed 1 year ago
How about a change like this.
--- a/config.w32
+++ b/config.w32
@@ -1,7 +1,7 @@
ARG_ENABLE("zstd", "zstd support", "yes");
if (PHP_ZSTD != "no") {
- if (CHECK_HEADER_ADD_INCLUDE("ext/apcu/apc_serializer.h", "CFLAGS_ZSTD", PHP_DIR + "\\include")) {
+ if (CHECK_HEADER_ADD_INCLUDE("ext/apcu/apc_serializer.h", "CFLAGS_ZSTD", PHP_DIR + "\\include;" + PHP_ZSTD)) {
AC_DEFINE("HAVE_APCU_SUPPORT", 1, "APCu support");
}
PHP_DIR
is still not set and never used in config.w32 for all extensions.
Maybe you are thinking about PHP_PHP_BUILD
(ex. https://github.com/php/php-src/blob/master/ext/gd/config.w32) that will work
--- a/config.w32
+++ b/config.w32
@@ -1,7 +1,7 @@
ARG_ENABLE("zstd", "zstd support", "yes");
if (PHP_ZSTD != "no") {
- if (CHECK_HEADER_ADD_INCLUDE("ext/apcu/apc_serializer.h", "CFLAGS_ZSTD", PHP_DIR + "\\include")) {
+ if (CHECK_HEADER_ADD_INCLUDE("ext/apcu/apc_serializer.h", "CFLAGS_ZSTD", PHP_PHP_BUILD + "\\include;" + PHP_ZSTD)) {
AC_DEFINE("HAVE_APCU_SUPPORT", 1, "APCu support");
}
I tried to specify the path where the header might be.
.
(Current directory)PHP_DIR + "\\include"
PHP_PHP_BUILD + "\include"
PHP_EXTRA_INCLUDES
PHP_ZSTD
--- a/config.w32
+++ b/config.w32
@@ -1,7 +1,7 @@
ARG_ENABLE("zstd", "zstd support", "yes");
if (PHP_ZSTD != "no") {
- if (CHECK_HEADER_ADD_INCLUDE("ext/apcu/apc_serializer.h", "CFLAGS_ZSTD", PHP_DIR + "\\include")) {
+ if (CHECK_HEADER_ADD_INCLUDE("ext/apcu/apc_serializer.h", "CFLAGS_ZSTD", ".;" + PHP_DIR + "\\include;" + PHP_PHP_BUILD + "\\include;" + PHP_EXTRA_INCLUDES + ";" + PHP_ZSTD)) {
AC_DEFINE("HAVE_APCU_SUPPORT", 1, "APCu support");
}
I wonder if PHP_DIR is set when you run phpize.
https://github.com/php/php-src/blob/master/win32/build/phpize.js.in#L25
phpize.js.in:var PHP_DIR=FSO.GetParentFolderName(WScript.ScriptFullName).replace(re,"");
PHP_PHP_BUILD seemed to specify dependent libraries needed at build time, so I didn't specify it.
https://github.com/php/php-src/blob/master/ext/gd/config.w32#L11 External libraries such as freetype2 instead of PHP's extension header
by specifying options. https://github.com/php/php-src/blob/master/.github/scripts/windows/build_task.bat
set DEPS_DIR=%PHP_BUILD_CACHE_BASE_DIR%\deps-%BRANCH%-%PHP_SDK_VS%-%PHP_SDK_ARCH% .. --with-php-build=%DEPS_DIR% ^
On an standard Windows compilation environment, usage of PHP_DIR throw an error
C:\sdk\src\php-sdk\phpmaster\vs17\x64\php-src\configure.js(6371, 3) Erreur d'exécution Microsoft JScript: 'PHP_DIR' est indéfini
I didin't go deep into how and were var are set during configure but just see how config.w32 is wrtitten for php-src extensions: it use PHP_PHP_BUILD and not PHP_DIR.
/cygdrive/c/sdk/src/php-src/ext
$ grep --color=auto --include=\*.w32 -Rine PHP_DIR
/cygdrive/c/sdk/src/php-src/ext
$ grep --color=auto --include=\*.w32 -Rine PHP_PHP_BUILD
curl/config.w32:7: var f = PHP_PHP_BUILD + "/include/curl/curlver.h";
curl/config.w32:10: var m = reg.exec(file_get_contents(PHP_PHP_BUILD + "/include/curl/curlver.h"));
dba/config.w32:27: CHECK_HEADER_ADD_INCLUDE("depot.h", "CFLAGS_DBA", PHP_DBA + ";" + PHP_PHP_BUILD + "\\include\\qdbm")) {
dom/config.w32:8: CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_DOM", PHP_PHP_BUILD + "\\include\\libxml2")
enchant/config.w32:6: if (CHECK_HEADER_ADD_INCLUDE("enchant.h", "CFLAGS_ENCHANT", PHP_ENCHANT+ ";" + PHP_PHP_BUILD + "\\include\\enchant") &&
enchant/config.w32:7: CHECK_HEADER_ADD_INCLUDE("glib.h", "CFLAGS_ENCHANT", PHP_ENCHANT+ ";" + PHP_PHP_BUILD + "\\include\\glib-2.0")) {
ffi/config.w32:4: if (CHECK_HEADER_ADD_INCLUDE("ffi.h", "CFLAGS_FFI", PHP_FFI+ ";" + PHP_PHP_BUILD + "\\include") &&
ffi/config.w32:15: if (GREP_HEADER("ffitarget.h", "FFI_VECTORCALL_PARTIAL", PHP_PHP_BUILD + "\\include")) {
gd/config.w32:7: CHECK_HEADER_ADD_INCLUDE("gd.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
gd/config.w32:8: CHECK_HEADER_ADD_INCLUDE("gdfontg.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
gd/config.w32:9: CHECK_HEADER_ADD_INCLUDE("gdfontl.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
gd/config.w32:10: CHECK_HEADER_ADD_INCLUDE("gdfontmb.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
gd/config.w32:11: CHECK_HEADER_ADD_INCLUDE("gdfonts.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
gd/config.w32:12: CHECK_HEADER_ADD_INCLUDE("gdfontt.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
gd/config.w32:13: CHECK_HEADER_ADD_INCLUDE("gd_errors.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include") &&
gmp/config.w32:7: CHECK_HEADER_ADD_INCLUDE("gmp.h", "CFLAGS_GMP", PHP_GMP + ";" + PHP_PHP_BUILD + "\\include\\mpir")) {
ldap/config.w32:7: if (CHECK_HEADER_ADD_INCLUDE("ldap.h", "CFLAGS_LDAP", PHP_PHP_BUILD + "\\include\\openldap;" + PHP_PHP_BUILD + "\\openldap\\include;" + PHP_LDAP) &&
ldap/config.w32:8: CHECK_HEADER_ADD_INCLUDE("lber.h", "CFLAGS_LDAP", PHP_PHP_BUILD + "\\include\\openldap;" + PHP_PHP_BUILD + "\\openldap\\include;" + PHP_LDAP) &&
libxml/config.w32:10: CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_LIBXML", PHP_PHP_BUILD + "\\include\\libxml2") &&
libxml/config.w32:11: CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_LIBXML", PHP_PHP_BUILD + "\\include\\libxml2") &&
mbstring/config.w32:8: if (CHECK_HEADER_ADD_INCLUDE("mbstring.h", "CFLAGS_MBSTRING", PHP_MBSTRING + ";" + PHP_PHP_BUILD + "\\include")) {
oci8/config.w32:42: oci8_11g_inc_paths += PHP_PHP_BUILD + "\\include\\instantclient_11;"
oci8/config.w32:43: oci8_11g_lib_paths += PHP_PHP_BUILD + "\\lib\\instantclient_11;";
oci8/config.w32:77: oci8_12c_inc_paths += PHP_PHP_BUILD + "\\include\\instantclient_12;"
oci8/config.w32:78: oci8_12c_lib_paths += PHP_PHP_BUILD + "\\lib\\instantclient_12;";
oci8/config.w32:111: oci8_19_inc_paths += PHP_PHP_BUILD + "\\include\\instantclient_19;"
oci8/config.w32:112: oci8_19_lib_paths += PHP_PHP_BUILD + "\\lib\\instantclient_19;";
pdo_firebird/config.w32:7: if ((CHECK_LIB("fbclient_ms.lib", "pdo_firebird", PHP_PHP_BUILD + "\\interbase\\lib_ms;" + PHP_PDO_FIREBIRD)
pdo_firebird/config.w32:8: || CHECK_LIB("gds32_ms.lib", "pdo_firebird", PHP_PHP_BUILD + "\\interbase\\lib_ms;" + PHP_PDO_FIREBIRD)
pdo_firebird/config.w32:10: PHP_PHP_BUILD + "\\include\\interbase;" + PHP_PHP_BUILD + "\\interbase\\include;" + PHP_PDO_FIREBIRD)
pdo_mysql/config.w32:15: PHP_PHP_BUILD + "\\include\\mysql;" +
pdo_oci/config.w32:10: PHP_PHP_BUILD + "\\instantclient10_*\\sdk",
pdo_oci/config.w32:11: PHP_PHP_BUILD + "\\oci92"
pdo_oci/config.w32:24: pdo_oci_inc_paths += PHP_PHP_BUILD + "\\include\\instantclient;"
pdo_oci/config.w32:25: pdo_oci_lib_paths += PHP_PHP_BUILD + "\\lib\\instantclient;";
pdo_pgsql/config.w32:7: CHECK_HEADER_ADD_INCLUDE("libpq-fe.h", "CFLAGS_PDO_PGSQL", PHP_PDO_PGSQL + "\\include;" + PHP_PHP_BUILD + "\\include\\pgsql;" + PHP_PHP_BUILD + "\\include\\libpq;")) {
pgsql/config.w32:7: CHECK_HEADER_ADD_INCLUDE("libpq-fe.h", "CFLAGS_PGSQL", PHP_PGSQL + "\\include;" + PHP_PHP_BUILD + "\\include\\pgsql;" + PHP_PHP_BUILD + "\\include\\libpq;" + PHP_PGSQL)) {
pspell/config.w32:7: if (CHECK_HEADER_ADD_INCLUDE("pspell.h", "CFLAGS_PSPELL", PHP_PHP_BUILD + "\\include\\pspell;" + PHP_PSPELL) &&
simplexml/config.w32:8: CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_SIMPLEXML", PHP_PHP_BUILD + "\\include\\libxml2")
snmp/config.w32:6: if (CHECK_HEADER_ADD_INCLUDE("snmp.h", "CFLAGS_SNMP", PHP_PHP_BUILD + "\\include\\net-snmp;" + PHP_SNMP) &&
soap/config.w32:8: CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_SOAP", PHP_PHP_BUILD + "\\include\\libxml2") &&
soap/config.w32:9: CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_SOAP", PHP_PHP_BUILD + "\\include\\libxml2")
standard/config.w32:8: if (!CHECK_FUNC_IN_HEADER("argon2.h", "argon2id_hash_raw", PHP_PHP_BUILD + "\\include", "CFLAGS")) {
xml/config.w32:8: CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_XML", PHP_PHP_BUILD + "\\include\\libxml2") &&
xml/config.w32:9: CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_XML", PHP_PHP_BUILD + "\\include\\libxml2")
xmlreader/config.w32:7: CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_XMLREADER", PHP_PHP_BUILD + "\\include\\libxml2") &&
xmlreader/config.w32:8: CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_XMLREADER", PHP_PHP_BUILD + "\\include\\libxml2")
xmlwriter/config.w32:6: if (CHECK_HEADER_ADD_INCLUDE('libxml/xmlwriter.h', 'CFLAGS_XMLWRITER', PHP_XMLWRITER + ";" + PHP_PHP_BUILD + "\\include\\libxml2")) {
xsl/config.w32:9: && CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_XSL", PHP_PHP_BUILD + "\\include\\libxml2")
zip/config.w32:6: if (CHECK_HEADER_ADD_INCLUDE("zip.h", "CFLAGS_ZIP", PHP_PHP_BUILD + "\\include;" + PHP_EXTRA_INCLUDES) &&
zip/config.w32:7: CHECK_HEADER_ADD_INCLUDE("zipconf.h", "CFLAGS_ZIP", PHP_PHP_BUILD + "\\lib\\libzip\\include;" + PHP_EXTRA_LIBS + "\\libzip\\include;" + PHP_ZIP) &&
I'm not going to fix it because it's not a problem in the build of the extension using phpize
I wonder if the following is a php-src extension that does something similar
standard/config.w32:CHECK_HEADER_ADD_INCLUDE("timelib_config.h", "CFLAGS_STANDARD", "ext/date/lib");
Checking for the presence of another extension's header.
I'm not going to fix it because it's not a problem in the build of the extension using phpize
Understand for linux build (config.m4
) but could you give me your phpize command line on Windows?
Because as far as I know, phpize doesn't exist for Windows and buildconf must be use instead (what I'm do and what is failing)
cf. https://blog.benoitblanchon.fr/build-php-extension-on-windows/ /
In ci we build as follows.
https://github.com/kjdev/php-ext-zstd/blob/master/.github/workflows/build.ps1
$task = New-Item 'task.bat' -Force
Add-Content $task 'call phpize 2>&1'
Add-Content $task "call configure --with-php-build=C:\php\deps --enable-$env:PHP_EXT --enable-debug-pack 2>&1"
Add-Content $task 'nmake /nologo 2>&1'
Add-Content $task 'exit %errorlevel%'
& "C:\php\php-sdk-$env:BIN_SDK_VER\phpsdk-$env:VC-$env:ARCH.bat" -t $task
I don't remember where the reference was.
link #52
Hi @kjdev, Thanks for 0.12.1! config.w32 change (https://github.com/kjdev/php-ext-zstd/commit/65c431a15561b7c2cc761410d4767601290ca83a) failed on compile as
PHP_DIR
is undefined. Here is my quick working patch which correspond to a standard use ofCHECK_HEADER_ADD_INCLUDE
usingPHP_ZSTD