config.m4 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. dnl config.m4 for extension curl
  2. PHP_ARG_WITH(curl, for cURL support,
  3. [ --with-curl[=DIR] Include cURL support])
  4. if test "$PHP_CURL" != "no"; then
  5. if test -z "$PKG_CONFIG"; then
  6. AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
  7. fi
  8. if test -x "$PKG_CONFIG"; then
  9. dnl using pkg-config output
  10. AC_MSG_CHECKING(for libcurl.pc)
  11. if test "$PHP_CURL" = "yes" -o "$PHP_CURL" = "/usr"; then
  12. PKNAME=libcurl
  13. AC_MSG_RESULT(using default path)
  14. elif test -r $PHP_CURL/$PHP_LIBDIR/pkgconfig/libcurl.pc; then
  15. PKNAME=$PHP_CURL/$PHP_LIBDIR/pkgconfig/libcurl.pc
  16. AC_MSG_RESULT(using $PKNAME)
  17. elif test -r $PHP_CURL/lib/pkgconfig/libcurl.pc; then
  18. PKNAME=$PHP_CURL/lib/pkgconfig/libcurl.pc
  19. AC_MSG_RESULT(using $PKNAME)
  20. else
  21. AC_MSG_RESULT(not found)
  22. AC_MSG_WARN(Could not find libcurl.pc. Try without $PHP_CURL or set PKG_CONFIG_PATH)
  23. fi
  24. fi
  25. if test -n "$PKNAME"; then
  26. AC_MSG_CHECKING(for cURL 7.15.5 or greater)
  27. if $PKG_CONFIG --atleast-version 7.15.5 $PKNAME; then
  28. curl_version_full=`$PKG_CONFIG --modversion $PKNAME`
  29. AC_MSG_RESULT($curl_version_full)
  30. else
  31. AC_MSG_ERROR(cURL version 7.15.5 or later is required to compile php with cURL support)
  32. fi
  33. CURL_LIBS=`$PKG_CONFIG --libs $PKNAME`
  34. CURL_INCL=`$PKG_CONFIG --cflags $PKNAME`
  35. CURL_SSL=`$PKG_CONFIG --variable=supported_features $PKNAME| $EGREP SSL`
  36. else
  37. dnl fallback to old vay, using curl-config
  38. AC_MSG_WARN(Fallback: search for curl headers and curl-config)
  39. if test -r $PHP_CURL/include/curl/easy.h; then
  40. CURL_DIR=$PHP_CURL
  41. else
  42. AC_MSG_CHECKING(for cURL in default path)
  43. for i in /usr/local /usr; do
  44. if test -r $i/include/curl/easy.h; then
  45. CURL_DIR=$i
  46. AC_MSG_RESULT(found in $i)
  47. break
  48. fi
  49. done
  50. fi
  51. if test -z "$CURL_DIR"; then
  52. AC_MSG_RESULT(not found)
  53. AC_MSG_ERROR(Please reinstall the libcurl distribution -
  54. easy.h should be in <curl-dir>/include/curl/)
  55. fi
  56. CURL_CONFIG="curl-config"
  57. AC_MSG_CHECKING(for cURL 7.15.5 or greater)
  58. if ${CURL_DIR}/bin/curl-config --libs > /dev/null 2>&1; then
  59. CURL_CONFIG=${CURL_DIR}/bin/curl-config
  60. else
  61. if ${CURL_DIR}/curl-config --libs > /dev/null 2>&1; then
  62. CURL_CONFIG=${CURL_DIR}/curl-config
  63. fi
  64. fi
  65. curl_version_full=`$CURL_CONFIG --version`
  66. curl_version=`echo ${curl_version_full} | sed -e 's/libcurl //' | $AWK 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
  67. if test "$curl_version" -ge 7015005; then
  68. AC_MSG_RESULT($curl_version_full)
  69. CURL_LIBS=`$CURL_CONFIG --libs`
  70. CURL_INCL=`$CURL_CONFIG --cflags`
  71. CURL_SSL=`$CURL_CONFIG --feature | $EGREP SSL`
  72. else
  73. AC_MSG_ERROR(cURL version 7.15.5 or later is required to compile php with cURL support)
  74. fi
  75. fi
  76. dnl common stuff (pkg-config / curl-config)
  77. PHP_EVAL_LIBLINE($CURL_LIBS, CURL_SHARED_LIBADD)
  78. PHP_EVAL_INCLINE($CURL_INCL, CURL_SHARED_LIBADD)
  79. AC_MSG_CHECKING([for SSL support in libcurl])
  80. if test -n "$CURL_SSL"; then
  81. AC_MSG_RESULT([yes])
  82. AC_DEFINE([HAVE_CURL_SSL], [1], [Have cURL with SSL support])
  83. save_CFLAGS="$CFLAGS"
  84. CFLAGS=$CURL_INCL
  85. save_LDFLAGS="$LDFLAGS"
  86. LDFLAGS=$CURL_LIBS
  87. AC_PROG_CPP
  88. AC_MSG_CHECKING([for openssl support in libcurl])
  89. AC_RUN_IFELSE([AC_LANG_SOURCE([[
  90. #include <strings.h>
  91. #include <curl/curl.h>
  92. int main(int argc, char *argv[])
  93. {
  94. curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
  95. if (data && data->ssl_version && *data->ssl_version) {
  96. const char *ptr = data->ssl_version;
  97. while(*ptr == ' ') ++ptr;
  98. return strncasecmp(ptr, "OpenSSL", sizeof("OpenSSL")-1);
  99. }
  100. return 1;
  101. }
  102. ]])],[
  103. AC_MSG_RESULT([yes])
  104. AC_CHECK_HEADERS([openssl/crypto.h], [
  105. AC_DEFINE([HAVE_CURL_OPENSSL], [1], [Have cURL with OpenSSL support])
  106. ])
  107. ], [
  108. AC_MSG_RESULT([no])
  109. ], [
  110. AC_MSG_RESULT([no])
  111. ])
  112. AC_MSG_CHECKING([for gnutls support in libcurl])
  113. AC_RUN_IFELSE([AC_LANG_SOURCE([[
  114. #include <strings.h>
  115. #include <curl/curl.h>
  116. int main(int argc, char *argv[])
  117. {
  118. curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
  119. if (data && data->ssl_version && *data->ssl_version) {
  120. const char *ptr = data->ssl_version;
  121. while(*ptr == ' ') ++ptr;
  122. return strncasecmp(ptr, "GnuTLS", sizeof("GnuTLS")-1);
  123. }
  124. return 1;
  125. }
  126. ]])], [
  127. AC_MSG_RESULT([yes])
  128. AC_CHECK_HEADER([gcrypt.h], [
  129. AC_DEFINE([HAVE_CURL_GNUTLS], [1], [Have cURL with GnuTLS support])
  130. ])
  131. ], [
  132. AC_MSG_RESULT([no])
  133. ], [
  134. AC_MSG_RESULT([no])
  135. ])
  136. CFLAGS="$save_CFLAGS"
  137. LDFLAGS="$save_LDFLAGS"
  138. else
  139. AC_MSG_RESULT([no])
  140. fi
  141. PHP_CHECK_LIBRARY(curl,curl_easy_perform,
  142. [
  143. AC_DEFINE(HAVE_CURL,1,[ ])
  144. ],[
  145. AC_MSG_ERROR(There is something wrong. Please check config.log for more information.)
  146. ],[
  147. $CURL_LIBS
  148. ])
  149. PHP_CHECK_LIBRARY(curl,curl_easy_strerror,
  150. [
  151. AC_DEFINE(HAVE_CURL_EASY_STRERROR,1,[ ])
  152. ],[],[
  153. $CURL_LIBS
  154. ])
  155. PHP_CHECK_LIBRARY(curl,curl_multi_strerror,
  156. [
  157. AC_DEFINE(HAVE_CURL_MULTI_STRERROR,1,[ ])
  158. ],[],[
  159. $CURL_LIBS
  160. ])
  161. PHP_NEW_EXTENSION(curl, interface.c multi.c share.c curl_file.c, $ext_shared)
  162. PHP_SUBST(CURL_SHARED_LIBADD)
  163. fi