1
0
mirror of https://github.com/php/php-src.git synced 2026-04-28 02:33:17 +02:00
Commit Graph

576 Commits

Author SHA1 Message Date
Peter Kokot cf84bbf606 Merge branch 'PHP-7.4'
* PHP-7.4:
  Use PKG_CHECK_MODULES to detect the kerberos libraries
2019-04-20 15:18:14 +02:00
Hugh McMaster aba72ebf15 Use PKG_CHECK_MODULES to detect the kerberos libraries 2019-04-20 15:13:24 +02:00
Nikita Popov d9ec9a919c Merge branch 'PHP-7.4' 2019-04-18 13:08:27 +02:00
Hugh McMaster cc930cdd75 Use PKG_CHECK_MODULES to detect libxml2 2019-04-18 13:04:54 +02:00
Nikita Popov 6960ea99ac Merge branch 'PHP-7.4' 2019-04-11 16:57:46 +02:00
Nikita Popov 2b28f71891 Use readdir() instead of readdir_r()
readdir_r() is deprecated in modern glibc versions. readdir() is
thread safe in practice, as long as there are no concurrent accesses
on the *same* directory stream.
2019-04-11 16:52:36 +02:00
Peter Kokot b49022b3dc Merge branch 'PHP-7.4'
* PHP-7.4:
  Refactor PHP_PROG_BISON and PHP_PROG_RE2C
2019-03-30 02:02:14 +01:00
Peter Kokot 3207741df0 Refactor PHP_PROG_BISON and PHP_PROG_RE2C
This patch refactors these macros to also checks for the required given
versions of bison and re2c.

- PHP_PROG_RE2C and PHP_PROG_BISON take optional args - minmimum version
  required, and bison also excluded versions.
- Instead of caching values this uses manual checking and messaging
  outputs.
- It looks like the minimum version of RE2C 0.13.4 is working ok so far.

The genfiles script improvements:
- Add make override in genfiles
- Move checkings from makedist to genfiles
- Refactored output messages
- Various minor enhancements
2019-03-30 02:01:02 +01:00
Joe Watkins 7873c79651 Merge branch 'PHP-7.4'
* PHP-7.4:
  Consider phpdbg as cli
2019-03-27 10:39:04 +01:00
Joe Watkins fd5d659779 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Consider phpdbg as cli
2019-03-27 10:38:56 +01:00
Joe Watkins 218154e695 Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
  Consider phpdbg as cli
2019-03-27 10:38:45 +01:00
Samuele Kaplun 79f046f89e Consider phpdbg as cli
* When configuring extensions, considers the PHPDBG SAPI as CLI thus
  allowing e.g. to have the pcntl extension available within PHPDBG.

Signed-off-by: Samuele Kaplun <kaplun@protonmail.com>
2019-03-27 10:38:03 +01:00
Joe Watkins 161adfff3f For consistency with Windows, and because ZTS is not experimental or a "maintainer" feature, this commits renames --enable-maintainer-zts to --enable-zts in the autotools build, and related documentation 2019-03-23 07:34:54 +01:00
Peter Kokot ccc29473ec Sync AC_CHECK_SIZEOF m4 macro calls
- AC_CHECK_SIZEOF is now called mostly only in PHP_CHECK_STDINT_TYPES()
  macro except for some parts checking for the 32 or 64 bit architecture.
- SIZEOF_CHAR removed since it is always 1
- ZEND_BIN_ID is now of a more logical pattern `BIN_48888` on 64bit
  architectures and `BIN_44444` on 32bit instead of literal string
  `BIN_SIZEOF_CHAR48888` on 64bit and `BIN_SIZEOF_CHAR44444` on 32bit.
  The unneeded SIZEOF_CHAR part has been removed.
- XMLRPC_TYPE_CHECKS removed
- The `long long int` is the same as `long long` and redundant checks
  removed accordingly.
