| dnl Licensed to the Apache Software Foundation (ASF) under one or more | |
| dnl contributor license agreements. See the NOTICE file distributed with | |
| dnl this work for additional information regarding copyright ownership. | |
| dnl The ASF licenses this file to You under the Apache License, Version 2.0 | |
| dnl (the "License"); you may not use this file except in compliance with | |
| dnl the License. You may obtain a copy of the License at | |
| dnl | |
| dnl http://www.apache.org/licenses/LICENSE-2.0 | |
| dnl | |
| dnl Unless required by applicable law or agreed to in writing, software | |
| dnl distributed under the License is distributed on an "AS IS" BASIS, | |
| dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| dnl See the License for the specific language governing permissions and | |
| dnl limitations under the License. | |
| dnl | |
| dnl APACHE_CHECK_CURL | |
| dnl | |
| dnl Configure for libcurl, giving preference to | |
| dnl "--with-curl=<path>" if it was specified. | |
| dnl | |
| AC_DEFUN([APACHE_CHECK_CURL],[ | |
| AC_CACHE_CHECK([for curl], [ac_cv_curl], [ | |
| dnl initialise the variables we use | |
| ac_cv_curl=no | |
| ap_curl_found="" | |
| ap_curl_base="" | |
| ap_curl_libs="" | |
| dnl Determine the curl base directory, if any | |
| AC_MSG_CHECKING([for user-provided curl base directory]) | |
| AC_ARG_WITH(curl, APACHE_HELP_STRING(--with-curl=PATH, curl installation directory), [ | |
| dnl If --with-curl specifies a directory, we use that directory | |
| if test "x$withval" != "xyes" -a "x$withval" != "x"; then | |
| dnl This ensures $withval is actually a directory and that it is absolute | |
| ap_curl_base="`cd $withval ; pwd`" | |
| fi | |
| ]) | |
| if test "x$ap_curl_base" = "x"; then | |
| AC_MSG_RESULT(none) | |
| else | |
| AC_MSG_RESULT($ap_curl_base) | |
| fi | |
| dnl Run header and version checks | |
| saved_CPPFLAGS="$CPPFLAGS" | |
| saved_LIBS="$LIBS" | |
| saved_LDFLAGS="$LDFLAGS" | |
| dnl Before doing anything else, load in pkg-config variables | |
| if test -n "$PKGCONFIG"; then | |
| saved_PKG_CONFIG_PATH="$PKG_CONFIG_PATH" | |
| AC_MSG_CHECKING([for pkg-config along $PKG_CONFIG_PATH]) | |
| if test "x$ap_curl_base" != "x" ; then | |
| if test -f "${ap_curl_base}/lib/pkgconfig/libcurl.pc"; then | |
| dnl Ensure that the given path is used by pkg-config too, otherwise | |
| dnl the system libcurl.pc might be picked up instead. | |
| PKG_CONFIG_PATH="${ap_curl_base}/lib/pkgconfig${PKG_CONFIG_PATH+:}${PKG_CONFIG_PATH}" | |
| export PKG_CONFIG_PATH | |
| elif test -f "${ap_curl_base}/lib64/pkgconfig/libcurl.pc"; then | |
| dnl Ensure that the given path is used by pkg-config too, otherwise | |
| dnl the system libcurl.pc might be picked up instead. | |
| PKG_CONFIG_PATH="${ap_curl_base}/lib64/pkgconfig${PKG_CONFIG_PATH+:}${PKG_CONFIG_PATH}" | |
| export PKG_CONFIG_PATH | |
| fi | |
| fi | |
| AC_ARG_ENABLE(curl-staticlib-deps,APACHE_HELP_STRING(--enable-curl-staticlib-deps,[link mod_md with dependencies of libcurl's static libraries (as indicated by "pkg-config --static"). Must be specified in addition to --enable-md.]), [ | |
| if test "$enableval" = "yes"; then | |
| PKGCONFIG_LIBOPTS="--static" | |
| fi | |
| ]) | |
| ap_curl_libs="`$PKGCONFIG $PKGCONFIG_LIBOPTS --libs-only-l --silence-errors libcurl`" | |
| if test $? -eq 0; then | |
| ap_curl_found="yes" | |
| pkglookup="`$PKGCONFIG --cflags-only-I libcurl`" | |
| APR_ADDTO(CPPFLAGS, [$pkglookup]) | |
| APR_ADDTO(MOD_CFLAGS, [$pkglookup]) | |
| pkglookup="`$PKGCONFIG $PKGCONFIG_LIBOPTS --libs-only-L libcurl`" | |
| APR_ADDTO(LDFLAGS, [$pkglookup]) | |
| APR_ADDTO(MOD_LDFLAGS, [$pkglookup]) | |
| pkglookup="`$PKGCONFIG $PKGCONFIG_LIBOPTS --libs-only-other libcurl`" | |
| APR_ADDTO(LDFLAGS, [$pkglookup]) | |
| APR_ADDTO(MOD_LDFLAGS, [$pkglookup]) | |
| fi | |
| PKG_CONFIG_PATH="$saved_PKG_CONFIG_PATH" | |
| fi | |
| dnl fall back to the user-supplied directory if not found via pkg-config | |
| if test "x$ap_curl_base" != "x" -a "x$ap_curl_found" = "x"; then | |
| APR_ADDTO(CPPFLAGS, [-I$ap_curl_base/include]) | |
| APR_ADDTO(MOD_CFLAGS, [-I$ap_curl_base/include]) | |
| APR_ADDTO(LDFLAGS, [-L$ap_curl_base/lib]) | |
| APR_ADDTO(MOD_LDFLAGS, [-L$ap_curl_base/lib]) | |
| if test "x$ap_platform_runtime_link_flag" != "x"; then | |
| APR_ADDTO(LDFLAGS, [$ap_platform_runtime_link_flag$ap_curl_base/lib]) | |
| APR_ADDTO(MOD_LDFLAGS, [$ap_platform_runtime_link_flag$ap_curl_base/lib]) | |
| fi | |
| fi | |
| AC_CHECK_HEADERS([curl/curl.h]) | |
| AC_MSG_CHECKING([for curl version >= 7.29]) | |
| AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curl/curlver.h>]],[[ | |
| #if !defined(LIBCURL_VERSION_MAJOR) | |
| #error "Missing libcurl version" | |
| #endif | |
| #if LIBCURL_VERSION_MAJOR < 7 | |
| #error "Unsupported libcurl version " LIBCURL_VERSION | |
| #endif | |
| #if LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR < 29 | |
| #error "Unsupported libcurl version " LIBCURL_VERSION | |
| #endif]])], | |
| [AC_MSG_RESULT(OK) | |
| ac_cv_curl=yes], | |
| [AC_MSG_RESULT(FAILED)]) | |
| if test "x$ac_cv_curl" = "xyes"; then | |
| ap_curl_libs="${ap_curl_libs:--lcurl} `$apr_config --libs`" | |
| APR_ADDTO(MOD_LDFLAGS, [$ap_curl_libs]) | |
| APR_ADDTO(LIBS, [$ap_curl_libs]) | |
| fi | |
| dnl restore | |
| CPPFLAGS="$saved_CPPFLAGS" | |
| LIBS="$saved_LIBS" | |
| LDFLAGS="$saved_LDFLAGS" | |
| dnl cache MOD_LDFLAGS, MOD_CFLAGS | |
| ap_curl_mod_cflags=$MOD_CFLAGS | |
| ap_curl_mod_ldflags=$MOD_LDFLAGS | |
| ]) | |
| if test "x$ac_cv_curl" = "xyes"; then | |
| AC_DEFINE(HAVE_CURL, 1, [Define if curl is available]) | |
| APR_ADDTO(MOD_LDFLAGS, [$ap_curl_mod_ldflags]) | |
| APR_ADDTO(MOD_CFLAGS, [$ap_curl_mod_cflags]) | |
| fi | |
| ]) | |
| dnl # start of module specific part | |
| APACHE_MODPATH_INIT(md) | |
| dnl # list of module object files | |
| md_objs="dnl | |
| md_acme.lo dnl | |
| md_acme_acct.lo dnl | |
| md_acme_authz.lo dnl | |
| md_acme_drive.lo dnl | |
| md_acmev2_drive.lo dnl | |
| md_acme_order.lo dnl | |
| md_core.lo dnl | |
| md_curl.lo dnl | |
| md_crypt.lo dnl | |
| md_event.lo dnl | |
| md_http.lo dnl | |
| md_json.lo dnl | |
| md_jws.lo dnl | |
| md_log.lo dnl | |
| md_ocsp.lo dnl | |
| md_result.lo dnl | |
| md_reg.lo dnl | |
| md_status.lo dnl | |
| md_store.lo dnl | |
| md_store_fs.lo dnl | |
| md_time.lo dnl | |
| md_util.lo dnl | |
| mod_md.lo dnl | |
| mod_md_config.lo dnl | |
| mod_md_drive.lo dnl | |
| mod_md_ocsp.lo dnl | |
| mod_md_os.lo dnl | |
| mod_md_status.lo dnl | |
| " | |
| # Ensure that other modules can pick up mod_md.h | |
| APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/$modpath_current]) | |
| dnl # hook module into the Autoconf mechanism (--enable-md) | |
| APACHE_MODULE(md, [Managed Domain handling], $md_objs, , most, [ | |
| APACHE_CHECK_OPENSSL | |
| if test "x$ac_cv_openssl" = "xno" ; then | |
| AC_MSG_WARN([libssl (or compatible) not found]) | |
| enable_md=no | |
| fi | |
| APACHE_CHECK_JANSSON | |
| if test "x$ac_cv_jansson" != "xyes" ; then | |
| AC_MSG_WARN([libjansson not found]) | |
| enable_md=no | |
| fi | |
| APR_ADDTO(MOD_MD_LDADD, [$ap_jansson_libs]) | |
| APACHE_CHECK_CURL | |
| if test "x$ac_cv_curl" != "xyes" ; then | |
| AC_MSG_WARN([libcurl not found]) | |
| enable_md=no | |
| fi | |
| AC_CHECK_FUNCS([arc4random_buf], | |
| [APR_ADDTO(MOD_CPPFLAGS, ["-DMD_HAVE_ARC4RANDOM"])], []) | |
| if test "x$enable_md" = "xshared"; then | |
| APR_ADDTO(MOD_MD_LDADD, [-export-symbols-regex md_module]) | |
| fi | |
| ]) | |
| dnl # end of module specific part | |
| APACHE_MODPATH_FINISH | |