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