📄 neon.m4
字号:
$ac_cv_sizeof_long_long) ne_cv_fmt_$1="ll]ne_spec[" ;; esacfi])if test "x$ne_cv_fmt_$1" = "xnone"; then AC_MSG_ERROR([format string for $1 not found])fiAC_DEFINE_UNQUOTED([NE_FMT_]translit($1, a-z, A-Z), "$ne_cv_fmt_$1", [Define to be printf format string for $1])])dnl Wrapper for AC_CHECK_FUNCS; uses libraries from $NEON_LIBS.AC_DEFUN([NE_CHECK_FUNCS], [ne_cf_save_LIBS=$LIBSLIBS="$LIBS $NEON_LIBS"AC_CHECK_FUNCS($@)LIBS=$ne_cf_save_LIBS])dnl Checks needed when compiling the neon source.AC_DEFUN([LIBNEON_SOURCE_CHECKS], [dnl Run all the normal C language/compiler testsAC_REQUIRE([NEON_COMMON_CHECKS])dnl Needed for building the MD5 code.AC_REQUIRE([AC_C_BIGENDIAN])dnl Is strerror_r present; if so, which variantAC_REQUIRE([AC_FUNC_STRERROR_R])AC_CHECK_HEADERS([strings.h sys/time.h limits.h sys/select.h arpa/inet.h \ signal.h sys/socket.h netinet/in.h netinet/tcp.h netdb.h])AC_REQUIRE([NE_SNPRINTF])AC_REPLACE_FUNCS(strcasecmp)AC_CHECK_FUNCS(signal setvbuf setsockopt stpcpy)if test "$ac_cv_func_stpcpy" = "yes"; then AC_CHECK_DECLS(stpcpy)fi# Modern AIXes with the "Linux-like" libc have an undeclared stpcpyAH_BOTTOM([#if defined(HAVE_STPCPY) && !HAVE_DECL_STPCPY && !defined(stpcpy)char *stpcpy(char *, const char *);#endif])# Unixware 7 can only link gethostbyname with -lnsl -lsocket# Pick up -lsocket first, then the gethostbyname check will work.# QNX has gethostbyname in -lsocket. BeOS only has it in -lbind.NE_SEARCH_LIBS(socket, socket inet)NE_SEARCH_LIBS(gethostbyname, socket nsl bind)# Enable getaddrinfo() support only if all the necessary functions# are found.ne_enable_gai=yesNE_CHECK_FUNCS(getaddrinfo gai_strerror inet_ntop,,[ne_enable_gai=no; break])if test $ne_enable_gai = yes; then AC_DEFINE(USE_GETADDRINFO, 1, [Define if getaddrinfo() should be used]) AC_CACHE_CHECK([for working AI_ADDRCONFIG], [ne_cv_gai_addrconfig], [ AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <netdb.h>],[struct addrinfo hints = {0}, *result;hints.ai_flags = AI_ADDRCONFIG;if (getaddrinfo("localhost", NULL, &hints, &result) != 0) return 1;])], ne_cv_gai_addrconfig=yes, ne_cv_gai_addrconfig=no)]) if test $ne_cv_gai_addrconfig = yes; then AC_DEFINE(USE_GAI_ADDRCONFIG, 1, [Define if getaddrinfo supports AI_ADDRCONFIG]) fielse # Checks for non-getaddrinfo() based resolver interfaces. NE_SEARCH_LIBS(hstrerror, resolv,,[:]) NE_CHECK_FUNCS(hstrerror) # Older Unixes don't declare h_errno. AC_CHECK_DECL(h_errno,,,[#define _XOPEN_SOURCE_EXTENDED 1#include <netdb.h>])fiAC_CHECK_MEMBERS(struct tm.tm_gmtoff,,AC_MSG_WARN([no timezone handling in date parsing on this platform]),[#include <time.h>])ifdef([neon_no_zlib], [ neon_zlib_message="zlib disabled" NEON_SUPPORTS_ZLIB=no], [ NEON_ZLIB()])# Conditionally enable ACL supportAC_MSG_CHECKING([whether to enable ACL support in neon])if test "x$neon_no_acl" = "xyes"; then AC_MSG_RESULT(no)else AC_MSG_RESULT(yes) NEON_EXTRAOBJS="$NEON_EXTRAOBJS ne_acl"fiNEON_SSL()NEON_SOCKS()NEON_GSSAPI()AC_SUBST(NEON_CFLAGS)AC_SUBST(NEON_LIBS)AC_SUBST(NEON_LTLIBS)])dnl Call to put lib/snprintf.o in LIBOBJS and define HAVE_SNPRINTF_Hdnl if snprintf isn't in libc.AC_DEFUN([NEON_REPLACE_SNPRINTF], [# Check for snprintfAC_CHECK_FUNC(snprintf,,[ AC_DEFINE(HAVE_SNPRINTF_H, 1, [Define if need to include snprintf.h]) AC_LIBOBJ(lib/snprintf)])])dnl turn off webdav, boo hoo.AC_DEFUN([NEON_WITHOUT_WEBDAV], [neon_no_webdav=yesneon_no_acl=yesNEON_NEED_XML_PARSER=noneon_xml_parser_message="none needed"])dnl Turn off zlib supportAC_DEFUN([NEON_WITHOUT_ZLIB], [define(neon_no_zlib, yes)])AC_DEFUN([NEON_WITHOUT_ACL], [# Turn off ACL supportneon_no_acl=yes])dnl Common macro to NEON_LIBTOOL_BUILD and NEON_NORMAL_BUILDdnl Sets NEONOBJS appropriately if it has not already been set.dnl dnl NOT FOR EXTERNAL USE: use LIBTOOL_BUILD or NORMAL_BUILD.dnlAC_DEFUN([NEON_COMMON_BUILD], [# Using the default set of object files to build.# Add the extension to EXTRAOBJSne="$NEON_EXTRAOBJS"NEON_EXTRAOBJS=for o in $ne; do NEON_EXTRAOBJS="$NEON_EXTRAOBJS $o.$NEON_OBJEXT"done AC_MSG_CHECKING(whether to enable WebDAV support in neon)dnl Did they want DAV support?if test "x$neon_no_webdav" = "xyes"; then # No WebDAV support AC_MSG_RESULT(no) NEONOBJS="$NEONOBJS \$(NEON_BASEOBJS)" NEON_CFLAGS="$NEON_CFLAGS -DNEON_NODAV" NEON_SUPPORTS_DAV=no AC_DEFINE(NEON_NODAV, 1, [Enable if built without WebDAV support])else # WebDAV support NEON_SUPPORTS_DAV=yes NEONOBJS="$NEONOBJS \$(NEON_DAVOBJS)" # Turn on DAV locking please then. AC_DEFINE(USE_DAV_LOCKS, 1, [Support WebDAV locking through the library]) AC_MSG_RESULT(yes)fiAC_SUBST(NEON_TARGET)AC_SUBST(NEON_OBJEXT)AC_SUBST(NEONOBJS)AC_SUBST(NEON_EXTRAOBJS)AC_SUBST(NEON_LINK_FLAGS)AC_SUBST(NEON_SUPPORTS_DAV)])# The libtoolized build case:AC_DEFUN([NEON_LIBTOOL_BUILD], [NEON_TARGET=libneon.laNEON_OBJEXT=loNEON_COMMON_BUILD($#, $*)])dnl Find 'ar' and 'ranlib', fail if ar isn't found.AC_DEFUN([NE_FIND_AR], [# Search in /usr/ccs/bin for Solarisne_PATH=$PATH:/usr/ccs/binAC_PATH_TOOL(AR, ar, notfound, $ne_PATH)if test "x$AR" = "xnotfound"; then AC_MSG_ERROR([could not find ar tool])fiAC_PATH_TOOL(RANLIB, ranlib, :, $ne_PATH)])# The non-libtool build case:AC_DEFUN([NEON_NORMAL_BUILD], [NEON_TARGET=libneon.aNEON_OBJEXT=oAC_REQUIRE([NE_FIND_AR])NEON_COMMON_BUILD($#, $*)])AC_DEFUN([NE_SNPRINTF], [AC_CHECK_FUNCS(snprintf vsnprintf,,[ ne_save_LIBS=$LIBS LIBS="$LIBS -lm" # Always need -lm AC_CHECK_LIB(trio, trio_vsnprintf, [AC_CHECK_HEADERS(trio.h,, AC_MSG_ERROR([trio installation problem? libtrio found but not trio.h])) AC_MSG_NOTICE(using trio printf replacement library) NEON_LIBS="$NEON_LIBS -ltrio -lm" NEON_CFLAGS="$NEON_CFLAGS -DNEON_TRIO"], [AC_MSG_NOTICE([no vsnprintf/snprintf detected in C library]) AC_MSG_ERROR([Install the trio library from http://daniel.haxx.se/trio/])]) LIBS=$ne_save_LIBS break])])dnl Usage: NE_CHECK_SSLVER(variable, version-string, version-hex)dnl Define 'variable' to 'yes' if OpenSSL version is >= version-hexAC_DEFUN([NE_CHECK_SSLVER], [AC_CACHE_CHECK([OpenSSL version is >= $2], $1, [AC_EGREP_CPP(good, [#include <openssl/opensslv.h>#if OPENSSL_VERSION_NUMBER >= $3good#endif], [$1=yes], [$1=no])])])dnl Less noisy replacement for PKG_CHECK_MODULESAC_DEFUN([NE_PKG_CONFIG], [AC_PATH_PROG(PKG_CONFIG, pkg-config, no)if test "$PKG_CONFIG" = "no"; then : Not using pkg-config $4else AC_CACHE_CHECK([for $2 pkg-config data], ne_cv_pkg_$2, [if $PKG_CONFIG $2; then ne_cv_pkg_$2=yes else ne_cv_pkg_$2=no fi]) if test "$ne_cv_pkg_$2" = "yes"; then $1_CFLAGS=`$PKG_CONFIG --cflags $2` $1_LIBS=`$PKG_CONFIG --libs $2` : Using provided pkg-config data $3 else : No pkg-config for $2 provided $4 fifi])dnl Check for OpenSSLAC_DEFUN([NEON_SSL], [AC_ARG_WITH(ssl, [AC_HELP_STRING([--with-ssl], [enable OpenSSL support])])AC_ARG_WITH(egd,[[ --with-egd[=PATH] enable EGD support [using EGD socket at PATH]]])case $with_ssl inyes) NE_PKG_CONFIG(NE_SSL, openssl, [AC_MSG_NOTICE(using SSL library configuration from pkg-config) CPPFLAGS="$CPPFLAGS ${NE_SSL_CFLAGS}" NEON_LIBS="$NEON_LIBS ${NE_SSL_LIBS}"], [# libcrypto may require -ldl if using the OpenSSL ENGINE branch NE_SEARCH_LIBS(RSA_new, crypto, -ldl) NE_SEARCH_LIBS(SSL_library_init, ssl)]) AC_CHECK_HEADERS(openssl/ssl.h openssl/opensslv.h,, [AC_MSG_ERROR([OpenSSL headers not found, cannot enable SSL support])]) # Enable EGD support if using 0.9.7 or newer NE_CHECK_SSLVER(ne_cv_lib_ssl097, 0.9.7, 0x00907000L) if test "$ne_cv_lib_ssl097" = "yes"; then AC_MSG_NOTICE([OpenSSL >= 0.9.7; EGD support not needed in neon]) neon_ssl_message="OpenSSL (0.9.7 or later)" else # Fail if OpenSSL is older than 0.9.6 NE_CHECK_SSLVER(ne_cv_lib_ssl096, 0.9.6, 0x00906000L) if test "$ne_cv_lib_ssl096" != "yes"; then AC_MSG_ERROR([OpenSSL 0.9.6 or later is required]) fi neon_ssl_message="OpenSSL (0.9.6 or later)" case "$with_egd" in yes|no) ne_cv_lib_sslegd=$with_egd ;; /*) ne_cv_lib_sslegd=yes AC_DEFINE_UNQUOTED([EGD_PATH], "$with_egd", [Define to specific EGD socket path]) ;; *) # Guess whether EGD support is needed AC_CACHE_CHECK([whether to enable EGD support], [ne_cv_lib_sslegd], [if test -r /dev/random || test -r /dev/urandom; then ne_cv_lib_sslegd=no else ne_cv_lib_sslegd=yes fi]) ;; esac if test "$ne_cv_lib_sslegd" = "yes"; then AC_MSG_NOTICE([EGD support enabled for seeding OpenSSL PRNG]) AC_DEFINE([ENABLE_EGD], 1, [Define if EGD should be supported]) fi fi NEON_SUPPORTS_SSL=yes NEON_CFLAGS="$NEON_CFLAGS -DNEON_SSL" NEON_EXTRAOBJS="$NEON_EXTRAOBJS ne_openssl" ;;*) # Default to off; only create crypto-enabled binaries if requested. neon_ssl_message="No SSL support" NEON_SUPPORTS_SSL=no NEON_EXTRAOBJS="$NEON_EXTRAOBJS ne_stubssl" ;;esacAC_SUBST(NEON_SUPPORTS_SSL)])dnl Check for Kerberos installationAC_DEFUN([NEON_GSSAPI], [AC_PATH_PROG([KRB5_CONFIG], krb5-config, none, $PATH:/usr/kerberos/bin)if test "x$KRB5_CONFIG" != "xnone"; then ne_save_CPPFLAGS=$CPPFLAGS ne_save_LIBS=$NEON_LIBS NEON_LIBS="$NEON_LIBS `${KRB5_CONFIG} --libs gssapi`" CPPFLAGS="$CPPFLAGS `${KRB5_CONFIG} --cflags gssapi`" # MIT and Heimdal put gssapi.h in different places AC_CHECK_HEADERS(gssapi/gssapi.h gssapi.h, [ NE_CHECK_FUNCS(gss_init_sec_context, [ ne_save_CPPFLAGS=$CPPFLAGS ne_save_LIBS=$NEON_LIBS AC_MSG_NOTICE([GSSAPI authentication support enabled]) AC_DEFINE(HAVE_GSSAPI, 1, [Define if GSSAPI support is enabled]) AC_CHECK_HEADERS(gssapi/gssapi_generic.h) # MIT Kerberos lacks GSS_C_NT_HOSTBASED_SERVICE AC_CHECK_DECL([GSS_C_NT_HOSTBASED_SERVICE],, [AC_DEFINE([GSS_C_NT_HOSTBASED_SERVICE], gss_nt_service_name, [Define if GSS_C_NT_HOSTBASED_SERVICE is not defined otherwise])], [#ifdef HAVE_GSSAPI_GSSAPI_H#include <gssapi/gssapi.h>#else#include <gssapi.h>#endif])]) break ]) CPPFLAGS=$ne_save_CPPFLAGS NEON_LIBS=$ne_save_LIBSfi])dnl Adds an --enable-warnings argument to configure to allow enablingdnl compiler warningsAC_DEFUN([NEON_WARNINGS],[AC_REQUIRE([AC_PROG_CC]) dnl so that $GCC is setAC_ARG_ENABLE(warnings,AC_HELP_STRING(--enable-warnings, [enable compiler warnings]))if test "$enable_warnings" = "yes"; then case $GCC:`uname` in yes:*) CFLAGS="$CFLAGS -Wall -ansi-pedantic -Wmissing-declarations -Winline -Wshadow -Wreturn-type -Wsign-compare -Wundef -Wpointer-arith -Wcast-align -Wbad-function-cast -Wimplicit-prototypes -Wformat-security" if test -z "$with_ssl" -o "$with_ssl" = "no"; then # OpenSSL headers fail strict prototypes checks CFLAGS="$CFLAGS -Wstrict-prototypes" fi ;; no:OSF1) CFLAGS="$CFLAGS -check -msg_disable returnchecks -msg_disable alignment -msg_disable overflow" ;; no:IRIX) CFLAGS="$CFLAGS -fullwarn" ;; no:UnixWare) CFLAGS="$CFLAGS -v" ;; *) AC_MSG_WARN([warning flags unknown for compiler on this platform]) ;; esacfi])dnl Adds an --disable-debug argument to configure to allow disablingdnl debugging messages.dnl Usage:dnl NEON_WARNINGS([actions-if-debug-enabled], [actions-if-debug-disabled])dnlAC_DEFUN([NEON_DEBUG], [AC_ARG_ENABLE(debug,AC_HELP_STRING(--disable-debug,[disable runtime debugging messages]))# default is to enable debuggingcase $enable_debug inno) AC_MSG_NOTICE([debugging is disabled])$2 ;;*) AC_MSG_NOTICE([debugging is enabled])AC_DEFINE(NE_DEBUGGING, 1, [Define to enable debugging])$1;;esac])dnl Macro to optionally enable socks supportAC_DEFUN([NEON_SOCKS], [AC_ARG_WITH([socks], AC_HELP_STRING([--with-socks],[use SOCKSv5 library]))if test "$with_socks" = "yes"; then ne_save_LIBS=$LIBS AC_CHECK_HEADERS(socks.h, [AC_CHECK_LIB(socks5, connect, [AC_MSG_NOTICE([SOCKSv5 support enabled])], [AC_MSG_ERROR([could not find libsocks5 for SOCKS support])])], [AC_MSG_ERROR([could not find socks.h for SOCKS support])]) CFLAGS="$CFLAGS -DNEON_SOCKS" NEON_LIBS="$NEON_LIBS -lsocks5" LIBS=$ne_save_LIBSfi])AC_DEFUN([NEON_WITH_LIBS], [AC_ARG_WITH([libs],[[ --with-libs=DIR[:DIR2...] look for support libraries in DIR/{bin,lib,include}]],[case $with_libs inyes|no) AC_MSG_ERROR([--with-libs must be passed a directory argument]) ;;*) ne_save_IFS=$IFS; IFS=: for dir in $with_libs; do ne_add_CPPFLAGS="$ne_add_CPPFLAGS -I${dir}/include" ne_add_LDFLAGS="$ne_add_LDFLAGS -L${dir}/lib" ne_add_PATH="${ne_add_PATH}${dir}/bin:" done IFS=$ne_save_IFS CPPFLAGS="${ne_add_CPPFLAGS} $CPPFLAGS" LDFLAGS="${ne_add_LDFLAGS} $LDFLAGS" PATH=${ne_add_PATH}$PATH ;;esac])])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -