Ignore:
Timestamp:
Apr 11, 2008, 9:45:34 PM (15 years ago)
Author:
Peter Johansson
Message:

Updating find_apr.m4 macro. New macro allow us to set which major versions of apr that are acceptable. Possibly we should change the macro call so we only accept apr-1 and accordingly modify requirements in INSTALL

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/build_support/find_apr.m4

    r375 r584  
     1dnl -------------------------------------------------------- -*- autoconf -*-
     2dnl Licensed to the Apache Software Foundation (ASF) under one or more
     3dnl contributor license agreements.  See the NOTICE file distributed with
     4dnl this work for additional information regarding copyright ownership.
     5dnl The ASF licenses this file to You under the Apache License, Version 2.0
     6dnl (the "License"); you may not use this file except in compliance with
     7dnl the License.  You may obtain a copy of the License at
     8dnl
     9dnl     http://www.apache.org/licenses/LICENSE-2.0
     10dnl
     11dnl Unless required by applicable law or agreed to in writing, software
     12dnl distributed under the License is distributed on an "AS IS" BASIS,
     13dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14dnl See the License for the specific language governing permissions and
     15dnl limitations under the License.
     16
    117dnl
    218dnl find_apr.m4 : locate the APR include files and libraries
     
    723dnl copy of APR.
    824dnl
    9 dnl APR_FIND_APR([srcdir [, builddir, implicit-install-check]])
     25dnl APR_FIND_APR(srcdir, builddir, implicit-install-check, acceptable-majors,
     26dnl              detailed-check)
    1027dnl
    1128dnl   where srcdir is the location of the bundled APR source directory, or
    1229dnl   empty if source is not bundled.
    1330dnl
    14 dnl   where blddir is the location where the bundled APR will will be built,
     31dnl   where builddir is the location where the bundled APR will will be built,
    1532dnl   or empty if the build will occur in the srcdir.
    1633dnl
    1734dnl   where implicit-install-check set to 1 indicates if there is no
    1835dnl   --with-apr option specified, we will look for installed copies.
     36dnl
     37dnl   where acceptable-majors is a space separated list of acceptable major
     38dnl   version numbers. Often only a single major version will be acceptable.
     39dnl   If multiple versions are specified, and --with-apr=PREFIX or the
     40dnl   implicit installed search are used, then the first (leftmost) version
     41dnl   in the list that is found will be used.  Currently defaults to [0 1].
     42dnl
     43dnl   where detailed-check is an M4 macro which sets the apr_acceptable to
     44dnl   either "yes" or "no". The macro will be invoked for each installed
     45dnl   copy of APR found, with the apr_config variable set appropriately.
     46dnl   Only installed copies of APR which are considered acceptable by
     47dnl   this macro will be considered found. If no installed copies are
     48dnl   considered acceptable by this macro, apr_found will be set to either
     49dnl   either "no" or "reconfig".
    1950dnl
    2051dnl Sets the following variables on exit:
     
    4172  apr_found="no"
    4273
    43   if test "$ac_cv_emxos2" = "yes"; then
     74  if test "$target_os" = "os2-emx"; then
    4475    # Scripts don't pass test -x on OS/2
    4576    TEST_X="test -f"
     
    4879  fi
    4980
     81  ifelse([$4], [], [
     82         ifdef(AC_WARNING,AC_WARNING([$0: missing argument 4 (acceptable-majors): Defaulting to APR 0.x then APR 1.x]))
     83         acceptable_majors="0 1"],
     84         [acceptable_majors="$4"])
     85
     86  apr_temp_acceptable_apr_config=""
     87  for apr_temp_major in $acceptable_majors
     88  do
     89    case $apr_temp_major in
     90      0)
     91      apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-config"
     92      ;;
     93      *)
     94      apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-$apr_temp_major-config"
     95      ;;
     96    esac
     97  done
     98
    5099  AC_MSG_CHECKING(for APR)
    51100  AC_ARG_WITH(apr,
    52   [  --with-apr=DIR|FILE     prefix for installed APR, path to APR build tree,
    53                           or the full path to apr-config],
     101  [  --with-apr=PATH         prefix for installed APR or the full path to
     102                            apr-config],
    54103  [
    55104    if test "$withval" = "no" || test "$withval" = "yes"; then
    56       AC_MSG_ERROR([--with-apr requires a directory to be provided])
    57     fi
    58 
    59     if $TEST_X "$withval/bin/apr-config"; then
    60       apr_found="yes"
    61       apr_config="$withval/bin/apr-config"
    62     elif $TEST_X "$withval/apr-config"; then
    63       apr_found="yes"
    64       apr_config="$withval/apr-config"
    65     elif $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then
    66       apr_found="yes"
     105      AC_MSG_ERROR([--with-apr requires a directory or file to be provided])
     106    fi
     107
     108    for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config
     109    do
     110      for lookdir in "$withval/bin" "$withval"
     111      do
     112        if $TEST_X "$lookdir/$apr_temp_apr_config_file"; then
     113          apr_config="$lookdir/$apr_temp_apr_config_file"
     114          ifelse([$5], [], [], [
     115          apr_acceptable="yes"
     116          $5
     117          if test "$apr_acceptable" != "yes"; then
     118            AC_MSG_WARN([Found APR in $apr_config, but we think it is considered unacceptable])
     119            continue
     120          fi])
     121          apr_found="yes"
     122          break 2
     123        fi
     124      done
     125    done
     126
     127    if test "$apr_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then
    67128      apr_config="$withval"
    68     fi
    69 
    70     dnl if --with-apr is used, then the target prefix/directory must be valid
     129      ifelse([$5], [], [apr_found="yes"], [
     130          apr_acceptable="yes"
     131          $5
     132          if test "$apr_acceptable" = "yes"; then
     133                apr_found="yes"
     134          fi])
     135    fi
     136
     137    dnl if --with-apr is used, it is a fatal error for its argument
     138    dnl to be invalid
    71139    if test "$apr_found" != "yes"; then
    72       AC_MSG_ERROR([the --with-apr parameter is incorrect. It must specify an install prefix, a
    73 build directory, or an apr-config file.])
     140      AC_MSG_ERROR([the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.])
    74141    fi
    75142  ],[
    76     dnl if we have a bundled source directory, use it
    77     if test -d "$1"; then
     143    dnl If we allow installed copies, check those before using bundled copy.
     144    if test -n "$3" && test "$3" = "1"; then
     145      for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config
     146      do
     147        if $apr_temp_apr_config_file --help > /dev/null 2>&1 ; then
     148          apr_config="$apr_temp_apr_config_file"
     149          ifelse([$5], [], [], [
     150          apr_acceptable="yes"
     151          $5
     152          if test "$apr_acceptable" != "yes"; then
     153            AC_MSG_WARN([skipped APR at $apr_config, version not acceptable])
     154            continue
     155          fi])
     156          apr_found="yes"
     157          break
     158        else
     159          dnl look in some standard places
     160          for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do
     161            if $TEST_X "$lookdir/bin/$apr_temp_apr_config_file"; then
     162              apr_config="$lookdir/bin/$apr_temp_apr_config_file"
     163              ifelse([$5], [], [], [
     164              apr_acceptable="yes"
     165              $5
     166              if test "$apr_acceptable" != "yes"; then
     167                AC_MSG_WARN([skipped APR at $apr_config, version not acceptable])
     168                continue
     169              fi])
     170              apr_found="yes"
     171              break 2
     172            fi
     173          done
     174        fi
     175      done
     176    fi
     177    dnl if we have not found anything yet and have bundled source, use that
     178    if test "$apr_found" = "no" && test -d "$1"; then
    78179      apr_temp_abs_srcdir="`cd $1 && pwd`"
    79180      apr_found="reconfig"
     181      apr_bundled_major="`sed -n '/#define.*APR_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apr_version.h\"`"
     182      case $apr_bundled_major in
     183        "")
     184          AC_MSG_ERROR([failed to find major version of bundled APR])
     185        ;;
     186        0)
     187          apr_temp_apr_config_file="apr-config"
     188        ;;
     189        *)
     190          apr_temp_apr_config_file="apr-$apr_bundled_major-config"
     191        ;;
     192      esac
    80193      if test -n "$2"; then
    81         apr_config="$2/apr-config"
     194        apr_config="$2/$apr_temp_apr_config_file"
    82195      else
    83         apr_config="$1/apr-config"
    84       fi
    85     fi
    86     if test "$apr_found" = "no" && test -n "$3" && test "$3" = "1"; then
    87       if apr-config --help > /dev/null 2>&1 ; then
    88         apr_found="yes"
    89         apr_config="apr-config"
    90       else
    91         dnl look in some standard places (apparently not in builtin/default)
    92         for lookdir in /usr /usr/local /opt/apr /usr/local/apache2 ; do
    93           if $TEST_X "$lookdir/bin/apr-config"; then
    94             apr_found="yes"
    95             apr_config="$lookdir/bin/apr-config"
    96             break
    97           fi
    98         done
     196        apr_config="$1/$apr_temp_apr_config_file"
    99197      fi
    100198    fi
Note: See TracChangeset for help on using the changeset viewer.