git: 42db2c39e566 - main - */*php84*: Sunrise

From: Muhammad Moinur Rahman <bofh_at_FreeBSD.org>
Date: Sun, 28 Jul 2024 13:15:52 UTC
The branch main has been updated by bofh:

URL: https://cgit.FreeBSD.org/ports/commit/?id=42db2c39e566955903a9176e0a4c4c7589d5aaca

commit 42db2c39e566955903a9176e0a4c4c7589d5aaca
Author:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
AuthorDate: 2024-07-28 01:40:58 +0000
Commit:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
CommitDate: 2024-07-28 13:15:17 +0000

    */*php84*: Sunrise
    
    Please DO NOT use this version in production, it is an early test
    version.
    
    For upgrade notes please visit:
    https://github.com/php/php-src/blob/php-8.4.0alpha1/UPGRADING
    
    Changelog: https://github.com/php/php-src/blob/php-8.4.0alpha1/NEWS
---
 Mk/Uses/php.mk                                     |  18 +-
 Mk/bsd.default-versions.mk                         |   2 +-
 archivers/Makefile                                 |   4 +
 archivers/php84-bz2/Makefile                       |   7 +
 archivers/php84-phar/Makefile                      |   7 +
 archivers/php84-zip/Makefile                       |   7 +
 archivers/php84-zlib/Makefile                      |   7 +
 archivers/php84-zlib/files/patch-zlib.c            |  10 +
 converters/Makefile                                |   2 +
 converters/php84-iconv/Makefile                    |   7 +
 converters/php84-mbstring/Makefile                 |   7 +
 databases/Makefile                                 |  12 +
 databases/php84-dba/Makefile                       |   7 +
 databases/php84-dba/files/patch-config.m4          |  26 +
 databases/php84-mysqli/Makefile                    |   7 +
 databases/php84-odbc/Makefile                      |   7 +
 databases/php84-odbc/files/patch-config.m4         | 101 ++++
 databases/php84-pdo/Makefile                       |   7 +
 databases/php84-pdo_dblib/Makefile                 |   7 +
 databases/php84-pdo_firebird/Makefile              |   9 +
 databases/php84-pdo_mysql/Makefile                 |   7 +
 databases/php84-pdo_odbc/Makefile                  |   7 +
 databases/php84-pdo_pgsql/Makefile                 |   7 +
 databases/php84-pdo_sqlite/Makefile                |   7 +
 databases/php84-pgsql/Makefile                     |   7 +
 databases/php84-sqlite3/Makefile                   |   7 +
 devel/Makefile                                     |  10 +
 devel/php84-ffi/Makefile                           |   7 +
 devel/php84-gettext/Makefile                       |   7 +
 devel/php84-intl/Makefile                          |   7 +
 devel/php84-pcntl/Makefile                         |   7 +
 devel/php84-readline/Makefile                      |   7 +
 devel/php84-shmop/Makefile                         |   7 +
 devel/php84-sysvmsg/Makefile                       |   7 +
 devel/php84-sysvsem/Makefile                       |   7 +
 devel/php84-sysvshm/Makefile                       |   7 +
 devel/php84-tokenizer/Makefile                     |   7 +
 ftp/Makefile                                       |   2 +
 ftp/php84-curl/Makefile                            |   7 +
 ftp/php84-ftp/Makefile                             |   7 +
 graphics/Makefile                                  |   2 +
 graphics/php84-exif/Makefile                       |   7 +
 graphics/php84-gd/Makefile                         |   7 +
 lang/Makefile                                      |   1 +
 lang/php81/Makefile                                |   2 +-
 lang/php82/Makefile                                |   2 +-
 lang/php83/Makefile                                |   2 +-
 lang/php84-extensions/Makefile                     |  89 +++
 lang/php84-extensions/pkg-descr                    |   5 +
 lang/php84/Makefile                                | 612 +++++++++++++++++++++
 lang/php84/distinfo                                |   3 +
 lang/php84/files/patch-TSRM_TSRM.c                 |  11 +
 lang/php84/files/patch-build_Makefile.global       |  19 +
 lang/php84/files/patch-configure.ac                |  27 +
 lang/php84/files/patch-ext_hash_xxhash_xxhash.h    |  46 ++
 lang/php84/files/patch-ext_pcre_php__pcre.h        |  11 +
 .../files/patch-sapi_apache2handler_config.m4      |  11 +
 lang/php84/files/patch-sapi_fpm_config.m4          |  11 +
 lang/php84/files/patch-sapi_fpm_www.conf.in        |  17 +
 lang/php84/files/php_fpm.in                        | 102 ++++
 lang/php84/files/php_session.h                     | 328 +++++++++++
 lang/php84/pkg-descr                               |   6 +
 lang/php84/pkg-message.mod                         |  24 +
 lang/php84/pkg-plist                               | 321 +++++++++++
 lang/php84/pkg-plist.mod                           |   3 +
 math/Makefile                                      |   2 +
 math/php84-bcmath/Makefile                         |   7 +
 math/php84-gmp/Makefile                            |   7 +
 misc/Makefile                                      |   1 +
 misc/php84-calendar/Makefile                       |   7 +
 net-mgmt/Makefile                                  |   1 +
 net-mgmt/php84-snmp/Makefile                       |   7 +
 net/Makefile                                       |   3 +
 net/php84-ldap/Makefile                            |   7 +
 net/php84-soap/Makefile                            |   7 +
 net/php84-sockets/Makefile                         |   7 +
 security/Makefile                                  |   2 +
 security/php84-filter/Makefile                     |   7 +
 security/php84-sodium/Makefile                     |   7 +
 sysutils/Makefile                                  |   2 +
 sysutils/php84-fileinfo/Makefile                   |   7 +
 sysutils/php84-posix/Makefile                      |   7 +
 textproc/Makefile                                  |   8 +
 textproc/php84-ctype/Makefile                      |   7 +
 textproc/php84-dom/Makefile                        |   7 +
 textproc/php84-enchant/Makefile                    |  12 +
 textproc/php84-simplexml/Makefile                  |   7 +
 textproc/php84-xml/Makefile                        |   7 +
 textproc/php84-xml/files/patch-compat.c            |  13 +
 textproc/php84-xmlreader/Makefile                  |   7 +
 textproc/php84-xmlwriter/Makefile                  |   7 +
 textproc/php84-xsl/Makefile                        |  12 +
 www/Makefile                                       |   4 +
 www/mod_php84/Makefile                             |  18 +
 www/php84-opcache/Makefile                         |  11 +
 www/php84-session/Makefile                         |   7 +
 www/php84-tidy/Makefile                            |   7 +
 97 files changed, 2279 insertions(+), 11 deletions(-)

