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