[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: oops, problem with the find_apr.m4 patch

From: Justin Erenkrantz <jerenkrantz_at_ebuilt.com>
Date: 2001-12-21 19:38:28 CET

On Fri, Dec 21, 2001 at 10:02:21AM -0600, Karl Fogel wrote:
> Hey, Justin, after I committed rev 703 (the APR_FIND_APR change),
> people started having build failures:
>
> libtool: link: cannot find the library `apr/libapr.la'
>
> I backed out the change; can you figure out what the problem was?

It wasn't relativizing the apr path. This should fix it. Please
test it out for yourself. =) (I did just test it with the bundled
source dir.)

I won't commit this find_apr.m4 into APR's CVS until you tell me it
works for SVN. (Feel free to commit it into APR if it works for
you.) -- justin

Use APR's own find_apr.m4 to find APR.

* ac-helpers/find_apr.m4: New file, imported from APR CVS repository,
provides the APR_FIND_APR macro.

* ac-helpers/apr.m4 (SVN_LIB_APR): Refactor the APR detection code
to take advantage of APR_FIND_APR.
(SVN_FIND_APR): Removed.

* configure.in: Add find_apr.m4 as an included file to source.

Index: configure.in
===================================================================
--- .svn/text-base/configure.in.svn-base Fri Dec 21 10:30:07 2001
+++ configure.in Thu Dec 20 20:56:31 2001
@@ -30,6 +30,7 @@
 sinclude(ac-helpers/svn-apache.m4)
 sinclude(ac-helpers/svn-macros.m4)
 sinclude(ac-helpers/neon.m4)
+sinclude(ac-helpers/find_apr.m4)
 sinclude(ac-helpers/apr.m4)
 sinclude(ac-helpers/aprutil.m4)
 
Index: ac-helpers/apr.m4
===================================================================
--- ac-helpers/.svn/text-base/apr.m4.svn-base Fri Dec 21 10:30:07 2001
+++ ac-helpers/apr.m4 Fri Dec 21 10:18:07 2001
@@ -3,133 +3,54 @@
 dnl Check configure options and assign variables related to
 dnl the Apache Portable Runtime (APR) library.
 dnl
-dnl If there is a apr/ subdir we assme we want to use it. In that
-dnl case an option telling us to use a locally installed apr
-dnl triggers an error.
-dnl
-dnl TODO : check apr version, link a test program
-
 
 AC_DEFUN(SVN_LIB_APR,
 [
 
   AC_MSG_NOTICE([Apache Portable Runtime (APR) library configuration])
 
- AC_ARG_WITH(apr-libs,
- [AC_HELP_STRING([--with-apr-libs=PREFIX],
- [Use Apache Portable Runtime (APR) library at PREFIX])],
- [
- if test -d $abs_srcdir/apr ; then
- AC_MSG_ERROR([--with-apr-libs option but apr/ subdir exists.
-Please either remove that subdir or don't use the --with-apr-libs option.])
- fi
-
- if test "$withval" = "yes" ; then
- AC_MSG_ERROR([--with-apr-libs requires an argument.])
- else
- APRVARS="$withval/APRVARS"
- APR_LIBS="$withval"
- fi
- ])
-
- AC_ARG_WITH(apr-includes,
- [AC_HELP_STRING([--with-apr-includes=PREFIX],
- [Use Apache Portable Runtime (APR) includes at PREFIX])],
- [
- if test -d $abs_srcdir/apr ; then
- AC_MSG_ERROR([--with-apr-includes option but apr/ subdir exists.
-Please either remove that subdir or don't use the --with-apr-includes option.])
- fi
-
- if test "$withval" = "yes" ; then
- AC_MSG_ERROR([--with-apr-includes requires an argument.])
- else
- APR_INCLUDES="$withval"
- fi
- ])
-
- AC_ARG_WITH(apr,
- [AC_HELP_STRING([--with-apr=PREFIX],
- [Use Apache Portable Runtime (APR) at PREFIX])],
- [
- if test -d $abs_srcdir/apr ; then
- AC_MSG_ERROR([--with-apr option but apr/ subdir exists.
-Please either remove that subdir or don't use the --with-apr option.])
- fi
-
- if test "$withval" != "yes" ; then
- APR_INCLUDES="$withval/include"
- APRVARS="$withval/lib/APRVARS"
- APR_LIBS="$withval/lib"
- fi
- ])
-
- if test -d $abs_srcdir/apr ; then
- echo "Using apr found in source directory"
- APR_INCLUDES='$(abs_builddir)/apr/include'
- APR_LIBS='$(abs_builddir)/apr'
- APRVARS=$abs_builddir/apr/APRVARS
- SVN_SUBDIR_CONFIG(apr)
- SVN_SUBDIRS="$SVN_SUBDIRS apr"
- else
- SVN_FIND_APR
+ APR_FIND_APR(apr, $abs_builddir)
+
+ if test $apr_found = "no"; then
+ AC_MSG_WARN([APR not found])
+ SVN_DOWNLOAD_APR
   fi
 
+ if test $apr_found = "reconfig"; then
+ SVN_SUBDIR_CONFIG($apr_srcdir)
+ SVN_SUBDIRS="$SVN_SUBDIRS $apr_srcdir"
+ fi
 
   dnl Get libraries and thread flags from APR ---------------------
 
- if test -f "$APRVARS"; then
- . "$APRVARS"
+ if test -x "$apr_config"; then
+ CPPFLAGS="$CPPFLAGS `$apr_config --cppflags`"
+ CFLAGS="$CFLAGS `$apr_config --cflags`"
+ LIBS="$LIBS `$apr_config --libs`"
+ else if test -f "$apr_vars"; then
+ . "$apr_config"
     CPPFLAGS="$CPPFLAGS $EXTRA_CPPFLAGS"
     CFLAGS="$CFLAGS $EXTRA_CFLAGS"
     LIBS="$LIBS $EXTRA_LIBS"
   else
- AC_MSG_WARN([APRVARS not found])
+ AC_MSG_WARN([apr-config or APRVARS not found])
     SVN_DOWNLOAD_APR
   fi
+ fi
 
- if test -n "$APR_INCLUDES" ; then
- SVN_EXTRA_INCLUDES="$SVN_EXTRA_INCLUDES -I$APR_INCLUDES"
- if test "$abs_srcdir" != "$abs_builddir" && test -d $abs_srcdir/apr ; then
+ SVN_EXTRA_INCLUDES="$SVN_EXTRA_INCLUDES $apr_includes"
+ if test "$abs_srcdir" != "$abs_builddir" && test -d $abs_srcdir/apr ; then
       SVN_EXTRA_INCLUDES="$SVN_EXTRA_INCLUDES -I$abs_srcdir/apr/include"
- fi
   fi
 
- if test -z "$APR_LIBS" ; then
+ if test -z "$apr_la_file" ; then
     SVN_APR_LIBS="-lapr $LIBTOOL_LIBS"
   else
- SVN_APR_LIBS="$APR_LIBS/libapr.la $LIBTOOL_LIBS"
+ SVN_APR_LIBS="$apr_la_file $LIBTOOL_LIBS"
   fi
   AC_SUBST(SVN_APR_LIBS)
 
 ])
-
-dnl SVN_FIND_APR()
-dnl Look in standard places for APRVARS, apr.h, and -lapr.
-AC_DEFUN(SVN_FIND_APR,
-[
- CPPFLAGS_save=$CPPFLAGS
- if test -n "$APR_INCLUDES" ; then
- CPPFLAGS="$CPPFLAGS -I$APR_INCLUDES"
- fi
- AC_CHECK_HEADER(apr.h, apr_h="yes", apr_h="no")
- if test "$apr_h" = "no" ; then
- echo "Couldn't find apr.h"
- SVN_DOWNLOAD_APR
- fi
-
- CPPFLAGS=$CPPFLAGS_save
- if test -z "$APRVARS" ; then
- dirs="/etc /usr/lib /usr/local/lib /opt/apr/lib"
- for dir in $dirs; do
- if test -f $dir/APRVARS ; then
- APRVARS=$dir/APRVARS
- break
- fi
- done
- fi
-])
-
 
 dnl SVN_DOWNLOAD_APR()
 dnl no apr found, print out a message telling the user what to do

====
ac-helpers/find_apr.m4
====
dnl
dnl find_apr.m4 : locate the APR include files and libraries
dnl
dnl This macro file can be used by applications to find and use the APR
dnl library. It provides a standardized mechanism for using APR. It supports
dnl embedding APR into the application source, or locating an installed
dnl copy of APR.
dnl
dnl APR_FIND_APR([srcdir, path])
dnl
dnl where srcdir is the location of the bundled APR source directory, or
dnl empty if source is not bundled.
dnl where path is the prefix to the location where the bundled APR will
dnl will be built.
dnl
dnl
dnl Sets the following variables on exit:
dnl
dnl apr_libdir : A custom directory to use for linking (the -L switch).
dnl If APR exists in a standard location, this variable
dnl will be empty
dnl
dnl apr_la_file : If a libtool .la file exists, this will refer to it. If
dnl there is no .la file, then this variable will be empty.
dnl
dnl apr_includes : Where the APR includes are located, if a non-standard
dnl location. This variable has the format "-Idir -Idir".
dnl It may specify more than one directory.
dnl
dnl apr_srcdir : If an APR source tree is available and needs to be
dnl (re)configured, this refers to it.
dnl
dnl apr_config : If the apr-config tool exists, this refers to it.
dnl
dnl apr_vars : If the APR config file (APRVARS) exists, this refers to it.
dnl
dnl apr_found : "yes", "no", "reconfig"
dnl
dnl Note: At this time, we cannot find *both* a source dir and a build dir.
dnl If both are available, the build directory should be passed to
dnl the --with-apr switch (apr_srcdir will be empty).
dnl
dnl Note: the installation layout is presumed to follow the standard
dnl PREFIX/lib and PREFIX/include pattern. If the APR config file
dnl is available (and can be found), then non-standard layouts are
dnl possible, since it will be described in the config file.
dnl
dnl If apr_found is "yes" or "reconfig", then the caller should link using
dnl apr_la_file, if available; otherwise, -lapr should be used (and if
dnl apr_libdir is not null, then -L$apr_libdir). If apr_includes is not null,
dnl then it should be used during compilation.
dnl
dnl If a source directory is available and needs to be (re)configured, then
dnl apr_srcdir specifies the directory and apr_found is "reconfig".
dnl

AC_DEFUN(APR_FIND_APR, [
  apr_found="no"

  preserve_LIBS="$LIBS"
  preserve_LDFLAGS="$LDFLAGS"
  preserve_CFLAGS="$CFLAGS"

  AC_MSG_CHECKING(for APR)
  AC_ARG_WITH(apr,
  [ --with-apr=DIR prefix for installed APR, or path to APR build tree],
  [
    if test "$withval" = "no" || test "$withval" = "yes"; then
      AC_MSG_ERROR([--with-apr requires a directory to be provided])
    fi

    if test -x "$withval/bin/apr-config"; then
       apr_config="$withval/bin/apr-config"
       CFLAGS="$CFLAGS `$withval/bin/apr-config --cflags`"
       LIBS="$LIBS `$withval/bin/apr-config --libs`"
       LDFLAGS="$LDFLAGS `$withval/bin/apr-config --ldflags`"
    else
       apr_config=""
    fi

    LIBS="$LIBS -lapr"
    LDFLAGS="$preserve_LDFLAGS -L$withval/lib"
    AC_TRY_LINK_FUNC(apr_initialize, [
      if test -f "$withval/include/apr.h"; then
        dnl found an installed version of APR
        apr_found="yes"
        apr_libdir="$withval/lib"
        apr_includes="-I$withval/include"
      fi
    ], [
      dnl look for a build tree (note: already configured/built)
      if test -f "$withval/libapr.la"; then
        apr_found="yes"
        apr_libdir=""
        apr_la_file="$withval/libapr.la"
        apr_vars="$withval/APRVARS"
        if test -x $withval/apr-config; then
          apr_config="$withval/apr-config"
        else
          apr_config=""
        fi
        apr_includes="-I$withval/include"
        if test ! -f "$withval/APRVARS.in"; then
          dnl extract the APR source directory without polluting our
          dnl shell variable space
          apr_srcdir="`sed -n '/APR_SOURCE_DIR/s/.*"\(.*\)"/\1/p' $apr_vars`"
          apr_includes="$apr_includes -I$apr_srcdir/include"
        fi
      fi
    ])

    dnl if --with-apr is used, then the target prefix/directory must be valid
    if test "$apr_found" != "yes"; then
      AC_MSG_ERROR([
The directory given to --with-apr does not specify a prefix for an installed
APR, nor an APR build directory.])
    fi
  ],[
    dnl always look in the builtin/default places
    LIBS="$LIBS -lapr"
    AC_TRY_LINK_FUNC(apr_initialize, [
        dnl We don't have to do anything.
        apr_found="yes"
        apr_srcdir=""
        apr_libdir=""
        apr_includes=""
        apr_la_file=""
        apr_config=""
        apr_vars=""
      ], [
      dnl look in the some standard places (apparently not in builtin/default)
      for lookdir in /usr /usr/local /opt/apr ; do
        if test "$apr_found" != "yes"; then
          LDFLAGS="$preserve_LDFLAGS -L$lookdir/lib"
          AC_TRY_LINK_FUNC(apr_initialize, [
            apr_found="yes"
            apr_libdir="$lookdir/lib"
            apr_includes="-I$lookdir/include"
            if test -x "$withval/bin/apr-config"; then
              apr_config="$withval/bin/apr-config"
            else
              apr_config=""
            fi
          ])
        fi
      done
    ])
    dnl We attempt to guess what the data will be *after* configure is run.
    dnl Note, if we don't see configure, but do have configure.in, it'd be
    dnl nice to run buildconf, but that's for another day.
    if test "$apr_found" = "no" && test -n "$1" && test -x "$1/configure"; then
      apr_found="reconfig"
      apr_srcdir="$1"
      if test -n "$2"; then
        apr_builddir="$2/"
      else
        apr_builddir=""
      fi
      apr_libdir=""
      apr_la_file="$apr_builddir$apr_srcdir/libapr.la"
      apr_vars="$apr_builddir$apr_srcdir/APRVARS"
      if test -f "$apr_builddir$apr_srcdir/apr-config.in"; then
        apr_config="$apr_builddir$apr_srcdir/apr-config"
      else
        apr_config=""
      fi
      apr_includes="-I$apr_builddir$apr_srcdir/include"
    fi
  ])

  if test "$apr_found" != "no" && test "$apr_libdir" != ""; then
    if test "$apr_vars" = "" && test -f "$apr_libdir/APRVARS"; then
      apr_vars="$apr_libdir/APRVARS"
    fi
    if test "$apr_la_file" = "" && test -f "$apr_libdir/libapr.la"; then
      apr_la_file="$apr_libdir/libapr.la"
    fi
  fi

  AC_MSG_RESULT($apr_found)
  CFLAGS="$preserve_CFLAGS"
  LIBS="$preserve_LIBS"
  LDFLAGS="$preserve_LDFLAGS"
])

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:53 2006

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.