diff --git a/Mk/Uses/php.mk b/Mk/Uses/php.mk
index 6195ad71a71e..370c736019da 100644
--- a/Mk/Uses/php.mk
+++ b/Mk/Uses/php.mk
@@ -110,7 +110,7 @@ DIST_SUBDIR=	PECL
 
 PHPBASE?=	${LOCALBASE}
 
-_ALL_PHP_VERSIONS=	81 82 83
+_ALL_PHP_VERSIONS=	81 82 83 84
 
 # Make the already installed PHP the default one.
 .  if exists(${PHPBASE}/etc/php.conf)
@@ -179,7 +179,10 @@ PHP_VER=	${FLAVOR:S/^php//}
 	(${FLAVOR:Mphp[0-9][0-9]} && ${FLAVOR} != ${FLAVORS:[1]})
 # When adding a version, please keep the comment in
 # Mk/bsd.default-versions.mk in sync.
-.    if ${PHP_VER} == 83
+.    if ${PHP_VER} == 84
+PHP_EXT_DIR=   20230901
+PHP_EXT_INC=    hash json openssl pcre random spl
+.    elif ${PHP_VER} == 83
 PHP_EXT_DIR=   20230831
 PHP_EXT_INC=    hash json openssl pcre random spl
 .    elif ${PHP_VER} == 82
@@ -371,18 +374,19 @@ add-plist-phpext:
 # non-version specific components
 _USE_PHP_ALL=	bcmath bitset bz2 calendar ctype curl dba dom \
 		enchant exif ffi fileinfo filter ftp gd gettext gmp \
-		hash iconv igbinary imap intl json ldap mbstring mcrypt \
+		hash iconv igbinary intl json ldap mbstring mcrypt \
 		memcache memcached mysqli odbc opcache \
 		openssl pcntl pcre pdo pdo_dblib pdo_firebird pdo_mysql \
 		pdo_odbc pdo_pgsql pdo_sqlite phar pgsql posix \
-		pspell radius random readline redis session shmop simplexml snmp \
+		radius random readline redis session shmop simplexml snmp \
 		soap sockets sodium spl sqlite3 sysvmsg sysvsem sysvshm \
 		tidy tokenizer xml xmlreader xmlrpc xmlwriter xsl zephir_parser \
 		zip zlib
 # version specific components
-_USE_PHP_VER81=	${_USE_PHP_ALL}
-_USE_PHP_VER82=	${_USE_PHP_ALL}
-_USE_PHP_VER83=	${_USE_PHP_ALL}
+_USE_PHP_VER81=	${_USE_PHP_ALL} imap pspell
+_USE_PHP_VER82=	${_USE_PHP_ALL} imap pspell
+_USE_PHP_VER83=	${_USE_PHP_ALL} imap pspell
+_USE_PHP_VER84=	${_USE_PHP_ALL}
 
 bcmath_DEPENDS=	math/php${PHP_VER}-bcmath
 bitset_DEPENDS=	math/pecl-bitset@${PHP_FLAVOR}
diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
index 3c62ece4b8ce..60fc2628481a 100644
--- a/Mk/bsd.default-versions.mk
+++ b/Mk/bsd.default-versions.mk
@@ -128,7 +128,7 @@ PERL5_DEFAULT:=		${_PERL5_FROM_BIN:R}
 .  endif
 # Possible values: 12, 13, 14, 15, 16
 PGSQL_DEFAULT?=		16
-# Possible values: 8.1, 8.2, 8.3
+# Possible values: 8.1, 8.2, 8.3, 8.4
 PHP_DEFAULT?=		8.2
 # Possible values: rust, legacy
 .  if empty(ARCH:Naarch64:Namd64:Narmv7:Ni386:Npowerpc64:Npowerpc64le:Npowerpc:Nriscv64)
diff --git a/archivers/Makefile b/archivers/Makefile
index 46d216a9e410..538098670875 100644
--- a/archivers/Makefile
+++ b/archivers/Makefile
@@ -172,6 +172,10 @@
     SUBDIR += php83-phar
     SUBDIR += php83-zip
     SUBDIR += php83-zlib
+    SUBDIR += php84-bz2
+    SUBDIR += php84-phar
+    SUBDIR += php84-zip
+    SUBDIR += php84-zlib
     SUBDIR += pigz
     SUBDIR += pixz
     SUBDIR += plzip
diff --git a/archivers/php84-bz2/Makefile b/archivers/php84-bz2/Makefile
new file mode 100644
index 000000000000..8fff4dc6e6ae
--- /dev/null
+++ b/archivers/php84-bz2/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	archivers
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-bz2
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php84-phar/Makefile b/archivers/php84-phar/Makefile
new file mode 100644
index 000000000000..396abd5c0657
--- /dev/null
+++ b/archivers/php84-phar/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	archivers
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-phar
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php84-zip/Makefile b/archivers/php84-zip/Makefile
new file mode 100644
index 000000000000..95955ddd27ae
--- /dev/null
+++ b/archivers/php84-zip/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	archivers
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-zip
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php84-zlib/Makefile b/archivers/php84-zlib/Makefile
new file mode 100644
index 000000000000..400a4d0ca4e7
--- /dev/null
+++ b/archivers/php84-zlib/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	archivers
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-zlib
+
+.include "${MASTERDIR}/Makefile"
diff --git a/archivers/php84-zlib/files/patch-zlib.c b/archivers/php84-zlib/files/patch-zlib.c
new file mode 100644
index 000000000000..fb0e9e44311a
--- /dev/null
+++ b/archivers/php84-zlib/files/patch-zlib.c
@@ -0,0 +1,10 @@
+--- zlib.c.orig	2023-06-06 15:54:29 UTC
++++ zlib.c
+@@ -1380,6 +1380,7 @@ static PHP_MSHUTDOWN_FUNCTION(zlib)
+ /* {{{ PHP_RINIT_FUNCTION */
+ static PHP_RINIT_FUNCTION(zlib)
+ {
++	ZLIBG(output_compression) = 0;
+ 	ZLIBG(compression_coding) = 0;
+ 	if (!ZLIBG(handler_registered)) {
+ 		ZLIBG(output_compression) = ZLIBG(output_compression_default);
diff --git a/converters/Makefile b/converters/Makefile
index 9f24bd574c4e..12dc42049fe0 100644
--- a/converters/Makefile
+++ b/converters/Makefile
@@ -143,6 +143,8 @@
     SUBDIR += php82-mbstring
     SUBDIR += php83-iconv
     SUBDIR += php83-mbstring
+    SUBDIR += php84-iconv
+    SUBDIR += php84-mbstring
     SUBDIR += psiconv
     SUBDIR += py-bencode.py
     SUBDIR += py-bencoder
diff --git a/converters/php84-iconv/Makefile b/converters/php84-iconv/Makefile
new file mode 100644
index 000000000000..1697febce0c8
--- /dev/null
+++ b/converters/php84-iconv/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	converters
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-iconv
+
+.include "${MASTERDIR}/Makefile"
diff --git a/converters/php84-mbstring/Makefile b/converters/php84-mbstring/Makefile
new file mode 100644
index 000000000000..35c5867c296e
--- /dev/null
+++ b/converters/php84-mbstring/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	converters
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-mbstring
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/Makefile b/databases/Makefile
index 9edcb89fcdce..8d2bfeef13fc 100644
--- a/databases/Makefile
+++ b/databases/Makefile
@@ -627,6 +627,18 @@
     SUBDIR += php83-pdo_sqlite
     SUBDIR += php83-pgsql
     SUBDIR += php83-sqlite3
+    SUBDIR += php84-dba
+    SUBDIR += php84-mysqli
+    SUBDIR += php84-odbc
+    SUBDIR += php84-pdo
+    SUBDIR += php84-pdo_dblib
+    SUBDIR += php84-pdo_firebird
+    SUBDIR += php84-pdo_mysql
+    SUBDIR += php84-pdo_odbc
+    SUBDIR += php84-pdo_pgsql
+    SUBDIR += php84-pdo_sqlite
+    SUBDIR += php84-pgsql
+    SUBDIR += php84-sqlite3
     SUBDIR += phpliteadmin
     SUBDIR += phpminiadmin
     SUBDIR += phpmyadmin
diff --git a/databases/php84-dba/Makefile b/databases/php84-dba/Makefile
new file mode 100644
index 000000000000..2659c0d550ec
--- /dev/null
+++ b/databases/php84-dba/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	databases
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-dba
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php84-dba/files/patch-config.m4 b/databases/php84-dba/files/patch-config.m4
new file mode 100644
index 000000000000..52274722f660
--- /dev/null
+++ b/databases/php84-dba/files/patch-config.m4
@@ -0,0 +1,26 @@
+--- config.m4.orig	2023-11-07 20:02:05 UTC
++++ config.m4
+@@ -387,6 +387,14 @@ if test "$PHP_DB4" != "no"; then
+       THIS_PREFIX=$i
+       THIS_INCLUDE=$i/include/db5.3/db.h
+       break
++    elif test -f "$i/include/db5/db.h"; then
++      THIS_PREFIX=$i
++      THIS_INCLUDE=$i/include/db5/db.h
++      break
++    elif test -f "$i/include/db18/db.h"; then
++      THIS_PREFIX=$i
++      THIS_INCLUDE=$i/include/db18/db.h
++      break
+     elif test -f "$i/include/db5.1/db.h"; then
+       THIS_PREFIX=$i
+       THIS_INCLUDE=$i/include/db5.1/db.h
+@@ -429,7 +437,7 @@ if test "$PHP_DB4" != "no"; then
+       break
+     fi
+   done
+-  PHP_DBA_DB_CHECK(4, db-5.3 db-5.1 db-5.0 db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)])
++  PHP_DBA_DB_CHECK(4, db-5 db-5.3 db-5.1 db-5.0 db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db-18 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)])
+ fi
+ PHP_DBA_STD_RESULT(db4,Berkeley DB4)
+ 
diff --git a/databases/php84-mysqli/Makefile b/databases/php84-mysqli/Makefile
new file mode 100644
index 000000000000..490ba7d385b0
--- /dev/null
+++ b/databases/php84-mysqli/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	databases
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-mysqli
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php84-odbc/Makefile b/databases/php84-odbc/Makefile
new file mode 100644
index 000000000000..985dcf21be00
--- /dev/null
+++ b/databases/php84-odbc/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	databases
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-odbc
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php84-odbc/files/patch-config.m4 b/databases/php84-odbc/files/patch-config.m4
new file mode 100644
index 000000000000..7cb9492b32f9
--- /dev/null
+++ b/databases/php84-odbc/files/patch-config.m4
@@ -0,0 +1,101 @@
+--- config.m4.orig	2023-11-07 20:02:05 UTC
++++ config.m4
+@@ -102,7 +102,7 @@ PHP_ARG_WITH([adabas],,
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([adabas],,
+   [AS_HELP_STRING([[--with-adabas[=DIR]]],
+-    [Include Adabas D support [/usr/local]])])
++    [Include Adabas D support [/usr/local]])], [no], [no])
+ 
+   AC_MSG_CHECKING([for Adabas support])
+   if test "$PHP_ADABAS" != "no"; then
+@@ -132,7 +132,7 @@ PHP_ARG_WITH([sapdb],,
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([sapdb],,
+   [AS_HELP_STRING([[--with-sapdb[=DIR]]],
+-    [Include SAP DB support [/usr/local]])])
++    [Include SAP DB support [/usr/local]])], [no], [no])
+ 
+   AC_MSG_CHECKING([for SAP DB support])
+   if test "$PHP_SAPDB" != "no"; then
+@@ -153,7 +153,7 @@ PHP_ARG_WITH([solid],,
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([solid],,
+   [AS_HELP_STRING([[--with-solid[=DIR]]],
+-    [Include Solid support [/usr/local/solid]])])
++    [Include Solid support [/usr/local/solid]])], [no], [no])
+ 
+   AC_MSG_CHECKING(for Solid support)
+   if test "$PHP_SOLID" != "no"; then
+@@ -181,7 +181,7 @@ PHP_ARG_WITH([ibm-db2],,
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([ibm-db2],,
+   [AS_HELP_STRING([[--with-ibm-db2[=DIR]]],
+-    [Include IBM DB2 support [/home/db2inst1/sqllib]])])
++    [Include IBM DB2 support [/home/db2inst1/sqllib]])], [no], [no])
+ 
+   AC_MSG_CHECKING(for IBM DB2 support)
+   if test "$PHP_IBM_DB2" != "no"; then
+@@ -222,7 +222,7 @@ PHP_ARG_WITH([empress],,
+ PHP_ARG_WITH([empress],,
+   [AS_HELP_STRING([[--with-empress[=DIR]]],
+     [Include Empress support $EMPRESSPATH (Empress Version >= 8.60
+-    required)])])
++    required)])], [no], [no])
+ 
+   AC_MSG_CHECKING(for Empress support)
+   if test "$PHP_EMPRESS" != "no"; then
+@@ -248,7 +248,7 @@ PHP_ARG_WITH([empress-bcs],,
+ PHP_ARG_WITH([empress-bcs],,
+   [AS_HELP_STRING([[--with-empress-bcs[=DIR]]],
+     [Include Empress Local Access support $EMPRESSPATH (Empress Version >=
+-    8.60 required)])])
++    8.60 required)])], [no], [no])
+ 
+   AC_MSG_CHECKING(for Empress local access support)
+   if test "$PHP_EMPRESS_BCS" != "no"; then
+@@ -294,7 +294,7 @@ PHP_ARG_WITH([custom-odbc],,
+     your include dirs. For example, you should define following for Sybase SQL
+     Anywhere 5.5.00 on QNX, prior to running this configure script:
+     CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix
+-    CUSTOM_ODBC_LIBS="-ldblib -lodbc"])])
++    CUSTOM_ODBC_LIBS="-ldblib -lodbc"])], [no], [no])
+ 
+   AC_MSG_CHECKING(for a custom ODBC support)
+   if test "$PHP_CUSTOM_ODBC" != "no"; then
+@@ -317,7 +317,7 @@ PHP_ARG_WITH([iodbc],,
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([iodbc],,
+   [AS_HELP_STRING([--with-iodbc],
+-    [Include iODBC support])])
++    [Include iODBC support])], [no], [no])
+ 
+   AC_MSG_CHECKING(whether to build with iODBC support)
+   if test "$PHP_IODBC" != "no"; then
+@@ -335,7 +335,7 @@ PHP_ARG_WITH([esoob],,
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([esoob],,
+   [AS_HELP_STRING([[--with-esoob[=DIR]]],
+-    [Include Easysoft OOB support [/usr/local/easysoft/oob/client]])])
++    [Include Easysoft OOB support [/usr/local/easysoft/oob/client]])], [no], [no])
+ 
+   AC_MSG_CHECKING(for Easysoft ODBC-ODBC Bridge support)
+   if test "$PHP_ESOOB" != "no"; then
+@@ -358,7 +358,7 @@ PHP_ARG_WITH([unixODBC],,
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([unixODBC],,
+   [AS_HELP_STRING([--with-unixODBC],
+-    [Include unixODBC support])])
++    [Include unixODBC support])], [no], [no])
+ 
+   AC_MSG_CHECKING(whether to build with unixODBC support)
+   if test "$PHP_UNIXODBC" != "no"; then
+@@ -386,7 +386,7 @@ PHP_ARG_WITH([dbmaker],,
+ if test -z "$ODBC_TYPE"; then
+ PHP_ARG_WITH([dbmaker],,
+   [AS_HELP_STRING([[--with-dbmaker[=DIR]]],
+-    [Include DBMaker support])])
++    [Include DBMaker support])], [no], [no])
+ 
+   AC_MSG_CHECKING(for DBMaker support)
+   if test "$PHP_DBMAKER" != "no"; then
diff --git a/databases/php84-pdo/Makefile b/databases/php84-pdo/Makefile
new file mode 100644
index 000000000000..28ac0f2fba3d
--- /dev/null
+++ b/databases/php84-pdo/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	databases
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-pdo
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php84-pdo_dblib/Makefile b/databases/php84-pdo_dblib/Makefile
new file mode 100644
index 000000000000..7bfb770b7b4b
--- /dev/null
+++ b/databases/php84-pdo_dblib/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	databases
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-pdo_dblib
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php84-pdo_firebird/Makefile b/databases/php84-pdo_firebird/Makefile
new file mode 100644
index 000000000000..7ca4ffdcafef
--- /dev/null
+++ b/databases/php84-pdo_firebird/Makefile
@@ -0,0 +1,9 @@
+CATEGORIES=	databases
+
+PORTREVISION=	0
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-pdo_firebird
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php84-pdo_mysql/Makefile b/databases/php84-pdo_mysql/Makefile
new file mode 100644
index 000000000000..85586870b7b4
--- /dev/null
+++ b/databases/php84-pdo_mysql/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	databases
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-pdo_mysql
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php84-pdo_odbc/Makefile b/databases/php84-pdo_odbc/Makefile
new file mode 100644
index 000000000000..7b07fd985ad2
--- /dev/null
+++ b/databases/php84-pdo_odbc/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	databases
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-pdo_odbc
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php84-pdo_pgsql/Makefile b/databases/php84-pdo_pgsql/Makefile
new file mode 100644
index 000000000000..ea1956dcd010
--- /dev/null
+++ b/databases/php84-pdo_pgsql/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	databases
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-pdo_pgsql
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php84-pdo_sqlite/Makefile b/databases/php84-pdo_sqlite/Makefile
new file mode 100644
index 000000000000..d6e1bc6cc919
--- /dev/null
+++ b/databases/php84-pdo_sqlite/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	databases
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-pdo_sqlite
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php84-pgsql/Makefile b/databases/php84-pgsql/Makefile
new file mode 100644
index 000000000000..16982111cb58
--- /dev/null
+++ b/databases/php84-pgsql/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	databases
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-pgsql
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/php84-sqlite3/Makefile b/databases/php84-sqlite3/Makefile
new file mode 100644
index 000000000000..997147cd30b4
--- /dev/null
+++ b/databases/php84-sqlite3/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	databases
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-sqlite3
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/Makefile b/devel/Makefile
index 6e00e4f1c141..85c256b9ffa1 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -4208,6 +4208,16 @@
     SUBDIR += php83-sysvsem
     SUBDIR += php83-sysvshm
     SUBDIR += php83-tokenizer
