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