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