Initial packaging.
[profile/ivi/log4cxx.git] / find_apr.m4
1 dnl -------------------------------------------------------- -*- autoconf -*-
2 dnl Licensed to the Apache Software Foundation (ASF) under one or more
3 dnl contributor license agreements.  See the NOTICE file distributed with
4 dnl this work for additional information regarding copyright ownership.
5 dnl The ASF licenses this file to You under the Apache License, Version 2.0
6 dnl (the "License"); you may not use this file except in compliance with
7 dnl the License.  You may obtain a copy of the License at
8 dnl
9 dnl     http://www.apache.org/licenses/LICENSE-2.0
10 dnl
11 dnl Unless required by applicable law or agreed to in writing, software
12 dnl distributed under the License is distributed on an "AS IS" BASIS,
13 dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 dnl See the License for the specific language governing permissions and
15 dnl limitations under the License.
16
17 dnl
18 dnl find_apr.m4 : locate the APR include files and libraries
19 dnl
20 dnl This macro file can be used by applications to find and use the APR
21 dnl library. It provides a standardized mechanism for using APR. It supports
22 dnl embedding APR into the application source, or locating an installed
23 dnl copy of APR.
24 dnl
25 dnl APR_FIND_APR(srcdir, builddir, implicit-install-check, acceptable-majors,
26 dnl              detailed-check)
27 dnl
28 dnl   where srcdir is the location of the bundled APR source directory, or
29 dnl   empty if source is not bundled.
30 dnl
31 dnl   where builddir is the location where the bundled APR will will be built,
32 dnl   or empty if the build will occur in the srcdir.
33 dnl
34 dnl   where implicit-install-check set to 1 indicates if there is no
35 dnl   --with-apr option specified, we will look for installed copies.
36 dnl
37 dnl   where acceptable-majors is a space separated list of acceptable major
38 dnl   version numbers. Often only a single major version will be acceptable.
39 dnl   If multiple versions are specified, and --with-apr=PREFIX or the
40 dnl   implicit installed search are used, then the first (leftmost) version
41 dnl   in the list that is found will be used.  Currently defaults to [0 1].
42 dnl
43 dnl   where detailed-check is an M4 macro which sets the apr_acceptable to
44 dnl   either "yes" or "no". The macro will be invoked for each installed
45 dnl   copy of APR found, with the apr_config variable set appropriately.
46 dnl   Only installed copies of APR which are considered acceptable by
47 dnl   this macro will be considered found. If no installed copies are
48 dnl   considered acceptable by this macro, apr_found will be set to either
49 dnl   either "no" or "reconfig".
50 dnl
51 dnl Sets the following variables on exit:
52 dnl
53 dnl   apr_found : "yes", "no", "reconfig"
54 dnl
55 dnl   apr_config : If the apr-config tool exists, this refers to it. If
56 dnl                apr_found is "reconfig", then the bundled directory
57 dnl                should be reconfigured *before* using apr_config.
58 dnl
59 dnl Note: this macro file assumes that apr-config has been installed; it
60 dnl       is normally considered a required part of an APR installation.
61 dnl
62 dnl If a bundled source directory is available and needs to be (re)configured,
63 dnl then apr_found is set to "reconfig". The caller should reconfigure the
64 dnl (passed-in) source directory, placing the result in the build directory,
65 dnl as appropriate.
66 dnl
67 dnl If apr_found is "yes" or "reconfig", then the caller should use the
68 dnl value of apr_config to fetch any necessary build/link information.
69 dnl
70
71 AC_DEFUN([APR_FIND_APR], [
72   apr_found="no"
73
74   if test "$target_os" = "os2-emx"; then
75     # Scripts don't pass test -x on OS/2
76     TEST_X="test -f"
77   else
78     TEST_X="test -x"
79   fi
80
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
99   AC_MSG_CHECKING(for APR)
100   AC_ARG_WITH(apr,
101   [  --with-apr=PATH         prefix for installed APR or the full path to 
102                              apr-config],
103   [
104     if test "$withval" = "no" || test "$withval" = "yes"; then
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
128       apr_config="$withval"
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
139     if test "$apr_found" != "yes"; then
140       AC_MSG_ERROR([the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.])
141     fi
142   ],[
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
179       apr_temp_abs_srcdir="`cd $1 && pwd`"
180       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
193       if test -n "$2"; then
194         apr_config="$2/$apr_temp_apr_config_file"
195       else
196         apr_config="$1/$apr_temp_apr_config_file"
197       fi
198     fi
199   ])
200
201   AC_MSG_RESULT($apr_found)
202 ])