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/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/.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%" 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: diff --git a/.pkg-config/pkg-config.exe b/.pkg-config/pkg-config.exe new file mode 100644 index 0000000000000..3cfee05ecaab9 Binary files /dev/null and b/.pkg-config/pkg-config.exe differ diff --git a/.pkg-config/pkgconfig/ICU.pc b/.pkg-config/pkgconfig/ICU.pc new file mode 100644 index 0000000000000..73ca97529338f --- /dev/null +++ b/.pkg-config/pkgconfig/ICU.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +includedir=${prefix}/include +libdir=${prefix}/lib + +Name: ICU +Description: winlibs ICU package +Url: https://github.com/winlibs/icu4c +Version: 75.1 +Libs: -L${libdir} -licuuc -licudt -licuin -licuio +Cflags: -I${includedir} /std:c++17 diff --git a/.pkg-config/pkgconfig/apache.pc b/.pkg-config/pkgconfig/apache.pc new file mode 100644 index 0000000000000..91c70a0c754cc --- /dev/null +++ b/.pkg-config/pkgconfig/apache.pc @@ -0,0 +1,9 @@ +prefix=C:/usr +libdir=${prefix}/lib/apache2_4 +includedir=${prefix}/include/apache2_4 + +Name: apache +Description: winlibs apache package +Version: 2.4.43 +Libs: -L${libdir} -llibhttpd -llibapr-1 -llibaprutil-1 +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/cyrus-sasl.pc b/.pkg-config/pkgconfig/cyrus-sasl.pc new file mode 100644 index 0000000000000..54c068c0ac4f3 --- /dev/null +++ b/.pkg-config/pkgconfig/cyrus-sasl.pc @@ -0,0 +1,11 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: cyrus-sasl +Description: winlib cyrus-sasl package +URL: https://github.com/winlibs/cyrus-sasl +Version: 3.0.15pl1 +Requires: openssl +Libs: -L${libdir} -llibsasl +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/fbclient.pc b/.pkg-config/pkgconfig/fbclient.pc new file mode 100644 index 0000000000000..ffbf40f5ff739 --- /dev/null +++ b/.pkg-config/pkgconfig/fbclient.pc @@ -0,0 +1,9 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/interbase + +Name: fbclient +Description: winlibs fbclient package +Version: 4.0.4 +Libs: -L${libdir} -lfbclient_ms +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/freetype.pc b/.pkg-config/pkgconfig/freetype.pc new file mode 100644 index 0000000000000..8b0e760099dc8 --- /dev/null +++ b/.pkg-config/pkgconfig/freetype.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/freetype2 + +Name: freetype +Description: winlibs freetype package +Url: https://github.com/winlibs/freetype +Version: 2.13.3 +Libs: -L${libdir} -lfreetype_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/gettext.pc b/.pkg-config/pkgconfig/gettext.pc new file mode 100644 index 0000000000000..9354f99427f90 --- /dev/null +++ b/.pkg-config/pkgconfig/gettext.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: gettext +Description: winlibs gettext package +Url: https://github.com/winlibs/gettext +Version: 0.18.3 +Libs: -L${libdir} -llibintl_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/libargon.pc b/.pkg-config/pkgconfig/libargon.pc new file mode 100644 index 0000000000000..66ad5e453bbae --- /dev/null +++ b/.pkg-config/pkgconfig/libargon.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libargon +Description: winlibs libargon package +Url: https://github.com/winlibs/argon2 +Version: 20190702 +Libs: -L${libdir} -largon2_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/libavif.pc b/.pkg-config/pkgconfig/libavif.pc new file mode 100644 index 0000000000000..0968c447e175b --- /dev/null +++ b/.pkg-config/pkgconfig/libavif.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/webp + +Name: libavif +Description: winlibs libavif package +Url: https://github.com/winlibs/libavif +Version: 1.1.1 +Libs: -L${libdir} -lavif_a -laom_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/libbzip2.pc b/.pkg-config/pkgconfig/libbzip2.pc new file mode 100644 index 0000000000000..4332e4bb5038f --- /dev/null +++ b/.pkg-config/pkgconfig/libbzip2.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libbzip2 +Description: winlibs libbzip2 package +Url: https://github.com/winlibs/libbzip2 +Version: 1.0.8 +Libs: -L${libdir} -llibbz2_a +Cflags: -I${includedir} 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/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} 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/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/.pkg-config/pkgconfig/libiconv.pc b/.pkg-config/pkgconfig/libiconv.pc new file mode 100644 index 0000000000000..c60d9a7c52ce7 --- /dev/null +++ b/.pkg-config/pkgconfig/libiconv.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libiconv +Description: winlibs libiconv package +Url: https://github.com/winlibs/libiconv +Version: 1.17.1 +Libs: -L${libdir} -llibiconv_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/libjpeg.pc b/.pkg-config/pkgconfig/libjpeg.pc new file mode 100644 index 0000000000000..b8789e0d49f74 --- /dev/null +++ b/.pkg-config/pkgconfig/libjpeg.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libjpeg +Description: winlibs libjpeg package +Url: https://github.com/winlibs/libjpeg +Version: 3.0.3 +Libs: -L${libdir} -llibjpeg_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/liblmdb.pc b/.pkg-config/pkgconfig/liblmdb.pc new file mode 100644 index 0000000000000..b6593ef6eec57 --- /dev/null +++ b/.pkg-config/pkgconfig/liblmdb.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: liblmdb +Description: winlibs liblmdb package +Url: https://github.com/winlibs/lmdb +Version: 0.9.33 +Libs: -L${libdir} -lliblmdb_a -lntdll +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/liblzma.pc b/.pkg-config/pkgconfig/liblzma.pc new file mode 100644 index 0000000000000..4c9ec06c890d9 --- /dev/null +++ b/.pkg-config/pkgconfig/liblzma.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: liblzma +Description: winlibs liblzma package +Url: https://github.com/winlibs/liblzma +Version: 5.6.3 +Libs: -L${libdir} -lliblzma_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/libpng.pc b/.pkg-config/pkgconfig/libpng.pc new file mode 100644 index 0000000000000..47ba380d7d034 --- /dev/null +++ b/.pkg-config/pkgconfig/libpng.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/libpng16 + +Name: libpng +Description: winlibs libpng package +Url: https://github.com/winlibs/libpng +Version: 1.6.43 +Libs: -L${libdir} -llibpng_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/libpq.pc b/.pkg-config/pkgconfig/libpq.pc new file mode 100644 index 0000000000000..aa1675c489510 --- /dev/null +++ b/.pkg-config/pkgconfig/libpq.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/libpq + +Name: libpq +Description: winlibs libpq package +Url: https://github.com/winlibs/postgresql +Version: 16.4 +Libs: -L${libdir} -llibpq +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/libqdbm.pc b/.pkg-config/pkgconfig/libqdbm.pc new file mode 100644 index 0000000000000..932250a28b2b3 --- /dev/null +++ b/.pkg-config/pkgconfig/libqdbm.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/qdbm + +Name: libqdbm +Description: winlibs libqdbm package +Url: https://github.com/winlibs/qdbm +Version: 1.18.78 +Libs: -L${libdir} -lqdbm_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/libsodium.pc b/.pkg-config/pkgconfig/libsodium.pc new file mode 100644 index 0000000000000..9b6f0ac79d63a --- /dev/null +++ b/.pkg-config/pkgconfig/libsodium.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libsodium +Description: winlibs libsodium package +Url: https://github.com/winlibs/libsodium +Version: 1.0.20 +Libs: -L${libdir} -llibsodium +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/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/.pkg-config/pkgconfig/libwebp.pc b/.pkg-config/pkgconfig/libwebp.pc new file mode 100644 index 0000000000000..3ac05af368715 --- /dev/null +++ b/.pkg-config/pkgconfig/libwebp.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/webp + +Name: libwebp +Description: winlibs libwebp package +Url: https://github.com/winlibs/libwebp +Version: 1.3.2 +Libs: -L${libdir} -llibwebp_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/libxml2.pc b/.pkg-config/pkgconfig/libxml2.pc new file mode 100644 index 0000000000000..686595c7ecf58 --- /dev/null +++ b/.pkg-config/pkgconfig/libxml2.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/libxml2 + +Name: libxml2 +Description: winlibs libxml2 package +Url: https://github.com/winlibs/libxml2 +Version: 2.11.9 +Libs: -L${libdir} -llibxml2_a_dll +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/libxpm.pc b/.pkg-config/pkgconfig/libxpm.pc new file mode 100644 index 0000000000000..ab4dbb6bf8a84 --- /dev/null +++ b/.pkg-config/pkgconfig/libxpm.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/X11 + +Name: libxpm +Description: winlibs libxpm package +Url: https://github.com/winlibs/libxpm +Version: 1.6.43 +Libs: -L${libdir} -llibxpm_a +Cflags: -I${includedir} 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/.pkg-config/pkgconfig/libzip.pc b/.pkg-config/pkgconfig/libzip.pc new file mode 100644 index 0000000000000..fe552b1ea70a6 --- /dev/null +++ b/.pkg-config/pkgconfig/libzip.pc @@ -0,0 +1,11 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: libzip +Description: winlibs libzip package +Url: https://github.com/winlibs/libzip +Version: 1.11.2 +Requires: libbzip2 zlib liblzma +Libs: -L${libdir} -llibzip_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/mpir.pc b/.pkg-config/pkgconfig/mpir.pc new file mode 100644 index 0000000000000..34aba6a8b4cea --- /dev/null +++ b/.pkg-config/pkgconfig/mpir.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/mpir + +Name: mpir +Description: winlibs mpir package +Url: https://github.com/winlibs/mpir +Version: 3.0.0 +Libs: -L${libdir} -lmpir_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/net-snmp.pc b/.pkg-config/pkgconfig/net-snmp.pc new file mode 100644 index 0000000000000..1bf9510c94c38 --- /dev/null +++ b/.pkg-config/pkgconfig/net-snmp.pc @@ -0,0 +1,11 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: net-snmp +Description: winlib net-snmp package +URL: https://github.com/winlibs/net-snmp +Version: 5.9.4 +Requires: openssl +Libs: -L${libdir} -lnetsnmp +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/.pkg-config/pkgconfig/oniguruma.pc b/.pkg-config/pkgconfig/oniguruma.pc new file mode 100644 index 0000000000000..fc65ee438aa1a --- /dev/null +++ b/.pkg-config/pkgconfig/oniguruma.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: oniguruma +Description: winlib oniguruma package +URL: https://github.com/winlibs/oniguruma +Version: 6.9.9 +Libs: -L${libdir} -lonig_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/openldap.pc b/.pkg-config/pkgconfig/openldap.pc new file mode 100644 index 0000000000000..d9cbb08e2d3e9 --- /dev/null +++ b/.pkg-config/pkgconfig/openldap.pc @@ -0,0 +1,11 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/openldap + +Name: openldap +Description: winlib openldap package +URL: https://github.com/winlibs/openldap +Version: 2.4.47 +Requires: cyrus-sasl openssl +Libs: -L${libdir} -lolber32_a -loldap32_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/openssl.pc b/.pkg-config/pkgconfig/openssl.pc new file mode 100644 index 0000000000000..6a76c70a87a18 --- /dev/null +++ b/.pkg-config/pkgconfig/openssl.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: openssl +Description: winlib openssl package +URL: https://github.com/winlibs/openssl +Version: 3.0.15pl1 +Libs: -L${libdir} -lcrypt32 -llibcrypto -llibssl +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/sqlite3.pc b/.pkg-config/pkgconfig/sqlite3.pc new file mode 100644 index 0000000000000..c231c41c25e8d --- /dev/null +++ b/.pkg-config/pkgconfig/sqlite3.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: sqlite3 +Description: winlibs sqlite3 package +Url: https://github.com/winlibs/sqlite3 +Version: 3.46.0 +Libs: -L${libdir} -llibsqlite3 +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/wineditline.pc b/.pkg-config/pkgconfig/wineditline.pc new file mode 100644 index 0000000000000..a5c452d28e0ed --- /dev/null +++ b/.pkg-config/pkgconfig/wineditline.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include/editline + +Name: wineditline +Description: winlibs wineditline package +Url: https://github.com/winlibs/wineditline +Version: 2.206 +Libs: -L${libdir} -ledit_a +Cflags: -I${includedir} diff --git a/.pkg-config/pkgconfig/zlib.pc b/.pkg-config/pkgconfig/zlib.pc new file mode 100644 index 0000000000000..020cd5e63d1d7 --- /dev/null +++ b/.pkg-config/pkgconfig/zlib.pc @@ -0,0 +1,10 @@ +prefix=C:/usr +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: zlib +Description: winlibs zlib package +Url: https://github.com/winlibs/zlib +Version: 1.3.1 +Libs: -L${libdir} -lzlib_a +Cflags: -I${includedir} diff --git a/ext/bz2/config.w32 b/ext/bz2/config.w32 index afbb8c648cc5c..18e7b0f1aa524 100644 --- a/ext/bz2/config.w32 +++ b/ext/bz2/config.w32 @@ -3,8 +3,9 @@ ARG_WITH("bz2", "BZip2", "no"); if (PHP_BZ2 != "no") { - if (CHECK_LIB("libbz2_a.lib;libbz2.lib", "bz2", PHP_BZ2) && - CHECK_HEADER_ADD_INCLUDE("bzlib.h", "CFLAGS_BZ2")) { + 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"); 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/curl/config.w32 b/ext/curl/config.w32 index db584c29e7ff4..61b27c4bd9625 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)) - ) { + SETUP_ZLIB_LIB("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"); 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/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/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)."); } } 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'); } } diff --git a/ext/gd/config.w32 b/ext/gd/config.w32 index 4e168fc3474f6..71d6df4c47571 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) - ) { + 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 (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/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/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/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/snmp/config.w32 b/ext/snmp/config.w32 index a2facb6946d67..2a60d426854df 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("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."); } else { - WARNING("snmp not enabled; libraries and headers not found"); + WARNING("snmp not enabled; netsnmp package not found"); } } 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/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/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"); } } 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"); 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..c8409c0b4fda6 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) { @@ -3628,32 +3684,33 @@ 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, 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()