- Removed PHP_CHECK_64BIT macro. Checking if current platform is 64bit
  or not can be also done simply by using a check of the long type on
  place. This removes redundant m4 macro PHP_CHECK_64BIT.
2019-03-18 02:11:23 +01:00
Nuno Lopes 434fae97f2 check for bison binary, not yacc
this fixes compilation with recent bison
2019-03-16 12:22:44 -04:00
Peter Kokot 2957651c5c Move Makefile.global and Makefile.gcov to build directory
These files can be stored in the build directory instead of bloating the
project root directory.
2019-03-04 12:30:42 +01:00
Peter Kokot a8c3e22d23 Replace PHP_TM_GMTOFF with AC_CHECK_MEMBERS
Changes:
- PHP_TM_GMTOFF removed
- HAVE_TM_GMTOFF replaced with HAVE_STRUCT_TM_TM_GMTOFF
- HAVE_TM_ZONE replaced with HAVE_STRUCT_TM_TM_ZONE
- HAVE_TZNAME removed

The PHP_TM_GMTOFF macro can be replaced with Autoconf's AC_CHECK_MEMBERS
that defines the HAVE_STRUCT_TM_TM_GMTOFF symbol instead of the
HAVE_TM_ZONE.

The HAVE_TZNAME symbol is not used in current code. The obsolete
HAVE_TM_ZONE symbol has been replaced with more proper
HAVE_STRUCT_TM_TM_ZONE. These are defined by the AC_STRUCT_TIMEZONE
macro.
2019-03-04 12:13:12 +01:00
Peter Kokot 6a54282728 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Update NEWS
  Fix shared module generation on AIX bug #77676
2019-03-02 18:52:30 +01:00
Peter Kokot fa574ddd6f Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
  Update NEWS
  Fix shared module generation on AIX bug #77676
2019-03-02 18:52:01 +01:00
Kevin Adler 700f876a1a Fix shared module generation on AIX bug #77676
Makefiles for PHP extensions generated by phpize expect the PHP_MODULES
to contain a list of libtool .la files so that it can read the $dlname
variable from them by sourcing them in to a shell. On AIX, the code was
setting PHP_MODULES to a list of .so files, which meant the dlname was
blank, preventing the tests from being able to run.

Change the AIX code path in the PHP_SHARED_MODULE macro to match the
output on other platforms, using libtool .la files.
2019-03-02 18:45:55 +01:00
Peter Kokot 7431eb72fe Remove LIBZEND_CHECK_INT_TYPE and PHP_CHECK_TYPES
Checking for int32_t and uint32_t types is already done by the
PHP_CHECK_STDINT_TYPES m4 macro.

The PHP_CHECK_TYPES m4 macro has been once used by the mysqlnd and has
been removed via 14caf174ff and
additionally, the internal unused macro _PHP_DEF_HAVE_FILE has been
removed.

Additionally, the unused PHP_HAVE_STDINT_TYPES symbol has been removed.
2019-03-02 12:23:21 +01:00
Peter Kokot a700451706 Remove obsolescent AC_HEADER_STDC and memcpy check
Autoconf 2.59d (released in 2006) [1] started promoting several macros
as not relevant for newer systems anymore, including the `AC_HEADER_STDC`.

This macro checks if given system has C89 compliant header files such
as `<string.h>`, `<stdlib.h>`, `<stdarg.h>`, `<float.h>`,... and defines
the `STDC_HEADERS` symbol [2]. Case is that current systems should be
well supported with at least C89 standard headers [3].

Given headers are still additionally checked with the `AC_PROG_CC`
macro, yet not needed anyway.

Additionally, the HAVE_MEMCPY check has been removed. The memcpy
function is standardized by C89 and later.

