]>
Commit | Line | Data |
---|---|---|
fa522425 FC |
1 | dnl |
2 | dnl AUTHOR: Francesco Chemolli | |
3 | dnl | |
4 | dnl SQUID Web Proxy Cache http://www.squid-cache.org/ | |
5 | dnl ---------------------------------------------------------- | |
6 | dnl Squid is the result of efforts by numerous individuals from | |
7 | dnl the Internet community; see the CONTRIBUTORS file for full | |
8 | dnl details. Many organizations have provided support for Squid's | |
9 | dnl development; see the SPONSORS file for full details. Squid is | |
10 | dnl Copyrighted (C) 2001 by the Regents of the University of | |
11 | dnl California; see the COPYRIGHT file for full details. Squid | |
12 | dnl incorporates software developed and/or copyrighted by other | |
13 | dnl sources; see the CREDITS file for full details. | |
14 | dnl | |
15 | dnl This program is free software; you can redistribute it and/or modify | |
16 | dnl it under the terms of the GNU General Public License as published by | |
17 | dnl the Free Software Foundation; either version 2 of the License, or | |
18 | dnl (at your option) any later version. | |
19 | dnl | |
20 | dnl This program is distributed in the hope that it will be useful, | |
21 | dnl but WITHOUT ANY WARRANTY; without even the implied warranty of | |
22 | dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
23 | dnl GNU General Public License for more details. | |
24 | dnl | |
25 | dnl You should have received a copy of the GNU General Public License | |
26 | dnl along with this program; if not, write to the Free Software | |
27 | dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. | |
28 | ||
29 | dnl save main environment variables to variables to the namespace defined by the | |
30 | dnl first argument (prefix) | |
31 | dnl e.g. SQUID_SAVEFLAGS([foo]) will save CFLAGS to foo_CFLAGS etc. | |
32 | dnl Saved variables are: | |
33 | dnl CFLAGS, CXXFLAGS, LDFLAGS, LIBS plus any variables specified as | |
34 | dnl second argument | |
35 | AC_DEFUN([SQUID_STATE_SAVE],[ | |
820c5a3c | 36 | # save state, key is $1 |
fa522425 FC |
37 | $1_CFLAGS="${CFLAGS}" |
38 | $1_CXXFLAGS="${CXXFLAGS}" | |
39 | $1_LDFLAGS="${LDFLAGS}" | |
40 | $1_LIBS="${LIBS}" | |
bee906c3 FC |
41 | $1_CC="${CC}" |
42 | $1_CXX="${CXX}" | |
fa522425 | 43 | $1_squid_saved_vars="$2" |
4f0128b6 | 44 | for squid_util_var_tosave in $$1_squid_saved_vars |
fa522425 FC |
45 | do |
46 | squid_util_var_tosave2="$1_${squid_util_var_tosave}" | |
47 | eval "${squid_util_var_tosave2}=\"${squid_util_var_tosave}\"" | |
48 | done | |
49 | ]) | |
50 | ||
51 | dnl commit the state changes: deleting the temporary state defined in SQUID_STATE_SAVE | |
52 | dnl with the same prefix. It's not necessary to specify the extra variables passed | |
53 | dnl to SQUID_STATE_SAVE again, they will be automatically reclaimed. | |
54 | AC_DEFUN([SQUID_STATE_COMMIT],[ | |
820c5a3c | 55 | # commit state, key is $1 |
fa522425 | 56 | unset $1_CFLAGS |
018a3298 | 57 | unset $1_CXXFLAGS |
fa522425 FC |
58 | unset $1_LDFLAGS |
59 | unset $1_LIBS | |
50fbcbd6 FC |
60 | unset $1_CC |
61 | unset $1_CXX | |
fa522425 FC |
62 | for squid_util_var_tosave in $$1_squid_saved_vars |
63 | do | |
820c5a3c | 64 | unset ${squid_util_var_tosave} |
fa522425 FC |
65 | done |
66 | ]) | |
67 | ||
68 | dnl rollback state to the call of SQUID_STATE_SAVE with the same namespace argument. | |
69 | dnl all temporary state will be cleared, including the custom variables specified | |
70 | dnl at call time. It's not necessary to explicitly name them, they will be automatically | |
71 | dnl cleared. | |
72 | AC_DEFUN([SQUID_STATE_ROLLBACK],[ | |
820c5a3c | 73 | # rollback state, key is $1 |
fa522425 FC |
74 | CFLAGS="${$1_CFLAGS}" |
75 | CXXFLAGS="${$1_CXXFLAGS}" | |
76 | LDFLAGS="${$1_LDFLAGS}" | |
77 | LIBS="${$1_LIBS}" | |
50fbcbd6 FC |
78 | CC="${$1_CC}" |
79 | CXX="${$1_CXX}" | |
fa522425 FC |
80 | for squid_util_var_tosave in $$1_squid_saved_vars |
81 | do | |
820c5a3c FC |
82 | squid_util_var_tosave2="\$$1_${squid_util_var_tosave}" |
83 | eval "$squid_util_var_tosave=\"${squid_util_var_tosave2}\"" | |
fa522425 FC |
84 | done |
85 | SQUID_STATE_COMMIT($1) | |
86 | ]) | |
87 | ||
50fbcbd6 FC |
88 | |
89 | dnl look for modules in the base-directory supplied as argument. | |
9d6186b1 FC |
90 | dnl fill-in the variable pointed-to by the second argument with the |
91 | dnl space-separated list of modules | |
50fbcbd6 | 92 | AC_DEFUN([SQUID_LOOK_FOR_MODULES],[ |
26ffc057 | 93 | $2="" |
50fbcbd6 FC |
94 | for dir in $1/*; do |
95 | module="`basename $dir`" | |
96 | if test -d "$dir" && test "$module" != CVS; then | |
97 | $2="$$2 $module" | |
98 | fi | |
99 | done | |
100 | ]) | |
d235bc84 FC |
101 | |
102 | dnl remove duplicates out of a list. | |
103 | dnl dnl argument is the name of a variable to be checked and cleaned up | |
104 | AC_DEFUN([SQUID_CLEANUP_MODULES_LIST],[ | |
105 | squid_cleanup_tmp_outlist="" | |
106 | for squid_cleanup_tmp in $$1 | |
107 | do | |
108 | squid_cleanup_tmp_dupe=0 | |
109 | for squid_cleanup_tmp2 in $squid_cleanup_tmp_outlist | |
110 | do | |
111 | if test "$squid_cleanup_tmp" = "$squid_cleanup_tmp2"; then | |
112 | squid_cleanup_tmp_dupe=1 | |
113 | break | |
114 | fi | |
115 | done | |
116 | if test $squid_cleanup_tmp_dupe -eq 0; then | |
117 | squid_cleanup_tmp_outlist="${squid_cleanup_tmp_outlist} $squid_cleanup_tmp" | |
118 | fi | |
119 | done | |
120 | $1=$squid_cleanup_tmp_outlist | |
121 | unset squid_cleanup_tmp_outlist | |
122 | unset squid_cleanup_tmp_dupe | |
123 | unset squid_cleanup_tmp2 | |
124 | unset squid_cleanup_tmp | |
125 | ]) | |
126 | ||
127 | dnl check that all the modules supplied as a whitespace-separated list (second | |
128 | dnl argument) exist as members of the basedir passed as first argument | |
dc299f29 FC |
129 | dnl call AC_MESG_ERROR if any module does not exist. Also sets individual variables |
130 | dnl named $2_modulename to value "yes" | |
131 | dnl e.g. SQUID_CHECK_EXISTING_MODULES([$srcdir/src/fs],[foo_module_candidates]) | |
132 | dnl where $foo_module_candidates is "foo bar gazonk" | |
133 | dnl checks whether $srcdir/src/fs/{foo,bar,gazonk} exist and are all dirs | |
134 | dnl AND sets $foo_module_candidates_foo, $foo_module_candidates_bar | |
135 | dnl and $foo_module_candidates_gazonk to "yes" | |
d235bc84 | 136 | AC_DEFUN([SQUID_CHECK_EXISTING_MODULES],[ |
dc299f29 | 137 | for squid_module_check_exist_tmp in $$2 |
d235bc84 | 138 | do |
dc299f29 | 139 | if test -d $1/$squid_module_check_exist_tmp |
d235bc84 | 140 | then |
dc299f29 FC |
141 | eval "$2_$squid_module_check_exist_tmp='yes'" |
142 | #echo "defining $2_$squid_module_check_exist_tmp" | |
143 | else | |
d235bc84 FC |
144 | AC_MSG_ERROR([$squid_module_check_exist_tmp not found in $1]) |
145 | fi | |
146 | done | |
147 | ]) | |
6d1c1ab1 FC |
148 | |
149 | dnl lowercases the contents of the variable whose name is passed by argument | |
40503c27 | 150 | AC_DEFUN([SQUID_TOLOWER_VAR_CONTENTS],[ |
6d1c1ab1 FC |
151 | $1=`echo $$1|tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` |
152 | ]) | |
153 | ||
154 | dnl uppercases the contents of the variable whose name is passed by argument | |
155 | AC_DEFUN([SQUID_TOUPPER_VAR_CONTENTS],[ | |
156 | $1=`echo $$1|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` | |
157 | ]) | |
8075a4da | 158 | |
0067eb06 | 159 | dnl like AC_DEFINE, but it defines the value to 0 or 1 using well-known textual |
8075a4da FC |
160 | dnl conventions: |
161 | dnl 1: "yes", "true", 1 | |
162 | dnl 0: "no" , "false", 0, "" | |
163 | dnl aborts with an error for unknown values | |
0067eb06 | 164 | AC_DEFUN([SQUID_DEFINE_BOOL],[ |
8075a4da FC |
165 | squid_tmp_define="" |
166 | case "$2" in | |
167 | yes|true|1) squid_tmp_define="1" ;; | |
0067eb06 | 168 | no|false|0|"") squid_tmp_define="0" ;; |
45c41a07 | 169 | *) AC_MSG_ERROR([SQUID_DEFINE[]_BOOL: unrecognized value for $1: '$2']) ;; |
8075a4da FC |
170 | esac |
171 | ifelse([$#],3, | |
172 | [AC_DEFINE_UNQUOTED([$1], [$squid_tmp_define],[$3])], | |
173 | [AC_DEFINE_UNQUOTED([$1], [$squid_tmp_define])] | |
174 | ) | |
175 | unset squid_tmp_define | |
176 | ]) | |
1d87b6b3 FC |
177 | |
178 | dnl aborts with an error specified as the second argument if the first argument doesn't | |
179 | dnl contain either "yes" or "no" | |
180 | AC_DEFUN([SQUID_YESNO],[ | |
181 | if test "$1" != "yes" -a "$1" != "no" ; then | |
182 | AC_MSG_ERROR([$2]) | |
183 | fi | |
184 | ]) | |
4fe75473 FC |
185 | |
186 | AC_DEFUN([SQUID_EMBED_BUILD_INFO],[ | |
187 | AC_ARG_ENABLE([build-info], | |
188 | AS_HELP_STRING([--enable-build-info="build info string"], | |
b9c250bf | 189 | [Add an additional string in the output of "squid -v". |
4fe75473 FC |
190 | Default is not to add anything. If the string is not specified, |
191 | tries to determine nick and revision number of the current | |
192 | bazaar branch]),[ | |
193 | case "$enableval" in | |
194 | no) ${TRUE} | |
195 | ;; | |
196 | yes) | |
197 | if test -d "${srcdir}/.bzr"; then | |
198 | AC_PATH_PROG(BZR,bzr,$FALSE) | |
aa73ca74 | 199 | squid_bzr_branch_nick=`cd ${srcdir} && ${BZR} nick 2>/dev/null` |
4fe75473 | 200 | if test $? -eq 0 -a "x$squid_bzr_branch_nick" != "x"; then |
aa73ca74 | 201 | squid_bzr_branch_revno=`cd ${srcdir} && ${BZR} revno 2>/dev/null | sed 's/\"//g'` |
4fe75473 FC |
202 | fi |
203 | if test $? -eq 0 -a "x$squid_bzr_branch_revno" != "x"; then | |
aa73ca74 | 204 | sh -c "cd ${srcdir} && ${BZR} diff 2>&1 >/dev/null" |
4fe75473 FC |
205 | if test $? -eq 1; then |
206 | squid_bzr_branch_revno="$squid_bzr_branch_revno+changes" | |
207 | fi | |
208 | fi | |
209 | if test "x$squid_bzr_branch_revno" != "x"; then | |
210 | squid_build_info="Built branch: ${squid_bzr_branch_nick}-r${squid_bzr_branch_revno}" | |
211 | fi | |
212 | fi | |
213 | ;; | |
214 | *) | |
215 | squid_build_info=$enableval | |
216 | ;; | |
217 | esac | |
218 | ]) | |
90cf433e FC |
219 | AC_DEFINE_UNQUOTED([SQUID_BUILD_INFO],["$squid_build_info"], |
220 | [Squid extended build info field for "squid -v" output]) | |
4fe75473 | 221 | ]) |
391f0bac FC |
222 | |
223 | dnl like AC_SEARCH_LIBS, with an extra argument which is | |
224 | dnl a prefix to the test program | |
225 | AC_DEFUN([SQUID_SEARCH_LIBS], | |
226 | [AS_VAR_PUSHDEF([ac_Search], [ac_cv_search_$1])dnl | |
227 | AC_CACHE_CHECK([for library containing $1], [ac_Search], | |
228 | [ac_func_search_save_LIBS=$LIBS | |
229 | AC_LANG_CONFTEST([AC_LANG_PROGRAM([$6], [$1()])]) | |
230 | for ac_lib in '' $2; do | |
231 | if test -z "$ac_lib"; then | |
232 | ac_res="none required" | |
233 | else | |
234 | ac_res=-l$ac_lib | |
235 | LIBS="-l$ac_lib $5 $ac_func_search_save_LIBS" | |
236 | fi | |
237 | AC_LINK_IFELSE([], [AS_VAR_SET([ac_Search], [$ac_res])]) | |
238 | AS_VAR_SET_IF([ac_Search], [break]) | |
239 | done | |
240 | AS_VAR_SET_IF([ac_Search], , [AS_VAR_SET([ac_Search], [no])]) | |
241 | rm conftest.$ac_ext | |
242 | LIBS=$ac_func_search_save_LIBS]) | |
243 | ac_res=AS_VAR_GET([ac_Search]) | |
244 | AS_IF([test "$ac_res" != no], | |
245 | [test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" | |
246 | $3], | |
247 | [$4]) | |
248 | AS_VAR_POPDEF([ac_Search])dnl | |
249 | ]) | |
5a0c5a92 AJ |
250 | |
251 | dnl Check for Cyrus SASL | |
252 | AC_DEFUN([SQUID_CHECK_SASL],[ | |
586fa897 | 253 | squid_cv_check_sasl="auto" |
deca8463 | 254 | AC_CHECK_HEADERS([sasl/sasl.h sasl.h]) |
5a0c5a92 AJ |
255 | AC_CHECK_LIB(sasl2,sasl_errstring,[LIBSASL="-lsasl2"],[ |
256 | AC_CHECK_LIB(sasl,sasl_errstring,[LIBSASL="-lsasl"], [ | |
586fa897 | 257 | squid_cv_check_sasl="no" |
5a0c5a92 AJ |
258 | ]) |
259 | ]) | |
260 | case "$squid_host_os" in | |
261 | Darwin) | |
262 | if test "$ac_cv_lib_sasl2_sasl_errstring" = "yes" ; then | |
263 | AC_DEFINE(HAVE_SASL_DARWIN,1,[Define to 1 if Mac Darwin without sasl.h]) | |
264 | echo "checking for MAC Darwin without sasl.h ... yes" | |
586fa897 | 265 | squid_cv_check_sasl="yes" |
5a0c5a92 AJ |
266 | else |
267 | echo "checking for MAC Darwin without sasl.h ... no" | |
586fa897 | 268 | squid_cv_check_sasl="no" |
5a0c5a92 AJ |
269 | fi |
270 | ;; | |
271 | esac | |
586fa897 | 272 | if test "x$squid_cv_check_sasl" = "xno"; then |
deca8463 | 273 | AC_MSG_WARN([Neither SASL nor SASL2 found]) |
586fa897 AJ |
274 | else |
275 | squid_cv_check_sasl="yes" | |
5a0c5a92 AJ |
276 | fi |
277 | AC_SUBST(LIBSASL) | |
278 | ]) |