This document describes how the PHP build system evolved through time.
...
Changelog
- Minimum required libzip library version has been increased from 0.11.2 to 1.0.0.
- Minimum required PHP version found on the host system for running scripts like
build/gen_stub.phpduring development has been updated from 7.4 to 8.1. build/gen_stub.phpmay now generate a_decl.hfile in addition to the_arginfo.hfile, if the stub declares enums and is annotated with@generate-c-enums. For each enum the file will contain a C enum. Enum values can be compared to the result ofzend_enum_fetch_case_id(zend_object*).
scripts/dev/update-autoconf.shhas been added to updateconfig.*/libtool.- libtool has been upgraded to 2.5.4 (serial 63), which fixes many bugs. As part
of the upgrade to the new libtool:
- libtool is now spread across multiple files. phpize has been updated to handle this.
- On macOS, libtool now uses
-undefined dynamic_lookupfor shared objects, instead of-undefined suppress -flat_namespace. --with-picis now--enable-pic. The old flag will result in an error.
- Symbol
HAVE_ST_BLOCKShas been removed fromphp_config.h(useHAVE_STRUCT_STAT_ST_BLOCKS).
- Function
SETUP_OPENSSL()doesn't accept 6th argument anymore and doesn't define theHAVE_OPENSSL_SSL_Hpreprocessor macro anymore. - Function
SETUP_SQLITE3()doesn't defineHAVE_SQLITE3_HandHAVE_SQLITE3EXT_Hpreprocessor macros anymore. - Added a new function
CHECK_HEADER()which is intended to be used instead of theCHECK_HEADER_ADD_INCLUDE().
PHP coding standards now use the C11 standard.
Changelog
- ext/phar/php_phar.h is not installed anymore.
- ext/standard/datetime.h, ext/standard/php_smart_string.h and ext/standard/php_smart_string_public.h are not installed anymore.
- Minimum required ICU package version (for ext/intl) has been increased from 50.1 to 57.1.
- Minimum required SQLite library version has been increased from 3.7.7 to 3.7.17.
- Bundled file library in ext/fileinfo has been upgraded from 5.45 to 5.46.
- Added new extensions lexbor and uri as always enabled.
- The
SIZEOF_INTMAX_Tpreprocessor macro has been removed. - The
SIZEOF_PTRDIFF_Tpreprocessor macro has been removed. - The
ODBCVERpreprocessor macro has been removed. - The
--with-odbcver[=HEX]/--without-odbcverconfigure options have been removed. - The Opcache extension (ext/opcache) is now always built into the PHP binary
and is always loaded. The
--enable-opcache/--disable-opcacheconfigure options have been removed.
- Added pkg-config support to find LDAP installation for the ldap extension.
The LDAP paths can be customized with the
LDAP_CFLAGSandLDAP_LIBSenvironment variables. When a directory argument is provided to configure option (--with-ldap=DIR), it will be used instead of the pkg-config search. - Autoconf macro
AX_CHECK_COMPILE_FLAGupdated to serial 11. - Autoconf macro
PHP_AP_EXTRACT_VERSIONhas been removed. - Autoconf macro
PHP_BUILD_THREAD_SAFEhas been removed (setenable_ztsvariable manually). - Autoconf macro
PHP_CHECK_SIZEOFis obsolete (useAC_CHECK_SIZEOF). - Autoconf macro
PHP_DEF_HAVEhas been removed (useAC_DEFINE). - Autoconf macro
PHP_OUTPUThas been removed (useAC_CONFIG_FILES). - Autoconf macro
PHP_TEST_BUILDhas been removed (useAC_*macros).
- Added new configure option
--with-external-uriparser. - Added new configure option
--enable-system-globto use systemglob()function instead of the PHP built-in implementation. - Library directory (
libdir) is adjusted when using--libdir, and--with-libdirconfigure options (e.g.,--libdir=/usr/lib64 --with-libdir=lib64will setlibdirto/usr/lib64/php). - Removed ext/odbc configure options to build against specific drivers (except
for DB2) and removed special cases for those drivers. It is strongly
recommended to use a driver manager like iODBC or unixODBC on non-Windows.
The following configure options have been removed:
--with-adabas,--with-dbmaker,--with-empress,--with-empress-bcs,--with-sapdb, and--with-solid.
- The
PHP_ODBC_CFLAGS,PHP_ODBC_LFLAGS,PHP_ODBC_LIBS, andPHP_ODBC_TYPEpreprocessor macros defined by ext/odbc are now defined inphp_config.hinstead of thebuild-defs.hheader. - The
HAVE_INTMAX_Tpreprocessor macro has been removed. - The
HAVE_PTRDIFF_Tpreprocessor macro has been removed. - The
HAVE_SSIZE_Tpreprocessor macro has been removed. - The
SIZEOF_SSIZE_Tpreprocessor macro has been removed.
- ext/com_dotnet is built as shared by default.
- phpize builds now reflect the source tree in the build dir (like that already
worked for in-tree builds); some extension builds (especially when using
Makefile.frag.w32) may need adjustments. SAPI()andADD_SOURCES()commands now support the optionalduplicate_sourcesparameter. If truthy, no rules to build the object files are generated. This allows to build additional variants of SAPIs (e.g., a DLL and EXE) without duplicate build rules.
- The
--enable-sanitizerconfigure option is now supported for MSVC builds. This enables ASan and debug assertions, and is supported as of MSVC 16.10 and Windows 10. - The
--with-uncritical-warn-chokeconfiguration option for Clang builds has been removed in favor of adding warning-suppressing flags viaCFLAGS.
- The
HAVE_GETLOGINpreprocessor macro has been removed from configuration header (main/config.w32.h).
Autotools-based build system has been cleaned-up, updated, and refactored using the current Autoconf syntax for the current systems at the time. Cross-compiling has been improved one step forward with cache variables synced enabling the manual overrides on many places. C preprocessor macros inconsistencies between Windows and Autotools configuration headers have been synced to a nearly identical behavior.
Changelog
- The configure options
--with-imap,--with-pdo-oci, and--with-pspellhave been removed. - The configure option
--with-mhashemits deprecation warning. - New configure option
--with-openssl-legacy-providerto enable OpenSSL legacy provider. - New configure option
--with-openssl-argon2to enablePASSWORD_ARGON2from OpenSSL 3.2. - Symbol
SIZEOF_SHORTremoved (size of 2 on 32-bit and 64-bit platforms). - Symbol
DBA_CDB_MAKEremoved in ext/dba. - Symbols
HAVE_LIBM,HAVE_INET_ATON,HAVE_SIGSETJMPhave been removed.
- Added php-config
--lib-dirand--lib-embedoptions for PHP embed SAPI. - Removed linking with obsolete dnet_stub library in ext/pdo_dblib.
- Removed checking and linking with obsolete libbind for some functions.
- The
--with-imap-ssl,--with-oci8,--with-zlib-dir, and--with-kerberoshave been removed. - The
--with-openssl-dirhas been removed. SSL support in ext/ftp and ext/mysqlnd is enabled implicitly, when building with ext/openssl (--with-openssl), or explicitly by using new configure options--with-ftp-ssland--with-mysqlnd-ssl.
-
MISSING_FCLOSE_DECLpreprocessor macro and Autoconf macroPHP_MISSING_FCLOSE_DECLhave been removed. -
PHP_CHECK_IN_ADDR_TAutoconf macro andin_addr_tfallback definition tou_inthas been removed in favor ofAC_CHECK_TYPESAutoconf macro. -
PHP_HAVE_AVX512_SUPPORTSandPHP_HAVE_AVX512_VBMI_SUPPORTSare now either defined to 1 or undefined. -
Removed preprocessor macros:
COOKIE_IO_FUNCTIONS_Tremoved in favor ofcookie_io_functions_t.DARWINhas been removed in favor of__APPLE__to target Darwin systems.HAVE_BSD_ICONVHAVE_DLOPENHAVE_DLSYMHAVE_JSONhas been removed (ext/json is always available since PHP 8.0).HAVE_LIBCRYPTHAVE_LIBPQHAVE_LIBRTHAVE_MYSQLHAVE_ODBC2has been removed in ext/odbc.HAVE_PDO_SQLITELIBHAVE_PHPDBGHAVE_STRPTIME_DECL_FAILShas been removed in favor ofHAVE_DECL_STRPTIME.HAVE_TIMER_CREATEHAVE_TOKENIZERhas been removed in ext/tokenizer.HAVE_WAITPIDPHP_FPM_GROUPPHP_FPM_SYSTEMDPHP_FPM_USERPTHREADSZEND_FIBER_ASM
-
Renamed preprocessor macros:
HAVE_SOCKADDR_UN_SUN_LENhas been renamed toHAVE_STRUCT_SOCKADDR_UN_SUN_LEN.HAVE_UTSNAME_DOMAINNAMEhas been renamed toHAVE_STRUCT_UTSNAME_DOMAINNAME.
- Autoconf macro
PHP_DEFINE(atomic includes) removed in favor ofAC_DEFINEand extensions's config.h. - Autoconf macro
PHP_WITH_SHAREDhas been removed in favor ofPHP_ARG_WITH. - Autoconf macro
PHP_STRUCT_FLOCKhas been removed in favor ofAC_CHECK_TYPES. - Autoconf macro
PHP_SOCKADDR_CHECKShas been removed in favor ofAC_CHECK_TYPESandAC_CHECK_MEMBERS. - Autoconf macro
PHP_CHECK_GCC_ARGhas been removed since PHP 8.0 in favor ofAX_CHECK_COMPILE_FLAG. - Autoconf macro
PHP_PROG_RE2Cgot a new 2nd argument to define common default re2c command-line options substituted to the MakefileRE2C_FLAGSvariable. - Autoconf macros
PHP_CHECK_BUILTIN_*have been removed in favor ofPHP_CHECK_BUILTINand allPHP_HAVE_BUILTIN_*symbols changed to be either undefined or defined to 1 whether compiler supports the builtin. - Autoconf macro
PHP_SETUP_OPENSSLdoesn't accept the 3rd argument anymore. - Autoconf macro
PHP_EVAL_LIBLINEgot a new 3rd argument to override the ext_shared checks. - Autoconf macro
PHP_SETUP_LIBXMLdoesn't define the redundantHAVE_LIBXMLsymbol anymore and requires at least libxml2 2.9.4. - Autoconf macro
PHP_SETUP_ICONVdoesn't define theHAVE_ICONVsymbol anymore. - Autoconf macro
PHP_AP_EXTRACT_VERSIONis obsolete in favor of theapxs -q HTTPD_VERSION. - Autoconf macro
PHP_OUTPUTis obsolete in favor ofAC_CONFIG_FILES. - Autoconf macro
PHP_TEST_BUILDis obsolete in favor ofAC_*macros. - Autoconf macro
PHP_BUILD_THREAD_SAFEis obsolete in favor of setting the enable_zts variable manually. - Autoconf macro
PHP_DEF_HAVEis obsolete in favor ofAC_DEFINE. - Autoconf macro
PHP_PROG_SETUPnow accepts an argument to set the minimum required PHP version during the build. - Autoconf macro
PHP_INSTALL_HEADERSarguments can now be also blank-or-newline-separated lists instead of only separated with whitespace or backslash-then-newline. - Autoconf macro
PHP_ADD_BUILD_DIRnow also accepts 1st argument as a blank-or-newline-separated separated list. - Autoconf macros
PHP_NEW_EXTENSION,PHP_ADD_SOURCES,PHP_ADD_SOURCES_X,PHP_SELECT_SAPInow have the source files and flags arguments normalized so the list of items can be passed as a blank-or-newline-separated list. - Autoconf macro
PHP_ADD_INCLUDEnow takes also a blank-or-newline-separated list of include directories instead of a single directory. The "prepend" argument is validated at Autoconf compile time. - TSRM/tsrm.m4 file and its
TSRM_CHECK_PTHREADSmacro have been removed. - Added pkg-config support to find libpq for the pdo_pgsql and pgsql
extensions. The libpq paths can be customized with the
PGSQL_CFLAGSandPGSQL_LIBSenvironment variables. When a directory argument is provided to configure options (--with-pgsql=DIRor--with-pdo-pgsql=DIR), it will be used instead of the pkg-config search. - Added pkg-config support to find unixODBC and iODBC for the pdo_odbc extension.
- Added pkg-config support to find GNU MP library for the gmp extension. As a
fallback default system paths are searched. When a directory argument is
provided (
--with-gmp=DIR), it will be used instead of the pkg-config. - Added optional pkg-config support to find NET-SNMP library. As a fallback net-snmp-config utility is used like before.
- Cache variables synced to
php_cv_*naming scheme. When used for advanced cross-compilation, these have been renamed:ac_cv_copy_file_range->php_cv_func_copy_file_rangeac_cv_flush_io->php_cv_have_flush_ioac_cv_func_getaddrinfo->php_cv_func_getaddrinfoac_cv_have_broken_gcc_strlen_opt->php_cv_have_broken_gcc_strlen_optac_cv_have_pcre2_jit->php_cv_have_pcre2_jitac_cv_pread->php_cv_func_preadac_cv_pwrite->php_cv_func_pwriteac_cv_syscall_shadow_stack_exists->php_cv_have_shadow_stack_syscallac_cv_time_r_type->php_cv_time_r_typeac_cv_write_stdout->php_cv_have_write_stdoutand all other checks wrapped with their belonging cache variables.
- Backticks command substitutions in Autoconf code have been replaced with
$(...). Passing double escaped Makefile variables\\$(VAR)to some Autoconf macros should be now done with\$(VAR)or by using regular shell variables.
- Building with Visual Studio requires at least Visual Studio 2019.
- Added Bison flag
-Wallwhen generating lexer files as done in *nix build system. FIBER_ASSEMBLERandFIBER_ASM_ARCHMakefile variables removed in favor ofPHP_ASSEMBLERandFIBER_ASM_ABI.- The
win32/build/libs_version.txtfile has been removed. - MSVC builds use the new preprocessor (
/Zc:preprocessor). - The
CHECK_HEADER_ADD_INCLUDEfunction consistently defines preprocessor macrosHAVE_<header>_Heither to value 1 or leaves them undefined to match the Autotools headers checks.
- The configure options
--with-oci8-11g,--with-oci8-12c,--with-oci8-19, and--enable-apache2-2handlerhave been removed. - The configure option
--enable-apache2-4handlerbecame an alias for the preferred--enable-apache2handler. - Added new configure option
--enable-phpdbg-debugto build phpdbg in debug mode. - Added support for native AVX-512 builds with
--enable-native-intrinsics=avx512configure option.
HAVE_WIN32_NATIVE_THREAD,USE_WIN32_NATIVE_THREAD,ENABLE_THREADSsymbols in ext/mbstring/libmbfl removed.HAVE_PHP_SOAPsymbol renamed toHAVE_SOAP.- Unused symbols
CONFIGURATION_FILE_PATH,DISCARD_PATH,HAVE_ERRMSG_H,HAVE_REGCOMP,HAVE_RINT,NEED_ISBLANK,PHP_URL_FOPEN,REGEX,HSREGEX, andUSE_CONFIG_FILEhave been removed. - The
HAVE_OPENSSLsymbol has been removed. - The
HAVE_OPENSSL_EXTsymbol consistently defined to value 1 whether the openssl extension is available either as shared or built statically.
Windows 8 and Windows Server 2012 became the minimum supported versions by the PHP Windows build system.
Changelog
PHP_EXTRA_VERSIONcan be passed to configure script to control custom PHP build versions:./configure PHP_EXTRA_VERSION="-acme"LDFLAGSare not unset anymore allowing them to be adjusted, e.g.,LDFLAGS="..." ./configure- Removed the
HAVE_DEV_URANDOMcompile time check. - Added new configure option
--with-capstone.
Added support for ARM64 on Windows.
Changelog
- The build system now requires PHP 7.4.0 at least. Previously PHP 7.1 was required.
- Unsupported libxml2 2.10.0 symbols are no longer exported on Windows.
- Identifier names for namespaced functions generated from stub files through
gen_stub.phphave been changed. This requires that namespaced functions should be declared via thePHP_FUNCTIONmacro by using the fully qualified function name (whereas each part is separated by_) instead of just the function name itself.
- The
--enable-fuzzer-msanconfigure option has been removed. - The
--with-mysqlidoesn't accept the DIR argument anymore. - Added the
--with-fpm-selinuxconfigure option.
- Added support for ARM64.
- The
--with-oci8configure option has been removed. - The zip extension is now built as shared library (DLL) by default.
Idea to move CMake forward and additionally use Conan has been started on the PHP internals mailing list.
Changelog
- Minimum OpenSSL version 1.0.2
- The
--enable-phpdbg-webhelperconfigure option has been removed. - Added new
--enable-dl-testconfigure option.
- The
--with-password-argon2doesn't accept the argument anymore. - Added the
--enable-address-sanitizer,--enable-undefined-sanitizer,--with-avif,--with-external-libcrypt,--disable-fiber-asm,--enable-zend-max-execution-timersconfigure options.
- Added new
--disable-vs-link-compatand--with-libavifconfigure options.
PHP coding standards now use the C99 standard.
Changelog
- Removed the
--enable/disable-json,--with-xmlrpcconfigure options. - Added new
--disable-opcache-jitconfigure option.
- The
--with-expat,--with-iconv-dir=DIR,--enable-maintainer-zts,--disable-inline-optimization,--with-tsrm-pth,--with-tsrm-st,--with-tsrm-pthreadsconfigure options has been removed. - Added
--with-fpm-apparmor,--enable-fuzzer,--enable-fuzzer-msan,--enable-debug-assertions,--enable-zts,--enable-memory-sanitizer, configure options.
- Removed the
--enable-crt-debugconfigure option. - Added new
--with-oci8-19configure option.
In 2018, support for Freedesktop's pkg-config M4 macros has been added in the
PHP repository to simplify finding system dependencies. In 2019, build system
has been heavily cleaned up and adjusted for Autoconf versions available at the
time, including the removal of aclocal.m4 in favor of the php related M4
macros in php.m4. Minimum required Bison version is 3.0.
Changelog
- Added new configure option
--with-ffi. - The hash extension is now always available, meaning the
--enable-hashconfigure argument has been removed. - The
--with-interbaseconfigure option has been removed. - The
--disable-mbregex-backtrackconfigure option has been removed. - The
--enable/disable-opcache-fileconfigure option has been removed. - Symbols
HAVE_DATE,HAVE_REFLECTION, andHAVE_SPLhave been removed. It should be considered to have these extensions always available. - Removed unused build time symbols:
PHP_ADA_INCLUDE,PHP_ADA_LFLAGS,PHP_ADA_LIBS,PHP_APACHE_INCLUDE,PHP_APACHE_TARGET,PHP_FHTTPD_INCLUDE,PHP_FHTTPD_LIB,PHP_FHTTPD_TARGET,PHP_CFLAGS,PHP_DBASE_LIB,PHP_BUILD_DEBUG,PHP_GDBM_INCLUDE,PHP_IBASE_INCLUDE,PHP_IBASE_LFLAGS,PHP_IBASE_LIBS,PHP_IFX_INCLUDE,PHP_IFX_LFLAGS,PHP_IFX_LIBS,PHP_INSTALL_IT,PHP_IODBC_INCLUDE,PHP_IODBC_LFLAGS,PHP_IODBC_LIBS,PHP_MSQL_LFLAGS,PHP_MSQL_INCLUDE,PHP_MSQL_LFLAGS,PHP_MSQL_LIBS,PHP_MYSQL_INCLUDE,PHP_MYSQL_LIBS,PHP_MYSQL_TYPE,PHP_OCI8_SHARED_LIBADD,PHP_ORACLE_SHARED_LIBADD,PHP_ORACLE_DIR,PHP_ORACLE_VERSION,PHP_PGSQL_INCLUDE,PHP_PGSQL_LFLAGS,PHP_PGSQL_LIBS,PHP_SOLID_INCLUDE,PHP_SOLID_LIBS,PHP_EMPRESS_INCLUDE,PHP_EMPRESS_LIBS,PHP_SYBASE_INCLUDE,PHP_SYBASE_LFLAGS,PHP_SYBASE_LIBS,PHP_DBM_TYPE,PHP_DBM_LIB,PHP_LDAP_LFLAGS,PHP_LDAP_INCLUDE,PHP_LDAP_LIBS. - Removed unused symbols:
HAVE_CURL_EASY_STRERROR,HAVE_CURL_MULTI_STRERROR,HAVE_MPIR,HAVE_MBSTR_CN,HAVE_MBSTR_JA,HAVE_MBSTR_KR,HAVE_MBSTR_RU,HAVE_MBSTR_TW.
- Added
--ini-pathand--ini-diroptions to php-config. - The
configure --helpnow also outputs--program-suffixand--program-prefixinformation by using the AutoconfAC_ARG_PROGRAMmacro. - Minimum Bison version is 3.0+ for generating parser files.
- Many system dependencies are now discovered with pkg-config and some configure options don't accept directory argument anymore.
- The filter extension no longer exposes the
--with-pcre-dirconfigure argument and therefore allows shared builds with./configure. - Added new
--enable-rtld-nowconfigure option to switch the dlopen behavior fromRTLD_LAZYtoRTLD_NOW. - Added new configure option
--enable-werrorto turn compiler warnings into errors. - Added new
--with-external-gdconfigure option. - Added new
--with-expatconfigure option. - The
--with-pcre-valgrindand--with-valgrindhave been merged, and Valgrind is detected by pkg-config. - The
--with-pearoption has been deprecated. - The
--with-litespeedconfigure option has been renamed to--enable-litespeed. - The
--enable/disable-libxmlconfigure option has been renamed to--with/without-libxml. - The
--with-libxml-dirconfigure option has been removed. - The
--with-pcre-regexconfigure option has been removed. - The
--with/without-gdconfigure option has been renamed to--enable/disable-gd. - The
--with-webp-dirconfigure option has been renamed to--with-webp. - The
--with-jpeg-dirconfigure option has been renamed to--with-jpeg. - The
--with-png-dirconfigure option has been removed. - The
--with-xpm-dirconfigure option has been renamed to--with-xpm. - The
--with-freetype-dirconfigure option has been renamed to--with-freetype. - The
--with-icu-dirconfigure option has been removed. - The
--with-onigconfigure option has been removed (bundled Oniguruma library has been removed in favor of the system Oniguruma library). - The
--enable-embedded-mysqliconfigure option has been removed. - The
--enable-wddxconfigure option has been removed. - The
--with-libexpat-dirconfigure option has been removed. - The
--enable/disable-zipconfigure option has been renamed to--with/without-zip. - The
--with-libzipconfigure option has been removed. - The
--with-recodeconfigure option has been removed.
- Obsolescent macros
AC_FUNC_VPRINTFandAC_FUNC_UTIME_NULLhave been removed. SymbolsHAVE_VPRINTFandHAVE_UTIME_NULLare no longer defined since they are not needed on the current systems. - Local PHP Autoconf unused or obsolete macros have been removed:
PHP_TARGET_RDYNAMIC,PHP_SOLARIS_PIC_WEIRDNESS,PHP_SYS_LFS,PHP_AC_BROKEN_SPRINTF,PHP_EXTENSION,PHP_DECLARED_TIMEZONE,PHP_CHECK_TYPES,PHP_CHECK_64BIT,PHP_READDIR_R_TYPE,PHP_SETUP_KERBEROS. - Local
PHP_TM_GMTOFFAutoconf macro has been replaced with Autoconf'sAC_CHECK_MEMBERS. TheHAVE_TM_GMTOFFsymbol is replaced withHAVE_STRUCT_TM_TM_GMTOFFandHAVE_TM_ZONEsymbol is replaced withHAVE_STRUCT_TM_TM_ZONE. PHP_PROG_BISONmacro now takes two optional arguments - minimum required version and excluded versions that aren't supported.PHP_PROG_RE2Cis not called in the generatedconfigure.acfor extensions anymore and now takes one optional argument - minimum required version.- Removed unused
AC_PROG_CC_C_Ocheck and theNO_MINUS_C_MINUS_Osymbol. - Obsolescant checks for headers and functions that are part of C89 have
been removed. The following symbols are therefore no longer defined by the
PHP build system at the configure step and shouldn't be used anymore:
HAVE_SETLOCALE,HAVE_LOCALECONV,HAVE_STRSTR,HAVE_STRTOL,HAVE_STRBRK,HAVE_PERROR,HAVE_STRFTIME,HAVE_TZNAME,HAVE_STDARG_H,HAVE_STRING_H,HAVE_STDLIB_H,HAVE_SYS_VARARGS_H,HAVE_ASSERT_H,HAVE_SYS_DIR_H,TM_IN_SYS_TIME,HAVE_STRTOD,HAVE_STRCOLL,HAVE_ERRNO_H,HAVE_MEMCPY,HAVE_SNPRINTF,HAVE_STDIO_H,HAVE_STRPBRK,HAVE_TIME_H,HAVE_LIMITS_H,HAVE_STRTOUL,HAVE_SYS_NDIR_H,HAVE_SYS_TIMES_H,PHP_HAVE_STDINT_TYPES,HAVE_SIGNAL_H,HAVE_STRERROR. - Removed unused check for
dev/arandomand theHAVE_DEV_ARANDOMsymbol. - Remove unused functions checks:
HAVE_MBSINIT,HAVE_MEMPCPY,HAVE_SETPGID,HAVE_STRPNCPY,HAVE_STRTOULL,HAVE_VSNPRINTF,HAVE_CUSERID,HAVE_LRAND48,HAVE_RANDOM,HAVE_SRAND48,HAVE_SRANDOM,HAVE_STRDUP,HAVE_GCVT,HAVE_ISASCII,HAVE_LINK,HAVE_LOCKF,HAVE_SOCKOPT,HAVE_SETVBUF,HAVE_SIN,HAVE_TEMPNAM. - Unused check for
struct cmsghdrand symbolHAVE_CMSGHDRhave been removed. - Unused
ApplicationServices/ApplicationServices.hheaders check andHAVE_APPLICATIONSERVICES_APPLICATIONSERVICES_Hsymbol have been removed. PHP_DEBUG_MACROmacro has been removed.PHP_CHECK_CONFIGURE_OPTIONSmacro has been removed. Default Autoconf's--enable-option-checking=fataloption can be used in the configure step to enable error when invalid options are used.- Removed unused check and symbols
HAVE_SHM_MMAP_ZERO,HAVE_SHM_MMAP_FILE. - Removed unused check and symbol
MISSING_MSGHDR_MSGFLAGS.
- Visual Studio 2019 is utilized for the Windows builds
- Removed unused defined symbol
HAVE_LIBBIND. - The
--with-pdo-sqlite-externalconfigure option has been removed. - The
--with-wddxconfigure option has been removed.
Autoconf minimum required version has been increased to 2.68.
Changelog
- The
--with-libmbflconfigure option has been removed.
- The
--with-ODBCRouter=DIR, and--with-birdstep=DIRconfigure options have been removed.
- Added new
--with-verbosity,--enable-native-intrinsicsconfigure options.
The configure.in has been renamed to configure.ac according to Autoconf
evolution. Autoconf minimum required version has been increased to 2.64.
Changelog
- Added new configure options
--with-lmdb,--with-sodium,--with-password-argon2,--enable-zend-test. - The
--with-mcryptconfigure option has been removed.
- The
--enable-gd-native-ttfconfigure option has been removed. - Added
--enable-phpdbg-readline,--with-valgrind=DIR,--with-pcre-valgrind=DIRconfigure options.
- The
--enable-one-shotconfigure option has been removed. - Added new configure options
--enable-sanitizer,--with-config-profile,--with-qdbm,--with-db
Changelog
- Added support for the static analysis with Clang and Cppcheck by passing the
clangorcppcheckkeyword to the--with-analyzerconfigure option. - Added new configure option
--without-readline.
Changelog
- The
--with-aolserver,--with-apache-hooks,--with-pi3web,--with-mssql,--with-sybase-ct,--with-mysqlconfigure options have been removed. - Added new configure options
--enable-phpdbg-webhelper,--disable-opcache-file,--with-pcre-jit
- Added new
--disable-gcc-global-regs,--with-fpm-acl,--with-system-ciphers, ,--with-webp-dir=DIR,--with-odbcver=HEX,--disable-huge-code-pagesconfigure option. - The
--with-apxs=FILE,--with-apache=DIR,--enable-mod-charset,--with-apxs2filter,--with-apache-hooks-static=DIR,--with-caudium=DIR,--with-continuity=DIR,--with-isapi=DIR,--with-milter=DIR,--with-nsapi=DIR,--with-phttpd=DIR,--with-roxen=DIR,--enable-roxen-zts,--with-thttpd=SRCDIR,--with-tux=MODULEDIR,--with-webjames=SRCDIR,--with-regex=TYPE,--with-vpx-dir=DIR,--with-t1lib=DIR,--with-zend-vm=TYPEconfigure options have been removed.
- Besides Visual Studio, building with Clang or Intel Composer is now possible.
To enable an alternative toolset, the configure option
--with-toolset=[vs,clang,icc]has been added to the main build system and phpize. - The
configure.jsnow produces response files which are passed to the linker and library manager. This solved the issues with the long command lines which can exceed the OS limit. - With the Clang toolset, an option
--with-uncritical-warn-chokehas been added to suppress the most frequent false positive warnings. - The
--with-mpconfigure option by default utilizes all the available cores. Enabled by default for release builds and can be disabled with the specialdisablekeyword. - Added new configure options
--with-toolset,--without-uncritical-warn-choke,--with-codegen-arch,--with-all-shared,--disable-test-ini,--with-test-ini-ext-exclude,--without-libwebp,--enable-sysvshm. - The
--enable-apache,--with-apache-includes,--with-apache-libs,--enable-apache2filter,--enable-apache2-2filter,--enable-isapi,--enable-nsapi,--with-nsapi-includes,--with-nsapi-libs,--without-ereg,--without-t1lib,--without-libvpx,--with-dblibconfigure options have been removed.
Changelog
- Added new
--enable-phpdbg,--enable-phpdbg-debug,--with-libzip=DIRconfigure options.
- The
--enable-static-analyzeconfigure option has been removed. - Added new
--with-analyzer,--enable-phpdbg,--enable-phpdbgs,--with-oci8-12cconfigure options.
Changelog
- Added new
--enable-opcacheconfigure option.
- The
--with-curlwrappersconfigure option has been removed.
- Added new
--without-libvpx,--with-libmbfl,--with-odbcverconfigure options.
Autoconf minimum required version has been increased to 2.59.
Changelog
- The
--enable-zend-multibyte,--with-sqliteconfigure options have been removed.
- Added new
--enable-zend-signals,--with-vpx-dir=DIR,--with-tcadb=DIR,--enable-dtrace,--with-fpm-systemdconfigure options. - The
--enable-sqlite-utf8,--enable-ucd-snmp-hack,--enable-magic-quotes,--with-exec-dir[=DIR],--enable-safe-modeconfigure options have been removed.
- Added new
--enable-pgi,--with-pgoconfigure options.
Bundled libtool has been updated to 1.5.26.
Changelog
- Added new
--with-enchant,--enable-fileinfo,--enable-intl,--disable-pharconfigure options. - The
--enable-dbase,--with-fbsql,--with-mime-magic,--with-ming,--disable-reflection,--disable-splconfigure options have been removed.
-
New configure options:
--enable-re2c-cgoto--enable-fpm--with-fpm-user[=USER]--with-fpm-group[=GRP]--with-litespeed--with-icu-dir=DIR--with-onig[=DIR]--with-pcre-dir--enable-mysqlnd--disable-mysqlnd-compression-support--with-zlib-dir[=DIR]
-
Removed configure options:
--enable-fastcgi--enable-force-cgi-redirect--enable-discard-path--disable-path-info-check--with-fdftk--with-ttf[=DIR]--with-msql[=DIR]--with-sybase[=DIR]--with-ncurses[=DIR]
- The
--enable-prefixconfigure option has been renamed to--with-prefix. - Added new
--with-mp,--enable-security-flags,--enable-static-analyze,--enable-apache2-4handler,--without-ereg,--without-mysqlnd,--with-oci8-11g,--with-sqlite3,--enable-phar-native-sslconfigure options. - The
--disable-fastcgi,--disable-path-info-check,--disable-force-cgi-redirect,--with-fdf,--with-msq,--with-pdo-oci8configure options have been removed.
Idea to rewrite PHP build system in CMake first appeared during the Google Summer of Code in 2008 (wiki, php-cmake).
Changelog
- Added new
--disable-filter,--disable-json,--disable-mbregex-backtrack,--enable-zipconfigure options. - The
--enable-memory-limit,--enable-filepro,--with-informixconfigure options have been removed.
- Added new
--without-sqlite3[=DIR],--with-libexpat-dir=DIRconfigure options. - The
--disable-zend-memory-manager,--with-hwapi[=DIR],--with-fdftk[=DIR],--enable-versioningconfigure options have been removed. - The
--with-mod_charsetconfigure option has been renamed to--enable-mod-charset. - The
--with-inifileconfigure option has been renamed to--enable-inifile. - The
--with-flatfileconfigure option has been renamed to--enable-flatfile.
- Added new
--enable-apache2filter,--enable-apache2-2filter,--enable-apache2-2handler,--with-pdo-sqlite-externalconfigure options. - The
--disable-memory-manager,--without-pcre-regexconfigure options have been removed.
Bundled libtool has been updated to 1.5.20.
Changelog
- Added new
-with-zend-vm=TYPE,--disable-reflection,--with-libdir=NAME,--enable-gcov,--with-ODBCRouter[=DIR],--with-db1,--disable-hash,--disable-pdo,--with-pdo-dblib[=DIR],--with-pdo-firebird[=DIR],--with-pdo-mysql[=DIR],--with-pdo-oci[=DIR],--with-pdo-odbc,--with-pdo-pgsql[=DIR],--with-pdo-sqlite,--disable-xmlreader,--with-libxml-dir=DIR,--disable-xmlwriter,--with-libexpat-dir=DIRconfigure options. - The
--enable-yp,--with-oci8-instant-client,--with-oracle[=DIR],--with-ovrimos[=DIR],--with-pfpro[=DIR],--with-ingres[=DIR],--with-mcve[=DIR],--with-mnogosearch[=DIR],--with-msession[=DIR],--with-expat-dir=DIR,--with-tiff-dir[=DIR],--with-cpdflib[=DIR],--enable-dbx,--enable-dio,--with-famconfigure options have been removed. - The bundled libtool gained the
--with-tags[=TAGS]configure option.
- Removed configure options:
--with-cpdflib--enable-dbx--enable-dio--with-ingres--with-mcve--with-oracle
- Added new configure options:
--without-t1lib--with-gmp--disable-hash--with-dblib--disable-reflection--enable-pdo--with-pdo-dblib--with-pdo-mssql--with-pdo-firebird--with-pdo-mysql--with-pdo-oci--with-pdo-oci8--with-pdo-odbc--with-pdo-pgsql--with-pdo-sqlite--disable-xmlreader--disable-xmlwriter
- The
--with-exifconfigure options has been renamed to--enable-exif.
Additional release of PHP 4.4 has been done in addition to PHP 5 branch that
added man pages for phpize and php-config scripts.
In 2003, a new additional Windows dedicated build system for building PHP on
Windows systems has been developed and added to PHP 5.0 released in 2004.
Freedesktop's pkg-config tool has been optionally used in PHP Autotools-based
*nix build system to find the OpenSSL dependency on the system.
Changelog
- Many new configure options.
- The
--with-servlet[=DIR],--with-hyperwaveconfigure options have been removed.
Build system gets rewritten and modernized for the Autoconf versions available at the time. Dependency on Automake has been removed.
In 1999, support for building external PHP extensions using a PEAR-based tool
phpize has been added to PHP which became available in 2000 in the PHP 4.0
release. Autoconf minimum required version has been set to 2.13.
PHP quickly grew and a new version has been created - PHP 2.0 (PHP/FI) with Autoconf 2.9 based configure script.
First public release of PHP 1 - Personal Home Page Tools started with a single Makefile.
PHP tools Makefile
#
# Makefile for the PHP Tools
#
# By Rasmus Lerdorf
#
#
# Here are the configurable options.
#
# For BSDi systems, use: -DFLOCK
# For SVR4 systems (Solaris - SunOS 5.4), use: -DLOCKF
# For SunOS systems use: -DFLOCK -DFILEH
# For AIX systems use: -DLOCKF -DLOCKFH
# For Linux use: -DLOCKF
# For BSD 4.3 use: -DFLOCK -DFILEH -DDIRECT
#
# If you want to disable the <!--!command--> feature add this: -DNOSYSTEM
OPTIONS = -DFLOCK
# Generic compiler options
#CFLAGS = -g -O2 -Wall -DDEBUG $(OPTIONS)
CFLAGS = -O2 $(OPTIONS)
CC = gcc
# If you don't have gcc, use these instead:
#CFLAGS = -g $(OPTIONS)
#CC = cc
TSOURCE = php/phpf.c php/phpl.c php/phplview.c php/phplmon.c php/common.c \
php/error.c php/post.c php/wm.c php/common.h php/config.h \
php/subvar.c php/html_common.h php/post.h php/version.h php/wm.h \
php/Makefile php/README php/License
SOURCE = phpf.c phpl.c phplview.c phplmon.c common.c \
error.c post.c wm.c common.h config.h \
subvar.c html_common.h post.h version.h wm.h \
Makefile README License
ALL: phpl.cgi phplmon.cgi phplview.cgi phpf.cgi
phpl.cgi: phpl.o wm.o common.o post.o subvar.o error.o
$(CC) -o phpl.cgi phpl.o wm.o common.o post.o error.o subvar.o
phplmon.cgi: phplmon.o common.o
$(CC) -o phplmon.cgi phplmon.o common.o
phplview.cgi: phplview.o common.o post.o error.o
$(CC) -o phplview.cgi phplview.o common.o post.o error.o
phpf.cgi: phpf.o post.o error.o
$(CC) -o phpf.cgi phpf.o post.o error.o common.o
php.tar: $(SOURCE)
cd ..;tar -cf php/php.tar $(TSOURCE);cd php
error.o: error.c html_common.h
phpl.o: phpl.c config.h
phplmon.o: phplmon.c config.h
phplview.o: phplview.c
wm.o: wm.c
common.o: common.c version.h common.h
post.o: post.c html_common.h
phpf.o: phpf.c html_common.h common.h
subvar.o: subvar.c