]>
Commit | Line | Data |
---|---|---|
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 | ]) |