+    SUBDIR += php84-ffi
+    SUBDIR += php84-gettext
+    SUBDIR += php84-intl
+    SUBDIR += php84-pcntl
+    SUBDIR += php84-readline
+    SUBDIR += php84-shmop
+    SUBDIR += php84-sysvmsg
+    SUBDIR += php84-sysvsem
+    SUBDIR += php84-sysvshm
+    SUBDIR += php84-tokenizer
     SUBDIR += phpunit10
     SUBDIR += phpunit11
     SUBDIR += phpunit8
diff --git a/devel/php84-ffi/Makefile b/devel/php84-ffi/Makefile
new file mode 100644
index 000000000000..519cb30a2474
--- /dev/null
+++ b/devel/php84-ffi/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	devel
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-ffi
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/php84-gettext/Makefile b/devel/php84-gettext/Makefile
new file mode 100644
index 000000000000..8c53cd9b8350
--- /dev/null
+++ b/devel/php84-gettext/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	devel
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-gettext
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/php84-intl/Makefile b/devel/php84-intl/Makefile
new file mode 100644
index 000000000000..3382ccab0feb
--- /dev/null
+++ b/devel/php84-intl/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	devel
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-intl
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/php84-pcntl/Makefile b/devel/php84-pcntl/Makefile
new file mode 100644
index 000000000000..c3b73357dfeb
--- /dev/null
+++ b/devel/php84-pcntl/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	devel
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-pcntl
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/php84-readline/Makefile b/devel/php84-readline/Makefile
new file mode 100644
index 000000000000..ce9ad74d83b0
--- /dev/null
+++ b/devel/php84-readline/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	devel
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-readline
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/php84-shmop/Makefile b/devel/php84-shmop/Makefile
new file mode 100644
index 000000000000..5f54638995bd
--- /dev/null
+++ b/devel/php84-shmop/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	devel
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-shmop
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/php84-sysvmsg/Makefile b/devel/php84-sysvmsg/Makefile
new file mode 100644
index 000000000000..2d5d0d905c7a
--- /dev/null
+++ b/devel/php84-sysvmsg/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	devel
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-sysvmsg
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/php84-sysvsem/Makefile b/devel/php84-sysvsem/Makefile
new file mode 100644
index 000000000000..167625a6901d
--- /dev/null
+++ b/devel/php84-sysvsem/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	devel
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-sysvsem
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/php84-sysvshm/Makefile b/devel/php84-sysvshm/Makefile
new file mode 100644
index 000000000000..00acd5af9aa3
--- /dev/null
+++ b/devel/php84-sysvshm/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	devel
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-sysvshm
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/php84-tokenizer/Makefile b/devel/php84-tokenizer/Makefile
new file mode 100644
index 000000000000..84373eea74df
--- /dev/null
+++ b/devel/php84-tokenizer/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	devel
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-tokenizer
+
+.include "${MASTERDIR}/Makefile"
diff --git a/ftp/Makefile b/ftp/Makefile
index db95adcb8b32..a3907c2a4738 100644
--- a/ftp/Makefile
+++ b/ftp/Makefile
@@ -59,6 +59,8 @@
     SUBDIR += php82-ftp
     SUBDIR += php83-curl
     SUBDIR += php83-ftp
