dnl =================================================================== dnl Licensed to the Apache Software Foundation (ASF) under one dnl or more contributor license agreements. See the NOTICE file dnl distributed with this work for additional information dnl regarding copyright ownership. The ASF licenses this file dnl to you under the Apache License, Version 2.0 (the dnl "License"); you may not use this file except in compliance dnl with 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, dnl software distributed under the License is distributed on an dnl "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY dnl KIND, either express or implied. See the License for the dnl specific language governing permissions and limitations dnl under the License. dnl =================================================================== dnl dnl SVN_LIB_SERF(min_major_num, min_minor_num, min_micro_num) dnl dnl Search for a suitable version of serf. min_major_num, dnl min_minor_num, and min_micro_num are used to determine dnl if the serf library is at least that version. dnl dnl If a --with-serf option (no argument) or --with-serf=yes dnl option is passed, then a search for serf on the system will be dnl performed with pkg-config. If --with-serf=yes was actually passed dnl then we error if we can't actually find serf. dnl dnl If a --with-serf=PREFIX option is passed search for a suitable dnl serf installed on the system under that PREFIX. First we will dnl try to find a pc file for serf under the prefix or directly dnl in the prefix (allowing the path that the serf-?.pc file to be dnl passed to configure if the pc file is in a non-standard location) dnl and then use pkg-config to determine the options to use that library. dnl If pkg-confg can't provide us the options to use that library fall dnl back on trying to use the guess the options based on just the prefix. dnl We will error if we can't find serf. dnl dnl If a --with-serf=no option is passed then no search will be dnl conducted. dnl dnl If the search for serf fails, set svn_lib_serf to no, otherwise set dnl it to yes. dnl AC_DEFUN(SVN_LIB_SERF, [ serf_found=no serf_required=no serf_skip=no serf_check_major="$1" serf_check_minor="$2" serf_check_patch="$3" serf_check_version="$1.$2.$3" AC_ARG_WITH(serf,AS_HELP_STRING([--with-serf=PREFIX], [Serf HTTP client library (enabled by default if found)]), [ if test "$withval" = "yes" ; then serf_required=yes elif test "$withval" = "no" ; then serf_skip=yes else serf_required=yes serf_prefix="$withval" fi ]) if test "$serf_skip" = "no" ; then SVN_SERF_PKG_CONFIG() if test -n "$serf_prefix" && test "$serf_found" = "no" ; then SVN_SERF_PREFIX_CONFIG() fi AC_MSG_CHECKING([was serf enabled]) if test "$serf_found" = "yes"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) SVN_DOWNLOAD_SERF() if test "$serf_required" = "yes"; then AC_MSG_ERROR([Serf was explicitly enabled but an appropriate version was not found.]) fi fi fi svn_lib_serf=$serf_found AC_SUBST(SVN_SERF_INCLUDES) AC_SUBST(SVN_SERF_LIBS) ]) dnl SVN_SERF_PREFIX_CONFIG() dnl Use user provided prefix to try and detect and configure serf AC_DEFUN(SVN_SERF_PREFIX_CONFIG, [ AC_MSG_NOTICE([serf library configuration via prefix]) serf_required=yes for serf_major in serf-2 serf-1; do if ! test -d $serf_prefix/include/$serf_major; then continue; fi save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES -I$serf_prefix/include/$serf_major" AC_CHECK_HEADERS(serf.h,[ save_ldflags="$LDFLAGS" LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$serf_prefix/lib)`" AC_CHECK_LIB($serf_major, serf_context_create,[ AC_TRY_COMPILE([ #include #include "serf.h" ],[ #if ! SERF_VERSION_AT_LEAST($serf_check_major, $serf_check_minor, $serf_check_patch) #error Serf version too old: need $serf_check_version #endif ], [serf_found=yes], [AC_MSG_WARN([Serf version too old: need $serf_check_version]) serf_found=no])], , $SVN_APRUTIL_LIBS $SVN_APR_LIBS -lz) LDFLAGS="$save_ldflags"]) CPPFLAGS="$save_cppflags" test $serf_found = yes && break done if test $serf_found = "yes"; then SVN_SERF_INCLUDES="-I$serf_prefix/include/$serf_major" if test -e "$serf_prefix/lib/lib$serf_major.la"; then SVN_SERF_LIBS="$serf_prefix/lib/lib$serf_major.la" else SVN_SERF_LIBS="-l$serf_major" LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$serf_prefix/lib)`" fi fi ]) dnl SVN_SERF_PKG_CONFIG() dnl Use pkg-config to try and detect and configure serf AC_DEFUN(SVN_SERF_PKG_CONFIG, [ AC_MSG_NOTICE([serf library configuration via pkg-config]) if test -n "$PKG_CONFIG"; then for serf_major in serf-2 serf-1; do AC_MSG_CHECKING([for $serf_major library]) if test -n "$serf_prefix" ; then dnl User provided a prefix so we try to find the pc file under dnl the prefix. PKG_CONFIG_PATH isn't useful for this because dnl we want to make sure that we get the library in the prefix dnl the user specifies and we want to allow the prefix path to dnl point at the path for the pc file is in (if it's in some dnl other path than $serf_prefix/lib/pkgconfig). if test -e "$serf_prefix/$serf_major.pc" ; then serf_pc_arg="$serf_prefix/$serf_major.pc" elif test -e "$serf_prefix/lib/pkgconfig/$serf_major.pc" ; then serf_pc_arg="$serf_prefix/lib/pkgconfig/$serf_major.pc" else AC_MSG_RESULT([no]) continue fi else serf_pc_arg="$serf_major" fi if $PKG_CONFIG $serf_pc_arg --exists; then AC_MSG_RESULT([yes]) AC_MSG_CHECKING([serf library version]) SERF_VERSION=`$PKG_CONFIG $serf_pc_arg --modversion` AC_MSG_RESULT([$SERF_VERSION]) AC_MSG_CHECKING([serf version is suitable]) if $PKG_CONFIG $serf_pc_arg --atleast-version=$serf_check_version; then AC_MSG_RESULT([yes]) serf_found=yes SVN_SERF_INCLUDES=[`$PKG_CONFIG $serf_pc_arg --cflags-only-I`] SVN_SERF_LIBS=[`$PKG_CONFIG $serf_pc_arg --libs-only-l`] dnl don't use --libs-only-L because then we might miss some options LDFLAGS=["$LDFLAGS `$PKG_CONFIG $serf_pc_arg --libs | $SED -e 's/-l[^ ]*//g'`"] break else AC_MSG_RESULT([no]) AC_MSG_WARN([Serf version too old: need $serf_check_version]) fi else AC_MSG_RESULT([no]) fi done fi ]) dnl SVN_DOWNLOAD_SERF() dnl no serf found, print out a message telling the user what to do AC_DEFUN(SVN_DOWNLOAD_SERF, [ echo "" echo "An appropriate version of serf could not be found, so libsvn_ra_serf" echo "will not be built. If you want to build libsvn_ra_serf, please" echo "install serf $serf_check_version or newer." echo "" ])