1# lib-link.m4 serial 26 (gettext-0.18.2) 2dnl Copyright (C) 2001-2012 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],[m4_translit([$1],[./+-], [____])]) 22 pushdef([NAME],[m4_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, [missing-message]) 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. The missing-message 50dnl defaults to 'no' and may contain additional hints for the user. 51dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} 52dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and 53dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs 54dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. 55dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname 56dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. 57AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], 58[ 59 AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) 60 AC_REQUIRE([AC_LIB_RPATH]) 61 pushdef([Name],[m4_translit([$1],[./+-], [____])]) 62 pushdef([NAME],[m4_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 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]])']) 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 116dnl Determine the platform dependent parameters needed to use rpath: 117dnl acl_libext, 118dnl acl_shlibext, 119dnl acl_libname_spec, 120dnl acl_library_names_spec, 121dnl acl_hardcode_libdir_flag_spec, 122dnl acl_hardcode_libdir_separator, 123dnl acl_hardcode_direct, 124dnl acl_hardcode_minus_L. 125AC_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 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 155dnl AC_LIB_FROMPACKAGE(name, package) 156dnl declares that libname comes from the given package. The configure file 157dnl will then not have a --with-libname-prefix option but a 158dnl --with-package-prefix option. Several libraries can come from the same 159dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar 160dnl macro call that searches for libname. 161AC_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 176dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and 177dnl the libraries corresponding to explicit and implicit dependencies. 178dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. 179dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found 180dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. 181AC_DEFUN([AC_LIB_LINKFLAGS_BODY], 182[ 183 AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) 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)]) 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 ]) 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]], 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" 213 if test "$acl_libdirstem2" != "$acl_libdirstem" \ 214 && ! test -d "$withval/$acl_libdirstem"; then 215 additional_libdir="$withval/$acl_libdirstem2" 216 fi 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= 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= 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. 248 uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` 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= 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 274 if test $use_additional = yes; then 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" 282 else 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 303 fi 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" 310 fi 311 fi 312 if test "X$found_dir" != "X"; then 313 if test -f "$dir/$libname.la"; then 314 found_la="$dir/$libname.la" 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//'` 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" 329 else 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 350 fi 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 355 found_dir="$dir" 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" 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. 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 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. 399 if test "$acl_hardcode_direct" = yes; then 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 404 if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then 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 435 if test "$acl_hardcode_minus_L" != no; then 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 441 dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH 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/"'*$,,'` 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 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. 538 if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ 539 && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then 540 haveit= 541 if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ 542 || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then 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 641 if test -n "$acl_hardcode_libdir_separator"; then 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 647 alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" 648 done 649 dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. 650 acl_save_libdir="$libdir" 651 libdir="$alldirs" 652 eval flag=\"$acl_hardcode_libdir_flag_spec\" 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" 660 eval flag=\"$acl_hardcode_libdir_flag_spec\" 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 673 popdef([P_A_C_K]) 674 popdef([PACKLIBS]) 675 popdef([PACKUP]) 676 popdef([PACK]) 677 popdef([NAME]) 678]) 679 680dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, 681dnl unless already present in VAR. 682dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes 683dnl contains two or three consecutive elements that belong together. 684AC_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 701dnl For those cases where a variable contains several -L and -l options 702dnl referring to unknown libraries and directories, this macro determines the 703dnl necessary additional linker options for the runtime path. 704dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) 705dnl sets LDADDVAR to linker options needed together with LIBSVALUE. 706dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, 707dnl otherwise linking without libtool is assumed. 708AC_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 714 if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then 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. 723 if test "X$dir" != "X/usr/$acl_libdirstem" \ 724 && test "X$dir" != "X/usr/$acl_libdirstem2"; then 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. 733 if test "X$dir" != "X/usr/$acl_libdirstem" \ 734 && test "X$dir" != "X/usr/$acl_libdirstem2"; then 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. 750 if test -n "$acl_hardcode_libdir_separator"; then 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 755 alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" 756 done 757 acl_save_libdir="$libdir" 758 libdir="$alldirs" 759 eval flag=\"$acl_hardcode_libdir_flag_spec\" 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" 767 eval flag=\"$acl_hardcode_libdir_flag_spec\" 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]) 778