Refs:
[1] http://git.savannah.gnu.org/cgit/autoconf.git/tree/NEWS
[2] https://www.gnu.org/software/autoconf/manual/autoconf-2.69/autoconf.html
[3] https://port70.net/~nsz/c/c89/c89-draft.html#4.1.2
2019-03-01 19:22:44 +01:00
Peter Kokot f64ae64f52 Remove PHP_DECLARED_TIMEZONE and HAVE_DECLARED_TIMEZONE
The HAVE_DECLARED_TIMEZONE symbol usage has been introduced in
2fd8cbff2a
and then removed via
667a9b9bce.
2019-02-28 21:17:49 +01:00
Peter Kokot 5cf570c914 Remove unused PHP_AC_BROKEN_SNPRINTF m4 macro
The snprintf function is part of the C99 standard and newer systems in
most cases all support it as defined in the standard. However, some old
Windows and HP-UX systems the function behaves differently. These checks
were also removed and PHP now uses a replacement for the snprintf
function. With gradual transition to C99 usage as a minimum requirement,
it will also be able to be replaced to system's snprintf function
directly.

Additionally in this context the unused HAVE_VSNPRINTF and check for
vsnprintf have been removed. PHP uses its own vsnprintf implementation
for now until more reliable C99 compliant function can be used from the
C libraries.
2019-02-27 21:20:30 +01:00
Peter Kokot 3aeb7b0e77 Remove deprecated PHP_EXTENSION m4 macro
The PHP_EXTENSION macro was used before the introduction of the updated
build system in the 9d9d39a0de. The
extensions at that time possibly still used the Makefile.in and Automake
and the PHP_EXTENSION macro has been replaced with the PHP_NEW_EXTENSION
macro.

Today, the once deprecated macro can be removed in favor of only
PHP_NEW_EXTENSION macro.
2019-02-27 20:12:53 +01:00
Peter Kokot b33fa18eab Remove unused PHP_AC_BROKEN_SPRINTF and AC_ZEND_BROKEN_SPRINTF
The sprintf function has been normalized to php_sprintf via
61364b5bb1.

This patch removes the checks to make a custom sprintf function

The ZEND_BROKEN_SPRINTF has been removed and the
hardcoded #define zend_sprintf sprintf is used.

The php_sprintf and zend_sprintf are now symbols to sprintf.

This patch now removes the custom PHP definitions of the php_sprintf and
zend_sprintf functions in favor of the C99 sprintf which is also
standardized in C89 already. Once, on some systems sprintf didn't behave
in same way.
2019-02-23 22:26:47 +01:00
Peter Kokot acfafc2083 Remove unused PHP_SYS_LFS m4 macro
This was once named as AC_SYS_LFS and today it is not used in current
PHP code base anymore.
2019-02-20 20:03:21 +01:00
Peter Kokot 44b874ac75 Remove unused PHP_SOLARIS_PIC_WEIRDNESS m4 macro
This has been once used for Solaris systems and has been removed via
827ad656cb
2019-02-20 20:02:59 +01:00
Peter Kokot d936b2c4fd Remove unused PHP_TARGET_RDYNAMIC m4 macro
This has been once used with apache sapi. Since PHP 7.0 it is not used
in the PHP anymore.
2019-02-20 20:02:25 +01:00
Derick Rethans 8be649d908 Merge branch 'PHP-7.2' into PHP-7.3 2019-02-07 11:12:42 +00:00
Derick Rethans e2edaa0cee Use pkg-config for ICU, as the old icu-config has been deprecated 2019-02-07 10:18:32 +00:00
Nikita Popov a093de8cc1 Require icu-uc and icu-i18n next to icu-io 2019-02-07 11:00:51 +01:00
Eli Schwartz fe8fdfa3bd ext/openssl: port to pkg-config macro and consistently require its use
openssl 0.9.8 in July 2005 first added pkg-config support, which is
earlier than the minimum supported version for php. This should
therefore be uiversally supported.
2019-01-11 11:49:37 +01:00
Hugh McMaster 20fa2e7b58 ext/intl: Use pkg-config to detect icu
The developers of icu recommend using pkg-config to detect icu,
because icu-config is deprecated.
2018-12-09 16:59:24 +01:00
Peter Kokot ea01d7837c Replace LT_AC_PROG_SED with AC_PROG_SED
The LT_AC_PROG_SED libtool's macro has been integrated in the Autoconf
since Autoconf 2.59b [1] and is recommended to be replaced with it [2].

