diff options
Diffstat (limited to 'm4')
-rw-r--r-- | m4/ax_compare_version.m4 | 177 | ||||
-rw-r--r-- | m4/ax_lib_postgresql.m4 | 272 | ||||
-rw-r--r-- | m4/libgnurl.m4 | 266 | ||||
-rw-r--r-- | m4/mhd.m4 | 49 |
4 files changed, 408 insertions, 356 deletions
diff --git a/m4/ax_compare_version.m4 b/m4/ax_compare_version.m4 new file mode 100644 index 000000000..ffb4997e8 --- /dev/null +++ b/m4/ax_compare_version.m4 @@ -0,0 +1,177 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_compare_version.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_COMPARE_VERSION(VERSION_A, OP, VERSION_B, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# +# DESCRIPTION +# +# This macro compares two version strings. Due to the various number of +# minor-version numbers that can exist, and the fact that string +# comparisons are not compatible with numeric comparisons, this is not +# necessarily trivial to do in a autoconf script. This macro makes doing +# these comparisons easy. +# +# The six basic comparisons are available, as well as checking equality +# limited to a certain number of minor-version levels. +# +# The operator OP determines what type of comparison to do, and can be one +# of: +# +# eq - equal (test A == B) +# ne - not equal (test A != B) +# le - less than or equal (test A <= B) +# ge - greater than or equal (test A >= B) +# lt - less than (test A < B) +# gt - greater than (test A > B) +# +# Additionally, the eq and ne operator can have a number after it to limit +# the test to that number of minor versions. +# +# eq0 - equal up to the length of the shorter version +# ne0 - not equal up to the length of the shorter version +# eqN - equal up to N sub-version levels +# neN - not equal up to N sub-version levels +# +# When the condition is true, shell commands ACTION-IF-TRUE are run, +# otherwise shell commands ACTION-IF-FALSE are run. The environment +# variable 'ax_compare_version' is always set to either 'true' or 'false' +# as well. +# +# Examples: +# +# AX_COMPARE_VERSION([3.15.7],[lt],[3.15.8]) +# AX_COMPARE_VERSION([3.15],[lt],[3.15.8]) +# +# would both be true. +# +# AX_COMPARE_VERSION([3.15.7],[eq],[3.15.8]) +# AX_COMPARE_VERSION([3.15],[gt],[3.15.8]) +# +# would both be false. +# +# AX_COMPARE_VERSION([3.15.7],[eq2],[3.15.8]) +# +# would be true because it is only comparing two minor versions. +# +# AX_COMPARE_VERSION([3.15.7],[eq0],[3.15]) +# +# would be true because it is only comparing the lesser number of minor +# versions of the two values. +# +# Note: The characters that separate the version numbers do not matter. An +# empty string is the same as version 0. OP is evaluated by autoconf, not +# configure, so must be a string, not a variable. +# +# The author would like to acknowledge Guido Draheim whose advice about +# the m4_case and m4_ifvaln functions make this macro only include the +# portions necessary to perform the specific comparison specified by the +# OP argument in the final configure script. +# +# LICENSE +# +# Copyright (c) 2008 Tim Toolan <toolan@ele.uri.edu> +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 13 + +dnl ######################################################################### +AC_DEFUN([AX_COMPARE_VERSION], [ + AC_REQUIRE([AC_PROG_AWK]) + + # Used to indicate true or false condition + ax_compare_version=false + + # Convert the two version strings to be compared into a format that + # allows a simple string comparison. The end result is that a version + # string of the form 1.12.5-r617 will be converted to the form + # 0001001200050617. In other words, each number is zero padded to four + # digits, and non digits are removed. + AS_VAR_PUSHDEF([A],[ax_compare_version_A]) + A=`echo "$1" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ + -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/[[^0-9]]//g'` + + AS_VAR_PUSHDEF([B],[ax_compare_version_B]) + B=`echo "$3" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ + -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/[[^0-9]]//g'` + + dnl # In the case of le, ge, lt, and gt, the strings are sorted as necessary + dnl # then the first line is used to determine if the condition is true. + dnl # The sed right after the echo is to remove any indented white space. + m4_case(m4_tolower($2), + [lt],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/false/;s/x${B}/true/;1q"` + ], + [gt],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort | sed "s/x${A}/false/;s/x${B}/true/;1q"` + ], + [le],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort | sed "s/x${A}/true/;s/x${B}/false/;1q"` + ], + [ge],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/true/;s/x${B}/false/;1q"` + ],[ + dnl Split the operator from the subversion count if present. + m4_bmatch(m4_substr($2,2), + [0],[ + # A count of zero means use the length of the shorter version. + # Determine the number of characters in A and B. + ax_compare_version_len_A=`echo "$A" | $AWK '{print(length)}'` + ax_compare_version_len_B=`echo "$B" | $AWK '{print(length)}'` + + # Set A to no more than B's length and B to no more than A's length. + A=`echo "$A" | sed "s/\(.\{$ax_compare_version_len_B\}\).*/\1/"` + B=`echo "$B" | sed "s/\(.\{$ax_compare_version_len_A\}\).*/\1/"` + ], + [[0-9]+],[ + # A count greater than zero means use only that many subversions + A=`echo "$A" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` + B=`echo "$B" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` + ], + [.+],[ + AC_WARNING( + [invalid OP numeric parameter: $2]) + ],[]) + + # Pad zeros at end of numbers to make same length. + ax_compare_version_tmp_A="$A`echo $B | sed 's/./0/g'`" + B="$B`echo $A | sed 's/./0/g'`" + A="$ax_compare_version_tmp_A" + + # Check for equality or inequality as necessary. + m4_case(m4_tolower(m4_substr($2,0,2)), + [eq],[ + test "x$A" = "x$B" && ax_compare_version=true + ], + [ne],[ + test "x$A" != "x$B" && ax_compare_version=true + ],[ + AC_WARNING([invalid OP parameter: $2]) + ]) + ]) + + AS_VAR_POPDEF([A])dnl + AS_VAR_POPDEF([B])dnl + + dnl # Execute ACTION-IF-TRUE / ACTION-IF-FALSE. + if test "$ax_compare_version" = "true" ; then + m4_ifvaln([$4],[$4],[:])dnl + m4_ifvaln([$5],[else $5])dnl + fi +]) dnl AX_COMPARE_VERSION diff --git a/m4/ax_lib_postgresql.m4 b/m4/ax_lib_postgresql.m4 index 11b6991f0..cc8e75086 100644 --- a/m4/ax_lib_postgresql.m4 +++ b/m4/ax_lib_postgresql.m4 @@ -1,10 +1,10 @@ # =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_lib_postgresql.html +# https://www.gnu.org/software/autoconf-archive/ax_lib_postgresql.html # =========================================================================== # # SYNOPSIS # -# AX_LIB_POSTGRESQL([MINIMUM-VERSION]) +# AX_LIB_POSTGRESQL([MINIMUM-VERSION],[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) # # DESCRIPTION # @@ -23,133 +23,225 @@ # should be in the PATH) # # path - complete path to pg_config utility, use this option if pg_config -# can't be found in the PATH +# can't be found in the PATH (You could set also PG_CONFIG variable) # # This macro calls: # # AC_SUBST(POSTGRESQL_CPPFLAGS) # AC_SUBST(POSTGRESQL_LDFLAGS) +# AC_SUBST(POSTGRESQL_LIBS) # AC_SUBST(POSTGRESQL_VERSION) # # And sets: # # HAVE_POSTGRESQL # +# It execute if found ACTION-IF-FOUND (empty by default) and +# ACTION-IF-NOT-FOUND (AC_MSG_FAILURE by default) if not found. +# # LICENSE # # Copyright (c) 2008 Mateusz Loskot <mateusz@loskot.net> +# Copyright (c) 2014 Sree Harsha Totakura <sreeharsha@totakura.in> +# Copyright (c) 2018 Bastien Roucaries <rouca@debian.org> # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. -#serial 9 +#serial 22 + +AC_DEFUN([_AX_LIB_POSTGRESQL_OLD],[ + found_postgresql="no" + _AX_LIB_POSTGRESQL_OLD_fail="no" + while true; do + AC_CACHE_CHECK([for the pg_config program], [ac_cv_path_PG_CONFIG], + [AC_PATH_PROGS_FEATURE_CHECK([PG_CONFIG], [pg_config], + [[ac_cv_path_PG_CONFIG="";$ac_path_PG_CONFIG --includedir > /dev/null \ + && ac_cv_path_PG_CONFIG=$ac_path_PG_CONFIG ac_path_PG_CONFIG_found=:]], + [ac_cv_path_PG_CONFIG=""])]) + PG_CONFIG=$ac_cv_path_PG_CONFIG + AS_IF([test "X$PG_CONFIG" = "X"],[break]) + + AC_CACHE_CHECK([for the PostgreSQL libraries CPPFLAGS],[ac_cv_POSTGRESQL_CPPFLAGS], + [ac_cv_POSTGRESQL_CPPFLAGS="-I`$PG_CONFIG --includedir`" || _AX_LIB_POSTGRESQL_OLD_fail=yes]) + AS_IF([test "X$_AX_LIB_POSTGRESQL_OLD_fail" = "Xyes"],[break]) + POSTGRESQL_CPPFLAGS="$ac_cv_POSTGRESQL_CPPFLAGS" + + AC_CACHE_CHECK([for the PostgreSQL libraries LDFLAGS],[ac_cv_POSTGRESQL_LDFLAGS], + [ac_cv_POSTGRESQL_LDFLAGS="-L`$PG_CONFIG --libdir`" || _AX_LIB_POSTGRESQL_OLD_fail=yes]) + AS_IF([test "X$_AX_LIB_POSTGRESQL_OLD_fail" = "Xyes"],[break]) + POSTGRESQL_LDFLAGS="$ac_cv_POSTGRESQL_LDFLAGS" + + AC_CACHE_CHECK([for the PostgreSQL libraries LIBS],[ac_cv_POSTGRESQL_LIBS], + [ac_cv_POSTGRESQL_LIBS="-lpq"]) + POSTGRESQL_LIBS="$ac_cv_POSTGRESQL_LIBS" + + AC_CACHE_CHECK([for the PostgreSQL version],[ac_cv_POSTGRESQL_VERSION], + [ + ac_cv_POSTGRESQL_VERSION=`$PG_CONFIG --version | sed "s/^PostgreSQL[[[:space:]]][[[:space:]]]*\([[0-9.]][[0-9.]]*\).*/\1/"` \ + || _AX_LIB_POSTGRESQL_OLD_fail=yes + ]) + AS_IF([test "X$_AX_LIB_POSTGRESQL_OLD_fail" = "Xyes"],[break]) + POSTGRESQL_VERSION="$ac_cv_POSTGRESQL_VERSION" + + + dnl + dnl Check if required version of PostgreSQL is available + dnl + AS_IF([test X"$postgresql_version_req" != "X"],[ + AC_MSG_CHECKING([if PostgreSQL version $POSTGRESQL_VERSION is >= $postgresql_version_req]) + AX_COMPARE_VERSION([$POSTGRESQL_VERSION],[ge],[$postgresql_version_req], + [found_postgresql_req_version=yes],[found_postgresql_req_version=no]) + AC_MSG_RESULT([$found_postgresql_req_version]) + ]) + AS_IF([test "Xfound_postgresql_req_version" = "Xno"],[break]) + + found_postgresql="yes" + break + done +]) -AC_DEFUN([AX_LIB_POSTGRESQL], +AC_DEFUN([_AX_LIB_POSTGRESQL_PKG_CONFIG], [ - AC_ARG_WITH([postgresql], - AS_HELP_STRING([--with-postgresql=@<:@ARG@:>@], - [use PostgreSQL library @<:@default=yes@:>@, optionally specify path to pg_config] - ), - [ - if test "$withval" = "no"; then - want_postgresql="no" - elif test "$withval" = "yes"; then - want_postgresql="yes" - else - want_postgresql="yes" - PG_CONFIG="$withval" - fi - ], - [want_postgresql="yes"] - ) + AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + found_postgresql=no - POSTGRESQL_CPPFLAGS="" - POSTGRESQL_LDFLAGS="" - POSTGRESQL_VERSION="" + while true; do + PKG_PROG_PKG_CONFIG + AS_IF([test X$PKG_CONFIG = X],[break]) - dnl - dnl Check PostgreSQL libraries (libpq) - dnl + _AX_LIB_POSTGRESQL_PKG_CONFIG_fail=no; + AS_IF([test "X$postgresql_version_req" = "X"], + [PKG_CHECK_EXISTS([libpq],[found_postgresql_pkg_config=yes],[found_postgresql=no])], + [PKG_CHECK_EXISTS([libpq >= "$postgresql_version_req"], + [found_postgresql=yes],[found_postgresql=no])]) + AS_IF([test "X$found_postgresql" = "no"],[break]) + + AC_CACHE_CHECK([for the PostgreSQL libraries CPPFLAGS],[ac_cv_POSTGRESQL_CPPFLAGS], + [ac_cv_POSTGRESQL_CPPFLAGS="`$PKG_CONFIG libpq --cflags-only-I`" || _AX_LIB_POSTGRESQL_PKG_CONFIG_fail=yes]) + AS_IF([test "X$_AX_LIB_POSTGRESQL_PKG_CONFIG_fail" = "Xyes"],[break]) + POSTGRESQL_CPPFLAGS="$ac_cv_POSTGRESQL_CPPFLAGS" - if test "$want_postgresql" = "yes"; then - if test -z "$PG_CONFIG" -o test; then - AC_PATH_PROG([PG_CONFIG], [pg_config], []) - fi + AC_CACHE_CHECK([for the PostgreSQL libraries LDFLAGS],[ac_cv_POSTGRESQL_LDFLAGS], + [ac_cv_POSTGRESQL_LDFLAGS="`$PKG_CONFIG libpq --libs-only-L --libs-only-other`" || _AX_LIB_POSTGRESQL_PKG_CONFIG_fail=yes]) + AS_IF([test "X$_AX_LIB_POSTGRESQL_PKG_CONFIG_fail" = "Xyes"],[break]) + POSTGRESQL_LDFLAGS="$ac_cv_POSTGRESQL_LDFLAGS" - if test ! -x "$PG_CONFIG"; then - dnl AC_MSG_ERROR([$PG_CONFIG does not exist or it is not an exectuable file]) - PG_CONFIG="no" - found_postgresql="no" - fi - if test "$PG_CONFIG" != "no"; then - AC_MSG_CHECKING([for PostgreSQL libraries]) + AC_CACHE_CHECK([for the PostgreSQL libraries LIBS],[ac_cv_POSTGRESQL_LIBS], + [ac_cv_POSTGRESQL_LIBS="`$PKG_CONFIG libpq --libs-only-l`" || _AX_LIB_POSTGRESQL_PKG_CONFIG_fail=ye]) + AS_IF([test "X$_AX_LIB_POSTGRESQL_PKG_CONFIG_fail" = "Xyes"],[break]) + POSTGRESQL_LIBS="$ac_cv_POSTGRESQL_LIBS" - POSTGRESQL_CPPFLAGS="-I`$PG_CONFIG --includedir`" - POSTGRESQL_LDFLAGS="-L`$PG_CONFIG --libdir`" + dnl already checked by exist but need to be recovered + AC_CACHE_CHECK([for the PostgreSQL version],[ac_cv_POSTGRESQL_VERSION], + [ac_cv_POSTGRESQL_VERSION="`$PKG_CONFIG libpq --modversion`" || _AX_LIB_POSTGRESQL_PKG_CONFIG_fail=yes]) + AS_IF([test "X$_AX_LIB_POSTGRESQL_PKG_CONFIG_fail" = "Xyes"],[break]) + POSTGRESQL_VERSION="$ac_cv_POSTGRESQL_VERSION" - POSTGRESQL_VERSION=`$PG_CONFIG --version | sed -e 's#PostgreSQL ##' | awk '{print $1}'` + found_postgresql=yes + break; + done - AC_DEFINE([HAVE_POSTGRESQL], [1], - [Define to 1 if PostgreSQL libraries are available]) +]) - found_postgresql="yes" - AC_MSG_RESULT([yes]) - else - found_postgresql="no" - AC_MSG_RESULT([no]) - fi - fi - dnl - dnl Check if required version of PostgreSQL is available - dnl +AC_DEFUN([AX_LIB_POSTGRESQL], +[ + AC_ARG_WITH([postgresql], + AS_HELP_STRING([--with-postgresql=@<:@ARG@:>@], + [use PostgreSQL library @<:@default=yes@:>@, optionally specify path to pg_config] + ), + [ + AS_CASE([$withval], + [[[nN]][[oO]]],[want_postgresql="no"], + [[[yY]][[eE]][[sS]]],[want_postgresql="yes"], + [ + want_postgresql="yes" + PG_CONFIG="$withval" + ]) + ], + [want_postgresql="yes"] + ) + + AC_ARG_VAR([POSTGRESQL_CPPFLAGS],[cpp flags for PostgreSQL overriding detected flags]) + AC_ARG_VAR([POSTGRESQL_LIBFLAGS],[libs for PostgreSQL overriding detected flags]) + AC_ARG_VAR([POSTGRESQL_LDFLAGS],[linker flags for PostgreSQL overriding detected flags]) + + # populate cache + AS_IF([test "X$POSTGRESQL_CPPFLAGS" != X],[ac_cv_POSTGRESQL_CPPFLAGS="$POSTGRESQL_CPPFLAGS"]) + AS_IF([test "X$POSTGRESQL_LDFLAGS" != X],[ac_cv_POSTGRESQL_LDFLAGS="$POSTGRESQL_LDFLAGS"]) + AS_IF([test "X$POSTGRESQL_LIBS" != X],[ac_cv_POSTGRESQL_LIBS="$POSTGRESQL_LIBS"]) postgresql_version_req=ifelse([$1], [], [], [$1]) + found_postgresql="no" - if test "$found_postgresql" = "yes" -a -n "$postgresql_version_req"; then - - AC_MSG_CHECKING([if PostgreSQL version $POSTGRESQL_VERSION is >= $postgresql_version_req]) - - dnl Decompose required version string of PostgreSQL - dnl and calculate its number representation - postgresql_version_req_major=`expr $postgresql_version_req : '\([[0-9]]*\)'` - postgresql_version_req_minor=`expr $postgresql_version_req : '[[0-9]]*\.\([[0-9]]*\)'` - postgresql_version_req_micro=`expr $postgresql_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` - if test "x$postgresql_version_req_micro" = "x"; then - postgresql_version_req_micro="0" - fi - - postgresql_version_req_number=`expr $postgresql_version_req_major \* 1000000 \ - \+ $postgresql_version_req_minor \* 1000 \ - \+ $postgresql_version_req_micro` - - dnl Decompose version string of installed PostgreSQL - dnl and calculate its number representation - postgresql_version_major=`expr $POSTGRESQL_VERSION : '\([[0-9]]*\)'` - postgresql_version_minor=`expr $POSTGRESQL_VERSION : '[[0-9]]*\.\([[0-9]]*\)'` - postgresql_version_micro=`expr $POSTGRESQL_VERSION : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'` - if test "x$postgresql_version_micro" = "x"; then - postgresql_version_micro="0" - fi - - postgresql_version_number=`expr $postgresql_version_major \* 1000000 \ - \+ $postgresql_version_minor \* 1000 \ - \+ $postgresql_version_micro` - - postgresql_version_check=`expr $postgresql_version_number \>\= $postgresql_version_req_number` - if test "$postgresql_version_check" = "1"; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - fi + POSTGRESQL_VERSION="" + + dnl + dnl Check PostgreSQL libraries (libpq) + dnl + AS_IF([test X"$want_postgresql" = "Xyes"],[ + _AX_LIB_POSTGRESQL_PKG_CONFIG + + + AS_IF([test X"$found_postgresql" = "Xno"], + [_AX_LIB_POSTGRESQL_OLD]) + + AS_IF([test X"$found_postgresql" = Xyes],[ + _AX_LIB_POSTGRESQL_OLD_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS" + _AX_LIB_POSTGRESQL_OLD_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $POSTGRESQL_LDFLAGS" + _AX_LIB_POSTGRESQL_OLD_LIBS="$LIBS" + LIBS="$LIBS $POSTGRESQL_LIBS" + while true; do + dnl try to compile + AC_CHECK_HEADER([libpq-fe.h],[],[found_postgresql=no]) + AS_IF([test "X$found_postgresql" = "Xno"],[break]) + dnl try now to link + AC_CACHE_CHECK([for the PostgreSQL library linking is working],[ac_cv_postgresql_found], + [ + AC_LINK_IFELSE([ + AC_LANG_PROGRAM( + [ + #include <libpq-fe.h> + ], + [[ + char conninfo[]="dbname = postgres"; + PGconn *conn; + conn = PQconnectdb(conninfo); + ]] + ) + ],[ac_cv_postgresql_found=yes], + [ac_cv_postgresql_found=no]) + ]) + found_postgresql="$ac_cv_postgresql_found" + AS_IF([test "X$found_postgresql" = "Xno"],[break]) + break + done + CPPFLAGS="$_AX_LIB_POSTGRESQL_OLD_CPPFLAGS" + LDFLAGS="$_AX_LIB_POSTGRESQL_OLD_LDFLAGS" + LIBS="$_AX_LIB_POSTGRESQL_OLD_LIBS" + ]) + + + AS_IF([test "x$found_postgresql" = "xyes"],[ + AC_DEFINE([HAVE_POSTGRESQL], [1], + [Define to 1 if PostgreSQL libraries are available])]) + ]) AC_SUBST([POSTGRESQL_VERSION]) AC_SUBST([POSTGRESQL_CPPFLAGS]) AC_SUBST([POSTGRESQL_LDFLAGS]) + AC_SUBST([POSTGRESQL_LIBS]) + + AS_IF([test "x$found_postgresql" = "xyes"], + [ifelse([$2], , :, [$2])], + [ifelse([$3], , AS_IF([test X"$want_postgresql" = "Xyes"],[AC_MSG_ERROR([Library requirements (PostgreSQL) not met.])],[:]), [$3])]) + ]) diff --git a/m4/libgnurl.m4 b/m4/libgnurl.m4 deleted file mode 100644 index 412709373..000000000 --- a/m4/libgnurl.m4 +++ /dev/null @@ -1,266 +0,0 @@ -# LIBGNURL_CHECK_CONFIG ([DEFAULT-ACTION], [MINIMUM-VERSION], -# [ACTION-IF-YES], [ACTION-IF-NO]) -# ---------------------------------------------------------- -# David Shaw <dshaw@jabberwocky.com> May-09-2006 -# -# Checks for libgnurl. DEFAULT-ACTION is the string yes or no to -# specify whether to default to --with-libgnurl or --without-libgnurl. -# If not supplied, DEFAULT-ACTION is yes. MINIMUM-VERSION is the -# minimum version of libgnurl to accept. Pass the version as a regular -# version number like 7.10.1. If not supplied, any version is -# accepted. ACTION-IF-YES is a list of shell commands to run if -# libgnurl was successfully found and passed the various tests. -# ACTION-IF-NO is a list of shell commands that are run otherwise. -# Note that using --without-libgnurl does run ACTION-IF-NO. -# -# This macro #defines HAVE_LIBGNURL if a working libgnurl setup is -# found, and sets @LIBGNURL@ and @LIBGNURL_CPPFLAGS@ to the necessary -# values. Other useful defines are LIBGNURL_FEATURE_xxx where xxx are -# the various features supported by libgnurl, and LIBGNURL_PROTOCOL_yyy -# where yyy are the various protocols supported by libgnurl. Both xxx -# and yyy are capitalized. See the list of AH_TEMPLATEs at the top of -# the macro for the complete list of possible defines. Shell -# variables $libgnurl_feature_xxx and $libgnurl_protocol_yyy are also -# defined to 'yes' for those features and protocols that were found. -# Note that xxx and yyy keep the same capitalization as in the -# gnurl-config list (e.g. it's "HTTP" and not "http"). -# -# Users may override the detected values by doing something like: -# LIBGNURL="-lgnurl" LIBGNURL_CPPFLAGS="-I/usr/myinclude" ./configure -# -# For the sake of sanity, this macro assumes that any libgnurl that is -# found is after version 7.7.2, the first version that included the -# gnurl-config script. Note that it is very important for people -# packaging binary versions of libgnurl to include this script! -# Without gnurl-config, we can only guess what protocols are available, -# or use gnurl_version_info to figure it out at runtime. - -AC_DEFUN([LIBGNURL_CHECK_CONFIG], -[ - AH_TEMPLATE([LIBGNURL_FEATURE_SSL],[Defined if libgnurl supports SSL]) - AH_TEMPLATE([LIBGNURL_FEATURE_KRB4],[Defined if libgnurl supports KRB4]) - AH_TEMPLATE([LIBGNURL_FEATURE_IPV6],[Defined if libgnurl supports IPv6]) - AH_TEMPLATE([LIBGNURL_FEATURE_LIBZ],[Defined if libgnurl supports libz]) - AH_TEMPLATE([LIBGNURL_FEATURE_ASYNCHDNS],[Defined if libgnurl supports AsynchDNS]) - AH_TEMPLATE([LIBGNURL_FEATURE_IDN],[Defined if libgnurl supports IDN]) - AH_TEMPLATE([LIBGNURL_FEATURE_SSPI],[Defined if libgnurl supports SSPI]) - AH_TEMPLATE([LIBGNURL_FEATURE_NTLM],[Defined if libgnurl supports NTLM]) - - AH_TEMPLATE([LIBGNURL_PROTOCOL_HTTP],[Defined if libgnurl supports HTTP]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_HTTPS],[Defined if libgnurl supports HTTPS]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_FTP],[Defined if libgnurl supports FTP]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_FTPS],[Defined if libgnurl supports FTPS]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_FILE],[Defined if libgnurl supports FILE]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_TELNET],[Defined if libgnurl supports TELNET]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_LDAP],[Defined if libgnurl supports LDAP]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_DICT],[Defined if libgnurl supports DICT]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_TFTP],[Defined if libgnurl supports TFTP]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_RTSP],[Defined if libgnurl supports RTSP]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_POP3],[Defined if libgnurl supports POP3]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_IMAP],[Defined if libgnurl supports IMAP]) - AH_TEMPLATE([LIBGNURL_PROTOCOL_SMTP],[Defined if libgnurl supports SMTP]) - - AC_ARG_WITH(libgnurl, - AS_HELP_STRING([--with-libgnurl=PREFIX],[look for the gnurl library in PREFIX/lib and headers in PREFIX/include]), - [_libgnurl_with=$withval],[_libgnurl_with=ifelse([$1],,[yes],[$1])]) - - if test "$_libgnurl_with" != "no" ; then - - AC_PROG_AWK - - _libgnurl_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[[1]]+256*A[[2]]+A[[3]]; print X;}'" - - _libgnurl_try_link=yes - - if test -d "$_libgnurl_with" ; then - LIBGNURL_CPPFLAGS="-I$withval/include" - _libgnurl_ldflags="-L$withval/lib" - AC_PATH_PROG([_libgnurl_config],[gnurl-config],[], - ["$withval/bin"]) - else - AC_PATH_PROG([_libgnurl_config],[gnurl-config],[],[$PATH]) - fi - - if test x$_libgnurl_config != "x" ; then - AC_CACHE_CHECK([for the version of libgnurl], - [libgnurl_cv_lib_gnurl_version], - [libgnurl_cv_lib_gnurl_version=`$_libgnurl_config --version | $AWK '{print $[]2}'`]) - - _libgnurl_version=`echo $libgnurl_cv_lib_gnurl_version | $_libgnurl_version_parse` - _libgnurl_wanted=`echo ifelse([$2],,[0],[$2]) | $_libgnurl_version_parse` - - if test $_libgnurl_wanted -gt 0 ; then - AC_CACHE_CHECK([for libgnurl >= version $2], - [libgnurl_cv_lib_version_ok], - [ - if test $_libgnurl_version -ge $_libgnurl_wanted ; then - libgnurl_cv_lib_version_ok=yes - else - libgnurl_cv_lib_version_ok=no - fi - ]) - fi - - if test $_libgnurl_wanted -eq 0 || test x$libgnurl_cv_lib_version_ok = xyes ; then - if test x"$LIBGNURL_CPPFLAGS" = "x" ; then - LIBGNURL_CPPFLAGS=`$_libgnurl_config --cflags` - fi - if test x"$LIBGNURL" = "x" ; then - LIBGNURL=`$_libgnurl_config --libs` - - # This is so silly, but Apple actually has a bug in their - # gnurl-config script. Fixed in Tiger, but there are still - # lots of Panther installs around. - case "${host}" in - powerpc-apple-darwin7*) - LIBGNURL=`echo $LIBGNURL | sed -e 's|-arch i386||g'` - ;; - esac - fi - - # All gnurl-config scripts support --feature - _libgnurl_features=`$_libgnurl_config --feature` - - # Is it modern enough to have --protocols? (7.12.4) - if test $_libgnurl_version -ge 461828 ; then - _libgnurl_protocols=`$_libgnurl_config --protocols` - fi - else - _libgnurl_try_link=no - fi - - unset _libgnurl_wanted - fi - - if test $_libgnurl_try_link = yes ; then - - # we didn't find gnurl-config, so let's see if the user-supplied - # link line (or failing that, "-lgnurl") is enough. - LIBGNURL=${LIBGNURL-"$_libgnurl_ldflags -lgnurl"} - - AC_CACHE_CHECK([whether libgnurl is usable], - [libgnurl_cv_lib_gnurl_usable], - [ - _libgnurl_save_cppflags=$CPPFLAGS - CPPFLAGS="$LIBGNURL_CPPFLAGS $CPPFLAGS" - _libgnurl_save_libs=$LIBS - LIBS="$LIBGNURL $LIBS" - - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <curl/curl.h>],[ -/* Try and use a few common options to force a failure if we are - missing symbols or can't link. */ -int x; -curl_easy_setopt(NULL,CURLOPT_URL,NULL); -x=CURL_ERROR_SIZE; -x=CURLOPT_WRITEFUNCTION; -x=CURLOPT_FILE; -x=CURLOPT_ERRORBUFFER; -x=CURLOPT_STDERR; -x=CURLOPT_VERBOSE; -])],libgnurl_cv_lib_gnurl_usable=yes,libgnurl_cv_lib_gnurl_usable=no) - -# BEGIN Changes from original libcurl.m4: -# Give it a 2nd shot using 'gnurl/curl.h' - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <gnurl/curl.h>],[ -/* Try and use a few common options to force a failure if we are - missing symbols or can't link. */ -int x; -curl_easy_setopt(NULL,CURLOPT_URL,NULL); -x=CURL_ERROR_SIZE; -x=CURLOPT_WRITEFUNCTION; -x=CURLOPT_FILE; -x=CURLOPT_ERRORBUFFER; -x=CURLOPT_STDERR; -x=CURLOPT_VERBOSE; -])],libgnurl_cv_lib_gnurl_usable=yes) -# END Changes from original libcurl.m4: - - CPPFLAGS=$_libgnurl_save_cppflags - LIBS=$_libgnurl_save_libs - unset _libgnurl_save_cppflags - unset _libgnurl_save_libs - ]) - - if test $libgnurl_cv_lib_gnurl_usable = yes ; then - - # Does gnurl_free() exist in this version of libgnurl? - # If not, fake it with free() - - _libgnurl_save_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $LIBGNURL_CPPFLAGS" - _libgnurl_save_libs=$LIBS - LIBS="$LIBS $LIBGNURL" - - AC_CHECK_FUNC(curl_free,, - AC_DEFINE(curl_free,free, - [Define curl_free() as free() if our version of gnurl lacks curl_free.])) - - CPPFLAGS=$_libgnurl_save_cppflags - LIBS=$_libgnurl_save_libs - unset _libgnurl_save_cppflags - unset _libgnurl_save_libs - - AC_DEFINE(HAVE_LIBGNURL,1, - [Define to 1 if you have a functional gnurl library.]) - AC_SUBST(LIBGNURL_CPPFLAGS) - AC_SUBST(LIBGNURL) - - for _libgnurl_feature in $_libgnurl_features ; do - AC_DEFINE_UNQUOTED(AS_TR_CPP(libgnurl_feature_$_libgnurl_feature),[1]) - eval AS_TR_SH(libgnurl_feature_$_libgnurl_feature)=yes - done - - if test "x$_libgnurl_protocols" = "x" ; then - - # We don't have --protocols, so just assume that all - # protocols are available - _libgnurl_protocols="HTTP FTP FILE TELNET LDAP DICT TFTP" - - if test x$libgnurl_feature_SSL = xyes ; then - _libgnurl_protocols="$_libgnurl_protocols HTTPS" - - # FTPS wasn't standards-compliant until version - # 7.11.0 (0x070b00 == 461568) - if test $_libgnurl_version -ge 461568; then - _libgnurl_protocols="$_libgnurl_protocols FTPS" - fi - fi - - # RTSP, IMAP, POP3 and SMTP were added in - # 7.20.0 (0x071400 == 463872) - if test $_libgnurl_version -ge 463872; then - _libgnurl_protocols="$_libgnurl_protocols RTSP IMAP POP3 SMTP" - fi - fi - - for _libgnurl_protocol in $_libgnurl_protocols ; do - AC_DEFINE_UNQUOTED(AS_TR_CPP(libgnurl_protocol_$_libgnurl_protocol),[1]) - eval AS_TR_SH(libgnurl_protocol_$_libgnurl_protocol)=yes - done - else - unset LIBGNURL - unset LIBGNURL_CPPFLAGS - fi - fi - - unset _libgnurl_try_link - unset _libgnurl_version_parse - unset _libgnurl_config - unset _libgnurl_feature - unset _libgnurl_features - unset _libgnurl_protocol - unset _libgnurl_protocols - unset _libgnurl_version - unset _libgnurl_ldflags - fi - - if test x$_libgnurl_with = xno || test x$libgnurl_cv_lib_gnurl_usable != xyes ; then - # This is the IF-NO path - ifelse([$4],,:,[$4]) - else - # This is the IF-YES path - ifelse([$3],,:,[$3]) - fi - - unset _libgnurl_with -])dnl diff --git a/m4/mhd.m4 b/m4/mhd.m4 new file mode 100644 index 000000000..40e5b4684 --- /dev/null +++ b/m4/mhd.m4 @@ -0,0 +1,49 @@ +# mhd.m4 + +# This file is part of TALER +# Copyright (C) 2022 Taler Systems SA +# +# TALER 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 3, or (at your option) any later version. +# +# TALER 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 +# TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/license> + +# serial 1 + +dnl MHD_VERSION_AT_LEAST([VERSION]) +dnl +dnl Check that microhttpd.h can be used to build a program that prints out +dnl the MHD_VERSION tuple in X.Y.Z format, and that X.Y.Z is greater or equal +dnl to VERSION. If not, display message and cause the configure script to +dnl exit failurefully. +dnl +dnl This uses AX_COMPARE_VERSION to do the job. +dnl It sets shell var mhd_cv_version, as well. +dnl +AC_DEFUN([MHD_VERSION_AT_LEAST], +[AC_CACHE_CHECK([libmicrohttpd version],[mhd_cv_version], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include <stdio.h> + #include <microhttpd.h> +]],[[ + int v = MHD_VERSION; + printf ("%x.%x.%x\n", + (v >> 24) & 0xff, + (v >> 16) & 0xff, + (v >> 8) & 0xff); +]])], + [mhd_cv_version=$(./conftest)], + [mhd_cv_version=0])]) +AX_COMPARE_VERSION([$mhd_cv_version],[ge],[$1],, + [AC_MSG_ERROR([[ +*** +*** You need libmicrohttpd >= $1 to build this program. +*** ]])])]) + +# mhd.m4 ends here |