1 # lib-link.m4 serial 18 (gettext-0.18)
2 dnl Copyright (C) 2001-2009 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
7 dnl From Bruno Haible.
9 AC_PREREQ([2.54])
11 dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
12 dnl the libraries corresponding to explicit and implicit dependencies.
13 dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
14 dnl augments the CPPFLAGS variable.
15 dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
16 dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
17 AC_DEFUN([AC_LIB_LINKFLAGS],
18 [
19 AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
20 AC_REQUIRE([AC_LIB_RPATH])
21 pushdef([Name],[translit([$1],[./-], [___])])
22 pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
23 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
24 AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
25 AC_LIB_LINKFLAGS_BODY([$1], [$2])
26 ac_cv_lib[]Name[]_libs="$LIB[]NAME"
27 ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
28 ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
29 ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
30 ])
31 LIB[]NAME="$ac_cv_lib[]Name[]_libs"
32 LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
33 INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
34 LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
35 AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
36 AC_SUBST([LIB]NAME)
37 AC_SUBST([LTLIB]NAME)
38 AC_SUBST([LIB]NAME[_PREFIX])
39 dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
40 dnl results of this search when this library appears as a dependency.
41 HAVE_LIB[]NAME=yes
42 popdef([NAME])
43 popdef([Name])
44 ])
46 dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
47 dnl searches for libname and the libraries corresponding to explicit and
48 dnl implicit dependencies, together with the specified include files and
49 dnl the ability to compile and link the specified testcode. If found, it
50 dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
51 dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
52 dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
53 dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
54 dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
55 dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
56 AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
57 [
58 AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
59 AC_REQUIRE([AC_LIB_RPATH])
60 pushdef([Name],[translit([$1],[./-], [___])])
61 pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
62 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
64 dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
65 dnl accordingly.
66 AC_LIB_LINKFLAGS_BODY([$1], [$2])
68 dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
69 dnl because if the user has installed lib[]Name and not disabled its use
70 dnl via --without-lib[]Name-prefix, he wants to use it.
71 ac_save_CPPFLAGS="$CPPFLAGS"
72 AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
74 AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
75 ac_save_LIBS="$LIBS"
76 LIBS="$LIBS $LIB[]NAME"
77 AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
78 LIBS="$ac_save_LIBS"
79 ])
80 if test "$ac_cv_lib[]Name" = yes; then
81 HAVE_LIB[]NAME=yes
82 AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
83 AC_MSG_CHECKING([how to link with lib[]$1])
84 AC_MSG_RESULT([$LIB[]NAME])
85 else
86 HAVE_LIB[]NAME=no
87 dnl If $LIB[]NAME didn't lead to a usable library, we don't need
88 dnl $INC[]NAME either.
89 CPPFLAGS="$ac_save_CPPFLAGS"
90 LIB[]NAME=
91 LTLIB[]NAME=
92 LIB[]NAME[]_PREFIX=
93 fi
94 AC_SUBST([HAVE_LIB]NAME)
95 AC_SUBST([LIB]NAME)
96 AC_SUBST([LTLIB]NAME)
97 AC_SUBST([LIB]NAME[_PREFIX])
98 popdef([NAME])
99 popdef([Name])
100 ])
102 dnl Determine the platform dependent parameters needed to use rpath:
103 dnl acl_libext,
104 dnl acl_shlibext,
105 dnl acl_hardcode_libdir_flag_spec,
106 dnl acl_hardcode_libdir_separator,
107 dnl acl_hardcode_direct,
108 dnl acl_hardcode_minus_L.
109 AC_DEFUN([AC_LIB_RPATH],
110 [
111 dnl Tell automake >= 1.10 to complain if config.rpath is missing.
112 m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
113 AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
114 AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
115 AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
116 AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
117 AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
118 CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
119 ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
120 . ./conftest.sh
121 rm -f ./conftest.sh
122 acl_cv_rpath=done
123 ])
124 wl="$acl_cv_wl"
125 acl_libext="$acl_cv_libext"
126 acl_shlibext="$acl_cv_shlibext"
127 acl_libname_spec="$acl_cv_libname_spec"
128 acl_library_names_spec="$acl_cv_library_names_spec"
129 acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
130 acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
131 acl_hardcode_direct="$acl_cv_hardcode_direct"
132 acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
133 dnl Determine whether the user wants rpath handling at all.
134 AC_ARG_ENABLE([rpath],
135 [ --disable-rpath do not hardcode runtime library paths],
136 :, enable_rpath=yes)
137 ])
139 dnl AC_LIB_FROMPACKAGE(name, package)
140 dnl declares that libname comes from the given package. The configure file
141 dnl will then not have a --with-libname-prefix option but a
142 dnl --with-package-prefix option. Several libraries can come from the same
143 dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
144 dnl macro call that searches for libname.
145 AC_DEFUN([AC_LIB_FROMPACKAGE],
146 [
147 pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
148 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
149 define([acl_frompackage_]NAME, [$2])
150 popdef([NAME])
151 pushdef([PACK],[$2])
152 pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
153 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
154 define([acl_libsinpackage_]PACKUP,
155 m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
156 popdef([PACKUP])
157 popdef([PACK])
158 ])
160 dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
161 dnl the libraries corresponding to explicit and implicit dependencies.
162 dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
163 dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
164 dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
165 AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
166 [
167 AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
168 pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
169 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
170 pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
171 pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
172 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
173 pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
174 dnl Autoconf >= 2.61 supports dots in --with options.
175 pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
176 dnl By default, look in $includedir and $libdir.
177 use_additional=yes
178 AC_LIB_WITH_FINAL_PREFIX([
179 eval additional_includedir=\"$includedir\"
180 eval additional_libdir=\"$libdir\"
181 ])
182 AC_ARG_WITH(P_A_C_K[-prefix],
183 [[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
184 --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
185 [
186 if test "X$withval" = "Xno"; then
187 use_additional=no
188 else
189 if test "X$withval" = "X"; then
190 AC_LIB_WITH_FINAL_PREFIX([
191 eval additional_includedir=\"$includedir\"
192 eval additional_libdir=\"$libdir\"
193 ])
194 else
195 additional_includedir="$withval/include"
196 additional_libdir="$withval/$acl_libdirstem"
197 if test "$acl_libdirstem2" != "$acl_libdirstem" \
198 && ! test -d "$withval/$acl_libdirstem"; then
199 additional_libdir="$withval/$acl_libdirstem2"
200 fi
201 fi
202 fi
203 ])
204 dnl Search the library and its dependencies in $additional_libdir and
205 dnl $LDFLAGS. Using breadth-first-seach.
206 LIB[]NAME=
207 LTLIB[]NAME=
208 INC[]NAME=
209 LIB[]NAME[]_PREFIX=
210 rpathdirs=
211 ltrpathdirs=
212 names_already_handled=
213 names_next_round='$1 $2'
214 while test -n "$names_next_round"; do
215 names_this_round="$names_next_round"
216 names_next_round=
217 for name in $names_this_round; do
218 already_handled=
219 for n in $names_already_handled; do
220 if test "$n" = "$name"; then
221 already_handled=yes
222 break
223 fi
224 done
225 if test -z "$already_handled"; then
226 names_already_handled="$names_already_handled $name"
227 dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
228 dnl or AC_LIB_HAVE_LINKFLAGS call.
229 uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
230 eval value=\"\$HAVE_LIB$uppername\"
231 if test -n "$value"; then
232 if test "$value" = yes; then
233 eval value=\"\$LIB$uppername\"
234 test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
235 eval value=\"\$LTLIB$uppername\"
236 test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
237 else
238 dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
239 dnl that this library doesn't exist. So just drop it.
240 :
241 fi
242 else
243 dnl Search the library lib$name in $additional_libdir and $LDFLAGS
244 dnl and the already constructed $LIBNAME/$LTLIBNAME.
245 found_dir=
246 found_la=
247 found_so=
248 found_a=
249 eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
250 if test -n "$acl_shlibext"; then
251 shrext=".$acl_shlibext" # typically: shrext=.so
252 else
253 shrext=
254 fi
255 if test $use_additional = yes; then
256 dir="$additional_libdir"
257 dnl The same code as in the loop below:
258 dnl First look for a shared library.
259 if test -n "$acl_shlibext"; then
260 if test -f "$dir/$libname$shrext"; then
261 found_dir="$dir"
262 found_so="$dir/$libname$shrext"
263 else
264 if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
265 ver=`(cd "$dir" && \
266 for f in "$libname$shrext".*; do echo "$f"; done \
267 | sed -e "s,^$libname$shrext\\\\.,," \
268 | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
269 | sed 1q ) 2>/dev/null`
270 if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
271 found_dir="$dir"
272 found_so="$dir/$libname$shrext.$ver"
273 fi
274 else
275 eval library_names=\"$acl_library_names_spec\"
276 for f in $library_names; do
277 if test -f "$dir/$f"; then
278 found_dir="$dir"
279 found_so="$dir/$f"
280 break
281 fi
282 done
283 fi
284 fi
285 fi
286 dnl Then look for a static library.
287 if test "X$found_dir" = "X"; then
288 if test -f "$dir/$libname.$acl_libext"; then
289 found_dir="$dir"
290 found_a="$dir/$libname.$acl_libext"
291 fi
292 fi
293 if test "X$found_dir" != "X"; then
294 if test -f "$dir/$libname.la"; then
295 found_la="$dir/$libname.la"
296 fi
297 fi
298 fi
299 if test "X$found_dir" = "X"; then
300 for x in $LDFLAGS $LTLIB[]NAME; do
301 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
302 case "$x" in
303 -L*)
304 dir=`echo "X$x" | sed -e 's/^X-L//'`
305 dnl First look for a shared library.
306 if test -n "$acl_shlibext"; then
307 if test -f "$dir/$libname$shrext"; then
308 found_dir="$dir"
309 found_so="$dir/$libname$shrext"
310 else
311 if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
312 ver=`(cd "$dir" && \
313 for f in "$libname$shrext".*; do echo "$f"; done \
314 | sed -e "s,^$libname$shrext\\\\.,," \
315 | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
316 | sed 1q ) 2>/dev/null`
317 if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
318 found_dir="$dir"
319 found_so="$dir/$libname$shrext.$ver"
320 fi
321 else
322 eval library_names=\"$acl_library_names_spec\"
323 for f in $library_names; do
324 if test -f "$dir/$f"; then
325 found_dir="$dir"
326 found_so="$dir/$f"
327 break
328 fi
329 done
330 fi
331 fi
332 fi
333 dnl Then look for a static library.
334 if test "X$found_dir" = "X"; then
335 if test -f "$dir/$libname.$acl_libext"; then
336 found_dir="$dir"
337 found_a="$dir/$libname.$acl_libext"
338 fi
339 fi
340 if test "X$found_dir" != "X"; then
341 if test -f "$dir/$libname.la"; then
342 found_la="$dir/$libname.la"
343 fi
344 fi
345 ;;
346 esac
347 if test "X$found_dir" != "X"; then
348 break
349 fi
350 done
351 fi
352 if test "X$found_dir" != "X"; then
353 dnl Found the library.
354 LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
355 if test "X$found_so" != "X"; then
356 dnl Linking with a shared library. We attempt to hardcode its
357 dnl directory into the executable's runpath, unless it's the
358 dnl standard /usr/lib.
359 if test "$enable_rpath" = no \
360 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
361 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
362 dnl No hardcoding is needed.
363 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
364 else
365 dnl Use an explicit option to hardcode DIR into the resulting
366 dnl binary.
367 dnl Potentially add DIR to ltrpathdirs.
368 dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
369 haveit=
370 for x in $ltrpathdirs; do
371 if test "X$x" = "X$found_dir"; then
372 haveit=yes
373 break
374 fi
375 done
376 if test -z "$haveit"; then
377 ltrpathdirs="$ltrpathdirs $found_dir"
378 fi
379 dnl The hardcoding into $LIBNAME is system dependent.
380 if test "$acl_hardcode_direct" = yes; then
381 dnl Using DIR/libNAME.so during linking hardcodes DIR into the
382 dnl resulting binary.
383 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
384 else
385 if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
386 dnl Use an explicit option to hardcode DIR into the resulting
387 dnl binary.
388 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
389 dnl Potentially add DIR to rpathdirs.
390 dnl The rpathdirs will be appended to $LIBNAME at the end.
391 haveit=
392 for x in $rpathdirs; do
393 if test "X$x" = "X$found_dir"; then
394 haveit=yes
395 break
396 fi
397 done
398 if test -z "$haveit"; then
399 rpathdirs="$rpathdirs $found_dir"
400 fi
401 else
402 dnl Rely on "-L$found_dir".
403 dnl But don't add it if it's already contained in the LDFLAGS
404 dnl or the already constructed $LIBNAME
405 haveit=
406 for x in $LDFLAGS $LIB[]NAME; do
407 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
408 if test "X$x" = "X-L$found_dir"; then
409 haveit=yes
410 break
411 fi
412 done
413 if test -z "$haveit"; then
414 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
415 fi
416 if test "$acl_hardcode_minus_L" != no; then
417 dnl FIXME: Not sure whether we should use
418 dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
419 dnl here.
420 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
421 else
422 dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
423 dnl here, because this doesn't fit in flags passed to the
424 dnl compiler. So give up. No hardcoding. This affects only
425 dnl very old systems.
426 dnl FIXME: Not sure whether we should use
427 dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
428 dnl here.
429 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
430 fi
431 fi
432 fi
433 fi
434 else
435 if test "X$found_a" != "X"; then
436 dnl Linking with a static library.
437 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
438 else
439 dnl We shouldn't come here, but anyway it's good to have a
440 dnl fallback.
441 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
442 fi
443 fi
444 dnl Assume the include files are nearby.
445 additional_includedir=
446 case "$found_dir" in
447 */$acl_libdirstem | */$acl_libdirstem/)
448 basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
449 if test "$name" = '$1'; then
450 LIB[]NAME[]_PREFIX="$basedir"
451 fi
452 additional_includedir="$basedir/include"
453 ;;
454 */$acl_libdirstem2 | */$acl_libdirstem2/)
455 basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
456 if test "$name" = '$1'; then
457 LIB[]NAME[]_PREFIX="$basedir"
458 fi
459 additional_includedir="$basedir/include"
460 ;;
461 esac
462 if test "X$additional_includedir" != "X"; then
463 dnl Potentially add $additional_includedir to $INCNAME.
464 dnl But don't add it
465 dnl 1. if it's the standard /usr/include,
466 dnl 2. if it's /usr/local/include and we are using GCC on Linux,
467 dnl 3. if it's already present in $CPPFLAGS or the already
468 dnl constructed $INCNAME,
469 dnl 4. if it doesn't exist as a directory.
470 if test "X$additional_includedir" != "X/usr/include"; then
471 haveit=
472 if test "X$additional_includedir" = "X/usr/local/include"; then
473 if test -n "$GCC"; then
474 case $host_os in
475 linux* | gnu* | k*bsd*-gnu) haveit=yes;;
476 esac
477 fi
478 fi
479 if test -z "$haveit"; then
480 for x in $CPPFLAGS $INC[]NAME; do
481 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
482 if test "X$x" = "X-I$additional_includedir"; then
483 haveit=yes
484 break
485 fi
486 done
487 if test -z "$haveit"; then
488 if test -d "$additional_includedir"; then
489 dnl Really add $additional_includedir to $INCNAME.
490 INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
491 fi
492 fi
493 fi
494 fi
495 fi
496 dnl Look for dependencies.
497 if test -n "$found_la"; then
498 dnl Read the .la file. It defines the variables
499 dnl dlname, library_names, old_library, dependency_libs, current,
500 dnl age, revision, installed, dlopen, dlpreopen, libdir.
501 save_libdir="$libdir"
502 case "$found_la" in
503 */* | *\\*) . "$found_la" ;;
504 *) . "./$found_la" ;;
505 esac
506 libdir="$save_libdir"
507 dnl We use only dependency_libs.
508 for dep in $dependency_libs; do
509 case "$dep" in
510 -L*)
511 additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
512 dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
513 dnl But don't add it
514 dnl 1. if it's the standard /usr/lib,
515 dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
516 dnl 3. if it's already present in $LDFLAGS or the already
517 dnl constructed $LIBNAME,
518 dnl 4. if it doesn't exist as a directory.
519 if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
520 && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
521 haveit=
522 if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
523 || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
524 if test -n "$GCC"; then
525 case $host_os in
526 linux* | gnu* | k*bsd*-gnu) haveit=yes;;
527 esac
528 fi
529 fi
530 if test -z "$haveit"; then
531 haveit=
532 for x in $LDFLAGS $LIB[]NAME; do
533 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
534 if test "X$x" = "X-L$additional_libdir"; then
535 haveit=yes
536 break
537 fi
538 done
539 if test -z "$haveit"; then
540 if test -d "$additional_libdir"; then
541 dnl Really add $additional_libdir to $LIBNAME.
542 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
543 fi
544 fi
545 haveit=
546 for x in $LDFLAGS $LTLIB[]NAME; do
547 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
548 if test "X$x" = "X-L$additional_libdir"; then
549 haveit=yes
550 break
551 fi
552 done
553 if test -z "$haveit"; then
554 if test -d "$additional_libdir"; then
555 dnl Really add $additional_libdir to $LTLIBNAME.
556 LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
557 fi
558 fi
559 fi
560 fi
561 ;;
562 -R*)
563 dir=`echo "X$dep" | sed -e 's/^X-R//'`
564 if test "$enable_rpath" != no; then
565 dnl Potentially add DIR to rpathdirs.
566 dnl The rpathdirs will be appended to $LIBNAME at the end.
567 haveit=
568 for x in $rpathdirs; do
569 if test "X$x" = "X$dir"; then
570 haveit=yes
571 break
572 fi
573 done
574 if test -z "$haveit"; then
575 rpathdirs="$rpathdirs $dir"
576 fi
577 dnl Potentially add DIR to ltrpathdirs.
578 dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
579 haveit=
580 for x in $ltrpathdirs; do
581 if test "X$x" = "X$dir"; then
582 haveit=yes
583 break
584 fi
585 done
586 if test -z "$haveit"; then
587 ltrpathdirs="$ltrpathdirs $dir"
588 fi
589 fi
590 ;;
591 -l*)
592 dnl Handle this in the next round.
593 names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
594 ;;
595 *.la)
596 dnl Handle this in the next round. Throw away the .la's
597 dnl directory; it is already contained in a preceding -L
598 dnl option.
599 names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
600 ;;
601 *)
602 dnl Most likely an immediate library name.
603 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
604 LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
605 ;;
606 esac
607 done
608 fi
609 else
610 dnl Didn't find the library; assume it is in the system directories
611 dnl known to the linker and runtime loader. (All the system
612 dnl directories known to the linker should also be known to the
613 dnl runtime loader, otherwise the system is severely misconfigured.)
614 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
615 LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
616 fi
617 fi
618 fi
619 done
620 done
621 if test "X$rpathdirs" != "X"; then
622 if test -n "$acl_hardcode_libdir_separator"; then
623 dnl Weird platform: only the last -rpath option counts, the user must
624 dnl pass all path elements in one option. We can arrange that for a
625 dnl single library, but not when more than one $LIBNAMEs are used.
626 alldirs=
627 for found_dir in $rpathdirs; do
628 alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
629 done
630 dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
631 acl_save_libdir="$libdir"
632 libdir="$alldirs"
633 eval flag=\"$acl_hardcode_libdir_flag_spec\"
634 libdir="$acl_save_libdir"
635 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
636 else
637 dnl The -rpath options are cumulative.
638 for found_dir in $rpathdirs; do
639 acl_save_libdir="$libdir"
640 libdir="$found_dir"
641 eval flag=\"$acl_hardcode_libdir_flag_spec\"
642 libdir="$acl_save_libdir"
643 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
644 done
645 fi
646 fi
647 if test "X$ltrpathdirs" != "X"; then
648 dnl When using libtool, the option that works for both libraries and
649 dnl executables is -R. The -R options are cumulative.
650 for found_dir in $ltrpathdirs; do
651 LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
652 done
653 fi
654 popdef([P_A_C_K])
655 popdef([PACKLIBS])
656 popdef([PACKUP])
657 popdef([PACK])
658 popdef([NAME])
659 ])
661 dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
662 dnl unless already present in VAR.
663 dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
664 dnl contains two or three consecutive elements that belong together.
665 AC_DEFUN([AC_LIB_APPENDTOVAR],
666 [
667 for element in [$2]; do
668 haveit=
669 for x in $[$1]; do
670 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
671 if test "X$x" = "X$element"; then
672 haveit=yes
673 break
674 fi
675 done
676 if test -z "$haveit"; then
677 [$1]="${[$1]}${[$1]:+ }$element"
678 fi
679 done
680 ])
682 dnl For those cases where a variable contains several -L and -l options
683 dnl referring to unknown libraries and directories, this macro determines the
684 dnl necessary additional linker options for the runtime path.
685 dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
686 dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
687 dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
688 dnl otherwise linking without libtool is assumed.
689 AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
690 [
691 AC_REQUIRE([AC_LIB_RPATH])
692 AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
693 $1=
694 if test "$enable_rpath" != no; then
695 if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
696 dnl Use an explicit option to hardcode directories into the resulting
697 dnl binary.
698 rpathdirs=
699 next=
700 for opt in $2; do
701 if test -n "$next"; then
702 dir="$next"
703 dnl No need to hardcode the standard /usr/lib.
704 if test "X$dir" != "X/usr/$acl_libdirstem" \
705 && test "X$dir" != "X/usr/$acl_libdirstem2"; then
706 rpathdirs="$rpathdirs $dir"
707 fi
708 next=
709 else
710 case $opt in
711 -L) next=yes ;;
712 -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
713 dnl No need to hardcode the standard /usr/lib.
714 if test "X$dir" != "X/usr/$acl_libdirstem" \
715 && test "X$dir" != "X/usr/$acl_libdirstem2"; then
716 rpathdirs="$rpathdirs $dir"
717 fi
718 next= ;;
719 *) next= ;;
720 esac
721 fi
722 done
723 if test "X$rpathdirs" != "X"; then
724 if test -n ""$3""; then
725 dnl libtool is used for linking. Use -R options.
726 for dir in $rpathdirs; do
727 $1="${$1}${$1:+ }-R$dir"
728 done
729 else
730 dnl The linker is used for linking directly.
731 if test -n "$acl_hardcode_libdir_separator"; then
732 dnl Weird platform: only the last -rpath option counts, the user
733 dnl must pass all path elements in one option.
734 alldirs=
735 for dir in $rpathdirs; do
736 alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
737 done
738 acl_save_libdir="$libdir"
739 libdir="$alldirs"
740 eval flag=\"$acl_hardcode_libdir_flag_spec\"
741 libdir="$acl_save_libdir"
742 $1="$flag"
743 else
744 dnl The -rpath options are cumulative.
745 for dir in $rpathdirs; do
746 acl_save_libdir="$libdir"
747 libdir="$dir"
748 eval flag=\"$acl_hardcode_libdir_flag_spec\"
749 libdir="$acl_save_libdir"
750 $1="${$1}${$1:+ }$flag"
751 done
752 fi
753 fi
754 fi
755 fi
756 fi
757 AC_SUBST([$1])
758 ])