From beb58ca128e78bdbf56956e52a87eb943d85e534 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Tue, 23 Apr 2019 20:37:31 +0200 Subject: Move Autoconf Archive macros to a common m4 dir In PHP the build dir is used as a directory for external macros including Autoconf Archive macros. --- CONTRIBUTING.md | 8 +- TSRM/m4/ax_func_which_gethostbyname_r.m4 | 196 ------------------------------- TSRM/tsrm.m4 | 6 - build/ax_func_which_gethostbyname_r.m4 | 196 +++++++++++++++++++++++++++++++ configure.ac | 3 + 5 files changed, 201 insertions(+), 208 deletions(-) delete mode 100644 TSRM/m4/ax_func_which_gethostbyname_r.m4 create mode 100644 build/ax_func_which_gethostbyname_r.m4 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 31508f6998..d819e57921 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -124,10 +124,7 @@ locations. ```bash / ├─ .git/ # Git configuration and source directory - └─ TSRM/ # Thread Safe Resource Manager - └─ m4/ # https://github.com/autoconf-archive/autoconf-archive - └─ ax_func_which_gethostbyname_r.m4 - └─ ... + ├─ TSRM/ # Thread Safe Resource Manager └─ Zend/ # Zend Engine ├─ zend_vm_execute.h # Generated by `Zend/zend_vm_gen.php` ├─ zend_vm_opcodes.c # Generated by `Zend/zend_vm_gen.php` @@ -135,8 +132,7 @@ locations. └─ ... ├─ appveyor/ # Appveyor CI service files └─ build/ # *nix build system files - ├─ ax_check_compile_flag.m4 # https://github.com/autoconf-archive/autoconf-archive - ├─ ax_gcc_func_attribute.m4 # https://github.com/autoconf-archive/autoconf-archive + ├─ ax_*.m4 # https://github.com/autoconf-archive/autoconf-archive ├─ config.guess # https://git.savannah.gnu.org/cgit/config.git ├─ config.sub # https://git.savannah.gnu.org/cgit/config.git ├─ libtool.m4 # https://git.savannah.gnu.org/cgit/libtool.git diff --git a/TSRM/m4/ax_func_which_gethostbyname_r.m4 b/TSRM/m4/ax_func_which_gethostbyname_r.m4 deleted file mode 100644 index bb6bc959e7..0000000000 --- a/TSRM/m4/ax_func_which_gethostbyname_r.m4 +++ /dev/null @@ -1,196 +0,0 @@ -# ================================================================================== -# https://www.gnu.org/software/autoconf-archive/ax_func_which_gethostbyname_r.html -# ================================================================================== -# -# SYNOPSIS -# -# AX_FUNC_WHICH_GETHOSTBYNAME_R -# -# DESCRIPTION -# -# Determines which historical variant of the gethostbyname_r() call -# (taking three, five, or six arguments) is available on the system and -# defines one of the following macros accordingly: -# -# HAVE_FUNC_GETHOSTBYNAME_R_6 -# HAVE_FUNC_GETHOSTBYNAME_R_5 -# HAVE_FUNC_GETHOSTBYNAME_R_3 -# -# as well as -# -# HAVE_GETHOSTBYNAME_R -# -# If used in conjunction with gethostname.c, the API demonstrated in -# test.c can be used regardless of which gethostbyname_r() is available. -# These example files can be found at -# http://www.csn.ul.ie/~caolan/publink/gethostbyname_r -# -# based on David Arnold's autoconf suggestion in the threads faq -# -# Originally named "AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R". Rewritten for -# Autoconf 2.5x, and updated for 2.68 by Daniel Richard G. -# -# LICENSE -# -# Copyright (c) 2008 Caolan McNamara -# Copyright (c) 2008 Daniel Richard G. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 8 - -AC_DEFUN([AX_FUNC_WHICH_GETHOSTBYNAME_R], [ - - AC_LANG_PUSH([C]) - AC_MSG_CHECKING([how many arguments gethostbyname_r() takes]) - - AC_CACHE_VAL([ac_cv_func_which_gethostbyname_r], [ - -################################################################ - -ac_cv_func_which_gethostbyname_r=unknown - -# -# ONE ARGUMENT (sanity check) -# - -# This should fail, as there is no variant of gethostbyname_r() that takes -# a single argument. If it actually compiles, then we can assume that -# netdb.h is not declaring the function, and the compiler is thereby -# assuming an implicit prototype. In which case, we're out of luck. -# -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], - [ - char *name = "www.gnu.org"; - (void)gethostbyname_r(name) /* ; */ - ])], - [ac_cv_func_which_gethostbyname_r=no]) - -# -# SIX ARGUMENTS -# (e.g. Linux) -# - -if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then - -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], - [ - char *name = "www.gnu.org"; - struct hostent ret, *retp; - char buf@<:@1024@:>@; - int buflen = 1024; - int my_h_errno; - (void)gethostbyname_r(name, &ret, buf, buflen, &retp, &my_h_errno) /* ; */ - ])], - [ac_cv_func_which_gethostbyname_r=six]) - -fi - -# -# FIVE ARGUMENTS -# (e.g. Solaris) -# - -if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then - -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], - [ - char *name = "www.gnu.org"; - struct hostent ret; - char buf@<:@1024@:>@; - int buflen = 1024; - int my_h_errno; - (void)gethostbyname_r(name, &ret, buf, buflen, &my_h_errno) /* ; */ - ])], - [ac_cv_func_which_gethostbyname_r=five]) - -fi - -# -# THREE ARGUMENTS -# (e.g. AIX, HP-UX, Tru64) -# - -if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then - -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], - [ - char *name = "www.gnu.org"; - struct hostent ret; - struct hostent_data data; - (void)gethostbyname_r(name, &ret, &data) /* ; */ - ])], - [ac_cv_func_which_gethostbyname_r=three]) - -fi - -################################################################ - -]) dnl end AC_CACHE_VAL - -case "$ac_cv_func_which_gethostbyname_r" in - three|five|six) - AC_DEFINE([HAVE_GETHOSTBYNAME_R], [1], - [Define to 1 if you have some form of gethostbyname_r().]) - ;; -esac - -case "$ac_cv_func_which_gethostbyname_r" in - three) - AC_MSG_RESULT([three]) - AC_DEFINE([HAVE_FUNC_GETHOSTBYNAME_R_3], [1], - [Define to 1 if you have the three-argument form of gethostbyname_r().]) - ;; - - five) - AC_MSG_RESULT([five]) - AC_DEFINE([HAVE_FUNC_GETHOSTBYNAME_R_5], [1], - [Define to 1 if you have the five-argument form of gethostbyname_r().]) - ;; - - six) - AC_MSG_RESULT([six]) - AC_DEFINE([HAVE_FUNC_GETHOSTBYNAME_R_6], [1], - [Define to 1 if you have the six-argument form of gethostbyname_r().]) - ;; - - no) - AC_MSG_RESULT([cannot find function declaration in netdb.h]) - ;; - - unknown) - AC_MSG_RESULT([can't tell]) - ;; - - *) - AC_MSG_ERROR([internal error]) - ;; -esac - -AC_LANG_POP - -]) dnl end AC_DEFUN diff --git a/TSRM/tsrm.m4 b/TSRM/tsrm.m4 index 693ddb392f..a075001b5a 100644 --- a/TSRM/tsrm.m4 +++ b/TSRM/tsrm.m4 @@ -1,17 +1,11 @@ -m4_include([TSRM/m4/ax_func_which_gethostbyname_r.m4]) - AC_DEFUN([TSRM_BASIC_CHECKS],[ AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_CHECK_FUNCS(sigprocmask) - -AX_FUNC_WHICH_GETHOSTBYNAME_R() - ]) - AC_DEFUN([TSRM_CHECK_PTH],[ AC_MSG_CHECKING(for GNU Pth) diff --git a/build/ax_func_which_gethostbyname_r.m4 b/build/ax_func_which_gethostbyname_r.m4 new file mode 100644 index 0000000000..bb6bc959e7 --- /dev/null +++ b/build/ax_func_which_gethostbyname_r.m4 @@ -0,0 +1,196 @@ +# ================================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_func_which_gethostbyname_r.html +# ================================================================================== +# +# SYNOPSIS +# +# AX_FUNC_WHICH_GETHOSTBYNAME_R +# +# DESCRIPTION +# +# Determines which historical variant of the gethostbyname_r() call +# (taking three, five, or six arguments) is available on the system and +# defines one of the following macros accordingly: +# +# HAVE_FUNC_GETHOSTBYNAME_R_6 +# HAVE_FUNC_GETHOSTBYNAME_R_5 +# HAVE_FUNC_GETHOSTBYNAME_R_3 +# +# as well as +# +# HAVE_GETHOSTBYNAME_R +# +# If used in conjunction with gethostname.c, the API demonstrated in +# test.c can be used regardless of which gethostbyname_r() is available. +# These example files can be found at +# http://www.csn.ul.ie/~caolan/publink/gethostbyname_r +# +# based on David Arnold's autoconf suggestion in the threads faq +# +# Originally named "AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R". Rewritten for +# Autoconf 2.5x, and updated for 2.68 by Daniel Richard G. +# +# LICENSE +# +# Copyright (c) 2008 Caolan McNamara +# Copyright (c) 2008 Daniel Richard G. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 8 + +AC_DEFUN([AX_FUNC_WHICH_GETHOSTBYNAME_R], [ + + AC_LANG_PUSH([C]) + AC_MSG_CHECKING([how many arguments gethostbyname_r() takes]) + + AC_CACHE_VAL([ac_cv_func_which_gethostbyname_r], [ + +################################################################ + +ac_cv_func_which_gethostbyname_r=unknown + +# +# ONE ARGUMENT (sanity check) +# + +# This should fail, as there is no variant of gethostbyname_r() that takes +# a single argument. If it actually compiles, then we can assume that +# netdb.h is not declaring the function, and the compiler is thereby +# assuming an implicit prototype. In which case, we're out of luck. +# +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], + [ + char *name = "www.gnu.org"; + (void)gethostbyname_r(name) /* ; */ + ])], + [ac_cv_func_which_gethostbyname_r=no]) + +# +# SIX ARGUMENTS +# (e.g. Linux) +# + +if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], + [ + char *name = "www.gnu.org"; + struct hostent ret, *retp; + char buf@<:@1024@:>@; + int buflen = 1024; + int my_h_errno; + (void)gethostbyname_r(name, &ret, buf, buflen, &retp, &my_h_errno) /* ; */ + ])], + [ac_cv_func_which_gethostbyname_r=six]) + +fi + +# +# FIVE ARGUMENTS +# (e.g. Solaris) +# + +if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], + [ + char *name = "www.gnu.org"; + struct hostent ret; + char buf@<:@1024@:>@; + int buflen = 1024; + int my_h_errno; + (void)gethostbyname_r(name, &ret, buf, buflen, &my_h_errno) /* ; */ + ])], + [ac_cv_func_which_gethostbyname_r=five]) + +fi + +# +# THREE ARGUMENTS +# (e.g. AIX, HP-UX, Tru64) +# + +if test "$ac_cv_func_which_gethostbyname_r" = "unknown"; then + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], + [ + char *name = "www.gnu.org"; + struct hostent ret; + struct hostent_data data; + (void)gethostbyname_r(name, &ret, &data) /* ; */ + ])], + [ac_cv_func_which_gethostbyname_r=three]) + +fi + +################################################################ + +]) dnl end AC_CACHE_VAL + +case "$ac_cv_func_which_gethostbyname_r" in + three|five|six) + AC_DEFINE([HAVE_GETHOSTBYNAME_R], [1], + [Define to 1 if you have some form of gethostbyname_r().]) + ;; +esac + +case "$ac_cv_func_which_gethostbyname_r" in + three) + AC_MSG_RESULT([three]) + AC_DEFINE([HAVE_FUNC_GETHOSTBYNAME_R_3], [1], + [Define to 1 if you have the three-argument form of gethostbyname_r().]) + ;; + + five) + AC_MSG_RESULT([five]) + AC_DEFINE([HAVE_FUNC_GETHOSTBYNAME_R_5], [1], + [Define to 1 if you have the five-argument form of gethostbyname_r().]) + ;; + + six) + AC_MSG_RESULT([six]) + AC_DEFINE([HAVE_FUNC_GETHOSTBYNAME_R_6], [1], + [Define to 1 if you have the six-argument form of gethostbyname_r().]) + ;; + + no) + AC_MSG_RESULT([cannot find function declaration in netdb.h]) + ;; + + unknown) + AC_MSG_RESULT([can't tell]) + ;; + + *) + AC_MSG_ERROR([internal error]) + ;; +esac + +AC_LANG_POP + +]) dnl end AC_DEFUN diff --git a/configure.ac b/configure.ac index 43a4fa9593..b1e9becfd9 100644 --- a/configure.ac +++ b/configure.ac @@ -4,6 +4,7 @@ dnl Include external macro definitions before the AC_INIT to also remove dnl comments starting with # and empty newlines from the included files. dnl ------------------------------------------------------------------------- m4_include([build/ax_check_compile_flag.m4]) +m4_include([build/ax_func_which_gethostbyname_r.m4]) m4_include([build/ax_gcc_func_attribute.m4]) m4_include([build/libtool.m4]) m4_include([build/php_cxx_compile_stdcxx.m4]) @@ -664,6 +665,8 @@ asprintf \ nanosleep \ ) +AX_FUNC_WHICH_GETHOSTBYNAME_R + dnl Some systems (like OpenSolaris) do not have nanosleep in libc PHP_CHECK_FUNC_LIB(nanosleep, rt) -- cgit v1.2.1