From 67e416f3a60b7058d16b9b297f86c3f84516153c Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 16 Nov 2024 13:23:13 +0100 Subject: [PATCH 01/12] avoid unrelated CI job execution --- .circleci/config.yml | 188 ------------------------------------- .github/workflows/push.yml | 8 +- 2 files changed, 4 insertions(+), 192 deletions(-) delete mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 78520332dfc7e..0000000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,188 +0,0 @@ -version: 2.1 - -jobs: - arm: - resource_class: arm.medium - docker: - - image: cimg/base:current-22.04 - - image: mysql:8.3 - environment: - MYSQL_ALLOW_EMPTY_PASSWORD: true - MYSQL_ROOT_PASSWORD: '' - MYSQL_DATABASE: test - - image: postgres:16 - environment: - POSTGRES_PASSWORD: postgres - POSTGRES_DB: test - environment: - LANGUAGE: '' - LANG: en_US.UTF-8 - MYSQL_TEST_HOST: '127.0.0.1' - MYSQL_TEST_PASSWD: '' - MYSQL_TEST_USER: root - PDO_MYSQL_TEST_DSN: 'mysql:host=127.0.0.1;dbname=test' - PDO_MYSQL_TEST_PASS: '' - PDO_MYSQL_TEST_USER: root - PDO_PGSQL_TEST_DSN: 'pgsql:host=127.0.0.1 port=5432 dbname=test user=postgres password=postgres' - steps: - - checkout - - run: - name: apt - command: | - export DEBIAN_FRONTEND=noninteractive - sudo apt-get update -y - sudo apt-get install -y \ - gcc \ - g++ \ - autoconf \ - bison \ - re2c \ - locales \ - locales-all \ - ldap-utils \ - openssl \ - slapd \ - libgmp-dev \ - libicu-dev \ - libtidy-dev \ - libenchant-2-dev \ - libsasl2-dev \ - libxpm-dev \ - libzip-dev \ - libbz2-dev \ - libsqlite3-dev \ - libwebp-dev \ - libonig-dev \ - libcurl4-openssl-dev \ - libxml2-dev \ - libxslt1-dev \ - libpq-dev \ - libreadline-dev \ - libldap2-dev \ - libsodium-dev \ - libargon2-0-dev \ - libmm-dev \ - libsnmp-dev \ - snmpd \ - `#snmp-mibs-downloader` \ - freetds-dev \ - `#unixodbc-dev` \ - dovecot-core \ - dovecot-pop3d \ - dovecot-imapd \ - sendmail \ - firebird-dev \ - liblmdb-dev \ - libtokyocabinet-dev \ - libdb-dev \ - libqdbm-dev \ - libjpeg-dev \ - libpng-dev \ - libfreetype6-dev - - run: - name: ./configure - command: | - ./buildconf -f - ./configure \ - --enable-debug \ - --enable-zts \ - --enable-option-checking=fatal \ - --prefix=/usr \ - --enable-phpdbg \ - --enable-fpm \ - --enable-opcache \ - --with-pdo-mysql=mysqlnd \ - --with-mysqli=mysqlnd \ - --with-pgsql \ - --with-pdo-pgsql \ - --with-pdo-sqlite \ - --enable-intl \ - --without-pear \ - --enable-gd \ - --with-jpeg \ - --with-webp \ - --with-freetype \ - --with-xpm \ - --enable-exif \ - --with-zip \ - --with-zlib \ - --enable-soap \ - --enable-xmlreader \ - --with-xsl \ - --with-tidy \ - --enable-sysvsem \ - --enable-sysvshm \ - --enable-shmop \ - --enable-pcntl \ - --with-readline \ - --enable-mbstring \ - --with-curl \ - --with-gettext \ - --enable-sockets \ - --with-bz2 \ - --with-openssl \ - --with-gmp \ - --enable-bcmath \ - --enable-calendar \ - --enable-ftp \ - --with-enchant=/usr \ - --enable-sysvmsg \ - --with-ffi \ - --enable-zend-test \ - --enable-dl-test=shared \ - --with-ldap \ - --with-ldap-sasl \ - --with-password-argon2 \ - --with-mhash \ - --with-sodium \ - --enable-dba \ - --with-cdb \ - --enable-flatfile \ - --enable-inifile \ - --with-tcadb \ - --with-lmdb \ - --with-qdbm \ - --with-snmp \ - `#--with-unixODBC` \ - `#--with-pdo-odbc=unixODBC,/usr` \ - --with-config-file-path=/etc \ - --with-config-file-scan-dir=/etc/php.d \ - --with-pdo-firebird \ - `#--with-pdo-dblib` \ - --disable-phpdbg \ - `#--enable-werror` - - run: - name: make - command: make -j2 > /dev/null - - run: - name: make install - command: | - sudo make install - sudo mkdir -p /etc/php.d - sudo chmod 777 /etc/php.d - echo opcache.enable_cli=1 > /etc/php.d/opcache.ini - echo opcache.protect_memory=1 >> /etc/php.d/opcache.ini - - run: - name: Test - no_output_timeout: 30m - command: | - sapi/cli/php run-tests.php \ - -d zend_extension=opcache.so \ - -d opcache.enable_cli=1 \ - -d opcache.jit_buffer_size=64M \ - -d opcache.jit=tracing \ - -d zend_test.observer.enabled=1 \ - -d zend_test.observer.show_output=0 \ - -P -q -x -j2 \ - -g FAIL,BORK,LEAK,XLEAK \ - --no-progress \ - --offline \ - --show-diff \ - --show-slow 1000 \ - --set-timeout 120 \ - --repeat 2 - -workflows: - push-workflow: - jobs: - - arm diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index f59fcb8d7badc..9082ff1ad604e 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -41,7 +41,7 @@ env: CXX: ccache g++ jobs: LINUX_X64: - if: github.repository == 'php/php-src' || github.event_name == 'pull_request' + if: false services: mysql: image: mysql:8.3 @@ -137,7 +137,7 @@ jobs: if: ${{ !matrix.asan }} uses: ./.github/actions/verify-generated-files LINUX_X32: - if: github.repository == 'php/php-src' || github.event_name == 'pull_request' + if: false name: LINUX_X32_DEBUG_ZTS runs-on: ubuntu-latest timeout-minutes: 50 @@ -183,7 +183,7 @@ jobs: -d zend_extension=opcache.so -d opcache.enable_cli=1 MACOS_DEBUG_NTS: - if: github.repository == 'php/php-src' || github.event_name == 'pull_request' + if: false strategy: fail-fast: false matrix: @@ -254,7 +254,7 @@ jobs: run: .github/scripts/windows/test.bat BENCHMARKING: name: BENCHMARKING - if: github.repository == 'php/php-src' || github.event_name == 'pull_request' + if: false runs-on: ubuntu-24.04 timeout-minutes: 50 steps: From 09e8b0e16d3d7538b6e630eb33ed49421ae1448b Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 16 Nov 2024 12:54:16 +0100 Subject: [PATCH 02/12] Use pkg-config on Windows --- .github/scripts/windows/build_task.bat | 6 +- .pkg-config/pkg-config.exe | Bin 0 -> 33792 bytes .pkg-config/pkgconfig/ICU.pc | 10 +++ .pkg-config/pkgconfig/apache.pc | 9 +++ .pkg-config/pkgconfig/cyrus-sasl.pc | 11 ++++ .pkg-config/pkgconfig/fbclient.pc | 9 +++ .pkg-config/pkgconfig/freetype.pc | 10 +++ .pkg-config/pkgconfig/gettext.pc | 10 +++ .pkg-config/pkgconfig/libargon.pc | 10 +++ .pkg-config/pkgconfig/libavif.pc | 10 +++ .pkg-config/pkgconfig/libbzip2.pc | 10 +++ .pkg-config/pkgconfig/libiconv.pc | 10 +++ .pkg-config/pkgconfig/libjpeg.pc | 10 +++ .pkg-config/pkgconfig/liblmdb.pc | 10 +++ .pkg-config/pkgconfig/liblzma.pc | 10 +++ .pkg-config/pkgconfig/libpng.pc | 10 +++ .pkg-config/pkgconfig/libpq.pc | 10 +++ .pkg-config/pkgconfig/libqdbm.pc | 10 +++ .pkg-config/pkgconfig/libsodium.pc | 10 +++ .pkg-config/pkgconfig/libwebp.pc | 10 +++ .pkg-config/pkgconfig/libxml2.pc | 10 +++ .pkg-config/pkgconfig/libxpm.pc | 10 +++ .pkg-config/pkgconfig/libzip.pc | 11 ++++ .pkg-config/pkgconfig/mpir.pc | 10 +++ .pkg-config/pkgconfig/netsnmp.pc | 11 ++++ .pkg-config/pkgconfig/oniguruma.pc | 10 +++ .pkg-config/pkgconfig/openldap.pc | 11 ++++ .pkg-config/pkgconfig/openssl.pc | 10 +++ .pkg-config/pkgconfig/sqlite3.pc | 10 +++ .pkg-config/pkgconfig/wineditline.pc | 10 +++ .pkg-config/pkgconfig/zlib.pc | 10 +++ ext/bz2/config.w32 | 7 +- ext/dba/config.w32 | 15 +++-- ext/gd/config.w32 | 37 ++++------- ext/gettext/config.w32 | 6 +- ext/gmp/config.w32 | 7 +- ext/iconv/config.w32 | 8 +-- ext/intl/config.w32 | 31 +++------ ext/ldap/config.w32 | 9 +-- ext/libxml/config.w32 | 32 ++++----- ext/mbstring/config.w32 | 5 +- ext/pdo_firebird/config.w32 | 12 ++-- ext/pdo_pgsql/config.w32 | 7 +- ext/pdo_sqlite/config.w32 | 2 +- ext/pgsql/config.w32 | 7 +- ext/readline/config.w32 | 5 +- ext/snmp/config.w32 | 17 ++--- ext/sodium/config.w32 | 4 +- ext/sqlite3/config.w32 | 2 +- ext/standard/config.w32 | 10 ++- ext/zip/config.w32 | 10 ++- ext/zlib/config.w32 | 8 +-- sapi/apache2handler/config.w32 | 10 ++- sapi/cli/config.w32 | 5 +- win32/build/confutils.js | 86 +++++++++++++++++++------ 55 files changed, 479 insertions(+), 161 deletions(-) create mode 100644 .pkg-config/pkg-config.exe create mode 100644 .pkg-config/pkgconfig/ICU.pc create mode 100644 .pkg-config/pkgconfig/apache.pc create mode 100644 .pkg-config/pkgconfig/cyrus-sasl.pc create mode 100644 .pkg-config/pkgconfig/fbclient.pc create mode 100644 .pkg-config/pkgconfig/freetype.pc create mode 100644 .pkg-config/pkgconfig/gettext.pc create mode 100644 .pkg-config/pkgconfig/libargon.pc create mode 100644 .pkg-config/pkgconfig/libavif.pc create mode 100644 .pkg-config/pkgconfig/libbzip2.pc create mode 100644 .pkg-config/pkgconfig/libiconv.pc create mode 100644 .pkg-config/pkgconfig/libjpeg.pc create mode 100644 .pkg-config/pkgconfig/liblmdb.pc create mode 100644 .pkg-config/pkgconfig/liblzma.pc create mode 100644 .pkg-config/pkgconfig/libpng.pc create mode 100644 .pkg-config/pkgconfig/libpq.pc create mode 100644 .pkg-config/pkgconfig/libqdbm.pc create mode 100644 .pkg-config/pkgconfig/libsodium.pc create mode 100644 .pkg-config/pkgconfig/libwebp.pc create mode 100644 .pkg-config/pkgconfig/libxml2.pc create mode 100644 .pkg-config/pkgconfig/libxpm.pc create mode 100644 .pkg-config/pkgconfig/libzip.pc create mode 100644 .pkg-config/pkgconfig/mpir.pc create mode 100644 .pkg-config/pkgconfig/netsnmp.pc create mode 100644 .pkg-config/pkgconfig/oniguruma.pc create mode 100644 .pkg-config/pkgconfig/openldap.pc create mode 100644 .pkg-config/pkgconfig/openssl.pc create mode 100644 .pkg-config/pkgconfig/sqlite3.pc create mode 100644 .pkg-config/pkgconfig/wineditline.pc create mode 100644 .pkg-config/pkgconfig/zlib.pc diff --git a/.github/scripts/windows/build_task.bat b/.github/scripts/windows/build_task.bat index 7a2824e299708..d7ae888336d9d 100644 --- a/.github/scripts/windows/build_task.bat +++ b/.github/scripts/windows/build_task.bat @@ -25,12 +25,17 @@ if not exist "%DEPS_DIR%" ( ) if %errorlevel% neq 0 exit /b 3 +rem temporary work-around for missing pkg-config and .pc files +copy .pkg-config\pkg-config.exe %PHP_BUILD_CACHE_SDK_DIR%\bin\pkg-config.exe +copy .pkg-config\pkgconfig\* %DEPS_DIR%\lib\pkgconfig + cmd /c buildconf.bat --force if %errorlevel% neq 0 exit /b 3 if "%THREAD_SAFE%" equ "0" set ADD_CONF=%ADD_CONF% --disable-zts if "%INTRINSICS%" neq "" set ADD_CONF=%ADD_CONF% --enable-native-intrinsics=%INTRINSICS% +set PKG_CONFIG_PATH=%DEPS_DIR%\lib\pkgconfig set CFLAGS=/W1 /WX cmd /c configure.bat ^ @@ -38,7 +43,6 @@ cmd /c configure.bat ^ --disable-debug-pack ^ --without-analyzer ^ --enable-object-out-dir=%PHP_BUILD_OBJ_DIR% ^ - --with-php-build=%DEPS_DIR% ^ %ADD_CONF% ^ --disable-test-ini if %errorlevel% neq 0 exit /b 3 diff --git a/.pkg-config/pkg-config.exe b/.pkg-config/pkg-config.exe new file mode 100644 index 0000000000000000000000000000000000000000..3cfee05ecaab969fb0e1623b75a6f302c096818f GIT binary patch literal 33792 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 2.0.0")) { + PHP_EVAL_INCLINE(BZIP2_CFLAGS, "bz2"); + PHP_EVAL_LIBLINE(BZIP2_LIBS, "bz2"); EXTENSION("bz2", "bz2.c bz2_filter.c"); AC_DEFINE('HAVE_BZ2', 1, "Define to 1 if the PHP extension 'bz2' is available."); // BZ2 extension does this slightly differently from others @@ -12,6 +13,6 @@ if (PHP_BZ2 != "no") { ADD_FLAG("CFLAGS_BZ2", "/D PHP_BZ2_EXPORTS "); } } else { - WARNING("bz2 not enabled; libraries and headers not found"); + WARNING("bz2 not enabled; libbzip2 package not found"); } } diff --git a/ext/dba/config.w32 b/ext/dba/config.w32 index 5017097fe758f..10498dda7a5e7 100644 --- a/ext/dba/config.w32 +++ b/ext/dba/config.w32 @@ -23,25 +23,26 @@ if (PHP_DBA != "no") { } if (PHP_QDBM != "no") { - if (CHECK_LIB("qdbm_a.lib;qdbm.lib", "dba", PHP_DBA) && - CHECK_HEADER_ADD_INCLUDE("depot.h", "CFLAGS_DBA", PHP_DBA + ";" + PHP_PHP_BUILD + "\\include\\qdbm")) { + if (PKG_CHECK_MODULES("QDBM", "libqdbm")) { + PHP_EVAL_INCLINE(QDBM_CFLAGS, "dba"); + PHP_EVAL_LIBLINE(QDBM_LIBS, "dba"); ADD_SOURCES("ext/dba", "dba_qdbm.c", "dba"); AC_DEFINE("QDBM_INCLUDE_FILE", "", "The QDBM handler header file.", false); AC_DEFINE("DBA_QDBM", 1, "Define to 1 if the dba extension uses the QDBM handler."); } else { - WARNING("dba: qdbm handlers not enabled; libraries and headers not found"); + WARNING("dba: qdbm handlers not enabled; libqdbm package not found"); } } if (PHP_LMDB != "no") { - if (CHECK_LIB("liblmdb_a.lib", "dba", PHP_DBA) && - CHECK_HEADER_ADD_INCLUDE("lmdb.h", "CFLAGS_DBA") && - CHECK_LIB("ntdll.lib", "dba", PHP_DBA)) { + if (PKG_CHECK_MODULES("LMDB", "liblmdb")) { + PHP_EVAL_INCLINE(LMDB_CFLAGS, "dba"); + PHP_EVAL_LIBLINE(LMDB_LIBS, "dba"); ADD_SOURCES("ext/dba", "dba_lmdb.c", "dba"); AC_DEFINE("LMDB_INCLUDE_FILE", "", "The LMDB handler header file.", false); AC_DEFINE("DBA_LMDB", 1, "Define to 1 if the dba extension uses the LMDB handler."); } else { - WARNING("dba: lmdb handlers not enabled; libraries and headers not found"); + WARNING("dba: lmdb handlers not enabled; liblmdb package not found"); } } } diff --git a/ext/gd/config.w32 b/ext/gd/config.w32 index 4e168fc3474f6..b7daab44c33e5 100644 --- a/ext/gd/config.w32 +++ b/ext/gd/config.w32 @@ -6,46 +6,37 @@ ARG_WITH("libavif", "avif support", "yes"); if (PHP_GD != "no") { if ( - CHECK_LIB("libjpeg_a.lib;libjpeg.lib", "gd", PHP_GD) && - CHECK_LIB("freetype_a.lib;freetype.lib", "gd", PHP_GD) && - CHECK_HEADER_ADD_INCLUDE("ft2build.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\freetype2;" + PHP_PHP_BUILD + "\\include\\freetype") && - CHECK_LIB("libpng_a.lib;libpng.lib", "gd", PHP_GD) && + PKG_CHECK_MODULES("GD", "libjpeg freetype libpng libiconv") && CHECK_HEADER_ADD_INCLUDE("gd.h", "CFLAGS_GD", PHP_GD + ";ext\\gd\\libgd") && - (CHECK_HEADER_ADD_INCLUDE("png.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\libpng16") || - CHECK_HEADER_ADD_INCLUDE("png.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\libpng15") || - CHECK_HEADER_ADD_INCLUDE("png.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\libpng12")) && - (CHECK_LIB("libiconv_a.lib;libiconv.lib", "gd", PHP_GD) || CHECK_LIB("iconv_a.lib;iconv.lib", "gd", PHP_GD)) && - CHECK_HEADER_ADD_INCLUDE("iconv.h", "CFLAGS_GD", PHP_GD) && SETUP_ZLIB_LIB("gd", PHP_GD) && CHECK_HEADER_ADD_INCLUDE("zlib.h", "CFLAGS", "..\\zlib;" + php_usual_include_suspects) ) { + PHP_EVAL_INCLINE(GD_CFLAGS, "gd"); + PHP_EVAL_LIBLINE(GD_LIBS, "gd"); - if (CHECK_LIB("libXpm_a.lib", "gd", PHP_GD) && - CHECK_HEADER_ADD_INCLUDE("xpm.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\X11") - ) { + if (PKG_CHECK_MODULES("LIBXPM", "libxpm")) { + PHP_EVAL_INCLINE(LIBXPM_CFLAGS, "gd"); + PHP_EVAL_LIBLINE(LIBXPM_LIBS, "gd"); AC_DEFINE('HAVE_XPM', 1, "Define to 1 if you have the xpm library."); AC_DEFINE('HAVE_GD_XPM', 1, "Define to 1 if gd extension has XPM support."); } if (PHP_LIBWEBP != "no") { - if ((CHECK_LIB("libwebp_a.lib", "gd", PHP_GD) || CHECK_LIB("libwebp.lib", "gd", PHP_GD)) && - CHECK_HEADER_ADD_INCLUDE("decode.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\webp") && - CHECK_HEADER_ADD_INCLUDE("encode.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\webp")) { + if (PKG_CHECK_MODULES("LIBWEBP", "libwebp")) { + PHP_EVAL_INCLINE(LIBWEBP_CFLAGS, "gd"); + PHP_EVAL_LIBLINE(LIBWEBP_LIBS, "gd"); AC_DEFINE("HAVE_LIBWEBP", 1, "Define to 1 if you have the libwebp library."); AC_DEFINE("HAVE_GD_WEBP", 1, "Define to 1 if gd extension has WebP support."); } else { - WARNING("libwebp not enabled; libraries and headers not found"); + WARNING("libwebp not enabled; libwebp package not found"); } } if (PHP_LIBAVIF != "no") { - if (CHECK_LIB("avif_a.lib", "gd", PHP_GD) && - CHECK_LIB("aom_a.lib", "gd", PHP_GD) && - CHECK_HEADER_ADD_INCLUDE("avif.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\avif")) { - ADD_FLAG("CFLAGS_GD", "/D HAVE_LIBAVIF /D HAVE_GD_AVIF"); - } else if (CHECK_LIB("avif.lib", "gd", PHP_GD) && - CHECK_HEADER_ADD_INCLUDE("avif.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\avif")) { + if (PKG_CHECK_MODULES("LIBAVIF", "libavif")) { + PHP_EVAL_INCLINE(LIBAVIF_CFLAGS, "gd"); + PHP_EVAL_LIBLINE(LIBAVIF_LIBS, "gd"); ADD_FLAG("CFLAGS_GD", "/D HAVE_LIBAVIF /D HAVE_GD_AVIF"); } else { - WARNING("libavif not enabled; libraries and headers not found"); + WARNING("libavif not enabled; libavif package not found"); } } CHECK_LIB("User32.lib", "gd", PHP_GD); diff --git a/ext/gettext/config.w32 b/ext/gettext/config.w32 index 3e644655426b9..13813e1f19b4a 100644 --- a/ext/gettext/config.w32 +++ b/ext/gettext/config.w32 @@ -3,9 +3,11 @@ ARG_WITH("gettext", "gettext support", "no"); if (PHP_GETTEXT != "no") { - if (CHECK_LIB("libintl_a.lib;libintl.lib", "gettext", PHP_GETTEXT) && CHECK_HEADER_ADD_INCLUDE("libintl.h", "CFLAGS_GETTEXT")) { + if (PKG_CHECK_MODULES("GETTEXT", "gettext")) { + PHP_EVAL_INCLINE(GETTEXT_CFLAGS, "gettext"); + PHP_EVAL_LIBLINE(GETTEXT_LIBS, "gettext"); EXTENSION("gettext", "gettext.c", PHP_GETTEXT_SHARED, "-DHAVE_BIND_TEXTDOMAIN_CODESET=1 -DHAVE_DNGETTEXT=1 -DHAVE_NGETTEXT=1 -DHAVE_LIBINTL=1 -DHAVE_DCNGETTEXT=1"); } else { - WARNING("gettext not enabled; libraries and headers not found"); + WARNING("gettext not enabled; gettext package not found"); } } diff --git a/ext/gmp/config.w32 b/ext/gmp/config.w32 index 2bb4aa63ad0f0..9f10ccab5f413 100644 --- a/ext/gmp/config.w32 +++ b/ext/gmp/config.w32 @@ -3,12 +3,13 @@ ARG_WITH("gmp", "Include GNU MP support.", "no"); if (PHP_GMP != "no") { - if (CHECK_LIB("mpir_a.lib", "gmp", PHP_GMP) && - CHECK_HEADER_ADD_INCLUDE("gmp.h", "CFLAGS_GMP", PHP_GMP + ";" + PHP_PHP_BUILD + "\\include\\mpir")) { + if (PKG_CHECK_MODULES("MPIR", "mpir")) { + PHP_EVAL_INCLINE(MPIR_CFLAGS, "gmp"); + PHP_EVAL_LIBLINE(MPIR_LIBS, "gmp"); EXTENSION("gmp", "gmp.c", null, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); PHP_INSTALL_HEADERS("ext/gmp", "php_gmp_int.h"); AC_DEFINE('HAVE_GMP', 1, "Define to 1 if the PHP extension 'gmp' is available."); } else { - WARNING("GMP not enabled; libraries and headers not found"); + WARNING("GMP not enabled; mpir package not found"); } } diff --git a/ext/iconv/config.w32 b/ext/iconv/config.w32 index d99c53fb93634..9af91902b9614 100644 --- a/ext/iconv/config.w32 +++ b/ext/iconv/config.w32 @@ -3,9 +3,9 @@ ARG_WITH("iconv", "iconv support", "yes"); if (PHP_ICONV != "no") { - if ((CHECK_LIB("libiconv_a.lib", "iconv", PHP_ICONV) || CHECK_LIB("libiconv.lib", "iconv", PHP_ICONV) || - CHECK_LIB("iconv_a.lib", "iconv", PHP_ICONV) || CHECK_LIB("iconv.lib", "iconv", PHP_ICONV)) && - CHECK_HEADER_ADD_INCLUDE("iconv.h", "CFLAGS_ICONV", PHP_ICONV)) { + if (PKG_CHECK_MODULES("ICONV", "libiconv")) { + PHP_EVAL_INCLINE(ICONV_CFLAGS, "iconv"); + PHP_EVAL_LIBLINE(ICONV_LIBS, "iconv"); EXTENSION("iconv", "iconv.c", PHP_ICONV_SHARED, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); @@ -19,7 +19,7 @@ if (PHP_ICONV != "no") { } PHP_INSTALL_HEADERS("ext/iconv", "php_iconv.h"); } else { - WARNING("iconv support can't be enabled, libraries or headers are missing") + WARNING("iconv not enabled, libiconv package not found") PHP_ICONV = "no"; } } diff --git a/ext/intl/config.w32 b/ext/intl/config.w32 index f3c3e2cffd76a..beaad7ab628c7 100644 --- a/ext/intl/config.w32 +++ b/ext/intl/config.w32 @@ -3,8 +3,9 @@ ARG_ENABLE("intl", "Enable internationalization support", "no"); if (PHP_INTL != "no") { - if (CHECK_LIB("icuuc.lib", "intl", PHP_INTL) && - CHECK_HEADER_ADD_INCLUDE("unicode/utf.h", "CFLAGS_INTL")) { + if (PKG_CHECK_MODULES("ICU", "icu >= 57.1")) { + PHP_EVAL_INCLINE(ICU_CFLAGS, "intl"); + PHP_EVAL_LIBLINE(ICU_LIBS, "intl"); // always build as shared - zend_strtod.c/ICU type conflict EXTENSION("intl", "php_intl.c intl_convert.c intl_convertcpp.cpp intl_error.c ", true, "/I \"" + configure_module_dirname + "\" /DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); @@ -83,13 +84,11 @@ if (PHP_INTL != "no") { resourcebundle_iterator.c", "intl"); - if (CHECK_HEADER_ADD_INCLUDE("unicode/uspoof.h", "CFLAGS_INTL")) { - ADD_SOURCES(configure_module_dirname + "/spoofchecker", "\ - spoofchecker_class.c \ - spoofchecker_create.c \ - spoofchecker_main.c", - "intl"); - } + ADD_SOURCES(configure_module_dirname + "/spoofchecker", "\ + spoofchecker_class.c \ + spoofchecker_create.c \ + spoofchecker_main.c", + "intl"); ADD_SOURCES(configure_module_dirname + "/transliterator", "\ transliterator_class.c \ @@ -116,18 +115,8 @@ if (PHP_INTL != "no") { codepointiterator_methods.cpp ", "intl"); - ADD_FLAG("LIBS_INTL", "icudt.lib icuin.lib icuio.lib"); - - /* Compat for ICU before 58.1.*/ - if (CHECK_LIB("icule.lib", "intl", PHP_INTL)) { - ADD_FLAG("LIBS_INTL", "icule.lib"); - } - if (CHECK_LIB("iculx.lib", "intl", PHP_INTL)) { - ADD_FLAG("LIBS_INTL", "iculx.lib"); - } - - ADD_FLAG("CFLAGS_INTL", "/std:c++17 /EHsc /DUNISTR_FROM_CHAR_EXPLICIT=explicit /DUNISTR_FROM_STRING_EXPLICIT=explicit /DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1 /DU_HIDE_OBSOLETE_UTF_OLD_H=1"); + ADD_FLAG("CFLAGS_INTL", "/EHsc /DUNISTR_FROM_CHAR_EXPLICIT=explicit /DUNISTR_FROM_STRING_EXPLICIT=explicit /DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1 /DU_HIDE_OBSOLETE_UTF_OLD_H=1"); } else { - WARNING("intl not enabled; libraries and/or headers not found"); + WARNING("intl not enabled; ICU package not found"); } } diff --git a/ext/ldap/config.w32 b/ext/ldap/config.w32 index f9bc8662ac507..713670a2eb337 100644 --- a/ext/ldap/config.w32 +++ b/ext/ldap/config.w32 @@ -3,13 +3,10 @@ ARG_WITH("ldap", "LDAP support", "no"); if (PHP_LDAP != "no") { + if (PKG_CHECK_MODULES("OPENLDAP", "openldap")) { + PHP_EVAL_INCLINE(OPENLDAP_CFLAGS, "ldap"); + PHP_EVAL_LIBLINE(OPENLDAP_LIBS, "ldap"); - if (CHECK_HEADER_ADD_INCLUDE("ldap.h", "CFLAGS_LDAP", PHP_PHP_BUILD + "\\include\\openldap;" + PHP_PHP_BUILD + "\\openldap\\include;" + PHP_LDAP) && - CHECK_HEADER_ADD_INCLUDE("lber.h", "CFLAGS_LDAP", PHP_PHP_BUILD + "\\include\\openldap;" + PHP_PHP_BUILD + "\\openldap\\include;" + PHP_LDAP) && - SETUP_OPENSSL("ldap", PHP_LDAP) >= 2 && - CHECK_LIB("oldap32_a.lib", "ldap", PHP_LDAP) && - CHECK_LIB("olber32_a.lib", "ldap", PHP_LDAP)&& - CHECK_LIB("libsasl.lib", "ldap", PHP_LDAP)) { EXTENSION('ldap', 'ldap.c', null, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); AC_DEFINE('HAVE_LDAP_PARSE_RESULT', 1); diff --git a/ext/libxml/config.w32 b/ext/libxml/config.w32 index cc5f284dbc1c1..4de1bb69f8a3b 100644 --- a/ext/libxml/config.w32 +++ b/ext/libxml/config.w32 @@ -3,26 +3,22 @@ ARG_WITH("libxml", "LibXML support", "yes"); if (PHP_LIBXML == "yes") { - if (CHECK_LIB("libxml2_a_dll.lib;libxml2_a.lib", "libxml") && - ((PHP_ICONV != "no" && !PHP_ICONV_SHARED) || CHECK_LIB("libiconv_a.lib;iconv_a.lib;libiconv.lib;iconv.lib", "libxml")) && - CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_LIBXML", PHP_PHP_BUILD + "\\include\\libxml2") && - CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_LIBXML", PHP_PHP_BUILD + "\\include\\libxml2")) { - - if (GREP_HEADER("libxml/xmlversion.h", "#define\\s+LIBXML_VERSION\\s+(\\d+)", PHP_PHP_BUILD + "\\include\\libxml2") && - +RegExp.$1 >= 20904) { - - EXTENSION("libxml", "libxml.c mime_sniff.c", false /* never shared */, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); - AC_DEFINE("HAVE_LIBXML", 1, "Define to 1 if the PHP extension 'libxml' is available."); - ADD_FLAG("CFLAGS_LIBXML", "/D LIBXML_STATIC /D LIBXML_STATIC_FOR_DLL /D HAVE_WIN32_THREADS "); - if (!PHP_LIBXML_SHARED) { - ADD_DEF_FILE("ext\\libxml\\php_libxml2.def"); - } - PHP_INSTALL_HEADERS("ext/libxml", "php_libxml.h"); - } else { - WARNING("libxml support can't be enabled, libxml version >= 2.9.4 required"); + LIBXML2_ICONV_LIBS = ""; + if (PKG_CHECK_MODULES("LIBXML2", "libxml2 >= 2.9.4") && + ((PHP_ICONV != "no" && !PHP_ICONV_SHARED) || PKG_CHECK_MODULES("ICONV", "libiconv")) + ) { + PHP_EVAL_INCLINE(LIBXML2_CFLAGS, "libxml"); + PHP_EVAL_LIBLINE(LIBXML2_LIBS, "libxml"); + PHP_EVAL_LIBLINE(LIBXML2_ICONV_LIBS, "libxml"); + EXTENSION("libxml", "libxml.c mime_sniff.c", false /* never shared */, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); + AC_DEFINE("HAVE_LIBXML", 1, "Define to 1 if the PHP extension 'libxml' is available."); + ADD_FLAG("CFLAGS_LIBXML", "/D LIBXML_STATIC /D LIBXML_STATIC_FOR_DLL /D HAVE_WIN32_THREADS "); + if (!PHP_LIBXML_SHARED) { + ADD_DEF_FILE("ext\\libxml\\php_libxml2.def"); } + PHP_INSTALL_HEADERS("ext/libxml", "php_libxml.h"); } else { - WARNING("libxml support can't be enabled, iconv or libxml are missing") + WARNING("libxml not enabled, iconv or libxml2 >= 2.9.4 package not found") PHP_LIBXML = "no" } } diff --git a/ext/mbstring/config.w32 b/ext/mbstring/config.w32 index 070d3d73137ac..92be1eec3d03d 100644 --- a/ext/mbstring/config.w32 +++ b/ext/mbstring/config.w32 @@ -42,8 +42,9 @@ if (PHP_MBSTRING != "no") { AC_DEFINE('HAVE_MBSTRING', 1, "Define to 1 if the PHP extension 'mbstring' is available."); if (PHP_MBREGEX != "no") { - if (CHECK_HEADER_ADD_INCLUDE("oniguruma.h", "CFLAGS_MBSTRING", PHP_MBREGEX) && - CHECK_LIB("onig_a.lib;libonig_a.lib", "mbstring", PHP_MBSTRING)) { + if (PKG_CHECK_MODULES("ONIGURUMA", "oniguruma")) { + PHP_EVAL_INCLINE(ONIGURUMA_CFLAGS, "mbstring"); + PHP_EVAL_LIBLINE(ONIGURUMA_LIBS, "mbstring"); AC_DEFINE('HAVE_MBREGEX', 1, 'Define to 1 if mbstring has multibyte regex support enabled.'); /* XXX libonig is only usable as a static library ATM, code change required to link with a DLL. */ diff --git a/ext/pdo_firebird/config.w32 b/ext/pdo_firebird/config.w32 index 003a1a677082a..06c9d333ffab9 100644 --- a/ext/pdo_firebird/config.w32 +++ b/ext/pdo_firebird/config.w32 @@ -4,17 +4,13 @@ ARG_WITH("pdo-firebird", "Firebird support for PDO", "no"); if (PHP_PDO_FIREBIRD != "no") { - if (CHECK_LIB("fbclient_ms.lib", "pdo_firebird", PHP_PHP_BUILD + "\\interbase\\lib_ms;" + PHP_PDO_FIREBIRD) - && CHECK_HEADER_ADD_INCLUDE("ibase.h", "CFLAGS_PDO_FIREBIRD", - PHP_PHP_BUILD + "\\include\\interbase;" + PHP_PHP_BUILD + "\\interbase\\include;" + PHP_PDO_FIREBIRD) - && CHECK_HEADER_ADD_INCLUDE("firebird\\Interface.h", "CFLAGS_PDO_FIREBIRD", - PHP_PHP_BUILD + "\\include\\interbase;" + PHP_PHP_BUILD + "\\interbase\\include;" + PHP_PDO_FIREBIRD) - ) { - + if (PKG_CHECK_MODULES("FBCLIENT", "fbclient >= 3.0")) { + PHP_EVAL_INCLINE(FBCLIENT_CFLAGS, "pdo_firebird"); + PHP_EVAL_LIBLINE(FBCLIENT_LIBS, "pdo_firebird"); EXTENSION("pdo_firebird", "pdo_firebird.c firebird_driver.c firebird_statement.c pdo_firebird_utils.cpp"); ADD_FLAG("CFLAGS_PDO_FIREBIRD", "/EHsc"); } else { - WARNING("pdo_firebird not enabled; libraries and headers not found"); + WARNING("pdo_firebird not enabled; fbclient package not found"); } ADD_EXTENSION_DEP('pdo_firebird', 'pdo'); } diff --git a/ext/pdo_pgsql/config.w32 b/ext/pdo_pgsql/config.w32 index aec5db508d077..506ee63aba515 100644 --- a/ext/pdo_pgsql/config.w32 +++ b/ext/pdo_pgsql/config.w32 @@ -3,8 +3,9 @@ ARG_WITH("pdo-pgsql", "PostgreSQL support for PDO", "no"); if (PHP_PDO_PGSQL != "no") { - if (CHECK_LIB("libpq.lib", "pdo_pgsql", PHP_PDO_PGSQL) && - CHECK_HEADER_ADD_INCLUDE("libpq-fe.h", "CFLAGS_PDO_PGSQL", PHP_PDO_PGSQL + "\\include;" + PHP_PHP_BUILD + "\\include\\pgsql;" + PHP_PHP_BUILD + "\\include\\libpq;")) { + if (PKG_CHECK_MODULES("LIBPQ", "libpq")) { + PHP_EVAL_INCLINE(LIBPQ_CFLAGS, "pdo_pgsql"); + PHP_EVAL_LIBLINE(LIBPQ_LIBS, "pdo_pgsql"); EXTENSION("pdo_pgsql", "pdo_pgsql.c pgsql_driver.c pgsql_statement.c pgsql_sql_parser.c"); AC_DEFINE('HAVE_PDO_PGSQL', 1, "Define to 1 if the PHP extension 'pdo_pgsql' is available."); @@ -12,6 +13,6 @@ if (PHP_PDO_PGSQL != "no") { ADD_EXTENSION_DEP('pdo_pgsql', 'pdo'); ADD_MAKEFILE_FRAGMENT(); } else { - WARNING("pdo_pgsql not enabled; libraries and headers not found"); + WARNING("pdo_pgsql not enabled; libpq package not found"); } } diff --git a/ext/pdo_sqlite/config.w32 b/ext/pdo_sqlite/config.w32 index d1f94438925da..5b869e4b543f8 100644 --- a/ext/pdo_sqlite/config.w32 +++ b/ext/pdo_sqlite/config.w32 @@ -11,6 +11,6 @@ if (PHP_PDO_SQLITE != "no") { AC_DEFINE("HAVE_SQLITE3_CLOSE_V2", 1, "Define to 1 if SQLite library has the 'sqlite3_close_v2' function."); ADD_MAKEFILE_FRAGMENT(); } else { - WARNING("pdo_sqlite not enabled; libraries and/or headers not found"); + WARNING("pdo_sqlite not enabled; sqlite3 package not found"); } } diff --git a/ext/pgsql/config.w32 b/ext/pgsql/config.w32 index 3ca5fc2f16910..494b5d2f47b77 100644 --- a/ext/pgsql/config.w32 +++ b/ext/pgsql/config.w32 @@ -3,13 +3,14 @@ ARG_WITH("pgsql", "PostgreSQL support", "no"); if (PHP_PGSQL != "no") { - if (CHECK_LIB("libpq.lib", "pgsql", PHP_PGSQL) && - CHECK_HEADER_ADD_INCLUDE("libpq-fe.h", "CFLAGS_PGSQL", PHP_PGSQL + "\\include;" + PHP_PHP_BUILD + "\\include\\pgsql;" + PHP_PHP_BUILD + "\\include\\libpq;" + PHP_PGSQL)) { + if (PKG_CHECK_MODULES("LIBPQ", "libpq")) { + PHP_EVAL_INCLINE(LIBPQ_CFLAGS, "pgsql"); + PHP_EVAL_LIBLINE(LIBPQ_LIBS, "pgsql"); EXTENSION("pgsql", "pgsql.c", PHP_PGSQL_SHARED, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); AC_DEFINE('HAVE_PGSQL', 1, "Define to 1 if the PHP extension 'pgsql' is available."); ADD_FLAG("CFLAGS_PGSQL", "/D PGSQL_EXPORTS"); ADD_EXTENSION_DEP('pgsql', 'pcre'); } else { - WARNING("pgsql not enabled; libraries and headers not found"); + WARNING("pgsql not enabled; libpq package not found"); } } diff --git a/ext/readline/config.w32 b/ext/readline/config.w32 index 8f3a2db61f23c..2b8bae9bd6a6d 100644 --- a/ext/readline/config.w32 +++ b/ext/readline/config.w32 @@ -3,8 +3,9 @@ ARG_WITH("readline", "Readline support", "yes"); if (PHP_READLINE != "no") { - if (CHECK_LIB("edit_a.lib;edit.lib", "readline", PHP_READLINE) && - CHECK_HEADER_ADD_INCLUDE("editline/readline.h", "CFLAGS_READLINE")) { + if (PKG_CHECK_MODULES("WINEDITLINE", "wineditline")) { + PHP_EVAL_INCLINE(WINEDITLINE_CFLAGS, "readline"); + PHP_EVAL_LIBLINE(WINEDITLINE_LIBS, "readline"); EXTENSION("readline", "readline.c readline_cli.c"); ADD_FLAG("CFLAGS_READLINE", "/D HAVE_LIBEDIT"); ADD_FLAG("CFLAGS_READLINE", "/D HAVE_RL_COMPLETION_MATCHES"); diff --git a/ext/snmp/config.w32 b/ext/snmp/config.w32 index a2facb6946d67..49caa603ffcb7 100644 --- a/ext/snmp/config.w32 +++ b/ext/snmp/config.w32 @@ -3,16 +3,13 @@ ARG_WITH("snmp", "SNMP support", "no"); if (PHP_SNMP != "no") { - if (CHECK_HEADER_ADD_INCLUDE("snmp.h", "CFLAGS_SNMP", PHP_PHP_BUILD + "\\include\\net-snmp;" + PHP_SNMP) && - SETUP_OPENSSL("snmp", PHP_SNMP) >= 2) { - if (CHECK_LIB("netsnmp.lib", "snmp", PHP_SNMP)) { - EXTENSION('snmp', 'snmp.c'); - ADD_EXTENSION_DEP('snmp', 'spl'); - AC_DEFINE('HAVE_SNMP', 1, "Define to 1 if the PHP extension 'snmp' is available."); - } else { - WARNING("snmp not enabled; libraries and headers not found"); - } + if (PKG_CHECK_MODULES("SNMP", "netsnmp")) { + PHP_EVAL_INCLINE(SNMP_CFLAGS, "snmp"); + PHP_EVAL_LIBLINE(SNMP_LIBS, "snmp") + EXTENSION('snmp', 'snmp.c'); + ADD_EXTENSION_DEP('snmp', 'spl'); + AC_DEFINE('HAVE_SNMP', 1, "Define to 1 if the PHP extension 'snmp' is available."); } else { - WARNING("snmp not enabled; libraries and headers not found"); + WARNING("snmp not enabled; netsnmp package not found"); } } diff --git a/ext/sodium/config.w32 b/ext/sodium/config.w32 index bde6406294607..90b76c01127d5 100644 --- a/ext/sodium/config.w32 +++ b/ext/sodium/config.w32 @@ -3,7 +3,9 @@ ARG_WITH("sodium", "for libsodium support", "no"); if (PHP_SODIUM != "no") { - if (CHECK_LIB("libsodium.lib", "sodium", PHP_SODIUM) && CHECK_HEADER_ADD_INCLUDE("sodium.h", "CFLAGS_SODIUM")) { + if (PKG_CHECK_MODULES("LIBSODIUM", "libsodium")) { + PHP_EVAL_INCLINE(LIBSODIUM_CFLAGS, "sodium"); + PHP_EVAL_LIBLINE(LIBSODIUM_LIBS, "sodium"); EXTENSION("sodium", "libsodium.c sodium_pwhash.c"); AC_DEFINE('HAVE_LIBSODIUMLIB', 1 , "Define to 1 if the PHP extension 'sodium' is available."); PHP_INSTALL_HEADERS("ext/sodium", "php_libsodium.h"); diff --git a/ext/sqlite3/config.w32 b/ext/sqlite3/config.w32 index f99e4eb281dcc..e940cec6b5aa6 100644 --- a/ext/sqlite3/config.w32 +++ b/ext/sqlite3/config.w32 @@ -10,6 +10,6 @@ if (PHP_SQLITE3 != "no") { AC_DEFINE("HAVE_SQLITE3_ERRSTR", 1, "Define to 1 if SQLite library has the 'sqlite3_errstr' function."); AC_DEFINE("HAVE_SQLITE3_EXPANDED_SQL", 1, "Define to 1 if SQLite library has the 'sqlite3_expanded_sql' function."); } else { - WARNING("sqlite3 not enabled; libraries and/or headers not found"); + WARNING("sqlite3 not enabled; sqlite3 package not found"); } } diff --git a/ext/standard/config.w32 b/ext/standard/config.w32 index c7c14b8705ca2..95cf9fa347e52 100644 --- a/ext/standard/config.w32 +++ b/ext/standard/config.w32 @@ -3,14 +3,12 @@ ARG_WITH("password-argon2", "Argon2 support", "no"); if (PHP_PASSWORD_ARGON2 != "no") { - if (CHECK_LIB("argon2_a.lib;argon2.lib", null, PHP_PASSWORD_ARGON2) - && CHECK_HEADER_ADD_INCLUDE("argon2.h", "CFLAGS")) { - if (!CHECK_FUNC_IN_HEADER("argon2.h", "argon2id_hash_raw", PHP_PHP_BUILD + "\\include", "CFLAGS")) { - ERROR("Please verify that Argon2 header and libraries >= 20161029 are installed"); - } + if (PKG_CHECK_MODULES("LIBARGON", "libargon >= 20161029")) { + PHP_EVAL_INCLINE(LIBARGON_CFLAGS); + PHP_EVAL_LIBLINE(LIBARGON_LIBS); AC_DEFINE('HAVE_ARGON2LIB', 1, "Define to 1 if the system has the 'libargon2' library."); } else { - WARNING("Argon2 not enabled; libraries and headers not found"); + WARNING("Argon2 not enabled; libargon package not found"); } } diff --git a/ext/zip/config.w32 b/ext/zip/config.w32 index c0226f8976460..1dfb767c97a19 100644 --- a/ext/zip/config.w32 +++ b/ext/zip/config.w32 @@ -3,11 +3,9 @@ ARG_ENABLE("zip", "ZIP support", "yes,shared"); if (PHP_ZIP != "no") { - if (CHECK_HEADER_ADD_INCLUDE("zip.h", "CFLAGS_ZIP", PHP_PHP_BUILD + "\\include;" + PHP_EXTRA_INCLUDES) && - CHECK_HEADER_ADD_INCLUDE("zipconf.h", "CFLAGS_ZIP", PHP_PHP_BUILD + "\\lib\\libzip\\include;" + PHP_EXTRA_LIBS + "\\libzip\\include;" + PHP_ZIP) && - (PHP_ZIP_SHARED && CHECK_LIB("libzip.lib", "zip", PHP_ZIP) || - CHECK_LIB("libzip_a.lib", "zip", PHP_ZIP) && CHECK_LIB("libbz2_a.lib", "zip", PHP_ZIP) && CHECK_LIB("zlib_a.lib", "zip", PHP_ZIP) && CHECK_LIB("liblzma_a.lib", "zip", PHP_ZIP)) - ) { + if (PKG_CHECK_MODULES("ZIP", "libzip >= 0.11")) { + PHP_EVAL_INCLINE(ZIP_CFLAGS, "zip"); + PHP_EVAL_LIBLINE(ZIP_LIBS, "zip"); EXTENSION('zip', 'php_zip.c zip_stream.c'); ADD_EXTENSION_DEP('zip', 'pcre'); @@ -19,6 +17,6 @@ if (PHP_ZIP != "no") { AC_DEFINE('HAVE_ZIP', 1, "Define to 1 if the PHP extension 'zip' is available."); ADD_FLAG("CFLAGS_ZIP", "/D HAVE_SET_MTIME /D HAVE_ENCRYPTION /D HAVE_LIBZIP_VERSION /D HAVE_PROGRESS_CALLBACK /D HAVE_CANCEL_CALLBACK /D HAVE_METHOD_SUPPORTED /D LZMA_API_STATIC"); } else { - WARNING("zip not enabled; libraries and headers not found"); + WARNING("zip not enabled; libzip package not found"); } } diff --git a/ext/zlib/config.w32 b/ext/zlib/config.w32 index 3bc24d88e1735..88849b436a675 100644 --- a/ext/zlib/config.w32 +++ b/ext/zlib/config.w32 @@ -3,9 +3,9 @@ ARG_ENABLE("zlib", "ZLIB support", "yes"); if (PHP_ZLIB == "yes") { - if (CHECK_LIB("zlib_a.lib;zlib.lib", "zlib", PHP_ZLIB) && - CHECK_HEADER_ADD_INCLUDE("zlib.h", "CFLAGS", "..\\zlib;" + php_usual_include_suspects)) { - + if (PKG_CHECK_MODULES("ZLIB", "zlib >= 1.2.11")) { + PHP_EVAL_INCLINE(ZLIB_CFLAGS); + PHP_EVAL_LIBLINE(ZLIB_LIBS, "zlib"); EXTENSION("zlib", "zlib.c zlib_fopen_wrapper.c zlib_filter.c", PHP_ZLIB_SHARED, "/D ZLIB_EXPORTS /DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); AC_DEFINE("HAVE_ZLIB", 1, "Define to 1 if the PHP extension 'zlib' is available."); @@ -13,7 +13,7 @@ if (PHP_ZLIB == "yes") { ADD_DEF_FILE("ext\\zlib\\php_zlib.def"); } } else { - WARNING("zlib support can't be enabled, zlib is missing") + WARNING("zlib not enabled; zlib package not found") PHP_ZLIB = "no" } } diff --git a/sapi/apache2handler/config.w32 b/sapi/apache2handler/config.w32 index 710d6438f53d6..69ebab4e78b0b 100644 --- a/sapi/apache2handler/config.w32 +++ b/sapi/apache2handler/config.w32 @@ -10,15 +10,13 @@ if(PHP_APACHE2_4HANDLER != "no" && PHP_APACHE2HANDLER == "no") { if (PHP_APACHE2HANDLER != "no") { if (PHP_ZTS == "no") { WARNING("Apache module requires an --enable-zts build of PHP on windows"); - } else if (CHECK_HEADER_ADD_INCLUDE("httpd.h", "CFLAGS_APACHE2HANDLER", PHP_PHP_BUILD + "\\include\\apache2_4") && - CHECK_LIB("libhttpd.lib", "apache2handler", PHP_PHP_BUILD + "\\lib\\apache2_4") && - CHECK_LIB("libapr-1.lib", "apache2handler", PHP_PHP_BUILD + "\\lib\\apache2_4") && - CHECK_LIB("libaprutil-1.lib", "apache2handler", PHP_PHP_BUILD + "\\lib\\apache2_4") - ) { + } else if (PKG_CHECK_MODULES("APACHE", "apache")) { + PHP_EVAL_INCLINE(APACHE_CFLAGS, "apache2handler"); + PHP_EVAL_LIBLINE(APACHE_LIBS, "apache2handler"); SAPI('apache2handler', 'mod_php.c sapi_apache2.c apache_config.c php_functions.c', 'php' + PHP_VERSION + 'apache2_4.dll', '/D PHP_APACHE2_EXPORTS /DZEND_ENABLE_STATIC_TSRMLS_CACHE=1'); } else { - WARNING("Could not find Apache libraries/headers"); + WARNING("apache2handler not enabled; apache package not found"); } } diff --git a/sapi/cli/config.w32 b/sapi/cli/config.w32 index 2a3475e5de6dd..cefe12465d715 100644 --- a/sapi/cli/config.w32 +++ b/sapi/cli/config.w32 @@ -10,8 +10,9 @@ if (PHP_CLI == "yes") { ADD_FLAG("LDFLAGS_CLI", "/stack:67108864"); PHP_INSTALL_HEADERS("sapi/cli", "cli.h"); - if (CHECK_LIB("edit_a.lib;edit.lib", "cli", PHP_CLI) && - CHECK_HEADER_ADD_INCLUDE("editline/readline.h", "CFLAGS_CLI")) { + if (PKG_CHECK_MODULES("WINEDITLINE", "wineditline")) { + PHP_EVAL_INCLINE(WINEDITLINE_CFLAGS, "cli"); + PHP_EVAL_LIBLINE(WINEDITLINE_LIBS, "cli"); ADD_FLAG("CFLAGS_CLI", "/D HAVE_LIBEDIT"); } } diff --git a/win32/build/confutils.js b/win32/build/confutils.js index e847417bc77b0..69c81253cb5a1 100644 --- a/win32/build/confutils.js +++ b/win32/build/confutils.js @@ -1054,6 +1054,62 @@ function CHECK_HEADER_ADD_INCLUDE(header_name, flag_name, path_to_check, use_env return p; } +function PKG_CHECK_MODULES(prefix, list_of_modules) +{ + var out; + STDOUT.Write("Checking for " + list_of_modules + "... "); + if (!(out = execute("pkg-config --cflags " + list_of_modules))) { + STDOUT.WriteLine("not found"); + return false; + } + eval(prefix + "_CFLAGS = out"); + if (!(out = execute("pkg-config --libs " + list_of_modules))) { + STDOUT.WriteLine("not found"); + return false; + } + eval(prefix + "_LIBS = out"); + STDOUT.WriteLine("found"); + return true; +} + +function PHP_EVAL_LIBLINE(libline, libs_variable, not_extension) +{ + if (typeof libs_variable == "undefined") { + ldflags_variable = "LDFLAGS"; + arflags_variable = "ARFLAGS"; + libs_variable = "LIBS"; + } else { + ldflags_variable = "LDFLAGS_" + libs_variable.toUpperCase(); + arflags_variable = "ARFLAGS_" + libs_variable.toUpperCase(); + libs_variable = "LIBS_" + libs_variable.toUpperCase(); + } + var args = libline.split(/\s/); + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + if (arg.match(/^-l(.*)/)) { + ADD_FLAG(libs_variable, RegExp.$1 + ".lib"); + } else if (arg.match(/^-L(.*)/)) { + var path = condense_path(RegExp.$1); + ADD_FLAG(ldflags_variable, '/libpath:"' + path + '" '); + ADD_FLAG(arflags_variable, '/libpath:"' + path + '" '); + } + } +} + +function PHP_EVAL_INCLINE(headerline, cflags_variable) +{ + cflags_variable = typeof cflags_variable === "undefined" ? "CFLAGS" : "CFLAGS_" + cflags_variable.toUpperCase(); + var args = headerline.split(/\s/); + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + if (arg.match(/^-I(.*)/)) { + ADD_FLAG(cflags_variable, "/I " + condense_path(RegExp.$1)); + } else { + ADD_FLAG(cflags_variable, arg); + } + } +} + /* XXX check whether some manifest was originally supplied, otherwise keep using the default. */ function generate_version_info_manifest(makefiletarget) { @@ -3631,29 +3687,23 @@ function SETUP_ZLIB_LIB(target, path_to_check) return (PHP_ZLIB != "no" && !PHP_ZLIB_SHARED) || CHECK_LIB("zlib_a.lib;zlib.lib", target, path_to_check); } -function SETUP_OPENSSL(target, path_to_check, common_name, use_env, add_dir_part, add_to_flag_only) +function SETUP_OPENSSL(target) { - var ret = 0; - var cflags_var = "CFLAGS_" + target.toUpperCase(); - - if (CHECK_LIB("libcrypto.lib", target, path_to_check) && - CHECK_LIB("libssl.lib", target, path_to_check) && - CHECK_LIB("crypt32.lib", target, path_to_check, common_name) && - CHECK_HEADER_ADD_INCLUDE("openssl/ssl.h", cflags_var, path_to_check, use_env, add_dir_part, add_to_flag_only)) { - /* Openssl 1.1.x or later */ + if (PKG_CHECK_MODULES("OPENSSL", "openssl >= 1.1.1")) { + PHP_EVAL_INCLINE(OPENSSL_CFLAGS, target); + PHP_EVAL_LIBLINE(OPENSSL_LIBS, target); return 2; } - - return ret; + return 0; } -function SETUP_SQLITE3(target, path_to_check, shared) { - var cflags_var = "CFLAGS_" + target.toUpperCase(); - var libs = (shared ? "libsqlite3.lib;libsqlite3_a.lib" : "libsqlite3_a.lib;libsqlite3.lib"); - - return CHECK_LIB(libs, target, path_to_check) && - CHECK_HEADER_ADD_INCLUDE("sqlite3.h", cflags_var) && - CHECK_HEADER_ADD_INCLUDE("sqlite3ext.h", cflags_var); +function SETUP_SQLITE3(target) { + if (PKG_CHECK_MODULES("SQLITE3", "sqlite3 >= 3.7.7")) { + PHP_EVAL_INCLINE(SQLITE3_CFLAGS, target); + PHP_EVAL_LIBLINE(SQLITE3_LIBS, target); + return true; + } + return false; } function check_binary_tools_sdk() From b82ea7079c5cd72257f114a29a250df285747d8f Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 16 Nov 2024 14:02:54 +0100 Subject: [PATCH 03/12] set PATH; since we're not setting --with-php-build --- .github/scripts/windows/test_task.bat | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/scripts/windows/test_task.bat b/.github/scripts/windows/test_task.bat index 0d6117324d63d..8e18ecba08054 100644 --- a/.github/scripts/windows/test_task.bat +++ b/.github/scripts/windows/test_task.bat @@ -133,6 +133,8 @@ for %%i in (ldap) do ( set TEST_PHPDBG_EXECUTABLE=%PHP_BUILD_DIR%\phpdbg.exe +path=%DEPS_DIR%\bin;%PATH% + mkdir c:\tests_tmp nmake test TESTS="%OPCACHE_OPTS% -g FAIL,BORK,LEAK,XLEAK --no-progress -q --offline --show-diff --show-slow 1000 --set-timeout 120 --temp-source c:\tests_tmp --temp-target c:\tests_tmp %PARALLEL%" From 34521b981211627145056ea41cbb24df5bda04aa Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 16 Nov 2024 15:41:12 +0100 Subject: [PATCH 04/12] Fix libbzip2 minversion --- ext/bz2/config.w32 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/bz2/config.w32 b/ext/bz2/config.w32 index 3d0be904481fa..18e7b0f1aa524 100644 --- a/ext/bz2/config.w32 +++ b/ext/bz2/config.w32 @@ -3,7 +3,7 @@ ARG_WITH("bz2", "BZip2", "no"); if (PHP_BZ2 != "no") { - if (PKG_CHECK_MODULES("BZIP2", "libbzip2 >= 2.0.0")) { + if (PKG_CHECK_MODULES("BZIP2", "libbzip2 >= 1.0.0")) { PHP_EVAL_INCLINE(BZIP2_CFLAGS, "bz2"); PHP_EVAL_LIBLINE(BZIP2_LIBS, "bz2"); EXTENSION("bz2", "bz2.c bz2_filter.c"); From 7fa105b6d6af9642a33f5e390104c996d99c26b4 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 16 Nov 2024 16:48:15 +0100 Subject: [PATCH 05/12] Support enchant Fun fact: glib is not required, but let's pretend it would be. --- ext/enchant/config.w32 | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/ext/enchant/config.w32 b/ext/enchant/config.w32 index c50f48ffb6c81..112a11453c63e 100644 --- a/ext/enchant/config.w32 +++ b/ext/enchant/config.w32 @@ -3,23 +3,20 @@ ARG_WITH("enchant", "Enchant Support", "no"); if (PHP_ENCHANT == "yes") { - if (CHECK_HEADER_ADD_INCLUDE("enchant.h", "CFLAGS_ENCHANT", PHP_ENCHANT+ ";" + PHP_PHP_BUILD + "\\include\\enchant") && - CHECK_HEADER_ADD_INCLUDE("glib.h", "CFLAGS_ENCHANT", PHP_ENCHANT+ ";" + PHP_PHP_BUILD + "\\include\\glib-2.0")) { - if (CHECK_LIB("libenchant2.lib", "enchant", PHP_ENCHANT)) { - have_enchant = true; - } else if (CHECK_LIB("libenchant.lib", "enchant", PHP_ENCHANT)) { - have_enchant = true; - AC_DEFINE('HAVE_ENCHANT_BROKER_SET_PARAM', 1, "Define to 1 if Enchant library has the 'enchant_broker_set_param' function (available since 1.5.0 and removed in 2.x)."); - } else { - have_enchant = false; - WARNING('Could not find libenchant.lib; skipping'); - } - if (have_enchant) { - EXTENSION("enchant", "enchant.c"); - AC_DEFINE('HAVE_ENCHANT', 1, "Define to 1 if the PHP extension 'enchant' is available."); - AC_DEFINE('HAVE_ENCHANT_GET_VERSION', 1, "Define to 1 if Enchant library has the 'enchant_get_version' function (available since 1.6.0)."); - } + if (PKG_CHECK_MODULES("LIBENCHANT", "libenchant >= 2.0.0")) { + have_enchant = true; + } else if (PKG_CHECK_MODULES("LIBENCHANT", "libenchant >= 1.5.0")) { + have_enchant = true; + AC_DEFINE('HAVE_ENCHANT_BROKER_SET_PARAM', 1, "Define to 1 if Enchant library has the 'enchant_broker_set_param' function (available since 1.5.0 and removed in 2.x)."); } else { - WARNING('Could not find enchant.h; skipping'); + have_enchant = false; + WARNING('enchant not enabled; enchant package not found'); + } + if (have_enchant) { + PHP_EVAL_INCLINE(LIBENCHANT_CFLAGS, "enchant"); + PHP_EVAL_LIBLINE(LIBENCHANT_LIBS, "enchant"); + EXTENSION("enchant", "enchant.c"); + AC_DEFINE('HAVE_ENCHANT', 1, "Define to 1 if the PHP extension 'enchant' is available."); + AC_DEFINE('HAVE_ENCHANT_GET_VERSION', 1, "Define to 1 if Enchant library has the 'enchant_get_version' function (available since 1.6.0)."); } } From 11fd47a1cc75689eae0c8422cfe2a49dc4223680 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Wed, 27 Nov 2024 19:36:26 +0100 Subject: [PATCH 06/12] Add missing libenchant.pc Since glib.h is actually not included by ext/enchant, there is no need to pretend it would depend on glib. --- .pkg-config/pkgconfig/libenchant.pc | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .pkg-config/pkgconfig/libenchant.pc diff --git a/.pkg-config/pkgconfig/libenchant.pc b/.pkg-config/pkgconfig/libenchant.pc new file mode 100644 index 0000000000000..9d3588d35a6ee --- /dev/null +++ b/.pkg-config/pkgconfig/libenchant.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libenchant +Description: winlibs libenchant package +Url: https://github.com/winlibs/enchant +Version: 2.2.8-1 +Libs: -L${libdir} -llibenchant2 +Cflags: -I${includedir} From 81289e85414183f63a7120fbfcb08d0e7db96863 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Wed, 27 Nov 2024 19:52:43 +0100 Subject: [PATCH 07/12] Support curl --- .pkg-config/pkgconfig/libcurl.pc | 11 +++++++++++ .pkg-config/pkgconfig/libssh2.pc | 10 ++++++++++ .pkg-config/pkgconfig/nghttp2.pc | 10 ++++++++++ ext/curl/config.w32 | 11 +++++------ 4 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 .pkg-config/pkgconfig/libcurl.pc create mode 100644 .pkg-config/pkgconfig/libssh2.pc create mode 100644 .pkg-config/pkgconfig/nghttp2.pc diff --git a/.pkg-config/pkgconfig/libcurl.pc b/.pkg-config/pkgconfig/libcurl.pc new file mode 100644 index 0000000000000..2b10e0e418470 --- /dev/null +++ b/.pkg-config/pkgconfig/libcurl.pc @@ -0,0 +1,11 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libcurl +Description: winlibs libcurl package +Url: https://github.com/winlibs/cURL +Version: 8.10.1 +Requires: libssh2 nghttp2 +Libs: -L${libdir} -llibcurl_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/libssh2.pc b/.pkg-config/pkgconfig/libssh2.pc new file mode 100644 index 0000000000000..c9210be21177f --- /dev/null +++ b/.pkg-config/pkgconfig/libssh2.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libssh2 +Description: winlibs libssh2 package +Url: https://github.com/winlibs/libssh2 +Version: 1.11.1 +Libs: -L${libdir} -llibssh2 +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/nghttp2.pc b/.pkg-config/pkgconfig/nghttp2.pc new file mode 100644 index 0000000000000..0a03f240511c3 --- /dev/null +++ b/.pkg-config/pkgconfig/nghttp2.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: nghttp2 +Description: winlibs nghttp2 package +Url: https://github.com/winlibs/nghttp2 +Version: 1.63.0 +Libs: -L${libdir} -lnghttp2 +Cflags: -I${includedir} diff --git a/ext/curl/config.w32 b/ext/curl/config.w32 index db584c29e7ff4..12eb49087e9b0 100644 --- a/ext/curl/config.w32 +++ b/ext/curl/config.w32 @@ -3,16 +3,15 @@ ARG_WITH("curl", "cURL support", "no"); if (PHP_CURL != "no") { - if (CHECK_LIB("libcurl_a.lib;libcurl.lib", "curl", PHP_CURL) && - CHECK_HEADER_ADD_INCLUDE("curl/easy.h", "CFLAGS_CURL") && + if (PKG_CHECK_MODULES("LIBCURL", "libcurl") && SETUP_OPENSSL("curl", PHP_CURL) >= 2 && CHECK_LIB("winmm.lib", "curl", PHP_CURL) && CHECK_LIB("wldap32.lib", "curl", PHP_CURL) && SETUP_ZLIB_LIB("curl", PHP_CURL) && - (CHECK_LIB("normaliz.lib", "curl", PHP_CURL) && - CHECK_LIB("libssh2.lib", "curl", PHP_CURL) && - CHECK_LIB("nghttp2.lib", "curl", PHP_CURL)) - ) { + CHECK_LIB("normaliz.lib", "curl", PHP_CURL) + ) { + PHP_EVAL_INCLINE(LIBCURL_CFLAGS, "curl"); + PHP_EVAL_LIBLINE(LIBCURL_LIBS, "curl"); EXTENSION("curl", "interface.c multi.c share.c curl_file.c"); AC_DEFINE('HAVE_CURL', 1, "Define to 1 if the PHP extension 'curl' is available."); ADD_FLAG("CFLAGS_CURL", "/D CURL_STATICLIB /D PHP_CURL_EXPORTS=1"); From b09becd9361287edce41e1f261d5ad2f88cb98aa Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Wed, 27 Nov 2024 20:38:47 +0100 Subject: [PATCH 08/12] Support XML extensions --- .pkg-config/pkgconfig/libexslt.pc | 10 ++++++++ .pkg-config/pkgconfig/libxslt.pc | 10 ++++++++ ext/dom/config.w32 | 3 ++- ext/simplexml/config.w32 | 3 ++- ext/soap/config.w32 | 6 ++--- ext/xml/config.w32 | 4 ++-- ext/xmlreader/config.w32 | 6 ++--- ext/xmlwriter/config.w32 | 3 ++- ext/xsl/config.w32 | 39 ++++++++++--------------------- 9 files changed, 46 insertions(+), 38 deletions(-) create mode 100644 .pkg-config/pkgconfig/libexslt.pc create mode 100644 .pkg-config/pkgconfig/libxslt.pc diff --git a/.pkg-config/pkgconfig/libexslt.pc b/.pkg-config/pkgconfig/libexslt.pc new file mode 100644 index 0000000000000..4927de9c2a6a7 --- /dev/null +++ b/.pkg-config/pkgconfig/libexslt.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libexslt +Description: winlibs libexslt package +Url: https://github.com/winlibs/libxslt +Version: 1.1.39 +Libs: -L${libdir} -llibexslt_a +Cflags: -I${includedir} /DLIBEXSLT_STATIC diff --git a/.pkg-config/pkgconfig/libxslt.pc b/.pkg-config/pkgconfig/libxslt.pc new file mode 100644 index 0000000000000..3f9044ce2e5ed --- /dev/null +++ b/.pkg-config/pkgconfig/libxslt.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libxslt +Description: winlibs libxslt package +Url: https://github.com/winlibs/libxslt +Version: 1.1.39 +Libs: -L${libdir} -llibxslt_a +Cflags: -I${includedir} /DLIBXSLT_STATIC diff --git a/ext/dom/config.w32 b/ext/dom/config.w32 index 1db4f6d11ba14..4d1f70071e8bf 100644 --- a/ext/dom/config.w32 +++ b/ext/dom/config.w32 @@ -5,8 +5,9 @@ ARG_WITH("dom", "DOM support", "yes"); if (PHP_DOM == "yes") { if (PHP_LIBXML == "yes" && ADD_EXTENSION_DEP('dom', 'libxml') && - CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_DOM", PHP_PHP_BUILD + "\\include\\libxml2") + PKG_CHECK_MODULES("LIBXML2", "libxml2 >= 2.9.4") ) { + PHP_EVAL_INCLINE(LIBXML2_CFLAGS, "dom"); EXTENSION("dom", "php_dom.c attr.c document.c infra.c \ xml_document.c html_document.c xml_serializer.c html5_serializer.c html5_parser.c namespace_compat.c private_data.c \ domexception.c processinginstruction.c \ diff --git a/ext/simplexml/config.w32 b/ext/simplexml/config.w32 index 8942e6c93e3bf..b0c44cbc26e54 100644 --- a/ext/simplexml/config.w32 +++ b/ext/simplexml/config.w32 @@ -6,8 +6,9 @@ if (PHP_SIMPLEXML == "yes") { if(PHP_LIBXML == "yes" && ADD_EXTENSION_DEP('simplexml', 'libxml') && ADD_EXTENSION_DEP('simplexml', 'spl') && - CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_SIMPLEXML", PHP_PHP_BUILD + "\\include\\libxml2") + PKG_CHECK_MODULES("LIBXML2", "libxml2 >= 2.9.4") ) { + PHP_EVAL_INCLINE(LIBXML2_CFLAGS, "simplexml"); EXTENSION("simplexml", "simplexml.c"); AC_DEFINE("HAVE_SIMPLEXML", 1, "Define to 1 if the PHP extension 'simplexml' is available."); if (!PHP_SIMPLEXML_SHARED) { diff --git a/ext/soap/config.w32 b/ext/soap/config.w32 index 583f6a2b2e0d1..c3161c5e7d771 100644 --- a/ext/soap/config.w32 +++ b/ext/soap/config.w32 @@ -5,9 +5,9 @@ ARG_ENABLE("soap", "SOAP support", "no"); if (PHP_SOAP != "no") { if (PHP_LIBXML == "yes" && ADD_EXTENSION_DEP('soap', 'libxml') && - CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_SOAP", PHP_PHP_BUILD + "\\include\\libxml2") && - CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_SOAP", PHP_PHP_BUILD + "\\include\\libxml2") - ) { + PKG_CHECK_MODULES("LIBXML2", "libxml2 >= 2.9.4") + ) { + PHP_EVAL_INCLINE(LIBXML2_CFLAGS, "soap"); EXTENSION('soap', 'soap.c php_encoding.c php_http.c php_packet_soap.c php_schema.c php_sdl.c php_xml.c', null, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); AC_DEFINE('HAVE_SOAP', 1, "Define to 1 if the PHP extension 'soap' is available."); ADD_EXTENSION_DEP('soap', 'date'); diff --git a/ext/xml/config.w32 b/ext/xml/config.w32 index 00ef36841c38d..5f07e4637f32f 100644 --- a/ext/xml/config.w32 +++ b/ext/xml/config.w32 @@ -5,9 +5,9 @@ ARG_WITH("xml", "XML support", "yes"); if (PHP_XML == "yes") { if (PHP_LIBXML == "yes" && ADD_EXTENSION_DEP('xml', 'libxml') && - CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_XML", PHP_PHP_BUILD + "\\include\\libxml2") && - CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_XML", PHP_PHP_BUILD + "\\include\\libxml2") + PKG_CHECK_MODULES("LIBXML2", "libxml2 >= 2.9.4") ) { + PHP_EVAL_INCLINE(LIBXML2_CFLAGS, "xml"); EXTENSION("xml", "xml.c compat.c", null, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); AC_DEFINE("HAVE_XML", 1, "Define to 1 if the PHP extension 'xml' is available."); if (!PHP_XML_SHARED) { diff --git a/ext/xmlreader/config.w32 b/ext/xmlreader/config.w32 index d92672d427da7..a6af0675818d5 100644 --- a/ext/xmlreader/config.w32 +++ b/ext/xmlreader/config.w32 @@ -4,9 +4,9 @@ ARG_ENABLE("xmlreader", "XMLReader support", "yes"); if (PHP_XMLREADER == "yes" && PHP_LIBXML == "yes" && - CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_XMLREADER", PHP_PHP_BUILD + "\\include\\libxml2") && - CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_XMLREADER", PHP_PHP_BUILD + "\\include\\libxml2") - ) { + PKG_CHECK_MODULES("LIBXML2", "libxml2 >= 2.9.4") +) { + PHP_EVAL_INCLINE(LIBXML2_CFLAGS, "xmlreader"); EXTENSION("xmlreader", "php_xmlreader.c"); AC_DEFINE("HAVE_XMLREADER", 1, "Define to 1 if the PHP extension 'xmlreader' is available."); if (!PHP_XMLREADER_SHARED) { diff --git a/ext/xmlwriter/config.w32 b/ext/xmlwriter/config.w32 index 737e3fcd38c53..6b665a9db5ac7 100644 --- a/ext/xmlwriter/config.w32 +++ b/ext/xmlwriter/config.w32 @@ -3,7 +3,8 @@ ARG_ENABLE("xmlwriter", "XMLWriter support", "yes"); if (PHP_XMLWRITER == "yes" && PHP_LIBXML == "yes") { - if (CHECK_HEADER_ADD_INCLUDE('libxml/xmlwriter.h', 'CFLAGS_XMLWRITER', PHP_XMLWRITER + ";" + PHP_PHP_BUILD + "\\include\\libxml2")) { + if (PKG_CHECK_MODULES("LIBXML2", "libxml2 >= 2.9.4")) { + PHP_EVAL_INCLINE(LIBXML2_CFLAGS, "xmlwriter"); EXTENSION("xmlwriter", "php_xmlwriter.c"); AC_DEFINE("HAVE_XMLWRITER", 1, "Define to 1 if the PHP extension 'xmlwriter' is available."); if (!PHP_XMLWRITER_SHARED) { diff --git a/ext/xsl/config.w32 b/ext/xsl/config.w32 index 4990c3c5bd073..2256b04095438 100644 --- a/ext/xsl/config.w32 +++ b/ext/xsl/config.w32 @@ -4,32 +4,18 @@ ARG_WITH("xsl", "xsl support", "no"); if (PHP_XSL != "no") { if (PHP_DOM == "yes" && PHP_LIBXML == "yes" - && ADD_EXTENSION_DEP('xsl', 'libxml') - && ADD_EXTENSION_DEP('xsl', 'dom') - && CHECK_HEADER_ADD_INCLUDE("libxml/tree.h", "CFLAGS_XSL", PHP_PHP_BUILD + "\\include\\libxml2") + && ADD_EXTENSION_DEP('xsl', 'libxml') + && ADD_EXTENSION_DEP('xsl', 'dom') + && PKG_CHECK_MODULES("LIBXML2", "libxml2 >= 2.9.4") ) { - var ext_xsl_lib_found = false; - var ext_exslt_lib_found = false; - - if (CHECK_LIB("libxslt_a.lib", "xsl", PHP_XSL)) { - ext_xsl_lib_found = true; - ADD_FLAG("CFLAGS_XSL", "/D LIBXSLT_STATIC "); - if (CHECK_LIB("libexslt_a.lib", "xsl", PHP_XSL)) { - ADD_FLAG("CFLAGS_XSL", "/D LIBEXSLT_STATIC "); - ext_exslt_lib_found = true; - } - } else if (CHECK_LIB("libxslt.lib", "xsl", PHP_XSL)) { - ext_xsl_lib_found = true; - if (CHECK_LIB("libexslt.lib", "xsl", PHP_XSL)) { - ext_exslt_lib_found = true; - } - } - - if (ext_xsl_lib_found && CHECK_HEADER_ADD_INCLUDE("libxslt\\xslt.h", "CFLAGS_XSL")) { - if (ext_exslt_lib_found) { - if (CHECK_HEADER_ADD_INCLUDE("libexslt\\exslt.h", "CFLAGS_XSL")) { - AC_DEFINE("HAVE_XSL_EXSLT", 1, "Define to 1 if the system has the EXSLT extension library for XSLT."); - } + if (PKG_CHECK_MODULES("LIBXSLT", "libxslt")) { + PHP_EVAL_INCLINE(LIBXML2_CFLAGS, "xsl"); + PHP_EVAL_INCLINE(LIBXSLT_CFLAGS, "xsl"); + PHP_EVAL_LIBLINE(LIBXSLT_LIBS, "xsl"); + if (PKG_CHECK_MODULES("LIBEXSLT", "libexslt")) { + PHP_EVAL_INCLINE(LIBEXSLT_CFLAGS, "xsl"); + PHP_EVAL_LIBLINE(LIBEXSLT_LIBS, "xsl"); + AC_DEFINE("HAVE_XSL_EXSLT", 1, "Define to 1 if the system has the EXSLT extension library for XSLT."); } EXTENSION("xsl", "php_xsl.c xsltprocessor.c", PHP_XSL_SHARED); AC_DEFINE("HAVE_XSL", 1, "Define to 1 if the PHP extension 'xsl' is available."); @@ -40,9 +26,8 @@ if (PHP_XSL != "no") { ADD_FLAG("LDFLAGS_XSL", "/nodefaultlib:msvcrt"); } } - } else { - WARNING("xsl not enabled; libraries and headers not found"); + WARNING("xsl not enabled; libxslt package not found"); } } else { WARNING("xsl not enabled; DOM extension required"); From f40fd0f83d0844f63d54db8e8b452802f71a5557 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Wed, 27 Nov 2024 20:50:45 +0100 Subject: [PATCH 09/12] Use pkg-config for SETUP_ZLIB_LIB() --- ext/curl/config.w32 | 2 +- ext/gd/config.w32 | 10 +++++----- ext/mysqlnd/config.w32 | 5 ++--- win32/build/confutils.js | 9 ++++++++- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ext/curl/config.w32 b/ext/curl/config.w32 index 12eb49087e9b0..61b27c4bd9625 100644 --- a/ext/curl/config.w32 +++ b/ext/curl/config.w32 @@ -7,7 +7,7 @@ if (PHP_CURL != "no") { SETUP_OPENSSL("curl", PHP_CURL) >= 2 && CHECK_LIB("winmm.lib", "curl", PHP_CURL) && CHECK_LIB("wldap32.lib", "curl", PHP_CURL) && - SETUP_ZLIB_LIB("curl", PHP_CURL) && + SETUP_ZLIB_LIB("curl") && CHECK_LIB("normaliz.lib", "curl", PHP_CURL) ) { PHP_EVAL_INCLINE(LIBCURL_CFLAGS, "curl"); diff --git a/ext/gd/config.w32 b/ext/gd/config.w32 index b7daab44c33e5..71d6df4c47571 100644 --- a/ext/gd/config.w32 +++ b/ext/gd/config.w32 @@ -8,11 +8,11 @@ if (PHP_GD != "no") { if ( PKG_CHECK_MODULES("GD", "libjpeg freetype libpng libiconv") && CHECK_HEADER_ADD_INCLUDE("gd.h", "CFLAGS_GD", PHP_GD + ";ext\\gd\\libgd") && - SETUP_ZLIB_LIB("gd", PHP_GD) && - CHECK_HEADER_ADD_INCLUDE("zlib.h", "CFLAGS", "..\\zlib;" + php_usual_include_suspects) - ) { - PHP_EVAL_INCLINE(GD_CFLAGS, "gd"); - PHP_EVAL_LIBLINE(GD_LIBS, "gd"); + SETUP_ZLIB_LIB("gd") && PKG_CHECK_MODULES("ZLIB", "zlib") + ) { + PHP_EVAL_INCLINE(GD_CFLAGS, "gd"); + PHP_EVAL_LIBLINE(GD_LIBS, "gd"); + PHP_EVAL_INCLINE(ZLIB_CFLAGS); if (PKG_CHECK_MODULES("LIBXPM", "libxpm")) { PHP_EVAL_INCLINE(LIBXPM_CFLAGS, "gd"); diff --git a/ext/mysqlnd/config.w32 b/ext/mysqlnd/config.w32 index cf6bf4b61ccc1..70cc822bf0367 100644 --- a/ext/mysqlnd/config.w32 +++ b/ext/mysqlnd/config.w32 @@ -28,9 +28,8 @@ if (PHP_MYSQLND != "no") { "mysqlnd_wireprotocol.c " + "php_mysqlnd.c "; EXTENSION("mysqlnd", mysqlnd_source, false, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); - if (SETUP_ZLIB_LIB("mysqlnd", PHP_MYSQLND) && - CHECK_HEADER_ADD_INCLUDE("zlib.h", "CFLAGS", "..\\zlib;" + php_usual_include_suspects) - ) { + if (SETUP_ZLIB_LIB("mysqlnd") && PKG_CHECK_MODULES("ZLIB", "zlib")) { + PHP_EVAL_INCLINE(ZLIB_CFLAGS); AC_DEFINE("MYSQLND_COMPRESSION_ENABLED", 1, "Define to 1 if mysqlnd has compressed protocol support."); AC_DEFINE("MYSQLND_SSL_SUPPORTED", 1, "Define to 1 if mysqlnd core SSL is enabled."); if (CHECK_LIB("crypt32.lib", "mysqlnd")) { diff --git a/win32/build/confutils.js b/win32/build/confutils.js index 69c81253cb5a1..c8409c0b4fda6 100644 --- a/win32/build/confutils.js +++ b/win32/build/confutils.js @@ -3684,7 +3684,14 @@ function ADD_MAKEFILE_FRAGMENT(src_file) function SETUP_ZLIB_LIB(target, path_to_check) { - return (PHP_ZLIB != "no" && !PHP_ZLIB_SHARED) || CHECK_LIB("zlib_a.lib;zlib.lib", target, path_to_check); + var pcm; + if ((PHP_ZLIB != "no" && !PHP_ZLIB_SHARED) || (pcm = PKG_CHECK_MODULES("ZLIB", "zlib"))) { + if (pcm) { + PHP_EVAL_LIBLINE(ZLIB_CFLAGS, target); + } + return true; + } + return false; } function SETUP_OPENSSL(target) From 0f364cd9d8f483ac979a41153c3d5d558b57e4af Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Wed, 27 Nov 2024 23:22:57 +0100 Subject: [PATCH 10/12] Support tidy --- .pkg-config/pkgconfig/libtidy.pc | 10 ++++++++++ ext/tidy/config.w32 | 22 ++++++---------------- 2 files changed, 16 insertions(+), 16 deletions(-) create mode 100644 .pkg-config/pkgconfig/libtidy.pc diff --git a/.pkg-config/pkgconfig/libtidy.pc b/.pkg-config/pkgconfig/libtidy.pc new file mode 100644 index 0000000000000..a03af0d5f945d --- /dev/null +++ b/.pkg-config/pkgconfig/libtidy.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libtidy +Description: winlibs libtidy package +Url: https://github.com/winlibs/libtidy +Version: 5.6.0-1 +Libs: -L${libdir} -ltidy_a +Cflags: -I${includedir} /DTIDY_STATIC=1 diff --git a/ext/tidy/config.w32 b/ext/tidy/config.w32 index a1f93f2976af8..c4d8f2cab5cca 100644 --- a/ext/tidy/config.w32 +++ b/ext/tidy/config.w32 @@ -3,18 +3,12 @@ ARG_WITH("tidy", "TIDY support", "no"); if (PHP_TIDY != "no") { - var tidy_static = false; - if ((CHECK_LIB("libtidy_a.lib;tidy_a.lib", "tidy", PHP_TIDY) && (tidy_static = true) || - CHECK_LIB("libtidy.lib;tidy.lib", "tidy", PHP_TIDY)) && - ( - CHECK_HEADER_ADD_INCLUDE("tidy.h", "CFLAGS_TIDY") || - CHECK_HEADER_ADD_INCLUDE("tidy/tidy.h", "CFLAGS_TIDY", null, null, true) || - CHECK_HEADER_ADD_INCLUDE("libtidy/tidy.h", "CFLAGS_TIDY", null, null, true) - )) { + if (PKG_CHECK_MODULES("LIBTIDY", "libtidy")) { + PHP_EVAL_INCLINE(LIBTIDY_CFLAGS, "tidy"); + PHP_EVAL_LIBLINE(LIBTIDY_LIBS, "tidy"); - if (CHECK_HEADER_ADD_INCLUDE("tidybuffio.h", "CFLAGS_TIDY")) { - AC_DEFINE('HAVE_TIDYBUFFIO_H', 1, 'Define to 1 if you have the header file.'); - } + // FIXME: define only if has tidybuffio.h + AC_DEFINE('HAVE_TIDYBUFFIO_H', 1, 'Define to 1 if you have the header file.'); EXTENSION("tidy", "tidy.c"); AC_DEFINE('HAVE_TIDY', 1, "Define to 1 if the PHP extension 'tidy' is available."); @@ -25,11 +19,7 @@ if (PHP_TIDY != "no") { if (!PHP_TIDY_SHARED) { ADD_DEF_FILE("ext\\tidy\\php_tidy.def"); } - if (tidy_static) { - ADD_FLAG("CFLAGS_TIDY", "/DTIDY_STATIC=1"); - } - } else { - WARNING("tidy not enabled; libraries and headers not found"); + WARNING("tidy not enabled; libtidy package not found"); } } From db1a8738d8294c31512b9b4280fea9267e7f8ea4 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Wed, 27 Nov 2024 23:29:47 +0100 Subject: [PATCH 11/12] Support ffi --- .pkg-config/pkgconfig/libffi.pc | 10 ++++++++++ ext/ffi/config.w32 | 12 ++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 .pkg-config/pkgconfig/libffi.pc diff --git a/.pkg-config/pkgconfig/libffi.pc b/.pkg-config/pkgconfig/libffi.pc new file mode 100644 index 0000000000000..a1686b3c12421 --- /dev/null +++ b/.pkg-config/pkgconfig/libffi.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libffi +Description: winlibs libffi package +Url: https://github.com/winlibs/libffi +Version: 3.3pl1 +Libs: -L${libdir} -llibffi +Cflags: -I${includedir} diff --git a/ext/ffi/config.w32 b/ext/ffi/config.w32 index cfe54706a871a..1bc73a9248a66 100644 --- a/ext/ffi/config.w32 +++ b/ext/ffi/config.w32 @@ -1,8 +1,9 @@ ARG_WITH('ffi', 'ffi support', 'no'); if (PHP_FFI != 'no') { - if (CHECK_HEADER_ADD_INCLUDE("ffi.h", "CFLAGS_FFI", PHP_FFI+ ";" + PHP_PHP_BUILD + "\\include") && - CHECK_LIB("libffi.lib", "ffi", PHP_FFI)) { + if (PKG_CHECK_MODULES("LIBFFI", "libffi")) { + PHP_EVAL_INCLINE(LIBFFI_CFLAGS, "ffi"); + PHP_EVAL_LIBLINE(LIBFFI_LIBS, "ffi"); AC_DEFINE('HAVE_FFI', 1, "Define to 1 if the PHP extension 'ffi' is available."); if (!X64) { @@ -13,12 +14,11 @@ if (PHP_FFI != 'no') { AC_DEFINE('HAVE_FFI_SYSV', 1, 'Define to 1 if libffi supports the sysv calling convention.'); } // Available in https://github.com/winlibs/libffi. - if (GREP_HEADER("ffitarget.h", "FFI_VECTORCALL_PARTIAL", PHP_PHP_BUILD + "\\include")) { - AC_DEFINE('HAVE_FFI_VECTORCALL_PARTIAL', 1, 'Define to 1 if libffi partially supports the vectorcall calling convention.'); - } + // FIXME: only define if actually supported + AC_DEFINE('HAVE_FFI_VECTORCALL_PARTIAL', 1, 'Define to 1 if libffi partially supports the vectorcall calling convention.'); EXTENSION('ffi', 'ffi.c ffi_parser.c', null, '/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1'); } else { - WARNING('ffi not enabled, headers or libraries not found'); + WARNING('ffi not enabled; libffi package not found'); } } From 998a58862946e560e13e91341ce3b13f1991432b Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Wed, 27 Nov 2024 23:34:33 +0100 Subject: [PATCH 12/12] Fix snmp --- .pkg-config/pkgconfig/{netsnmp.pc => net-snmp.pc} | 2 +- ext/snmp/config.w32 | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) rename .pkg-config/pkgconfig/{netsnmp.pc => net-snmp.pc} (85%) diff --git a/.pkg-config/pkgconfig/netsnmp.pc b/.pkg-config/pkgconfig/net-snmp.pc similarity index 85% rename from .pkg-config/pkgconfig/netsnmp.pc rename to .pkg-config/pkgconfig/net-snmp.pc index cda9e6154be68..1bf9510c94c38 100644 --- a/.pkg-config/pkgconfig/netsnmp.pc +++ b/.pkg-config/pkgconfig/net-snmp.pc @@ -6,6 +6,6 @@ Name: net-snmp Description: winlib net-snmp package URL: https://github.com/winlibs/net-snmp Version: 5.9.4 -Requires: libcrypto libssl +Requires: openssl Libs: -L${libdir} -lnetsnmp Cflags: -I${includedir} diff --git a/ext/snmp/config.w32 b/ext/snmp/config.w32 index 49caa603ffcb7..2a60d426854df 100644 --- a/ext/snmp/config.w32 +++ b/ext/snmp/config.w32 @@ -3,9 +3,9 @@ ARG_WITH("snmp", "SNMP support", "no"); if (PHP_SNMP != "no") { - if (PKG_CHECK_MODULES("SNMP", "netsnmp")) { - PHP_EVAL_INCLINE(SNMP_CFLAGS, "snmp"); - PHP_EVAL_LIBLINE(SNMP_LIBS, "snmp") + if (PKG_CHECK_MODULES("NET_SNMP", "net-snmp")) { + PHP_EVAL_INCLINE(NET_SNMP_CFLAGS, "snmp"); + PHP_EVAL_LIBLINE(NET_SNMP_LIBS, "snmp") EXTENSION('snmp', 'snmp.c'); ADD_EXTENSION_DEP('snmp', 'spl'); AC_DEFINE('HAVE_SNMP', 1, "Define to 1 if the PHP extension 'snmp' is available.");