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