[1] https://git.savannah.gnu.org/cgit/autoconf.git/tree/NEWS
[2] http://git.savannah.gnu.org/cgit/libtool.git/tree/m4/libtool.m4
2018-12-02 16:26:17 -08:00
Peter Kokot 72087c8921 Replace AC_CHECK_FILE with test -f
The AC_CHECK_FILE macro is designed to emit a warning about possible
cross compiling issues if file is not present on the target system.
Since the generated PHP lexer file is part of the build files and not
target system this can be simplified by a usual shell check with
`test -f` instead as in other usages.
2018-12-01 21:40:51 +01:00
Peter Kokot 67b9108478 Add re2c checking with error exit code
To make installation experience better instead of only outputting
warning when re2c is not present this patch also exits if the PHP lexer
file(s) were not generated yet and re2c is not present on the system.
2018-11-25 21:01:21 +01:00
Eli Schwartz 2d03197749 ext/gd: Use pkg-config to detect the availability of freetype2
The latest version of freetype2 does not install freetype-config by
default, but pkg-config support has been there for approximately 15
years. In order to reliably detect freetype2, pkg-config *must* be used.

See:
https://savannah.nongnu.org/bugs/?53093
https://bugs.php.net/bug.php?id=76324
2018-11-07 13:05:47 +01:00
Peter Kokot 1ad08256f3 Sync leading and final newlines in source code files
This patch adds missing newlines, trims multiple redundant final
newlines into a single one, and trims redundant leading newlines.

According to POSIX, a line is a sequence of zero or more non-' <newline>'
characters plus a terminating '<newline>' character. [1] Files should
normally have at least one final newline character.

C89 [2] and later standards [3] mention a final newline:
"A source file that is not empty shall end in a new-line character,
which shall not be immediately preceded by a backslash character."

Although it is not mandatory for all files to have a final newline
fixed, a more consistent and homogeneous approach brings less of commit
differences issues and a better development experience in certain text
editors and IDEs.

