Annotation of embedaddon/confuse/m4/lib-link.m4, revision 1.1.1.1
1.1 misho 1: # lib-link.m4 serial 9 (gettext-0.16)
2: dnl Copyright (C) 2001-2006 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.
6:
7: dnl From Bruno Haible.
8:
9: AC_PREREQ(2.50)
10:
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: AC_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:
41: dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
42: dnl searches for libname and the libraries corresponding to explicit and
43: dnl implicit dependencies, together with the specified include files and
44: dnl the ability to compile and link the specified testcode. If found, it
45: dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
46: dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
47: dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
48: dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
49: AC_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:
93: dnl Determine the platform dependent parameters needed to use rpath:
94: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
95: dnl hardcode_direct, hardcode_minus_L.
96: AC_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:
124: dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
125: dnl the libraries corresponding to explicit and implicit dependencies.
126: dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
127: AC_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:
549: dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
550: dnl unless already present in VAR.
551: dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
552: dnl contains two or three consecutive elements that belong together.
553: AC_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:
570: dnl For those cases where a variable contains several -L and -l options
571: dnl referring to unknown libraries and directories, this macro determines the
572: dnl necessary additional linker options for the runtime path.
573: dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
574: dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
575: dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
576: dnl otherwise linking without libtool is assumed.
577: AC_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: ])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>