+    SUBDIR += php83-curl
+    SUBDIR += php84-ftp
     SUBDIR += phpwebftp
     SUBDIR += proftpd
     SUBDIR += proftpd-mod_vroot
diff --git a/ftp/php84-curl/Makefile b/ftp/php84-curl/Makefile
new file mode 100644
index 000000000000..578fa6d69e3f
--- /dev/null
+++ b/ftp/php84-curl/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	ftp
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-curl
+
+.include "${MASTERDIR}/Makefile"
diff --git a/ftp/php84-ftp/Makefile b/ftp/php84-ftp/Makefile
new file mode 100644
index 000000000000..97f93c87c3f0
--- /dev/null
+++ b/ftp/php84-ftp/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	ftp
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-ftp
+
+.include "${MASTERDIR}/Makefile"
diff --git a/graphics/Makefile b/graphics/Makefile
index cd38ce73984e..654d7107cfe0 100644
--- a/graphics/Makefile
+++ b/graphics/Makefile
@@ -811,6 +811,8 @@
     SUBDIR += php82-gd
     SUBDIR += php83-exif
     SUBDIR += php83-gd
+    SUBDIR += php84-exif
+    SUBDIR += php84-gd
     SUBDIR += phplot
     SUBDIR += picpuz
     SUBDIR += piddle