[1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206
[2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2
[3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
2018-10-14 12:56:38 +02:00
Peter Kokot 902d39a3a7 Trim trailing whitespace in source code files 2018-10-13 14:14:50 +02:00
Anatol Belski 4acc8500ac Enforce C++11 in ext/intl
ICU 59 already requires C++11 by default. The minimum version required
by the core is 50, which is compiled with at least C++11 in many distros
as package defs tell. Headers for ICU versions between ICU 50 and 58 look
fine when included for C++11 compilation, the linking is thereof not affected.

The macro PHP_CXX_COMPILE_STDCXX is based on
https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
The patch consists on allowing to read the corresponding switch in a user
defined variable instead of enforcing CXXFLAGS globally. That way, every
ext or SAPI can decide, which C++ standard is to be used. The
documentation is provided in the m4 file.

C++11 is already somewhat older standard, C++14 were better. However
issues with GCC < 5.0 and some other compilers are possibly to hit back.
Still there's some time to check for C++14 for ext/intl, too. Having said
that, C++11 in ext/intl and a mechanism to determine features is a good step
towards better C++ support.
2018-10-07 20:00:03 +02:00
Nikita Popov 74235ca5f3 Bump minimum libxml version to 2.7.6
Released Oct 2009, part of RHEL 6.
2018-09-23 15:51:09 +02:00
Nikita Popov 415cb20dc1 Remove unused HAVE_BROKEN_GLIBC_FOPEN_APPEND
This has not been used since PHP 5.0.
2018-09-17 20:59:16 +02:00
Christoph M. Becker 8a4c2f1621 Require ICU ≥ 50.1
Given that ICU is a set of lively developed libraries, that ICU 50.1
has been released on 2012-11-05, and PHP 7.4 is scheduled to be
released seven years after it, we consider it appropriate to ditch
these legacy versions.

Particularly, that would be a reasonable groundwork to implement part
two of the “Deprecate and remove INTL_IDNA_VARIANT_2003” RFC[1], namely
to default idn_to_ascii()'s and idn_to_utf8()'s $variant parameter to
INTL_IDNA_VARIANT_UTS46, which is not defined in ICU < 4.6.

See also the related discussion on internals@[2].

[1] <https://wiki.php.net/rfc/deprecate-and-remove-intl_idna_variant_2003>
[2] <http://news.php.net/php.internals/101626>ff
2018-09-15 13:59:54 +02:00
Christoph M. Becker aaae9c66db Merge branch 'PHP-7.3'
* PHP-7.3:
  Fix #76510: file_exists() stopped working for phar://
2018-09-11 12:23:50 +02:00
Christoph M. Becker b117feeb2b Fix #76510: file_exists() stopped working for phar://
We work around a strlen() optimization bug in GCC 8[1] by checking
whether the used GCC exhibits the broken behavior, and if so by
disabling `optimize-strlen`.

[1] <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86914>
2018-09-11 12:23:20 +02:00
Peter Kokot cbc785dc8c Remove AC_STRUCT_TM macro
Autoconf 2.59d (released in 2006) [1] started promoting several macros
as not relevant for newer systems anymore, including the `AC_STRUCT_TM`.

This macro checks if `struct tm` is defined in either `<sys/time.h>` or
`<time.h>` and defines the `TM_IN_SYS_TIME` symbol accordingly. This
check was relevant in times before the C89 for some embedded systems,
microcontrollers or very old systems. For newer systems it can be
avoided and the `<time.h>` should be included instead since current
systems should be well supported by now. [2]

Since PHP requires at least C89, this patch removes the obsolescent call
and time.h checks.

Refs:

- [1]: http://git.savannah.gnu.org/cgit/autoconf.git/tree/NEWS
- [2]: https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Particular-Structures.html
2018-08-29 21:22:47 +02:00
Peter Kokot 7c1e0930c4 Remove TSRM_CHECK_GCC_ARG and LIBZEND_CPLUSPLUS_CHECKS
This removes two old Autoconf macro definitions since they are not used
anymore.
2018-07-31 05:59:05 +02:00
Peter Kokot f2e4de8b56 Fix AC_RUN_IFELSE calls when cross-compiling
AC_RUN_IFELSE program can't be run when cross-compiling. This fix removes
warnings given by autotools scripts.
2018-07-30 06:38:59 +02:00
Peter Kokot 4371945b8b Replace obsolete AC_TRY_FOO with AC_FOO_IFELSE
Autoconf 2.50 released in 2001 made several macros obsolete including
the AC_TRY_RUN, AC_TRY_COMPILE and AC_TRY_LINK:
http://git.savannah.gnu.org/cgit/autoconf.git/tree/ChangeLog.2

These macros should be replaced with the current AC_FOO_IFELSE instead:
- AC_TRY_RUN with AC_RUN_IFELSE and AC_LANG_SOURCE
- AC_TRY_LINK with AC_LINK_IFELSE and AC_LANG_PROGRAM
- AC_TRY_COMPILE with AC_COMPILE_IFELSE and AC_LANG_PROGRAM

PHP 5.4 to 7.1 require Autoconf 2.59+ version, PHP 7.2 and above require
2.64+ version, and the PHP 7.2 phpize script requires 2.59+ version which
are all greater than above mentioned 2.50 version therefore systems
should be well supported by now.

This patch was created with the help of autoupdate script:
autoupdate <file>

Reference docs:
- https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Obsolete-Macros.html
- https://www.gnu.org/software/autoconf/manual/autoconf-2.59/autoconf.pdf
2018-07-30 02:36:38 +02:00