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.
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],
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"
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)
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.
46 dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [system])
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],
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
66 AC_LIB_LINKFLAGS_BODY([$1], [$2], [$5])
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], [
76 LIBS="$LIBS $LIB[]NAME"
77 AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
80 if test "$ac_cv_lib[]Name" = yes; then
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])
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"
94 AC_SUBST([HAVE_LIB]NAME)
97 AC_SUBST([LIB]NAME[_PREFIX])
102 dnl Determine the platform dependent parameters needed to use rpath:
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],
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
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],
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],
147 pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
148 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
149 define([acl_frompackage_]NAME, [$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])
160 dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies, system]) searches for
161 dnl libname and the libraries corresponding to explicit and implicit
163 dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
164 dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
165 dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
166 dnl If system==system, -isystem is used instead of -I
167 AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
169 AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
170 pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
171 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
172 pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
173 pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
174 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
175 pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
176 dnl Autoconf >= 2.61 supports dots in --with options.
177 pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
178 dnl By default, look in $includedir and $libdir.
180 if test "x$GCC" = "xyes" -a "x$3" = "xsystem"
187 AC_LIB_WITH_FINAL_PREFIX([
188 eval additional_includedir=\"$includedir\"
189 eval additional_libdir=\"$libdir\"
191 AC_ARG_WITH(P_A_C_K[-prefix],
192 [[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
193 --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
195 if test "X$withval" = "Xno"; then
198 if test "X$withval" = "X"; then
199 AC_LIB_WITH_FINAL_PREFIX([
200 eval additional_includedir=\"$includedir\"
201 eval additional_libdir=\"$libdir\"
204 additional_includedir="$withval/include"
205 additional_libdir="$withval/$acl_libdirstem"
206 if test "$acl_libdirstem2" != "$acl_libdirstem" \
207 && ! test -d "$withval/$acl_libdirstem"; then
208 additional_libdir="$withval/$acl_libdirstem2"
213 dnl Search the library and its dependencies in $additional_libdir and
214 dnl $LDFLAGS. Using breadth-first-seach.
221 names_already_handled=
222 names_next_round='$1 $2'
223 while test -n "$names_next_round"; do
224 names_this_round="$names_next_round"
226 for name in $names_this_round; do
228 for n in $names_already_handled; do
229 if test "$n" = "$name"; then
234 if test -z "$already_handled"; then
235 names_already_handled="$names_already_handled $name"
236 dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
237 dnl or AC_LIB_HAVE_LINKFLAGS call.
238 uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
239 eval value=\"\$HAVE_LIB$uppername\"
240 if test -n "$value"; then
241 if test "$value" = yes; then
242 eval value=\"\$LIB$uppername\"
243 test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
244 eval value=\"\$LTLIB$uppername\"
245 test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
247 dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
248 dnl that this library doesn't exist. So just drop it.
252 dnl Search the library lib$name in $additional_libdir and $LDFLAGS
253 dnl and the already constructed $LIBNAME/$LTLIBNAME.
258 eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
259 if test -n "$acl_shlibext"; then
260 shrext=".$acl_shlibext" # typically: shrext=.so
264 if test $use_additional = yes; then
265 dir="$additional_libdir"
266 dnl The same code as in the loop below:
267 dnl First look for a shared library.
268 if test -n "$acl_shlibext"; then
269 if test -f "$dir/$libname$shrext"; then
271 found_so="$dir/$libname$shrext"
273 if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
275 for f in "$libname$shrext".*; do echo "$f"; done \
276 | sed -e "s,^$libname$shrext\\\\.,," \
277 | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
278 | sed 1q ) 2>/dev/null`
279 if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
281 found_so="$dir/$libname$shrext.$ver"
284 eval library_names=\"$acl_library_names_spec\"
285 for f in $library_names; do
286 if test -f "$dir/$f"; then
295 dnl Then look for a static library.
296 if test "X$found_dir" = "X"; then
297 if test -f "$dir/$libname.$acl_libext"; then
299 found_a="$dir/$libname.$acl_libext"
302 if test "X$found_dir" != "X"; then
303 if test -f "$dir/$libname.la"; then
304 found_la="$dir/$libname.la"
308 if test "X$found_dir" = "X"; then
309 for x in $LDFLAGS $LTLIB[]NAME; do
310 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
313 dir=`echo "X$x" | sed -e 's/^X-L//'`
314 dnl First look for a shared library.
315 if test -n "$acl_shlibext"; then
316 if test -f "$dir/$libname$shrext"; then
318 found_so="$dir/$libname$shrext"
320 if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
322 for f in "$libname$shrext".*; do echo "$f"; done \
323 | sed -e "s,^$libname$shrext\\\\.,," \
324 | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
325 | sed 1q ) 2>/dev/null`
326 if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
328 found_so="$dir/$libname$shrext.$ver"
331 eval library_names=\"$acl_library_names_spec\"
332 for f in $library_names; do
333 if test -f "$dir/$f"; then
342 dnl Then look for a static library.
343 if test "X$found_dir" = "X"; then
344 if test -f "$dir/$libname.$acl_libext"; then
346 found_a="$dir/$libname.$acl_libext"
349 if test "X$found_dir" != "X"; then
350 if test -f "$dir/$libname.la"; then
351 found_la="$dir/$libname.la"
356 if test "X$found_dir" != "X"; then
361 if test "X$found_dir" != "X"; then
362 dnl Found the library.
363 LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
364 if test "X$found_so" != "X"; then
365 dnl Linking with a shared library. We attempt to hardcode its
366 dnl directory into the executable's runpath, unless it's the
367 dnl standard /usr/lib.
368 if test "$enable_rpath" = no \
369 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
370 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
371 dnl No hardcoding is needed.
372 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
374 dnl Use an explicit option to hardcode DIR into the resulting
376 dnl Potentially add DIR to ltrpathdirs.
377 dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
379 for x in $ltrpathdirs; do
380 if test "X$x" = "X$found_dir"; then
385 if test -z "$haveit"; then
386 ltrpathdirs="$ltrpathdirs $found_dir"
388 dnl The hardcoding into $LIBNAME is system dependent.
389 if test "$acl_hardcode_direct" = yes; then
390 dnl Using DIR/libNAME.so during linking hardcodes DIR into the
391 dnl resulting binary.
392 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
394 if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
395 dnl Use an explicit option to hardcode DIR into the resulting
397 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
398 dnl Potentially add DIR to rpathdirs.
399 dnl The rpathdirs will be appended to $LIBNAME at the end.
401 for x in $rpathdirs; do
402 if test "X$x" = "X$found_dir"; then
407 if test -z "$haveit"; then
408 rpathdirs="$rpathdirs $found_dir"
411 dnl Rely on "-L$found_dir".
412 dnl But don't add it if it's already contained in the LDFLAGS
413 dnl or the already constructed $LIBNAME
415 for x in $LDFLAGS $LIB[]NAME; do
416 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
417 if test "X$x" = "X-L$found_dir"; then
422 if test -z "$haveit"; then
423 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
425 if test "$acl_hardcode_minus_L" != no; then
426 dnl FIXME: Not sure whether we should use
427 dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
429 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
431 dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
432 dnl here, because this doesn't fit in flags passed to the
433 dnl compiler. So give up. No hardcoding. This affects only
434 dnl very old systems.
435 dnl FIXME: Not sure whether we should use
436 dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
438 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
444 if test "X$found_a" != "X"; then
445 dnl Linking with a static library.
446 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
448 dnl We shouldn't come here, but anyway it's good to have a
450 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
453 dnl Assume the include files are nearby.
454 additional_includedir=
456 */$acl_libdirstem | */$acl_libdirstem/)
457 basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
458 if test "$name" = '$1'; then
459 LIB[]NAME[]_PREFIX="$basedir"
461 additional_includedir="$basedir/include"
463 */$acl_libdirstem2 | */$acl_libdirstem2/)
464 basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
465 if test "$name" = '$1'; then
466 LIB[]NAME[]_PREFIX="$basedir"
468 additional_includedir="$basedir/include"
471 if test "X$additional_includedir" != "X"; then
472 dnl Potentially add $additional_includedir to $INCNAME.
474 dnl 1. if it's the standard /usr/include,
475 dnl 2. if it's /usr/local/include and we are using GCC on Linux,
476 dnl 3. if it's already present in $CPPFLAGS or the already
477 dnl constructed $INCNAME,
478 dnl 4. if it doesn't exist as a directory.
479 if test "X$additional_includedir" != "X/usr/include"; then
481 if test "X$additional_includedir" = "X/usr/local/include"; then
482 if test -n "$GCC"; then
484 linux* | gnu* | k*bsd*-gnu) haveit=yes;;
488 if test -z "$haveit"; then
489 for x in $CPPFLAGS $INC[]NAME; do
490 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
491 if test "X$x" = "X${i_system}$additional_includedir"; then
496 if test -z "$haveit"; then
497 if test -d "$additional_includedir"; then
498 dnl Really add $additional_includedir to $INCNAME.
499 INC[]NAME="${INC[]NAME}${INC[]NAME:+ }${i_system}$additional_includedir"
505 dnl Look for dependencies.
506 if test -n "$found_la"; then
507 dnl Read the .la file. It defines the variables
508 dnl dlname, library_names, old_library, dependency_libs, current,
509 dnl age, revision, installed, dlopen, dlpreopen, libdir.
510 save_libdir="$libdir"
512 */* | *\\*) . "$found_la" ;;
513 *) . "./$found_la" ;;
515 libdir="$save_libdir"
516 dnl We use only dependency_libs.
517 for dep in $dependency_libs; do
520 additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
521 dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
523 dnl 1. if it's the standard /usr/lib,
524 dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
525 dnl 3. if it's already present in $LDFLAGS or the already
526 dnl constructed $LIBNAME,
527 dnl 4. if it doesn't exist as a directory.
528 if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
529 && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
531 if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
532 || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
533 if test -n "$GCC"; then
535 linux* | gnu* | k*bsd*-gnu) haveit=yes;;
539 if test -z "$haveit"; then
541 for x in $LDFLAGS $LIB[]NAME; do
542 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
543 if test "X$x" = "X-L$additional_libdir"; then
548 if test -z "$haveit"; then
549 if test -d "$additional_libdir"; then
550 dnl Really add $additional_libdir to $LIBNAME.
551 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
555 for x in $LDFLAGS $LTLIB[]NAME; do
556 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
557 if test "X$x" = "X-L$additional_libdir"; then
562 if test -z "$haveit"; then
563 if test -d "$additional_libdir"; then
564 dnl Really add $additional_libdir to $LTLIBNAME.
565 LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
572 dir=`echo "X$dep" | sed -e 's/^X-R//'`
573 if test "$enable_rpath" != no; then
574 dnl Potentially add DIR to rpathdirs.
575 dnl The rpathdirs will be appended to $LIBNAME at the end.
577 for x in $rpathdirs; do
578 if test "X$x" = "X$dir"; then
583 if test -z "$haveit"; then
584 rpathdirs="$rpathdirs $dir"
586 dnl Potentially add DIR to ltrpathdirs.
587 dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
589 for x in $ltrpathdirs; do
590 if test "X$x" = "X$dir"; then
595 if test -z "$haveit"; then
596 ltrpathdirs="$ltrpathdirs $dir"
601 dnl Handle this in the next round.
602 names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
605 dnl Handle this in the next round. Throw away the .la's
606 dnl directory; it is already contained in a preceding -L
608 names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
611 dnl Most likely an immediate library name.
612 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
613 LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
619 dnl Didn't find the library; assume it is in the system directories
620 dnl known to the linker and runtime loader. (All the system
621 dnl directories known to the linker should also be known to the
622 dnl runtime loader, otherwise the system is severely misconfigured.)
623 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
624 LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
630 if test "X$rpathdirs" != "X"; then
631 if test -n "$acl_hardcode_libdir_separator"; then
632 dnl Weird platform: only the last -rpath option counts, the user must
633 dnl pass all path elements in one option. We can arrange that for a
634 dnl single library, but not when more than one $LIBNAMEs are used.
636 for found_dir in $rpathdirs; do
637 alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
639 dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
640 acl_save_libdir="$libdir"
642 eval flag=\"$acl_hardcode_libdir_flag_spec\"
643 libdir="$acl_save_libdir"
644 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
646 dnl The -rpath options are cumulative.
647 for found_dir in $rpathdirs; do
648 acl_save_libdir="$libdir"
650 eval flag=\"$acl_hardcode_libdir_flag_spec\"
651 libdir="$acl_save_libdir"
652 LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
656 if test "X$ltrpathdirs" != "X"; then
657 dnl When using libtool, the option that works for both libraries and
658 dnl executables is -R. The -R options are cumulative.
659 for found_dir in $ltrpathdirs; do
660 LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
670 dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
671 dnl unless already present in VAR.
672 dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
673 dnl contains two or three consecutive elements that belong together.
674 AC_DEFUN([AC_LIB_APPENDTOVAR],
676 for element in [$2]; do
679 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
680 if test "X$x" = "X$element"; then
685 if test -z "$haveit"; then
686 [$1]="${[$1]}${[$1]:+ }$element"
691 dnl For those cases where a variable contains several -L and -l options
692 dnl referring to unknown libraries and directories, this macro determines the
693 dnl necessary additional linker options for the runtime path.
694 dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
695 dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
696 dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
697 dnl otherwise linking without libtool is assumed.
698 AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
700 AC_REQUIRE([AC_LIB_RPATH])
701 AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
703 if test "$enable_rpath" != no; then
704 if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
705 dnl Use an explicit option to hardcode directories into the resulting
710 if test -n "$next"; then
712 dnl No need to hardcode the standard /usr/lib.
713 if test "X$dir" != "X/usr/$acl_libdirstem" \
714 && test "X$dir" != "X/usr/$acl_libdirstem2"; then
715 rpathdirs="$rpathdirs $dir"
721 -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
722 dnl No need to hardcode the standard /usr/lib.
723 if test "X$dir" != "X/usr/$acl_libdirstem" \
724 && test "X$dir" != "X/usr/$acl_libdirstem2"; then
725 rpathdirs="$rpathdirs $dir"
732 if test "X$rpathdirs" != "X"; then
733 if test -n ""$3""; then
734 dnl libtool is used for linking. Use -R options.
735 for dir in $rpathdirs; do
736 $1="${$1}${$1:+ }-R$dir"
739 dnl The linker is used for linking directly.
740 if test -n "$acl_hardcode_libdir_separator"; then
741 dnl Weird platform: only the last -rpath option counts, the user
742 dnl must pass all path elements in one option.
744 for dir in $rpathdirs; do
745 alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
747 acl_save_libdir="$libdir"
749 eval flag=\"$acl_hardcode_libdir_flag_spec\"
750 libdir="$acl_save_libdir"
753 dnl The -rpath options are cumulative.
754 for dir in $rpathdirs; do
755 acl_save_libdir="$libdir"
757 eval flag=\"$acl_hardcode_libdir_flag_spec\"
758 libdir="$acl_save_libdir"
759 $1="${$1}${$1:+ }$flag"