1 1.1 mrg # lib-link.m4 serial 4 (gettext-0.12) 2 1.1 mrg dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. 3 1.1 mrg dnl This file is free software, distributed under the terms of the GNU 4 1.1 mrg dnl General Public License. As a special exception to the GNU General 5 1.1 mrg dnl Public License, this file may be distributed as part of a program 6 1.1 mrg dnl that contains a configuration script generated by Autoconf, under 7 1.1 mrg dnl the same distribution terms as the rest of that program. 8 1.1 mrg 9 1.1 mrg dnl From Bruno Haible. 10 1.1 mrg 11 1.1 mrg dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and 12 1.1 mrg dnl the libraries corresponding to explicit and implicit dependencies. 13 1.1 mrg dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and 14 1.1 mrg dnl augments the CPPFLAGS variable. 15 1.1 mrg AC_DEFUN([AC_LIB_LINKFLAGS], 16 1.1 mrg [ 17 1.1 mrg AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) 18 1.1 mrg AC_REQUIRE([AC_LIB_RPATH]) 19 1.1 mrg define([Name],[translit([$1],[./-], [___])]) 20 1.1 mrg define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], 21 1.1 mrg [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) 22 1.1 mrg AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ 23 1.1 mrg AC_LIB_LINKFLAGS_BODY([$1], [$2]) 24 1.1 mrg ac_cv_lib[]Name[]_libs="$LIB[]NAME" 25 1.1 mrg ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" 26 1.1 mrg ac_cv_lib[]Name[]_cppflags="$INC[]NAME" 27 1.1 mrg ]) 28 1.1 mrg LIB[]NAME="$ac_cv_lib[]Name[]_libs" 29 1.1 mrg LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" 30 1.1 mrg INC[]NAME="$ac_cv_lib[]Name[]_cppflags" 31 1.1 mrg AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) 32 1.1 mrg AC_SUBST([LIB]NAME) 33 1.1 mrg AC_SUBST([LTLIB]NAME) 34 1.1 mrg dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the 35 1.1 mrg dnl results of this search when this library appears as a dependency. 36 1.1 mrg HAVE_LIB[]NAME=yes 37 1.1 mrg undefine([Name]) 38 1.1 mrg undefine([NAME]) 39 1.1 mrg ]) 40 1.1 mrg 41 1.1 mrg dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) 42 1.1 mrg dnl searches for libname and the libraries corresponding to explicit and 43 1.1 mrg dnl implicit dependencies, together with the specified include files and 44 1.1 mrg dnl the ability to compile and link the specified testcode. If found, it 45 1.1 mrg dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and 46 1.1 mrg dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and 47 1.1 mrg dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs 48 1.1 mrg dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. 49 1.1 mrg AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], 50 1.1 mrg [ 51 1.1 mrg AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) 52 1.1 mrg AC_REQUIRE([AC_LIB_RPATH]) 53 1.1 mrg define([Name],[translit([$1],[./-], [___])]) 54 1.1 mrg define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], 55 1.1 mrg [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) 56 1.1 mrg 57 1.1 mrg dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME 58 1.1 mrg dnl accordingly. 59 1.1 mrg AC_LIB_LINKFLAGS_BODY([$1], [$2]) 60 1.1 mrg 61 1.1 mrg dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, 62 1.1 mrg dnl because if the user has installed lib[]Name and not disabled its use 63 1.1 mrg dnl via --without-lib[]Name-prefix, he wants to use it. 64 1.1 mrg ac_save_CPPFLAGS="$CPPFLAGS" 65 1.1 mrg AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) 66 1.1 mrg 67 1.1 mrg AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ 68 1.1 mrg ac_save_LIBS="$LIBS" 69 1.1 mrg LIBS="$LIBS $LIB[]NAME" 70 1.1 mrg AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) 71 1.1 mrg LIBS="$ac_save_LIBS" 72 1.1 mrg ]) 73 1.1 mrg if test "$ac_cv_lib[]Name" = yes; then 74 1.1 mrg HAVE_LIB[]NAME=yes 75 1.1 mrg AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) 76 1.1 mrg AC_MSG_CHECKING([how to link with lib[]$1]) 77 1.1 mrg AC_MSG_RESULT([$LIB[]NAME]) 78 1.1 mrg else 79 1.1 mrg HAVE_LIB[]NAME=no 80 1.1 mrg dnl If $LIB[]NAME didn't lead to a usable library, we don't need 81 1.1 mrg dnl $INC[]NAME either. 82 1.1 mrg CPPFLAGS="$ac_save_CPPFLAGS" 83 1.1 mrg LIB[]NAME= 84 1.1 mrg LTLIB[]NAME= 85 1.1 mrg fi 86 1.1 mrg AC_SUBST([HAVE_LIB]NAME) 87 1.1 mrg AC_SUBST([LIB]NAME) 88 1.1 mrg AC_SUBST([LTLIB]NAME) 89 1.1 mrg undefine([Name]) 90 1.1 mrg undefine([NAME]) 91 1.1 mrg ]) 92 1.1 mrg 93 1.1 mrg dnl Determine the platform dependent parameters needed to use rpath: 94 1.1 mrg dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, 95 1.1 mrg dnl hardcode_direct, hardcode_minus_L. 96 1.1 mrg AC_DEFUN([AC_LIB_RPATH], 97 1.1 mrg [ 98 1.1 mrg AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS 99 1.1 mrg AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld 100 1.1 mrg AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host 101 1.1 mrg AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir 102 1.1 mrg AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ 103 1.1 mrg CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ 104 1.1 mrg ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh 105 1.1 mrg . ./conftest.sh 106 1.1 mrg rm -f ./conftest.sh 107 1.1 mrg acl_cv_rpath=done 108 1.1 mrg ]) 109 1.1 mrg wl="$acl_cv_wl" 110 1.1 mrg libext="$acl_cv_libext" 111 1.1 mrg shlibext="$acl_cv_shlibext" 112 1.1 mrg hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" 113 1.1 mrg hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" 114 1.1 mrg hardcode_direct="$acl_cv_hardcode_direct" 115 1.1 mrg hardcode_minus_L="$acl_cv_hardcode_minus_L" 116 1.1 mrg dnl Determine whether the user wants rpath handling at all. 117 1.1 mrg AC_ARG_ENABLE(rpath, 118 1.1 mrg [ --disable-rpath do not hardcode runtime library paths], 119 1.1 mrg :, enable_rpath=yes) 120 1.1 mrg ]) 121 1.1 mrg 122 1.1 mrg dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and 123 1.1 mrg dnl the libraries corresponding to explicit and implicit dependencies. 124 1.1 mrg dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. 125 1.1 mrg AC_DEFUN([AC_LIB_LINKFLAGS_BODY], 126 1.1 mrg [ 127 1.1 mrg define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], 128 1.1 mrg [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) 129 1.1 mrg dnl By default, look in $includedir and $libdir. 130 1.1 mrg use_additional=yes 131 1.1 mrg AC_LIB_WITH_FINAL_PREFIX([ 132 1.1 mrg eval additional_includedir=\"$includedir\" 133 1.1 mrg eval additional_libdir=\"$libdir\" 134 1.1 mrg ]) 135 1.1 mrg AC_LIB_ARG_WITH([lib$1-prefix], 136 1.1 mrg [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib 137 1.1 mrg --without-lib$1-prefix don't search for lib$1 in includedir and libdir], 138 1.1 mrg [ 139 1.1 mrg if test "X$withval" = "Xno"; then 140 1.1 mrg use_additional=no 141 1.1 mrg else 142 1.1 mrg if test "X$withval" = "X"; then 143 1.1 mrg AC_LIB_WITH_FINAL_PREFIX([ 144 1.1 mrg eval additional_includedir=\"$includedir\" 145 1.1 mrg eval additional_libdir=\"$libdir\" 146 1.1 mrg ]) 147 1.1 mrg else 148 1.1 mrg additional_includedir="$withval/include" 149 1.1 mrg additional_libdir="$withval/lib" 150 1.1 mrg fi 151 1.1 mrg fi 152 1.1 mrg ]) 153 1.1.1.2 mrg AC_LIB_ARG_WITH([lib$1-type], 154 1.1.1.2 mrg [ --with-lib$1-type=TYPE type of library to search for (auto/static/shared) ], 155 1.1.1.2 mrg [ with_lib$1_type=$withval ], [ with_lib$1_type=auto ]) 156 1.1.1.2 mrg lib_type=`eval echo \$with_lib$1_type` 157 1.1.1.2 mrg 158 1.1 mrg dnl Search the library and its dependencies in $additional_libdir and 159 1.1 mrg dnl $LDFLAGS. Using breadth-first-seach. 160 1.1 mrg LIB[]NAME= 161 1.1 mrg LTLIB[]NAME= 162 1.1 mrg INC[]NAME= 163 1.1 mrg rpathdirs= 164 1.1 mrg ltrpathdirs= 165 1.1 mrg names_already_handled= 166 1.1 mrg names_next_round='$1 $2' 167 1.1 mrg while test -n "$names_next_round"; do 168 1.1 mrg names_this_round="$names_next_round" 169 1.1 mrg names_next_round= 170 1.1 mrg for name in $names_this_round; do 171 1.1 mrg already_handled= 172 1.1 mrg for n in $names_already_handled; do 173 1.1 mrg if test "$n" = "$name"; then 174 1.1 mrg already_handled=yes 175 1.1 mrg break 176 1.1 mrg fi 177 1.1 mrg done 178 1.1 mrg if test -z "$already_handled"; then 179 1.1 mrg names_already_handled="$names_already_handled $name" 180 1.1 mrg dnl See if it was already located by an earlier AC_LIB_LINKFLAGS 181 1.1 mrg dnl or AC_LIB_HAVE_LINKFLAGS call. 182 1.1 mrg uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` 183 1.1 mrg eval value=\"\$HAVE_LIB$uppername\" 184 1.1 mrg if test -n "$value"; then 185 1.1 mrg if test "$value" = yes; then 186 1.1 mrg eval value=\"\$LIB$uppername\" 187 1.1 mrg test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" 188 1.1 mrg eval value=\"\$LTLIB$uppername\" 189 1.1 mrg test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" 190 1.1 mrg else 191 1.1 mrg dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined 192 1.1 mrg dnl that this library doesn't exist. So just drop it. 193 1.1 mrg : 194 1.1 mrg fi 195 1.1 mrg else 196 1.1 mrg dnl Search the library lib$name in $additional_libdir and $LDFLAGS 197 1.1 mrg dnl and the already constructed $LIBNAME/$LTLIBNAME. 198 1.1 mrg found_dir= 199 1.1 mrg found_la= 200 1.1 mrg found_so= 201 1.1 mrg found_a= 202 1.1 mrg if test $use_additional = yes; then 203 1.1.1.2 mrg if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then 204 1.1 mrg found_dir="$additional_libdir" 205 1.1 mrg found_so="$additional_libdir/lib$name.$shlibext" 206 1.1 mrg if test -f "$additional_libdir/lib$name.la"; then 207 1.1 mrg found_la="$additional_libdir/lib$name.la" 208 1.1 mrg fi 209 1.1.1.2 mrg elif test x$lib_type != xshared; then 210 1.1 mrg if test -f "$additional_libdir/lib$name.$libext"; then 211 1.1 mrg found_dir="$additional_libdir" 212 1.1 mrg found_a="$additional_libdir/lib$name.$libext" 213 1.1 mrg if test -f "$additional_libdir/lib$name.la"; then 214 1.1 mrg found_la="$additional_libdir/lib$name.la" 215 1.1 mrg fi 216 1.1 mrg fi 217 1.1 mrg fi 218 1.1 mrg fi 219 1.1 mrg if test "X$found_dir" = "X"; then 220 1.1 mrg for x in $LDFLAGS $LTLIB[]NAME; do 221 1.1 mrg AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) 222 1.1 mrg case "$x" in 223 1.1 mrg -L*) 224 1.1 mrg dir=`echo "X$x" | sed -e 's/^X-L//'` 225 1.1.1.2 mrg if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then 226 1.1 mrg found_dir="$dir" 227 1.1 mrg found_so="$dir/lib$name.$shlibext" 228 1.1 mrg if test -f "$dir/lib$name.la"; then 229 1.1 mrg found_la="$dir/lib$name.la" 230 1.1 mrg fi 231 1.1.1.2 mrg elif test x$lib_type != xshared; then 232 1.1 mrg if test -f "$dir/lib$name.$libext"; then 233 1.1 mrg found_dir="$dir" 234 1.1 mrg found_a="$dir/lib$name.$libext" 235 1.1 mrg if test -f "$dir/lib$name.la"; then 236 1.1 mrg found_la="$dir/lib$name.la" 237 1.1 mrg fi 238 1.1 mrg fi 239 1.1 mrg fi 240 1.1 mrg ;; 241 1.1 mrg esac 242 1.1 mrg if test "X$found_dir" != "X"; then 243 1.1 mrg break 244 1.1 mrg fi 245 1.1 mrg done 246 1.1 mrg fi 247 1.1 mrg if test "X$found_dir" != "X"; then 248 1.1 mrg dnl Found the library. 249 1.1 mrg LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" 250 1.1 mrg if test "X$found_so" != "X"; then 251 1.1 mrg dnl Linking with a shared library. We attempt to hardcode its 252 1.1 mrg dnl directory into the executable's runpath, unless it's the 253 1.1 mrg dnl standard /usr/lib. 254 1.1 mrg if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then 255 1.1 mrg dnl No hardcoding is needed. 256 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" 257 1.1 mrg else 258 1.1 mrg dnl Use an explicit option to hardcode DIR into the resulting 259 1.1 mrg dnl binary. 260 1.1 mrg dnl Potentially add DIR to ltrpathdirs. 261 1.1 mrg dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. 262 1.1 mrg haveit= 263 1.1 mrg for x in $ltrpathdirs; do 264 1.1 mrg if test "X$x" = "X$found_dir"; then 265 1.1 mrg haveit=yes 266 1.1 mrg break 267 1.1 mrg fi 268 1.1 mrg done 269 1.1 mrg if test -z "$haveit"; then 270 1.1 mrg ltrpathdirs="$ltrpathdirs $found_dir" 271 1.1 mrg fi 272 1.1 mrg dnl The hardcoding into $LIBNAME is system dependent. 273 1.1 mrg if test "$hardcode_direct" = yes; then 274 1.1 mrg dnl Using DIR/libNAME.so during linking hardcodes DIR into the 275 1.1 mrg dnl resulting binary. 276 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" 277 1.1 mrg else 278 1.1 mrg if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then 279 1.1 mrg dnl Use an explicit option to hardcode DIR into the resulting 280 1.1 mrg dnl binary. 281 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" 282 1.1 mrg dnl Potentially add DIR to rpathdirs. 283 1.1 mrg dnl The rpathdirs will be appended to $LIBNAME at the end. 284 1.1 mrg haveit= 285 1.1 mrg for x in $rpathdirs; do 286 1.1 mrg if test "X$x" = "X$found_dir"; then 287 1.1 mrg haveit=yes 288 1.1 mrg break 289 1.1 mrg fi 290 1.1 mrg done 291 1.1 mrg if test -z "$haveit"; then 292 1.1 mrg rpathdirs="$rpathdirs $found_dir" 293 1.1 mrg fi 294 1.1 mrg else 295 1.1 mrg dnl Rely on "-L$found_dir". 296 1.1 mrg dnl But don't add it if it's already contained in the LDFLAGS 297 1.1 mrg dnl or the already constructed $LIBNAME 298 1.1 mrg haveit= 299 1.1 mrg for x in $LDFLAGS $LIB[]NAME; do 300 1.1 mrg AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) 301 1.1 mrg if test "X$x" = "X-L$found_dir"; then 302 1.1 mrg haveit=yes 303 1.1 mrg break 304 1.1 mrg fi 305 1.1 mrg done 306 1.1 mrg if test -z "$haveit"; then 307 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" 308 1.1 mrg fi 309 1.1 mrg if test "$hardcode_minus_L" != no; then 310 1.1 mrg dnl FIXME: Not sure whether we should use 311 1.1 mrg dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" 312 1.1 mrg dnl here. 313 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" 314 1.1 mrg else 315 1.1 mrg dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH 316 1.1 mrg dnl here, because this doesn't fit in flags passed to the 317 1.1 mrg dnl compiler. So give up. No hardcoding. This affects only 318 1.1 mrg dnl very old systems. 319 1.1 mrg dnl FIXME: Not sure whether we should use 320 1.1 mrg dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" 321 1.1 mrg dnl here. 322 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" 323 1.1 mrg fi 324 1.1 mrg fi 325 1.1 mrg fi 326 1.1 mrg fi 327 1.1 mrg else 328 1.1 mrg if test "X$found_a" != "X"; then 329 1.1 mrg dnl Linking with a static library. 330 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" 331 1.1 mrg else 332 1.1 mrg dnl We shouldn't come here, but anyway it's good to have a 333 1.1 mrg dnl fallback. 334 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" 335 1.1 mrg fi 336 1.1 mrg fi 337 1.1 mrg dnl Assume the include files are nearby. 338 1.1 mrg additional_includedir= 339 1.1 mrg case "$found_dir" in 340 1.1 mrg */lib | */lib/) 341 1.1 mrg basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` 342 1.1 mrg additional_includedir="$basedir/include" 343 1.1 mrg ;; 344 1.1 mrg esac 345 1.1 mrg if test "X$additional_includedir" != "X"; then 346 1.1 mrg dnl Potentially add $additional_includedir to $INCNAME. 347 1.1 mrg dnl But don't add it 348 1.1 mrg dnl 1. if it's the standard /usr/include, 349 1.1 mrg dnl 2. if it's /usr/local/include and we are using GCC on Linux, 350 1.1 mrg dnl 3. if it's already present in $CPPFLAGS or the already 351 1.1 mrg dnl constructed $INCNAME, 352 1.1 mrg dnl 4. if it doesn't exist as a directory. 353 1.1 mrg if test "X$additional_includedir" != "X/usr/include"; then 354 1.1 mrg haveit= 355 1.1 mrg if test "X$additional_includedir" = "X/usr/local/include"; then 356 1.1 mrg if test -n "$GCC"; then 357 1.1 mrg case $host_os in 358 1.1 mrg linux*) haveit=yes;; 359 1.1 mrg esac 360 1.1 mrg fi 361 1.1 mrg fi 362 1.1 mrg if test -z "$haveit"; then 363 1.1 mrg for x in $CPPFLAGS $INC[]NAME; do 364 1.1 mrg AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) 365 1.1 mrg if test "X$x" = "X-I$additional_includedir"; then 366 1.1 mrg haveit=yes 367 1.1 mrg break 368 1.1 mrg fi 369 1.1 mrg done 370 1.1 mrg if test -z "$haveit"; then 371 1.1 mrg if test -d "$additional_includedir"; then 372 1.1 mrg dnl Really add $additional_includedir to $INCNAME. 373 1.1 mrg INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" 374 1.1 mrg fi 375 1.1 mrg fi 376 1.1 mrg fi 377 1.1 mrg fi 378 1.1 mrg fi 379 1.1 mrg dnl Look for dependencies. 380 1.1 mrg if test -n "$found_la"; then 381 1.1 mrg dnl Read the .la file. It defines the variables 382 1.1 mrg dnl dlname, library_names, old_library, dependency_libs, current, 383 1.1 mrg dnl age, revision, installed, dlopen, dlpreopen, libdir. 384 1.1 mrg save_libdir="$libdir" 385 1.1 mrg case "$found_la" in 386 1.1 mrg */* | *\\*) . "$found_la" ;; 387 1.1 mrg *) . "./$found_la" ;; 388 1.1 mrg esac 389 1.1 mrg libdir="$save_libdir" 390 1.1 mrg dnl We use only dependency_libs. 391 1.1 mrg for dep in $dependency_libs; do 392 1.1 mrg case "$dep" in 393 1.1 mrg -L*) 394 1.1 mrg additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` 395 1.1 mrg dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. 396 1.1 mrg dnl But don't add it 397 1.1 mrg dnl 1. if it's the standard /usr/lib, 398 1.1 mrg dnl 2. if it's /usr/local/lib and we are using GCC on Linux, 399 1.1 mrg dnl 3. if it's already present in $LDFLAGS or the already 400 1.1 mrg dnl constructed $LIBNAME, 401 1.1 mrg dnl 4. if it doesn't exist as a directory. 402 1.1 mrg if test "X$additional_libdir" != "X/usr/lib"; then 403 1.1 mrg haveit= 404 1.1 mrg if test "X$additional_libdir" = "X/usr/local/lib"; then 405 1.1 mrg if test -n "$GCC"; then 406 1.1 mrg case $host_os in 407 1.1 mrg linux*) haveit=yes;; 408 1.1 mrg esac 409 1.1 mrg fi 410 1.1 mrg fi 411 1.1 mrg if test -z "$haveit"; then 412 1.1 mrg haveit= 413 1.1 mrg for x in $LDFLAGS $LIB[]NAME; do 414 1.1 mrg AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) 415 1.1 mrg if test "X$x" = "X-L$additional_libdir"; then 416 1.1 mrg haveit=yes 417 1.1 mrg break 418 1.1 mrg fi 419 1.1 mrg done 420 1.1 mrg if test -z "$haveit"; then 421 1.1 mrg if test -d "$additional_libdir"; then 422 1.1 mrg dnl Really add $additional_libdir to $LIBNAME. 423 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" 424 1.1 mrg fi 425 1.1 mrg fi 426 1.1 mrg haveit= 427 1.1 mrg for x in $LDFLAGS $LTLIB[]NAME; do 428 1.1 mrg AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) 429 1.1 mrg if test "X$x" = "X-L$additional_libdir"; then 430 1.1 mrg haveit=yes 431 1.1 mrg break 432 1.1 mrg fi 433 1.1 mrg done 434 1.1 mrg if test -z "$haveit"; then 435 1.1 mrg if test -d "$additional_libdir"; then 436 1.1 mrg dnl Really add $additional_libdir to $LTLIBNAME. 437 1.1 mrg LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" 438 1.1 mrg fi 439 1.1 mrg fi 440 1.1 mrg fi 441 1.1 mrg fi 442 1.1 mrg ;; 443 1.1 mrg -R*) 444 1.1 mrg dir=`echo "X$dep" | sed -e 's/^X-R//'` 445 1.1 mrg if test "$enable_rpath" != no; then 446 1.1 mrg dnl Potentially add DIR to rpathdirs. 447 1.1 mrg dnl The rpathdirs will be appended to $LIBNAME at the end. 448 1.1 mrg haveit= 449 1.1 mrg for x in $rpathdirs; do 450 1.1 mrg if test "X$x" = "X$dir"; then 451 1.1 mrg haveit=yes 452 1.1 mrg break 453 1.1 mrg fi 454 1.1 mrg done 455 1.1 mrg if test -z "$haveit"; then 456 1.1 mrg rpathdirs="$rpathdirs $dir" 457 1.1 mrg fi 458 1.1 mrg dnl Potentially add DIR to ltrpathdirs. 459 1.1 mrg dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. 460 1.1 mrg haveit= 461 1.1 mrg for x in $ltrpathdirs; do 462 1.1 mrg if test "X$x" = "X$dir"; then 463 1.1 mrg haveit=yes 464 1.1 mrg break 465 1.1 mrg fi 466 1.1 mrg done 467 1.1 mrg if test -z "$haveit"; then 468 1.1 mrg ltrpathdirs="$ltrpathdirs $dir" 469 1.1 mrg fi 470 1.1 mrg fi 471 1.1 mrg ;; 472 1.1 mrg -l*) 473 1.1 mrg dnl Handle this in the next round. 474 1.1 mrg names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` 475 1.1 mrg ;; 476 1.1 mrg *.la) 477 1.1 mrg dnl Handle this in the next round. Throw away the .la's 478 1.1 mrg dnl directory; it is already contained in a preceding -L 479 1.1 mrg dnl option. 480 1.1 mrg names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` 481 1.1 mrg ;; 482 1.1 mrg *) 483 1.1 mrg dnl Most likely an immediate library name. 484 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" 485 1.1 mrg LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" 486 1.1 mrg ;; 487 1.1 mrg esac 488 1.1 mrg done 489 1.1 mrg fi 490 1.1 mrg else 491 1.1 mrg dnl Didn't find the library; assume it is in the system directories 492 1.1 mrg dnl known to the linker and runtime loader. (All the system 493 1.1 mrg dnl directories known to the linker should also be known to the 494 1.1 mrg dnl runtime loader, otherwise the system is severely misconfigured.) 495 1.1.1.2 mrg if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then 496 1.1.1.2 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" 497 1.1.1.2 mrg LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" 498 1.1.1.2 mrg else 499 1.1.1.2 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l:lib$name.$libext" 500 1.1.1.2 mrg LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l:lib$name.$libext" 501 1.1.1.2 mrg fi 502 1.1 mrg fi 503 1.1 mrg fi 504 1.1 mrg fi 505 1.1 mrg done 506 1.1 mrg done 507 1.1 mrg if test "X$rpathdirs" != "X"; then 508 1.1 mrg if test -n "$hardcode_libdir_separator"; then 509 1.1 mrg dnl Weird platform: only the last -rpath option counts, the user must 510 1.1 mrg dnl pass all path elements in one option. We can arrange that for a 511 1.1 mrg dnl single library, but not when more than one $LIBNAMEs are used. 512 1.1 mrg alldirs= 513 1.1 mrg for found_dir in $rpathdirs; do 514 1.1 mrg alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" 515 1.1 mrg done 516 1.1 mrg dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. 517 1.1 mrg acl_save_libdir="$libdir" 518 1.1 mrg libdir="$alldirs" 519 1.1 mrg eval flag=\"$hardcode_libdir_flag_spec\" 520 1.1 mrg libdir="$acl_save_libdir" 521 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" 522 1.1 mrg else 523 1.1 mrg dnl The -rpath options are cumulative. 524 1.1 mrg for found_dir in $rpathdirs; do 525 1.1 mrg acl_save_libdir="$libdir" 526 1.1 mrg libdir="$found_dir" 527 1.1 mrg eval flag=\"$hardcode_libdir_flag_spec\" 528 1.1 mrg libdir="$acl_save_libdir" 529 1.1 mrg LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" 530 1.1 mrg done 531 1.1 mrg fi 532 1.1 mrg fi 533 1.1 mrg if test "X$ltrpathdirs" != "X"; then 534 1.1 mrg dnl When using libtool, the option that works for both libraries and 535 1.1 mrg dnl executables is -R. The -R options are cumulative. 536 1.1 mrg for found_dir in $ltrpathdirs; do 537 1.1 mrg LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" 538 1.1 mrg done 539 1.1 mrg fi 540 1.1 mrg ]) 541 1.1 mrg 542 1.1 mrg dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, 543 1.1 mrg dnl unless already present in VAR. 544 1.1 mrg dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes 545 1.1 mrg dnl contains two or three consecutive elements that belong together. 546 1.1 mrg AC_DEFUN([AC_LIB_APPENDTOVAR], 547 1.1 mrg [ 548 1.1 mrg for element in [$2]; do 549 1.1 mrg haveit= 550 1.1 mrg for x in $[$1]; do 551 1.1 mrg AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) 552 1.1 mrg if test "X$x" = "X$element"; then 553 1.1 mrg haveit=yes 554 1.1 mrg break 555 1.1 mrg fi 556 1.1 mrg done 557 1.1 mrg if test -z "$haveit"; then 558 1.1 mrg [$1]="${[$1]}${[$1]:+ }$element" 559 1.1 mrg fi 560 1.1 mrg done 561 1.1 mrg ]) 562