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