Return to libcurl.m4 CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / docs / libcurl |
1.1 ! misho 1: #*************************************************************************** ! 2: # _ _ ____ _ ! 3: # Project ___| | | | _ \| | ! 4: # / __| | | | |_) | | ! 5: # | (__| |_| | _ <| |___ ! 6: # \___|\___/|_| \_\_____| ! 7: # ! 8: # Copyright (C) 2006 - 2020, David Shaw <dshaw@jabberwocky.com> ! 9: # ! 10: # This software is licensed as described in the file COPYING, which ! 11: # you should have received as part of this distribution. The terms ! 12: # are also available at https://curl.haxx.se/docs/copyright.html. ! 13: # ! 14: # You may opt to use, copy, modify, merge, publish, distribute and/or sell ! 15: # copies of the Software, and permit persons to whom the Software is ! 16: # furnished to do so, under the terms of the COPYING file. ! 17: # ! 18: # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY ! 19: # KIND, either express or implied. ! 20: # ! 21: ########################################################################### ! 22: # LIBCURL_CHECK_CONFIG ([DEFAULT-ACTION], [MINIMUM-VERSION], ! 23: # [ACTION-IF-YES], [ACTION-IF-NO]) ! 24: # ---------------------------------------------------------- ! 25: # David Shaw <dshaw@jabberwocky.com> May-09-2006 ! 26: # ! 27: # Checks for libcurl. DEFAULT-ACTION is the string yes or no to ! 28: # specify whether to default to --with-libcurl or --without-libcurl. ! 29: # If not supplied, DEFAULT-ACTION is yes. MINIMUM-VERSION is the ! 30: # minimum version of libcurl to accept. Pass the version as a regular ! 31: # version number like 7.10.1. If not supplied, any version is ! 32: # accepted. ACTION-IF-YES is a list of shell commands to run if ! 33: # libcurl was successfully found and passed the various tests. ! 34: # ACTION-IF-NO is a list of shell commands that are run otherwise. ! 35: # Note that using --without-libcurl does run ACTION-IF-NO. ! 36: # ! 37: # This macro #defines HAVE_LIBCURL if a working libcurl setup is ! 38: # found, and sets @LIBCURL@ and @LIBCURL_CPPFLAGS@ to the necessary ! 39: # values. Other useful defines are LIBCURL_FEATURE_xxx where xxx are ! 40: # the various features supported by libcurl, and LIBCURL_PROTOCOL_yyy ! 41: # where yyy are the various protocols supported by libcurl. Both xxx ! 42: # and yyy are capitalized. See the list of AH_TEMPLATEs at the top of ! 43: # the macro for the complete list of possible defines. Shell ! 44: # variables $libcurl_feature_xxx and $libcurl_protocol_yyy are also ! 45: # defined to 'yes' for those features and protocols that were found. ! 46: # Note that xxx and yyy keep the same capitalization as in the ! 47: # curl-config list (e.g. it's "HTTP" and not "http"). ! 48: # ! 49: # Users may override the detected values by doing something like: ! 50: # LIBCURL="-lcurl" LIBCURL_CPPFLAGS="-I/usr/myinclude" ./configure ! 51: # ! 52: # For the sake of sanity, this macro assumes that any libcurl that is ! 53: # found is after version 7.7.2, the first version that included the ! 54: # curl-config script. Note that it is very important for people ! 55: # packaging binary versions of libcurl to include this script! ! 56: # Without curl-config, we can only guess what protocols are available, ! 57: # or use curl_version_info to figure it out at runtime. ! 58: ! 59: AC_DEFUN([LIBCURL_CHECK_CONFIG], ! 60: [ ! 61: AH_TEMPLATE([LIBCURL_FEATURE_SSL],[Defined if libcurl supports SSL]) ! 62: AH_TEMPLATE([LIBCURL_FEATURE_KRB4],[Defined if libcurl supports KRB4]) ! 63: AH_TEMPLATE([LIBCURL_FEATURE_IPV6],[Defined if libcurl supports IPv6]) ! 64: AH_TEMPLATE([LIBCURL_FEATURE_LIBZ],[Defined if libcurl supports libz]) ! 65: AH_TEMPLATE([LIBCURL_FEATURE_ASYNCHDNS],[Defined if libcurl supports AsynchDNS]) ! 66: AH_TEMPLATE([LIBCURL_FEATURE_IDN],[Defined if libcurl supports IDN]) ! 67: AH_TEMPLATE([LIBCURL_FEATURE_SSPI],[Defined if libcurl supports SSPI]) ! 68: AH_TEMPLATE([LIBCURL_FEATURE_NTLM],[Defined if libcurl supports NTLM]) ! 69: ! 70: AH_TEMPLATE([LIBCURL_PROTOCOL_HTTP],[Defined if libcurl supports HTTP]) ! 71: AH_TEMPLATE([LIBCURL_PROTOCOL_HTTPS],[Defined if libcurl supports HTTPS]) ! 72: AH_TEMPLATE([LIBCURL_PROTOCOL_FTP],[Defined if libcurl supports FTP]) ! 73: AH_TEMPLATE([LIBCURL_PROTOCOL_FTPS],[Defined if libcurl supports FTPS]) ! 74: AH_TEMPLATE([LIBCURL_PROTOCOL_FILE],[Defined if libcurl supports FILE]) ! 75: AH_TEMPLATE([LIBCURL_PROTOCOL_TELNET],[Defined if libcurl supports TELNET]) ! 76: AH_TEMPLATE([LIBCURL_PROTOCOL_LDAP],[Defined if libcurl supports LDAP]) ! 77: AH_TEMPLATE([LIBCURL_PROTOCOL_DICT],[Defined if libcurl supports DICT]) ! 78: AH_TEMPLATE([LIBCURL_PROTOCOL_TFTP],[Defined if libcurl supports TFTP]) ! 79: AH_TEMPLATE([LIBCURL_PROTOCOL_RTSP],[Defined if libcurl supports RTSP]) ! 80: AH_TEMPLATE([LIBCURL_PROTOCOL_POP3],[Defined if libcurl supports POP3]) ! 81: AH_TEMPLATE([LIBCURL_PROTOCOL_IMAP],[Defined if libcurl supports IMAP]) ! 82: AH_TEMPLATE([LIBCURL_PROTOCOL_SMTP],[Defined if libcurl supports SMTP]) ! 83: ! 84: AC_ARG_WITH(libcurl, ! 85: AS_HELP_STRING([--with-libcurl=PREFIX],[look for the curl library in PREFIX/lib and headers in PREFIX/include]), ! 86: [_libcurl_with=$withval],[_libcurl_with=ifelse([$1],,[yes],[$1])]) ! 87: ! 88: if test "$_libcurl_with" != "no" ; then ! 89: ! 90: AC_PROG_AWK ! 91: ! 92: _libcurl_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[[1]]+256*A[[2]]+A[[3]]; print X;}'" ! 93: ! 94: _libcurl_try_link=yes ! 95: ! 96: if test -d "$_libcurl_with" ; then ! 97: LIBCURL_CPPFLAGS="-I$withval/include" ! 98: _libcurl_ldflags="-L$withval/lib" ! 99: AC_PATH_PROG([_libcurl_config],[curl-config],[], ! 100: ["$withval/bin"]) ! 101: else ! 102: AC_PATH_PROG([_libcurl_config],[curl-config],[],[$PATH]) ! 103: fi ! 104: ! 105: if test x$_libcurl_config != "x" ; then ! 106: AC_CACHE_CHECK([for the version of libcurl], ! 107: [libcurl_cv_lib_curl_version], ! 108: [libcurl_cv_lib_curl_version=`$_libcurl_config --version | $AWK '{print $[]2}'`]) ! 109: ! 110: _libcurl_version=`echo $libcurl_cv_lib_curl_version | $_libcurl_version_parse` ! 111: _libcurl_wanted=`echo ifelse([$2],,[0],[$2]) | $_libcurl_version_parse` ! 112: ! 113: if test $_libcurl_wanted -gt 0 ; then ! 114: AC_CACHE_CHECK([for libcurl >= version $2], ! 115: [libcurl_cv_lib_version_ok], ! 116: [ ! 117: if test $_libcurl_version -ge $_libcurl_wanted ; then ! 118: libcurl_cv_lib_version_ok=yes ! 119: else ! 120: libcurl_cv_lib_version_ok=no ! 121: fi ! 122: ]) ! 123: fi ! 124: ! 125: if test $_libcurl_wanted -eq 0 || test x$libcurl_cv_lib_version_ok = xyes ; then ! 126: if test x"$LIBCURL_CPPFLAGS" = "x" ; then ! 127: LIBCURL_CPPFLAGS=`$_libcurl_config --cflags` ! 128: fi ! 129: if test x"$LIBCURL" = "x" ; then ! 130: LIBCURL=`$_libcurl_config --libs` ! 131: ! 132: # This is so silly, but Apple actually has a bug in their ! 133: # curl-config script. Fixed in Tiger, but there are still ! 134: # lots of Panther installs around. ! 135: case "${host}" in ! 136: powerpc-apple-darwin7*) ! 137: LIBCURL=`echo $LIBCURL | sed -e 's|-arch i386||g'` ! 138: ;; ! 139: esac ! 140: fi ! 141: ! 142: # All curl-config scripts support --feature ! 143: _libcurl_features=`$_libcurl_config --feature` ! 144: ! 145: # Is it modern enough to have --protocols? (7.12.4) ! 146: if test $_libcurl_version -ge 461828 ; then ! 147: _libcurl_protocols=`$_libcurl_config --protocols` ! 148: fi ! 149: else ! 150: _libcurl_try_link=no ! 151: fi ! 152: ! 153: unset _libcurl_wanted ! 154: fi ! 155: ! 156: if test $_libcurl_try_link = yes ; then ! 157: ! 158: # we didn't find curl-config, so let's see if the user-supplied ! 159: # link line (or failing that, "-lcurl") is enough. ! 160: LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} ! 161: ! 162: AC_CACHE_CHECK([whether libcurl is usable], ! 163: [libcurl_cv_lib_curl_usable], ! 164: [ ! 165: _libcurl_save_cppflags=$CPPFLAGS ! 166: CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" ! 167: _libcurl_save_libs=$LIBS ! 168: LIBS="$LIBCURL $LIBS" ! 169: ! 170: AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <curl/curl.h>]],[[ ! 171: /* Try and use a few common options to force a failure if we are ! 172: missing symbols or can't link. */ ! 173: int x; ! 174: curl_easy_setopt(NULL,CURLOPT_URL,NULL); ! 175: x=CURL_ERROR_SIZE; ! 176: x=CURLOPT_WRITEFUNCTION; ! 177: x=CURLOPT_WRITEDATA; ! 178: x=CURLOPT_ERRORBUFFER; ! 179: x=CURLOPT_STDERR; ! 180: x=CURLOPT_VERBOSE; ! 181: if (x) {;} ! 182: ]])],libcurl_cv_lib_curl_usable=yes,libcurl_cv_lib_curl_usable=no) ! 183: ! 184: CPPFLAGS=$_libcurl_save_cppflags ! 185: LIBS=$_libcurl_save_libs ! 186: unset _libcurl_save_cppflags ! 187: unset _libcurl_save_libs ! 188: ]) ! 189: ! 190: if test $libcurl_cv_lib_curl_usable = yes ; then ! 191: ! 192: # Does curl_free() exist in this version of libcurl? ! 193: # If not, fake it with free() ! 194: ! 195: _libcurl_save_cppflags=$CPPFLAGS ! 196: CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" ! 197: _libcurl_save_libs=$LIBS ! 198: LIBS="$LIBS $LIBCURL" ! 199: ! 200: AC_CHECK_FUNC(curl_free,, ! 201: AC_DEFINE(curl_free,free, ! 202: [Define curl_free() as free() if our version of curl lacks curl_free.])) ! 203: ! 204: CPPFLAGS=$_libcurl_save_cppflags ! 205: LIBS=$_libcurl_save_libs ! 206: unset _libcurl_save_cppflags ! 207: unset _libcurl_save_libs ! 208: ! 209: AC_DEFINE(HAVE_LIBCURL,1, ! 210: [Define to 1 if you have a functional curl library.]) ! 211: AC_SUBST(LIBCURL_CPPFLAGS) ! 212: AC_SUBST(LIBCURL) ! 213: ! 214: for _libcurl_feature in $_libcurl_features ; do ! 215: AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_feature_$_libcurl_feature),[1]) ! 216: eval AS_TR_SH(libcurl_feature_$_libcurl_feature)=yes ! 217: done ! 218: ! 219: if test "x$_libcurl_protocols" = "x" ; then ! 220: ! 221: # We don't have --protocols, so just assume that all ! 222: # protocols are available ! 223: _libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT TFTP" ! 224: ! 225: if test x$libcurl_feature_SSL = xyes ; then ! 226: _libcurl_protocols="$_libcurl_protocols HTTPS" ! 227: ! 228: # FTPS wasn't standards-compliant until version ! 229: # 7.11.0 (0x070b00 == 461568) ! 230: if test $_libcurl_version -ge 461568; then ! 231: _libcurl_protocols="$_libcurl_protocols FTPS" ! 232: fi ! 233: fi ! 234: ! 235: # RTSP, IMAP, POP3 and SMTP were added in ! 236: # 7.20.0 (0x071400 == 463872) ! 237: if test $_libcurl_version -ge 463872; then ! 238: _libcurl_protocols="$_libcurl_protocols RTSP IMAP POP3 SMTP" ! 239: fi ! 240: fi ! 241: ! 242: for _libcurl_protocol in $_libcurl_protocols ; do ! 243: AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_protocol_$_libcurl_protocol),[1]) ! 244: eval AS_TR_SH(libcurl_protocol_$_libcurl_protocol)=yes ! 245: done ! 246: else ! 247: unset LIBCURL ! 248: unset LIBCURL_CPPFLAGS ! 249: fi ! 250: fi ! 251: ! 252: unset _libcurl_try_link ! 253: unset _libcurl_version_parse ! 254: unset _libcurl_config ! 255: unset _libcurl_feature ! 256: unset _libcurl_features ! 257: unset _libcurl_protocol ! 258: unset _libcurl_protocols ! 259: unset _libcurl_version ! 260: unset _libcurl_ldflags ! 261: fi ! 262: ! 263: if test x$_libcurl_with = xno || test x$libcurl_cv_lib_curl_usable != xyes ; then ! 264: # This is the IF-NO path ! 265: ifelse([$4],,:,[$4]) ! 266: else ! 267: # This is the IF-YES path ! 268: ifelse([$3],,:,[$3]) ! 269: fi ! 270: ! 271: unset _libcurl_with ! 272: ])dnl