diff --git a/graphics/php84-exif/Makefile b/graphics/php84-exif/Makefile
new file mode 100644
index 000000000000..b92ddd85d7da
--- /dev/null
+++ b/graphics/php84-exif/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	graphics
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-exif
+
+.include "${MASTERDIR}/Makefile"
diff --git a/graphics/php84-gd/Makefile b/graphics/php84-gd/Makefile
new file mode 100644
index 000000000000..7f7fc1c448bc
--- /dev/null
+++ b/graphics/php84-gd/Makefile
@@ -0,0 +1,7 @@
+CATEGORIES=	graphics
+
+MASTERDIR=	${.CURDIR}/../../lang/php84
+
+PKGNAMESUFFIX=	-gd
+
+.include "${MASTERDIR}/Makefile"
diff --git a/lang/Makefile b/lang/Makefile
index 7a8e3173eb9b..7d655bde10ca 100644
--- a/lang/Makefile
+++ b/lang/Makefile
@@ -280,6 +280,7 @@
     SUBDIR += php82-extensions
     SUBDIR += php83
     SUBDIR += php83-extensions
+    SUBDIR += php84
     SUBDIR += picoc
     SUBDIR += picolisp
     SUBDIR += pkl
diff --git a/lang/php81/Makefile b/lang/php81/Makefile
index f49642639ecd..937623ecc947 100644
--- a/lang/php81/Makefile
+++ b/lang/php81/Makefile
@@ -184,7 +184,7 @@ COMMENT=	The ${PHP_MODNAME} shared extension for php
 USES+=		php:ext,noflavors
 PHP_MODNAME=	${PKGNAMESUFFIX:S/-//}
 PHP_VER=	81
-IGNORE_WITH_PHP=	82 83
+IGNORE_WITH_PHP=	82 83 84
 
 EXTSUBDIR=	${DISTNAME}/ext/${PHP_MODNAME}
 WRKSRC=		${WRKDIR}/${EXTSUBDIR}
diff --git a/lang/php82/Makefile b/lang/php82/Makefile
index 50b7b1f6e7ba..5cefc72774e5 100644
--- a/lang/php82/Makefile
+++ b/lang/php82/Makefile
@@ -177,7 +177,7 @@ COMMENT=	The ${PHP_MODNAME} shared extension for php
 USES+=		php:ext,noflavors
 PHP_MODNAME=	${PKGNAMESUFFIX:S/-//}
 PHP_VER=	82
-IGNORE_WITH_PHP=	81 83
+IGNORE_WITH_PHP=	81 83 84
 
 EXTSUBDIR=	${DISTNAME}/ext/${PHP_MODNAME}
 WRKSRC=		${WRKDIR}/${EXTSUBDIR}
diff --git a/lang/php83/Makefile b/lang/php83/Makefile
index 3a594f51c3e5..392e005a4f2c 100644
--- a/lang/php83/Makefile
+++ b/lang/php83/Makefile
@@ -195,7 +195,7 @@ COMMENT=	The ${PHP_MODNAME} shared extension for php
 USES+=		php:ext,noflavors
 PHP_MODNAME=	${PKGNAMESUFFIX:S/-//}
 PHP_VER=	83
-IGNORE_WITH_PHP=	81 82
+IGNORE_WITH_PHP=	81 82 84
 
 EXTSUBDIR=	${DISTNAME}/ext/${PHP_MODNAME}
 WRKSRC=		${WRKDIR}/${EXTSUBDIR}
diff --git a/lang/php84-extensions/Makefile b/lang/php84-extensions/Makefile
new file mode 100644
index 000000000000..55bc9f11b567
--- /dev/null
+++ b/lang/php84-extensions/Makefile
@@ -0,0 +1,89 @@
+PORTNAME=	php84
+PORTVERSION=	1.0
+CATEGORIES=	lang
+PKGNAMESUFFIX=	-extensions
+
+MAINTAINER=	bofh@FreeBSD.org
+COMMENT=	"meta-port" to install PHP extensions (8.4.X branch)
+WWW=		https://www.php.net/
+
+USES=		metaport php
+
+PHP_VER=	84
+IGNORE_WITH_PHP=	81 82 83
+
+OPTIONS_DEFINE=		BCMATH BZ2 CALENDAR CTYPE CURL DBA DOM ENCHANT EXIF FFI \
+			FILEINFO FILTER FTP GD GETTEXT GMP ICONV INTL LDAP \
+			MBSTRING MYSQLI ODBC OPCACHE PCNTL PDO \
+			PDO_DBLIB PDO_FIREBIRD PDO_MYSQL PDO_ODBC PDO_PGSQL \
+			PDO_SQLITE PGSQL PHAR POSIX READLINE SESSION \
+			SHMOP SIMPLEXML SNMP SOAP SOCKETS SODIUM SQLITE3 \
+			SYSVMSG SYSVSEM SYSVSHM TIDY TOKENIZER XML XMLREADER \
+			XMLWRITER XSL ZIP ZLIB
+OPTIONS_DEFAULT=	CTYPE DOM FILTER ICONV OPCACHE PDO PDO_SQLITE PHAR \
+			POSIX SESSION SIMPLEXML SQLITE3 TOKENIZER XML XMLREADER \
+			XMLWRITER
+
+BCMATH_DESC=		bc style precision math functions
+BZ2_DESC=		bzip2 library support
+CALENDAR_DESC=		calendar conversion support
+CTYPE_DESC=		ctype functions
+CURL_DESC=		CURL support
+DBA_DESC=		dba support
+DOM_DESC=		DOM support
+ENCHANT_DESC=		Enchant spelling support
+EXIF_DESC=		EXIF support
+FFI_DESC=		Foreign Function Interface support
+FILEINFO_DESC=		fileinfo support
+FILTER_DESC=		input filter support
+FTP_DESC=		FTP support
+GD_DESC=		GD library support
+GETTEXT_DESC=		gettext library support
+GMP_DESC=		GNU MP support
+ICONV_DESC=		iconv support
+INTL_DESC=		Internationalization(ICU)
+LDAP_DESC=		OpenLDAP support
+MBSTRING_DESC=		multibyte string support
+MYSQLI_DESC=		MySQLi database support
+ODBC_DESC=		ODBC support
+OPCACHE_DESC=		OPcache support
+PCNTL_DESC=		pcntl support (CLI only)
+PDO_DBLIB_DESC=		PDO DBLIB-DB driver
+PDO_DESC=		PHP Data Objects Interface (PDO)
+PDO_FIREBIRD_DESC=	PDO Firebird driver
+PDO_MYSQL_DESC=		PDO MySQL driver
+PDO_ODBC_DESC=		PDO ODBC driver
+PDO_PGSQL_DESC=		PDO PostgreSQL driver
+PDO_SQLITE_DESC=	PDO sqlite driver
+PHAR_DESC=		phar support
+POSIX_DESC=		POSIX-like functions
+READLINE_DESC=		readline support (CLI only)
+SESSION_DESC=		session support
+SHMOP_DESC=		shmop support
+SIMPLEXML_DESC=		simplexml support
+SNMP_DESC=		SNMP support
+SOAP_DESC=		SOAP support
+SOCKETS_DESC=		sockets support
+SODIUM_DESC=		Sodium encryption support
+SQLITE3_DESC=		sqlite3 support
+SYSVMSG_DESC=		System V message support
+SYSVSEM_DESC=		System V semaphore support
+SYSVSHM_DESC=		System V shared memory support
+TIDY_DESC=		TIDY support
+TOKENIZER_DESC=		tokenizer support
+XMLREADER_DESC=		XMLReader support
+XMLWRITER_DESC=		XMLWriter support
+XML_DESC=		XML support
+XSL_DESC=		XSL support (Implies DOM)
*** 2132 LINES SKIPPED ***