1 1.1 riastrad 2 1.1 riastrad # libtool (GNU libtool) 2.4.2 3 1.1 riastrad # Written by Gordon Matzigkeit <gord (at] gnu.ai.mit.edu>, 1996 4 1.1 riastrad 5 1.1 riastrad # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 6 1.1 riastrad # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 7 1.1 riastrad # This is free software; see the source for copying conditions. There is NO 8 1.1 riastrad # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9 1.1 riastrad 10 1.1 riastrad # GNU Libtool is free software; you can redistribute it and/or modify 11 1.1 riastrad # it under the terms of the GNU General Public License as published by 12 1.1 riastrad # the Free Software Foundation; either version 2 of the License, or 13 1.1 riastrad # (at your option) any later version. 14 1.1 riastrad # 15 1.1 riastrad # As a special exception to the GNU General Public License, 16 1.1 riastrad # if you distribute this file as part of a program or library that 17 1.1 riastrad # is built using GNU Libtool, you may include this file under the 18 1.1 riastrad # same distribution terms that you use for the rest of that program. 19 1.1 riastrad # 20 1.1 riastrad # GNU Libtool is distributed in the hope that it will be useful, but 21 1.1 riastrad # WITHOUT ANY WARRANTY; without even the implied warranty of 22 1.1 riastrad # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23 1.1 riastrad # General Public License for more details. 24 1.1 riastrad # 25 1.1 riastrad # You should have received a copy of the GNU General Public License 26 1.1 riastrad # along with GNU Libtool; see the file COPYING. If not, a copy 27 1.1 riastrad # can be downloaded from http://www.gnu.org/licenses/gpl.html, 28 1.1 riastrad # or obtained by writing to the Free Software Foundation, Inc., 29 1.1 riastrad # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 30 1.1 riastrad 31 1.1 riastrad # Usage: $progname [OPTION]... [MODE-ARG]... 32 1.1 riastrad # 33 1.1 riastrad # Provide generalized library-building support services. 34 1.1 riastrad # 35 1.1 riastrad # --config show all configuration variables 36 1.1 riastrad # --debug enable verbose shell tracing 37 1.1 riastrad # -n, --dry-run display commands without modifying any files 38 1.1 riastrad # --features display basic configuration information and exit 39 1.1 riastrad # --mode=MODE use operation mode MODE 40 1.1 riastrad # --preserve-dup-deps don't remove duplicate dependency libraries 41 1.1 riastrad # --quiet, --silent don't print informational messages 42 1.1 riastrad # --no-quiet, --no-silent 43 1.1 riastrad # print informational messages (default) 44 1.1 riastrad # --no-warn don't display warning messages 45 1.1 riastrad # --tag=TAG use configuration variables from tag TAG 46 1.1 riastrad # -v, --verbose print more informational messages than default 47 1.1 riastrad # --no-verbose don't print the extra informational messages 48 1.1 riastrad # --version print version information 49 1.1 riastrad # -h, --help, --help-all print short, long, or detailed help message 50 1.1 riastrad # 51 1.1 riastrad # MODE must be one of the following: 52 1.1 riastrad # 53 1.1 riastrad # clean remove files from the build directory 54 1.1 riastrad # compile compile a source file into a libtool object 55 1.1 riastrad # execute automatically set library path, then run a program 56 1.1 riastrad # finish complete the installation of libtool libraries 57 1.1 riastrad # install install libraries or executables 58 1.1 riastrad # link create a library or an executable 59 1.1 riastrad # uninstall remove libraries from an installed directory 60 1.1 riastrad # 61 1.1 riastrad # MODE-ARGS vary depending on the MODE. When passed as first option, 62 1.1 riastrad # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 63 1.1 riastrad # Try `$progname --help --mode=MODE' for a more detailed description of MODE. 64 1.1 riastrad # 65 1.1 riastrad # When reporting a bug, please describe a test case to reproduce it and 66 1.1 riastrad # include the following information: 67 1.1 riastrad # 68 1.1 riastrad # host-triplet: $host 69 1.1 riastrad # shell: $SHELL 70 1.1 riastrad # compiler: $LTCC 71 1.1 riastrad # compiler flags: $LTCFLAGS 72 1.1 riastrad # linker: $LD (gnu? $with_gnu_ld) 73 1.1 riastrad # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1 74 1.1 riastrad # automake: $automake_version 75 1.1 riastrad # autoconf: $autoconf_version 76 1.1 riastrad # 77 1.1 riastrad # Report bugs to <bug-libtool (at] gnu.org>. 78 1.1 riastrad # GNU libtool home page: <http://www.gnu.org/software/libtool/>. 79 1.1 riastrad # General help using GNU software: <http://www.gnu.org/gethelp/>. 80 1.1 riastrad 81 1.1 riastrad PROGRAM=libtool 82 1.1 riastrad PACKAGE=libtool 83 1.1 riastrad VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1" 84 1.1 riastrad TIMESTAMP="" 85 1.1 riastrad package_revision=1.3337 86 1.1 riastrad 87 1.1 riastrad # Be Bourne compatible 88 1.1 riastrad if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 89 1.1 riastrad emulate sh 90 1.1 riastrad NULLCMD=: 91 1.1 riastrad # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 92 1.1 riastrad # is contrary to our usage. Disable this feature. 93 1.1 riastrad alias -g '${1+"$@"}'='"$@"' 94 1.1 riastrad setopt NO_GLOB_SUBST 95 1.1 riastrad else 96 1.1 riastrad case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 97 1.1 riastrad fi 98 1.1 riastrad BIN_SH=xpg4; export BIN_SH # for Tru64 99 1.1 riastrad DUALCASE=1; export DUALCASE # for MKS sh 100 1.1 riastrad 101 1.1 riastrad # A function that is used when there is no print builtin or printf. 102 1.1 riastrad func_fallback_echo () 103 1.1 riastrad { 104 1.1 riastrad eval 'cat <<_LTECHO_EOF 105 1.1 riastrad $1 106 1.1 riastrad _LTECHO_EOF' 107 1.1 riastrad } 108 1.1 riastrad 109 1.1 riastrad # NLS nuisances: We save the old values to restore during execute mode. 110 1.1 riastrad lt_user_locale= 111 1.1 riastrad lt_safe_locale= 112 1.1 riastrad for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 113 1.1 riastrad do 114 1.1 riastrad eval "if test \"\${$lt_var+set}\" = set; then 115 1.1 riastrad save_$lt_var=\$$lt_var 116 1.1 riastrad $lt_var=C 117 1.1 riastrad export $lt_var 118 1.1 riastrad lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 119 1.1 riastrad lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 120 1.1 riastrad fi" 121 1.1 riastrad done 122 1.1 riastrad LC_ALL=C 123 1.1 riastrad LANGUAGE=C 124 1.1 riastrad export LANGUAGE LC_ALL 125 1.1 riastrad 126 1.1 riastrad $lt_unset CDPATH 127 1.1 riastrad 128 1.1 riastrad 129 1.1 riastrad # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 130 1.1 riastrad # is ksh but when the shell is invoked as "sh" and the current value of 131 1.1 riastrad # the _XPG environment variable is not equal to 1 (one), the special 132 1.1 riastrad # positional parameter $0, within a function call, is the name of the 133 1.1 riastrad # function. 134 1.1 riastrad progpath="$0" 135 1.1 riastrad 136 1.1 riastrad 137 1.1 riastrad 138 1.1 riastrad : ${CP="cp -f"} 139 1.1 riastrad test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 140 1.1 riastrad : ${MAKE="make"} 141 1.1 riastrad : ${MKDIR="mkdir"} 142 1.1 riastrad : ${MV="mv -f"} 143 1.1 riastrad : ${RM="rm -f"} 144 1.1 riastrad : ${SHELL="${CONFIG_SHELL-/bin/sh}"} 145 1.1 riastrad : ${Xsed="$SED -e 1s/^X//"} 146 1.1 riastrad 147 1.1 riastrad # Global variables: 148 1.1 riastrad EXIT_SUCCESS=0 149 1.1 riastrad EXIT_FAILURE=1 150 1.1 riastrad EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 151 1.1 riastrad EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 152 1.1 riastrad 153 1.1 riastrad exit_status=$EXIT_SUCCESS 154 1.1 riastrad 155 1.1 riastrad # Make sure IFS has a sensible default 156 1.1 riastrad lt_nl=' 157 1.1 riastrad ' 158 1.1 riastrad IFS=" $lt_nl" 159 1.1 riastrad 160 1.1 riastrad dirname="s,/[^/]*$,," 161 1.1 riastrad basename="s,^.*/,," 162 1.1 riastrad 163 1.1 riastrad # func_dirname file append nondir_replacement 164 1.1 riastrad # Compute the dirname of FILE. If nonempty, add APPEND to the result, 165 1.1 riastrad # otherwise set result to NONDIR_REPLACEMENT. 166 1.1 riastrad func_dirname () 167 1.1 riastrad { 168 1.1 riastrad func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 169 1.1 riastrad if test "X$func_dirname_result" = "X${1}"; then 170 1.1 riastrad func_dirname_result="${3}" 171 1.1 riastrad else 172 1.1 riastrad func_dirname_result="$func_dirname_result${2}" 173 1.1 riastrad fi 174 1.1 riastrad } # func_dirname may be replaced by extended shell implementation 175 1.1 riastrad 176 1.1 riastrad 177 1.1 riastrad # func_basename file 178 1.1 riastrad func_basename () 179 1.1 riastrad { 180 1.1 riastrad func_basename_result=`$ECHO "${1}" | $SED "$basename"` 181 1.1 riastrad } # func_basename may be replaced by extended shell implementation 182 1.1 riastrad 183 1.1 riastrad 184 1.1 riastrad # func_dirname_and_basename file append nondir_replacement 185 1.1 riastrad # perform func_basename and func_dirname in a single function 186 1.1 riastrad # call: 187 1.1 riastrad # dirname: Compute the dirname of FILE. If nonempty, 188 1.1 riastrad # add APPEND to the result, otherwise set result 189 1.1 riastrad # to NONDIR_REPLACEMENT. 190 1.1 riastrad # value returned in "$func_dirname_result" 191 1.1 riastrad # basename: Compute filename of FILE. 192 1.1 riastrad # value retuned in "$func_basename_result" 193 1.1 riastrad # Implementation must be kept synchronized with func_dirname 194 1.1 riastrad # and func_basename. For efficiency, we do not delegate to 195 1.1 riastrad # those functions but instead duplicate the functionality here. 196 1.1 riastrad func_dirname_and_basename () 197 1.1 riastrad { 198 1.1 riastrad # Extract subdirectory from the argument. 199 1.1 riastrad func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 200 1.1 riastrad if test "X$func_dirname_result" = "X${1}"; then 201 1.1 riastrad func_dirname_result="${3}" 202 1.1 riastrad else 203 1.1 riastrad func_dirname_result="$func_dirname_result${2}" 204 1.1 riastrad fi 205 1.1 riastrad func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 206 1.1 riastrad } # func_dirname_and_basename may be replaced by extended shell implementation 207 1.1 riastrad 208 1.1 riastrad 209 1.1 riastrad # func_stripname prefix suffix name 210 1.1 riastrad # strip PREFIX and SUFFIX off of NAME. 211 1.1 riastrad # PREFIX and SUFFIX must not contain globbing or regex special 212 1.1 riastrad # characters, hashes, percent signs, but SUFFIX may contain a leading 213 1.1 riastrad # dot (in which case that matches only a dot). 214 1.1 riastrad # func_strip_suffix prefix name 215 1.1 riastrad func_stripname () 216 1.1 riastrad { 217 1.1 riastrad case ${2} in 218 1.1 riastrad .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 219 1.1 riastrad *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 220 1.1 riastrad esac 221 1.1 riastrad } # func_stripname may be replaced by extended shell implementation 222 1.1 riastrad 223 1.1 riastrad 224 1.1 riastrad # These SED scripts presuppose an absolute path with a trailing slash. 225 1.1 riastrad pathcar='s,^/\([^/]*\).*$,\1,' 226 1.1 riastrad pathcdr='s,^/[^/]*,,' 227 1.1 riastrad removedotparts=':dotsl 228 1.1 riastrad s@/\./@/@g 229 1.1 riastrad t dotsl 230 1.1 riastrad s,/\.$,/,' 231 1.1 riastrad collapseslashes='s@/\{1,\}@/@g' 232 1.1 riastrad finalslash='s,/*$,/,' 233 1.1 riastrad 234 1.1 riastrad # func_normal_abspath PATH 235 1.1 riastrad # Remove doubled-up and trailing slashes, "." path components, 236 1.1 riastrad # and cancel out any ".." path components in PATH after making 237 1.1 riastrad # it an absolute path. 238 1.1 riastrad # value returned in "$func_normal_abspath_result" 239 1.1 riastrad func_normal_abspath () 240 1.1 riastrad { 241 1.1 riastrad # Start from root dir and reassemble the path. 242 1.1 riastrad func_normal_abspath_result= 243 1.1 riastrad func_normal_abspath_tpath=$1 244 1.1 riastrad func_normal_abspath_altnamespace= 245 1.1 riastrad case $func_normal_abspath_tpath in 246 1.1 riastrad "") 247 1.1 riastrad # Empty path, that just means $cwd. 248 1.1 riastrad func_stripname '' '/' "`pwd`" 249 1.1 riastrad func_normal_abspath_result=$func_stripname_result 250 1.1 riastrad return 251 1.1 riastrad ;; 252 1.1 riastrad # The next three entries are used to spot a run of precisely 253 1.1 riastrad # two leading slashes without using negated character classes; 254 1.1 riastrad # we take advantage of case's first-match behaviour. 255 1.1 riastrad ///*) 256 1.1 riastrad # Unusual form of absolute path, do nothing. 257 1.1 riastrad ;; 258 1.1 riastrad //*) 259 1.1 riastrad # Not necessarily an ordinary path; POSIX reserves leading '//' 260 1.1 riastrad # and for example Cygwin uses it to access remote file shares 261 1.1 riastrad # over CIFS/SMB, so we conserve a leading double slash if found. 262 1.1 riastrad func_normal_abspath_altnamespace=/ 263 1.1 riastrad ;; 264 1.1 riastrad /*) 265 1.1 riastrad # Absolute path, do nothing. 266 1.1 riastrad ;; 267 1.1 riastrad *) 268 1.1 riastrad # Relative path, prepend $cwd. 269 1.1 riastrad func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 270 1.1 riastrad ;; 271 1.1 riastrad esac 272 1.1 riastrad # Cancel out all the simple stuff to save iterations. We also want 273 1.1 riastrad # the path to end with a slash for ease of parsing, so make sure 274 1.1 riastrad # there is one (and only one) here. 275 1.1 riastrad func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 276 1.1 riastrad -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 277 1.1 riastrad while :; do 278 1.1 riastrad # Processed it all yet? 279 1.1 riastrad if test "$func_normal_abspath_tpath" = / ; then 280 1.1 riastrad # If we ascended to the root using ".." the result may be empty now. 281 1.1 riastrad if test -z "$func_normal_abspath_result" ; then 282 1.1 riastrad func_normal_abspath_result=/ 283 1.1 riastrad fi 284 1.1 riastrad break 285 1.1 riastrad fi 286 1.1 riastrad func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 287 1.1 riastrad -e "$pathcar"` 288 1.1 riastrad func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 289 1.1 riastrad -e "$pathcdr"` 290 1.1 riastrad # Figure out what to do with it 291 1.1 riastrad case $func_normal_abspath_tcomponent in 292 1.1 riastrad "") 293 1.1 riastrad # Trailing empty path component, ignore it. 294 1.1 riastrad ;; 295 1.1 riastrad ..) 296 1.1 riastrad # Parent dir; strip last assembled component from result. 297 1.1 riastrad func_dirname "$func_normal_abspath_result" 298 1.1 riastrad func_normal_abspath_result=$func_dirname_result 299 1.1 riastrad ;; 300 1.1 riastrad *) 301 1.1 riastrad # Actual path component, append it. 302 1.1 riastrad func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 303 1.1 riastrad ;; 304 1.1 riastrad esac 305 1.1 riastrad done 306 1.1 riastrad # Restore leading double-slash if one was found on entry. 307 1.1 riastrad func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 308 1.1 riastrad } 309 1.1 riastrad 310 1.1 riastrad # func_relative_path SRCDIR DSTDIR 311 1.1 riastrad # generates a relative path from SRCDIR to DSTDIR, with a trailing 312 1.1 riastrad # slash if non-empty, suitable for immediately appending a filename 313 1.1 riastrad # without needing to append a separator. 314 1.1 riastrad # value returned in "$func_relative_path_result" 315 1.1 riastrad func_relative_path () 316 1.1 riastrad { 317 1.1 riastrad func_relative_path_result= 318 1.1 riastrad func_normal_abspath "$1" 319 1.1 riastrad func_relative_path_tlibdir=$func_normal_abspath_result 320 1.1 riastrad func_normal_abspath "$2" 321 1.1 riastrad func_relative_path_tbindir=$func_normal_abspath_result 322 1.1 riastrad 323 1.1 riastrad # Ascend the tree starting from libdir 324 1.1 riastrad while :; do 325 1.1 riastrad # check if we have found a prefix of bindir 326 1.1 riastrad case $func_relative_path_tbindir in 327 1.1 riastrad $func_relative_path_tlibdir) 328 1.1 riastrad # found an exact match 329 1.1 riastrad func_relative_path_tcancelled= 330 1.1 riastrad break 331 1.1 riastrad ;; 332 1.1 riastrad $func_relative_path_tlibdir*) 333 1.1 riastrad # found a matching prefix 334 1.1 riastrad func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 335 1.1 riastrad func_relative_path_tcancelled=$func_stripname_result 336 1.1 riastrad if test -z "$func_relative_path_result"; then 337 1.1 riastrad func_relative_path_result=. 338 1.1 riastrad fi 339 1.1 riastrad break 340 1.1 riastrad ;; 341 1.1 riastrad *) 342 1.1 riastrad func_dirname $func_relative_path_tlibdir 343 1.1 riastrad func_relative_path_tlibdir=${func_dirname_result} 344 1.1 riastrad if test "x$func_relative_path_tlibdir" = x ; then 345 1.1 riastrad # Have to descend all the way to the root! 346 1.1 riastrad func_relative_path_result=../$func_relative_path_result 347 1.1 riastrad func_relative_path_tcancelled=$func_relative_path_tbindir 348 1.1 riastrad break 349 1.1 riastrad fi 350 1.1 riastrad func_relative_path_result=../$func_relative_path_result 351 1.1 riastrad ;; 352 1.1 riastrad esac 353 1.1 riastrad done 354 1.1 riastrad 355 1.1 riastrad # Now calculate path; take care to avoid doubling-up slashes. 356 1.1 riastrad func_stripname '' '/' "$func_relative_path_result" 357 1.1 riastrad func_relative_path_result=$func_stripname_result 358 1.1 riastrad func_stripname '/' '/' "$func_relative_path_tcancelled" 359 1.1 riastrad if test "x$func_stripname_result" != x ; then 360 1.1 riastrad func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 361 1.1 riastrad fi 362 1.1 riastrad 363 1.1 riastrad # Normalisation. If bindir is libdir, return empty string, 364 1.1 riastrad # else relative path ending with a slash; either way, target 365 1.1 riastrad # file name can be directly appended. 366 1.1 riastrad if test ! -z "$func_relative_path_result"; then 367 1.1 riastrad func_stripname './' '' "$func_relative_path_result/" 368 1.1 riastrad func_relative_path_result=$func_stripname_result 369 1.1 riastrad fi 370 1.1 riastrad } 371 1.1 riastrad 372 1.1 riastrad # The name of this program: 373 1.1 riastrad func_dirname_and_basename "$progpath" 374 1.1 riastrad progname=$func_basename_result 375 1.1 riastrad 376 1.1 riastrad # Make sure we have an absolute path for reexecution: 377 1.1 riastrad case $progpath in 378 1.1 riastrad [\\/]*|[A-Za-z]:\\*) ;; 379 1.1 riastrad *[\\/]*) 380 1.1 riastrad progdir=$func_dirname_result 381 1.1 riastrad progdir=`cd "$progdir" && pwd` 382 1.1 riastrad progpath="$progdir/$progname" 383 1.1 riastrad ;; 384 1.1 riastrad *) 385 1.1 riastrad save_IFS="$IFS" 386 1.1 riastrad IFS=${PATH_SEPARATOR-:} 387 1.1 riastrad for progdir in $PATH; do 388 1.1 riastrad IFS="$save_IFS" 389 1.1 riastrad test -x "$progdir/$progname" && break 390 1.1 riastrad done 391 1.1 riastrad IFS="$save_IFS" 392 1.1 riastrad test -n "$progdir" || progdir=`pwd` 393 1.1 riastrad progpath="$progdir/$progname" 394 1.1 riastrad ;; 395 1.1 riastrad esac 396 1.1 riastrad 397 1.1 riastrad # Sed substitution that helps us do robust quoting. It backslashifies 398 1.1 riastrad # metacharacters that are still active within double-quoted strings. 399 1.1 riastrad Xsed="${SED}"' -e 1s/^X//' 400 1.1 riastrad sed_quote_subst='s/\([`"$\\]\)/\\\1/g' 401 1.1 riastrad 402 1.1 riastrad # Same as above, but do not quote variable references. 403 1.1 riastrad double_quote_subst='s/\(["`\\]\)/\\\1/g' 404 1.1 riastrad 405 1.1 riastrad # Sed substitution that turns a string into a regex matching for the 406 1.1 riastrad # string literally. 407 1.1 riastrad sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 408 1.1 riastrad 409 1.1 riastrad # Sed substitution that converts a w32 file name or path 410 1.1 riastrad # which contains forward slashes, into one that contains 411 1.1 riastrad # (escaped) backslashes. A very naive implementation. 412 1.1 riastrad lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 413 1.1 riastrad 414 1.1 riastrad # Re-`\' parameter expansions in output of double_quote_subst that were 415 1.1 riastrad # `\'-ed in input to the same. If an odd number of `\' preceded a '$' 416 1.1 riastrad # in input to double_quote_subst, that '$' was protected from expansion. 417 1.1 riastrad # Since each input `\' is now two `\'s, look for any number of runs of 418 1.1 riastrad # four `\'s followed by two `\'s and then a '$'. `\' that '$'. 419 1.1 riastrad bs='\\' 420 1.1 riastrad bs2='\\\\' 421 1.1 riastrad bs4='\\\\\\\\' 422 1.1 riastrad dollar='\$' 423 1.1 riastrad sed_double_backslash="\ 424 1.1 riastrad s/$bs4/&\\ 425 1.1 riastrad /g 426 1.1 riastrad s/^$bs2$dollar/$bs&/ 427 1.1 riastrad s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 428 1.1 riastrad s/\n//g" 429 1.1 riastrad 430 1.1 riastrad # Standard options: 431 1.1 riastrad opt_dry_run=false 432 1.1 riastrad opt_help=false 433 1.1 riastrad opt_quiet=false 434 1.1 riastrad opt_verbose=false 435 1.1 riastrad opt_warning=: 436 1.1 riastrad 437 1.1 riastrad # func_echo arg... 438 1.1 riastrad # Echo program name prefixed message, along with the current mode 439 1.1 riastrad # name if it has been set yet. 440 1.1 riastrad func_echo () 441 1.1 riastrad { 442 1.1 riastrad $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 443 1.1 riastrad } 444 1.1 riastrad 445 1.1 riastrad # func_verbose arg... 446 1.1 riastrad # Echo program name prefixed message in verbose mode only. 447 1.1 riastrad func_verbose () 448 1.1 riastrad { 449 1.1 riastrad $opt_verbose && func_echo ${1+"$@"} 450 1.1 riastrad 451 1.1 riastrad # A bug in bash halts the script if the last line of a function 452 1.1 riastrad # fails when set -e is in force, so we need another command to 453 1.1 riastrad # work around that: 454 1.1 riastrad : 455 1.1 riastrad } 456 1.1 riastrad 457 1.1 riastrad # func_echo_all arg... 458 1.1 riastrad # Invoke $ECHO with all args, space-separated. 459 1.1 riastrad func_echo_all () 460 1.1 riastrad { 461 1.1 riastrad $ECHO "$*" 462 1.1 riastrad } 463 1.1 riastrad 464 1.1 riastrad # func_error arg... 465 1.1 riastrad # Echo program name prefixed message to standard error. 466 1.1 riastrad func_error () 467 1.1 riastrad { 468 1.1 riastrad $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 469 1.1 riastrad } 470 1.1 riastrad 471 1.1 riastrad # func_warning arg... 472 1.1 riastrad # Echo program name prefixed warning message to standard error. 473 1.1 riastrad func_warning () 474 1.1 riastrad { 475 1.1 riastrad $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 476 1.1 riastrad 477 1.1 riastrad # bash bug again: 478 1.1 riastrad : 479 1.1 riastrad } 480 1.1 riastrad 481 1.1 riastrad # func_fatal_error arg... 482 1.1 riastrad # Echo program name prefixed message to standard error, and exit. 483 1.1 riastrad func_fatal_error () 484 1.1 riastrad { 485 1.1 riastrad func_error ${1+"$@"} 486 1.1 riastrad exit $EXIT_FAILURE 487 1.1 riastrad } 488 1.1 riastrad 489 1.1 riastrad # func_fatal_help arg... 490 1.1 riastrad # Echo program name prefixed message to standard error, followed by 491 1.1 riastrad # a help hint, and exit. 492 1.1 riastrad func_fatal_help () 493 1.1 riastrad { 494 1.1 riastrad func_error ${1+"$@"} 495 1.1 riastrad func_fatal_error "$help" 496 1.1 riastrad } 497 1.1 riastrad help="Try \`$progname --help' for more information." ## default 498 1.1 riastrad 499 1.1 riastrad 500 1.1 riastrad # func_grep expression filename 501 1.1 riastrad # Check whether EXPRESSION matches any line of FILENAME, without output. 502 1.1 riastrad func_grep () 503 1.1 riastrad { 504 1.1 riastrad $GREP "$1" "$2" >/dev/null 2>&1 505 1.1 riastrad } 506 1.1 riastrad 507 1.1 riastrad 508 1.1 riastrad # func_mkdir_p directory-path 509 1.1 riastrad # Make sure the entire path to DIRECTORY-PATH is available. 510 1.1 riastrad func_mkdir_p () 511 1.1 riastrad { 512 1.1 riastrad my_directory_path="$1" 513 1.1 riastrad my_dir_list= 514 1.1 riastrad 515 1.1 riastrad if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 516 1.1 riastrad 517 1.1 riastrad # Protect directory names starting with `-' 518 1.1 riastrad case $my_directory_path in 519 1.1 riastrad -*) my_directory_path="./$my_directory_path" ;; 520 1.1 riastrad esac 521 1.1 riastrad 522 1.1 riastrad # While some portion of DIR does not yet exist... 523 1.1 riastrad while test ! -d "$my_directory_path"; do 524 1.1 riastrad # ...make a list in topmost first order. Use a colon delimited 525 1.1 riastrad # list incase some portion of path contains whitespace. 526 1.1 riastrad my_dir_list="$my_directory_path:$my_dir_list" 527 1.1 riastrad 528 1.1 riastrad # If the last portion added has no slash in it, the list is done 529 1.1 riastrad case $my_directory_path in */*) ;; *) break ;; esac 530 1.1 riastrad 531 1.1 riastrad # ...otherwise throw away the child directory and loop 532 1.1 riastrad my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 533 1.1 riastrad done 534 1.1 riastrad my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 535 1.1 riastrad 536 1.1 riastrad save_mkdir_p_IFS="$IFS"; IFS=':' 537 1.1 riastrad for my_dir in $my_dir_list; do 538 1.1 riastrad IFS="$save_mkdir_p_IFS" 539 1.1 riastrad # mkdir can fail with a `File exist' error if two processes 540 1.1 riastrad # try to create one of the directories concurrently. Don't 541 1.1 riastrad # stop in that case! 542 1.1 riastrad $MKDIR "$my_dir" 2>/dev/null || : 543 1.1 riastrad done 544 1.1 riastrad IFS="$save_mkdir_p_IFS" 545 1.1 riastrad 546 1.1 riastrad # Bail out if we (or some other process) failed to create a directory. 547 1.1 riastrad test -d "$my_directory_path" || \ 548 1.1 riastrad func_fatal_error "Failed to create \`$1'" 549 1.1 riastrad fi 550 1.1 riastrad } 551 1.1 riastrad 552 1.1 riastrad 553 1.1 riastrad # func_mktempdir [string] 554 1.1 riastrad # Make a temporary directory that won't clash with other running 555 1.1 riastrad # libtool processes, and avoids race conditions if possible. If 556 1.1 riastrad # given, STRING is the basename for that directory. 557 1.1 riastrad func_mktempdir () 558 1.1 riastrad { 559 1.1 riastrad my_template="${TMPDIR-/tmp}/${1-$progname}" 560 1.1 riastrad 561 1.1 riastrad if test "$opt_dry_run" = ":"; then 562 1.1 riastrad # Return a directory name, but don't create it in dry-run mode 563 1.1 riastrad my_tmpdir="${my_template}-$$" 564 1.1 riastrad else 565 1.1 riastrad 566 1.1 riastrad # If mktemp works, use that first and foremost 567 1.1 riastrad my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 568 1.1 riastrad 569 1.1 riastrad if test ! -d "$my_tmpdir"; then 570 1.1 riastrad # Failing that, at least try and use $RANDOM to avoid a race 571 1.1 riastrad my_tmpdir="${my_template}-${RANDOM-0}$$" 572 1.1 riastrad 573 1.1 riastrad save_mktempdir_umask=`umask` 574 1.1 riastrad umask 0077 575 1.1 riastrad $MKDIR "$my_tmpdir" 576 1.1 riastrad umask $save_mktempdir_umask 577 1.1 riastrad fi 578 1.1 riastrad 579 1.1 riastrad # If we're not in dry-run mode, bomb out on failure 580 1.1 riastrad test -d "$my_tmpdir" || \ 581 1.1 riastrad func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 582 1.1 riastrad fi 583 1.1 riastrad 584 1.1 riastrad $ECHO "$my_tmpdir" 585 1.1 riastrad } 586 1.1 riastrad 587 1.1 riastrad 588 1.1 riastrad # func_quote_for_eval arg 589 1.1 riastrad # Aesthetically quote ARG to be evaled later. 590 1.1 riastrad # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 591 1.1 riastrad # is double-quoted, suitable for a subsequent eval, whereas 592 1.1 riastrad # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 593 1.1 riastrad # which are still active within double quotes backslashified. 594 1.1 riastrad func_quote_for_eval () 595 1.1 riastrad { 596 1.1 riastrad case $1 in 597 1.1 riastrad *[\\\`\"\$]*) 598 1.1 riastrad func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 599 1.1 riastrad *) 600 1.1 riastrad func_quote_for_eval_unquoted_result="$1" ;; 601 1.1 riastrad esac 602 1.1 riastrad 603 1.1 riastrad case $func_quote_for_eval_unquoted_result in 604 1.1 riastrad # Double-quote args containing shell metacharacters to delay 605 1.1 riastrad # word splitting, command substitution and and variable 606 1.1 riastrad # expansion for a subsequent eval. 607 1.1 riastrad # Many Bourne shells cannot handle close brackets correctly 608 1.1 riastrad # in scan sets, so we specify it separately. 609 1.1 riastrad *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 610 1.1 riastrad func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 611 1.1 riastrad ;; 612 1.1 riastrad *) 613 1.1 riastrad func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 614 1.1 riastrad esac 615 1.1 riastrad } 616 1.1 riastrad 617 1.1 riastrad 618 1.1 riastrad # func_quote_for_expand arg 619 1.1 riastrad # Aesthetically quote ARG to be evaled later; same as above, 620 1.1 riastrad # but do not quote variable references. 621 1.1 riastrad func_quote_for_expand () 622 1.1 riastrad { 623 1.1 riastrad case $1 in 624 1.1 riastrad *[\\\`\"]*) 625 1.1 riastrad my_arg=`$ECHO "$1" | $SED \ 626 1.1 riastrad -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 627 1.1 riastrad *) 628 1.1 riastrad my_arg="$1" ;; 629 1.1 riastrad esac 630 1.1 riastrad 631 1.1 riastrad case $my_arg in 632 1.1 riastrad # Double-quote args containing shell metacharacters to delay 633 1.1 riastrad # word splitting and command substitution for a subsequent eval. 634 1.1 riastrad # Many Bourne shells cannot handle close brackets correctly 635 1.1 riastrad # in scan sets, so we specify it separately. 636 1.1 riastrad *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 637 1.1 riastrad my_arg="\"$my_arg\"" 638 1.1 riastrad ;; 639 1.1 riastrad esac 640 1.1 riastrad 641 1.1 riastrad func_quote_for_expand_result="$my_arg" 642 1.1 riastrad } 643 1.1 riastrad 644 1.1 riastrad 645 1.1 riastrad # func_show_eval cmd [fail_exp] 646 1.1 riastrad # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 647 1.1 riastrad # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 648 1.1 riastrad # is given, then evaluate it. 649 1.1 riastrad func_show_eval () 650 1.1 riastrad { 651 1.1 riastrad my_cmd="$1" 652 1.1 riastrad my_fail_exp="${2-:}" 653 1.1 riastrad 654 1.1 riastrad ${opt_silent-false} || { 655 1.1 riastrad func_quote_for_expand "$my_cmd" 656 1.1 riastrad eval "func_echo $func_quote_for_expand_result" 657 1.1 riastrad } 658 1.1 riastrad 659 1.1 riastrad if ${opt_dry_run-false}; then :; else 660 1.1 riastrad eval "$my_cmd" 661 1.1 riastrad my_status=$? 662 1.1 riastrad if test "$my_status" -eq 0; then :; else 663 1.1 riastrad eval "(exit $my_status); $my_fail_exp" 664 1.1 riastrad fi 665 1.1 riastrad fi 666 1.1 riastrad } 667 1.1 riastrad 668 1.1 riastrad 669 1.1 riastrad # func_show_eval_locale cmd [fail_exp] 670 1.1 riastrad # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 671 1.1 riastrad # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 672 1.1 riastrad # is given, then evaluate it. Use the saved locale for evaluation. 673 1.1 riastrad func_show_eval_locale () 674 1.1 riastrad { 675 1.1 riastrad my_cmd="$1" 676 1.1 riastrad my_fail_exp="${2-:}" 677 1.1 riastrad 678 1.1 riastrad ${opt_silent-false} || { 679 1.1 riastrad func_quote_for_expand "$my_cmd" 680 1.1 riastrad eval "func_echo $func_quote_for_expand_result" 681 1.1 riastrad } 682 1.1 riastrad 683 1.1 riastrad if ${opt_dry_run-false}; then :; else 684 1.1 riastrad eval "$lt_user_locale 685 1.1 riastrad $my_cmd" 686 1.1 riastrad my_status=$? 687 1.1 riastrad eval "$lt_safe_locale" 688 1.1 riastrad if test "$my_status" -eq 0; then :; else 689 1.1 riastrad eval "(exit $my_status); $my_fail_exp" 690 1.1 riastrad fi 691 1.1 riastrad fi 692 1.1 riastrad } 693 1.1 riastrad 694 1.1 riastrad # func_tr_sh 695 1.1 riastrad # Turn $1 into a string suitable for a shell variable name. 696 1.1 riastrad # Result is stored in $func_tr_sh_result. All characters 697 1.1 riastrad # not in the set a-zA-Z0-9_ are replaced with '_'. Further, 698 1.1 riastrad # if $1 begins with a digit, a '_' is prepended as well. 699 1.1 riastrad func_tr_sh () 700 1.1 riastrad { 701 1.1 riastrad case $1 in 702 1.1 riastrad [0-9]* | *[!a-zA-Z0-9_]*) 703 1.1 riastrad func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 704 1.1 riastrad ;; 705 1.1 riastrad * ) 706 1.1 riastrad func_tr_sh_result=$1 707 1.1 riastrad ;; 708 1.1 riastrad esac 709 1.1 riastrad } 710 1.1 riastrad 711 1.1 riastrad 712 1.1 riastrad # func_version 713 1.1 riastrad # Echo version message to standard output and exit. 714 1.1 riastrad func_version () 715 1.1 riastrad { 716 1.1 riastrad $opt_debug 717 1.1 riastrad 718 1.1 riastrad $SED -n '/(C)/!b go 719 1.1 riastrad :more 720 1.1 riastrad /\./!{ 721 1.1 riastrad N 722 1.1 riastrad s/\n# / / 723 1.1 riastrad b more 724 1.1 riastrad } 725 1.1 riastrad :go 726 1.1 riastrad /^# '$PROGRAM' (GNU /,/# warranty; / { 727 1.1 riastrad s/^# // 728 1.1 riastrad s/^# *$// 729 1.1 riastrad s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 730 1.1 riastrad p 731 1.1 riastrad }' < "$progpath" 732 1.1 riastrad exit $? 733 1.1 riastrad } 734 1.1 riastrad 735 1.1 riastrad # func_usage 736 1.1 riastrad # Echo short help message to standard output and exit. 737 1.1 riastrad func_usage () 738 1.1 riastrad { 739 1.1 riastrad $opt_debug 740 1.1 riastrad 741 1.1 riastrad $SED -n '/^# Usage:/,/^# *.*--help/ { 742 1.1 riastrad s/^# // 743 1.1 riastrad s/^# *$// 744 1.1 riastrad s/\$progname/'$progname'/ 745 1.1 riastrad p 746 1.1 riastrad }' < "$progpath" 747 1.1 riastrad echo 748 1.1 riastrad $ECHO "run \`$progname --help | more' for full usage" 749 1.1 riastrad exit $? 750 1.1 riastrad } 751 1.1 riastrad 752 1.1 riastrad # func_help [NOEXIT] 753 1.1 riastrad # Echo long help message to standard output and exit, 754 1.1 riastrad # unless 'noexit' is passed as argument. 755 1.1 riastrad func_help () 756 1.1 riastrad { 757 1.1 riastrad $opt_debug 758 1.1 riastrad 759 1.1 riastrad $SED -n '/^# Usage:/,/# Report bugs to/ { 760 1.1 riastrad :print 761 1.1 riastrad s/^# // 762 1.1 riastrad s/^# *$// 763 1.1 riastrad s*\$progname*'$progname'* 764 1.1 riastrad s*\$host*'"$host"'* 765 1.1 riastrad s*\$SHELL*'"$SHELL"'* 766 1.1 riastrad s*\$LTCC*'"$LTCC"'* 767 1.1 riastrad s*\$LTCFLAGS*'"$LTCFLAGS"'* 768 1.1 riastrad s*\$LD*'"$LD"'* 769 1.1 riastrad s/\$with_gnu_ld/'"$with_gnu_ld"'/ 770 1.1 riastrad s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 771 1.1 riastrad s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 772 1.1 riastrad p 773 1.1 riastrad d 774 1.1 riastrad } 775 1.1 riastrad /^# .* home page:/b print 776 1.1 riastrad /^# General help using/b print 777 1.1 riastrad ' < "$progpath" 778 1.1 riastrad ret=$? 779 1.1 riastrad if test -z "$1"; then 780 1.1 riastrad exit $ret 781 1.1 riastrad fi 782 1.1 riastrad } 783 1.1 riastrad 784 1.1 riastrad # func_missing_arg argname 785 1.1 riastrad # Echo program name prefixed message to standard error and set global 786 1.1 riastrad # exit_cmd. 787 1.1 riastrad func_missing_arg () 788 1.1 riastrad { 789 1.1 riastrad $opt_debug 790 1.1 riastrad 791 1.1 riastrad func_error "missing argument for $1." 792 1.1 riastrad exit_cmd=exit 793 1.1 riastrad } 794 1.1 riastrad 795 1.1 riastrad 796 1.1 riastrad # func_split_short_opt shortopt 797 1.1 riastrad # Set func_split_short_opt_name and func_split_short_opt_arg shell 798 1.1 riastrad # variables after splitting SHORTOPT after the 2nd character. 799 1.1 riastrad func_split_short_opt () 800 1.1 riastrad { 801 1.1 riastrad my_sed_short_opt='1s/^\(..\).*$/\1/;q' 802 1.1 riastrad my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 803 1.1 riastrad 804 1.1 riastrad func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 805 1.1 riastrad func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 806 1.1 riastrad } # func_split_short_opt may be replaced by extended shell implementation 807 1.1 riastrad 808 1.1 riastrad 809 1.1 riastrad # func_split_long_opt longopt 810 1.1 riastrad # Set func_split_long_opt_name and func_split_long_opt_arg shell 811 1.1 riastrad # variables after splitting LONGOPT at the `=' sign. 812 1.1 riastrad func_split_long_opt () 813 1.1 riastrad { 814 1.1 riastrad my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 815 1.1 riastrad my_sed_long_arg='1s/^--[^=]*=//' 816 1.1 riastrad 817 1.1 riastrad func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 818 1.1 riastrad func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 819 1.1 riastrad } # func_split_long_opt may be replaced by extended shell implementation 820 1.1 riastrad 821 1.1 riastrad exit_cmd=: 822 1.1 riastrad 823 1.1 riastrad 824 1.1 riastrad 825 1.1 riastrad 826 1.1 riastrad 827 1.1 riastrad magic="%%%MAGIC variable%%%" 828 1.1 riastrad magic_exe="%%%MAGIC EXE variable%%%" 829 1.1 riastrad 830 1.1 riastrad # Global variables. 831 1.1 riastrad nonopt= 832 1.1 riastrad preserve_args= 833 1.1 riastrad lo2o="s/\\.lo\$/.${objext}/" 834 1.1 riastrad o2lo="s/\\.${objext}\$/.lo/" 835 1.1 riastrad extracted_archives= 836 1.1 riastrad extracted_serial=0 837 1.1 riastrad 838 1.1 riastrad # If this variable is set in any of the actions, the command in it 839 1.1 riastrad # will be execed at the end. This prevents here-documents from being 840 1.1 riastrad # left over by shells. 841 1.1 riastrad exec_cmd= 842 1.1 riastrad 843 1.1 riastrad # func_append var value 844 1.1 riastrad # Append VALUE to the end of shell variable VAR. 845 1.1 riastrad func_append () 846 1.1 riastrad { 847 1.1 riastrad eval "${1}=\$${1}\${2}" 848 1.1 riastrad } # func_append may be replaced by extended shell implementation 849 1.1 riastrad 850 1.1 riastrad # func_append_quoted var value 851 1.1 riastrad # Quote VALUE and append to the end of shell variable VAR, separated 852 1.1 riastrad # by a space. 853 1.1 riastrad func_append_quoted () 854 1.1 riastrad { 855 1.1 riastrad func_quote_for_eval "${2}" 856 1.1 riastrad eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 857 1.1 riastrad } # func_append_quoted may be replaced by extended shell implementation 858 1.1 riastrad 859 1.1 riastrad 860 1.1 riastrad # func_arith arithmetic-term... 861 1.1 riastrad func_arith () 862 1.1 riastrad { 863 1.1 riastrad func_arith_result=`expr "${@}"` 864 1.1 riastrad } # func_arith may be replaced by extended shell implementation 865 1.1 riastrad 866 1.1 riastrad 867 1.1 riastrad # func_len string 868 1.1 riastrad # STRING may not start with a hyphen. 869 1.1 riastrad func_len () 870 1.1 riastrad { 871 1.1 riastrad func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 872 1.1 riastrad } # func_len may be replaced by extended shell implementation 873 1.1 riastrad 874 1.1 riastrad 875 1.1 riastrad # func_lo2o object 876 1.1 riastrad func_lo2o () 877 1.1 riastrad { 878 1.1 riastrad func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 879 1.1 riastrad } # func_lo2o may be replaced by extended shell implementation 880 1.1 riastrad 881 1.1 riastrad 882 1.1 riastrad # func_xform libobj-or-source 883 1.1 riastrad func_xform () 884 1.1 riastrad { 885 1.1 riastrad func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 886 1.1 riastrad } # func_xform may be replaced by extended shell implementation 887 1.1 riastrad 888 1.1 riastrad 889 1.1 riastrad # func_fatal_configuration arg... 890 1.1 riastrad # Echo program name prefixed message to standard error, followed by 891 1.1 riastrad # a configuration failure hint, and exit. 892 1.1 riastrad func_fatal_configuration () 893 1.1 riastrad { 894 1.1 riastrad func_error ${1+"$@"} 895 1.1 riastrad func_error "See the $PACKAGE documentation for more information." 896 1.1 riastrad func_fatal_error "Fatal configuration error." 897 1.1 riastrad } 898 1.1 riastrad 899 1.1 riastrad 900 1.1 riastrad # func_config 901 1.1 riastrad # Display the configuration for all the tags in this script. 902 1.1 riastrad func_config () 903 1.1 riastrad { 904 1.1 riastrad re_begincf='^# ### BEGIN LIBTOOL' 905 1.1 riastrad re_endcf='^# ### END LIBTOOL' 906 1.1 riastrad 907 1.1 riastrad # Default configuration. 908 1.1 riastrad $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 909 1.1 riastrad 910 1.1 riastrad # Now print the configurations for the tags. 911 1.1 riastrad for tagname in $taglist; do 912 1.1 riastrad $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 913 1.1 riastrad done 914 1.1 riastrad 915 1.1 riastrad exit $? 916 1.1 riastrad } 917 1.1 riastrad 918 1.1 riastrad # func_features 919 1.1 riastrad # Display the features supported by this script. 920 1.1 riastrad func_features () 921 1.1 riastrad { 922 1.1 riastrad echo "host: $host" 923 1.1 riastrad if test "$build_libtool_libs" = yes; then 924 1.1 riastrad echo "enable shared libraries" 925 1.1 riastrad else 926 1.1 riastrad echo "disable shared libraries" 927 1.1 riastrad fi 928 1.1 riastrad if test "$build_old_libs" = yes; then 929 1.1 riastrad echo "enable static libraries" 930 1.1 riastrad else 931 1.1 riastrad echo "disable static libraries" 932 1.1 riastrad fi 933 1.1 riastrad 934 1.1 riastrad exit $? 935 1.1 riastrad } 936 1.1 riastrad 937 1.1 riastrad # func_enable_tag tagname 938 1.1 riastrad # Verify that TAGNAME is valid, and either flag an error and exit, or 939 1.1 riastrad # enable the TAGNAME tag. We also add TAGNAME to the global $taglist 940 1.1 riastrad # variable here. 941 1.1 riastrad func_enable_tag () 942 1.1 riastrad { 943 1.1 riastrad # Global variable: 944 1.1 riastrad tagname="$1" 945 1.1 riastrad 946 1.1 riastrad re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 947 1.1 riastrad re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 948 1.1 riastrad sed_extractcf="/$re_begincf/,/$re_endcf/p" 949 1.1 riastrad 950 1.1 riastrad # Validate tagname. 951 1.1 riastrad case $tagname in 952 1.1 riastrad *[!-_A-Za-z0-9,/]*) 953 1.1 riastrad func_fatal_error "invalid tag name: $tagname" 954 1.1 riastrad ;; 955 1.1 riastrad esac 956 1.1 riastrad 957 1.1 riastrad # Don't test for the "default" C tag, as we know it's 958 1.1 riastrad # there but not specially marked. 959 1.1 riastrad case $tagname in 960 1.1 riastrad CC) ;; 961 1.1 riastrad *) 962 1.1 riastrad if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 963 1.1 riastrad taglist="$taglist $tagname" 964 1.1 riastrad 965 1.1 riastrad # Evaluate the configuration. Be careful to quote the path 966 1.1 riastrad # and the sed script, to avoid splitting on whitespace, but 967 1.1 riastrad # also don't use non-portable quotes within backquotes within 968 1.1 riastrad # quotes we have to do it in 2 steps: 969 1.1 riastrad extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 970 1.1 riastrad eval "$extractedcf" 971 1.1 riastrad else 972 1.1 riastrad func_error "ignoring unknown tag $tagname" 973 1.1 riastrad fi 974 1.1 riastrad ;; 975 1.1 riastrad esac 976 1.1 riastrad } 977 1.1 riastrad 978 1.1 riastrad # func_check_version_match 979 1.1 riastrad # Ensure that we are using m4 macros, and libtool script from the same 980 1.1 riastrad # release of libtool. 981 1.1 riastrad func_check_version_match () 982 1.1 riastrad { 983 1.1 riastrad if test "$package_revision" != "$macro_revision"; then 984 1.1 riastrad if test "$VERSION" != "$macro_version"; then 985 1.1 riastrad if test -z "$macro_version"; then 986 1.1 riastrad cat >&2 <<_LT_EOF 987 1.1 riastrad $progname: Version mismatch error. This is $PACKAGE $VERSION, but the 988 1.1 riastrad $progname: definition of this LT_INIT comes from an older release. 989 1.1 riastrad $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 990 1.1 riastrad $progname: and run autoconf again. 991 1.1 riastrad _LT_EOF 992 1.1 riastrad else 993 1.1 riastrad cat >&2 <<_LT_EOF 994 1.1 riastrad $progname: Version mismatch error. This is $PACKAGE $VERSION, but the 995 1.1 riastrad $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 996 1.1 riastrad $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 997 1.1 riastrad $progname: and run autoconf again. 998 1.1 riastrad _LT_EOF 999 1.1 riastrad fi 1000 1.1 riastrad else 1001 1.1 riastrad cat >&2 <<_LT_EOF 1002 1.1 riastrad $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 1003 1.1 riastrad $progname: but the definition of this LT_INIT comes from revision $macro_revision. 1004 1.1 riastrad $progname: You should recreate aclocal.m4 with macros from revision $package_revision 1005 1.1 riastrad $progname: of $PACKAGE $VERSION and run autoconf again. 1006 1.1 riastrad _LT_EOF 1007 1.1 riastrad fi 1008 1.1 riastrad 1009 1.1 riastrad exit $EXIT_MISMATCH 1010 1.1 riastrad fi 1011 1.1 riastrad } 1012 1.1 riastrad 1013 1.1 riastrad 1014 1.1 riastrad # Shorthand for --mode=foo, only valid as the first argument 1015 1.1 riastrad case $1 in 1016 1.1 riastrad clean|clea|cle|cl) 1017 1.1 riastrad shift; set dummy --mode clean ${1+"$@"}; shift 1018 1.1 riastrad ;; 1019 1.1 riastrad compile|compil|compi|comp|com|co|c) 1020 1.1 riastrad shift; set dummy --mode compile ${1+"$@"}; shift 1021 1.1 riastrad ;; 1022 1.1 riastrad execute|execut|execu|exec|exe|ex|e) 1023 1.1 riastrad shift; set dummy --mode execute ${1+"$@"}; shift 1024 1.1 riastrad ;; 1025 1.1 riastrad finish|finis|fini|fin|fi|f) 1026 1.1 riastrad shift; set dummy --mode finish ${1+"$@"}; shift 1027 1.1 riastrad ;; 1028 1.1 riastrad install|instal|insta|inst|ins|in|i) 1029 1.1 riastrad shift; set dummy --mode install ${1+"$@"}; shift 1030 1.1 riastrad ;; 1031 1.1 riastrad link|lin|li|l) 1032 1.1 riastrad shift; set dummy --mode link ${1+"$@"}; shift 1033 1.1 riastrad ;; 1034 1.1 riastrad uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 1035 1.1 riastrad shift; set dummy --mode uninstall ${1+"$@"}; shift 1036 1.1 riastrad ;; 1037 1.1 riastrad esac 1038 1.1 riastrad 1039 1.1 riastrad 1040 1.1 riastrad 1041 1.1 riastrad # Option defaults: 1042 1.1 riastrad opt_debug=: 1043 1.1 riastrad opt_dry_run=false 1044 1.1 riastrad opt_config=false 1045 1.1 riastrad opt_preserve_dup_deps=false 1046 1.1 riastrad opt_features=false 1047 1.1 riastrad opt_finish=false 1048 1.1 riastrad opt_help=false 1049 1.1 riastrad opt_help_all=false 1050 1.1 riastrad opt_silent=: 1051 1.1 riastrad opt_warning=: 1052 1.1 riastrad opt_verbose=: 1053 1.1 riastrad opt_silent=false 1054 1.1 riastrad opt_verbose=false 1055 1.1 riastrad 1056 1.1 riastrad 1057 1.1 riastrad # Parse options once, thoroughly. This comes as soon as possible in the 1058 1.1 riastrad # script to make things like `--version' happen as quickly as we can. 1059 1.1 riastrad { 1060 1.1 riastrad # this just eases exit handling 1061 1.1 riastrad while test $# -gt 0; do 1062 1.1 riastrad opt="$1" 1063 1.1 riastrad shift 1064 1.1 riastrad case $opt in 1065 1.1 riastrad --debug|-x) opt_debug='set -x' 1066 1.1 riastrad func_echo "enabling shell trace mode" 1067 1.1 riastrad $opt_debug 1068 1.1 riastrad ;; 1069 1.1 riastrad --dry-run|--dryrun|-n) 1070 1.1 riastrad opt_dry_run=: 1071 1.1 riastrad ;; 1072 1.1 riastrad --config) 1073 1.1 riastrad opt_config=: 1074 1.1 riastrad func_config 1075 1.1 riastrad ;; 1076 1.1 riastrad --dlopen|-dlopen) 1077 1.1 riastrad optarg="$1" 1078 1.1 riastrad opt_dlopen="${opt_dlopen+$opt_dlopen 1079 1.1 riastrad }$optarg" 1080 1.1 riastrad shift 1081 1.1 riastrad ;; 1082 1.1 riastrad --preserve-dup-deps) 1083 1.1 riastrad opt_preserve_dup_deps=: 1084 1.1 riastrad ;; 1085 1.1 riastrad --features) 1086 1.1 riastrad opt_features=: 1087 1.1 riastrad func_features 1088 1.1 riastrad ;; 1089 1.1 riastrad --finish) 1090 1.1 riastrad opt_finish=: 1091 1.1 riastrad set dummy --mode finish ${1+"$@"}; shift 1092 1.1 riastrad ;; 1093 1.1 riastrad --help) 1094 1.1 riastrad opt_help=: 1095 1.1 riastrad ;; 1096 1.1 riastrad --help-all) 1097 1.1 riastrad opt_help_all=: 1098 1.1 riastrad opt_help=': help-all' 1099 1.1 riastrad ;; 1100 1.1 riastrad --mode) 1101 1.1 riastrad test $# = 0 && func_missing_arg $opt && break 1102 1.1 riastrad optarg="$1" 1103 1.1 riastrad opt_mode="$optarg" 1104 1.1 riastrad case $optarg in 1105 1.1 riastrad # Valid mode arguments: 1106 1.1 riastrad clean|compile|execute|finish|install|link|relink|uninstall) ;; 1107 1.1 riastrad 1108 1.1 riastrad # Catch anything else as an error 1109 1.1 riastrad *) func_error "invalid argument for $opt" 1110 1.1 riastrad exit_cmd=exit 1111 1.1 riastrad break 1112 1.1 riastrad ;; 1113 1.1 riastrad esac 1114 1.1 riastrad shift 1115 1.1 riastrad ;; 1116 1.1 riastrad --no-silent|--no-quiet) 1117 1.1 riastrad opt_silent=false 1118 1.1 riastrad func_append preserve_args " $opt" 1119 1.1 riastrad ;; 1120 1.1 riastrad --no-warning|--no-warn) 1121 1.1 riastrad opt_warning=false 1122 1.1 riastrad func_append preserve_args " $opt" 1123 1.1 riastrad ;; 1124 1.1 riastrad --no-verbose) 1125 1.1 riastrad opt_verbose=false 1126 1.1 riastrad func_append preserve_args " $opt" 1127 1.1 riastrad ;; 1128 1.1 riastrad --silent|--quiet) 1129 1.1 riastrad opt_silent=: 1130 1.1 riastrad func_append preserve_args " $opt" 1131 1.1 riastrad opt_verbose=false 1132 1.1 riastrad ;; 1133 1.1 riastrad --verbose|-v) 1134 1.1 riastrad opt_verbose=: 1135 1.1 riastrad func_append preserve_args " $opt" 1136 1.1 riastrad opt_silent=false 1137 1.1 riastrad ;; 1138 1.1 riastrad --tag) 1139 1.1 riastrad test $# = 0 && func_missing_arg $opt && break 1140 1.1 riastrad optarg="$1" 1141 1.1 riastrad opt_tag="$optarg" 1142 1.1 riastrad func_append preserve_args " $opt $optarg" 1143 1.1 riastrad func_enable_tag "$optarg" 1144 1.1 riastrad shift 1145 1.1 riastrad ;; 1146 1.1 riastrad 1147 1.1 riastrad -\?|-h) func_usage ;; 1148 1.1 riastrad --help) func_help ;; 1149 1.1 riastrad --version) func_version ;; 1150 1.1 riastrad 1151 1.1 riastrad # Separate optargs to long options: 1152 1.1 riastrad --*=*) 1153 1.1 riastrad func_split_long_opt "$opt" 1154 1.1 riastrad set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 1155 1.1 riastrad shift 1156 1.1 riastrad ;; 1157 1.1 riastrad 1158 1.1 riastrad # Separate non-argument short options: 1159 1.1 riastrad -\?*|-h*|-n*|-v*) 1160 1.1 riastrad func_split_short_opt "$opt" 1161 1.1 riastrad set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 1162 1.1 riastrad shift 1163 1.1 riastrad ;; 1164 1.1 riastrad 1165 1.1 riastrad --) break ;; 1166 1.1 riastrad -*) func_fatal_help "unrecognized option \`$opt'" ;; 1167 1.1 riastrad *) set dummy "$opt" ${1+"$@"}; shift; break ;; 1168 1.1 riastrad esac 1169 1.1 riastrad done 1170 1.1 riastrad 1171 1.1 riastrad # Validate options: 1172 1.1 riastrad 1173 1.1 riastrad # save first non-option argument 1174 1.1 riastrad if test "$#" -gt 0; then 1175 1.1 riastrad nonopt="$opt" 1176 1.1 riastrad shift 1177 1.1 riastrad fi 1178 1.1 riastrad 1179 1.1 riastrad # preserve --debug 1180 1.1 riastrad test "$opt_debug" = : || func_append preserve_args " --debug" 1181 1.1 riastrad 1182 1.1 riastrad case $host in 1183 1.1 riastrad *cygwin* | *mingw* | *pw32* | *cegcc*) 1184 1.1 riastrad # don't eliminate duplications in $postdeps and $predeps 1185 1.1 riastrad opt_duplicate_compiler_generated_deps=: 1186 1.1 riastrad ;; 1187 1.1 riastrad *) 1188 1.1 riastrad opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 1189 1.1 riastrad ;; 1190 1.1 riastrad esac 1191 1.1 riastrad 1192 1.1 riastrad $opt_help || { 1193 1.1 riastrad # Sanity checks first: 1194 1.1 riastrad func_check_version_match 1195 1.1 riastrad 1196 1.1 riastrad if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1197 1.1 riastrad func_fatal_configuration "not configured to build any kind of library" 1198 1.1 riastrad fi 1199 1.1 riastrad 1200 1.1 riastrad # Darwin sucks 1201 1.1 riastrad eval std_shrext=\"$shrext_cmds\" 1202 1.1 riastrad 1203 1.1 riastrad # Only execute mode is allowed to have -dlopen flags. 1204 1.1 riastrad if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 1205 1.1 riastrad func_error "unrecognized option \`-dlopen'" 1206 1.1 riastrad $ECHO "$help" 1>&2 1207 1.1 riastrad exit $EXIT_FAILURE 1208 1.1 riastrad fi 1209 1.1 riastrad 1210 1.1 riastrad # Change the help message to a mode-specific one. 1211 1.1 riastrad generic_help="$help" 1212 1.1 riastrad help="Try \`$progname --help --mode=$opt_mode' for more information." 1213 1.1 riastrad } 1214 1.1 riastrad 1215 1.1 riastrad 1216 1.1 riastrad # Bail if the options were screwed 1217 1.1 riastrad $exit_cmd $EXIT_FAILURE 1218 1.1 riastrad } 1219 1.1 riastrad 1220 1.1 riastrad 1221 1.1 riastrad 1222 1.1 riastrad 1223 1.1 riastrad ## ----------- ## 1224 1.1 riastrad ## Main. ## 1225 1.1 riastrad ## ----------- ## 1226 1.1 riastrad 1227 1.1 riastrad # func_lalib_p file 1228 1.1 riastrad # True iff FILE is a libtool `.la' library or `.lo' object file. 1229 1.1 riastrad # This function is only a basic sanity check; it will hardly flush out 1230 1.1 riastrad # determined imposters. 1231 1.1 riastrad func_lalib_p () 1232 1.1 riastrad { 1233 1.1 riastrad test -f "$1" && 1234 1.1 riastrad $SED -e 4q "$1" 2>/dev/null \ 1235 1.1 riastrad | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 1236 1.1 riastrad } 1237 1.1 riastrad 1238 1.1 riastrad # func_lalib_unsafe_p file 1239 1.1 riastrad # True iff FILE is a libtool `.la' library or `.lo' object file. 1240 1.1 riastrad # This function implements the same check as func_lalib_p without 1241 1.1 riastrad # resorting to external programs. To this end, it redirects stdin and 1242 1.1 riastrad # closes it afterwards, without saving the original file descriptor. 1243 1.1 riastrad # As a safety measure, use it only where a negative result would be 1244 1.1 riastrad # fatal anyway. Works if `file' does not exist. 1245 1.1 riastrad func_lalib_unsafe_p () 1246 1.1 riastrad { 1247 1.1 riastrad lalib_p=no 1248 1.1 riastrad if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 1249 1.1 riastrad for lalib_p_l in 1 2 3 4 1250 1.1 riastrad do 1251 1.1 riastrad read lalib_p_line 1252 1.1 riastrad case "$lalib_p_line" in 1253 1.1 riastrad \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 1254 1.1 riastrad esac 1255 1.1 riastrad done 1256 1.1 riastrad exec 0<&5 5<&- 1257 1.1 riastrad fi 1258 1.1 riastrad test "$lalib_p" = yes 1259 1.1 riastrad } 1260 1.1 riastrad 1261 1.1 riastrad # func_ltwrapper_script_p file 1262 1.1 riastrad # True iff FILE is a libtool wrapper script 1263 1.1 riastrad # This function is only a basic sanity check; it will hardly flush out 1264 1.1 riastrad # determined imposters. 1265 1.1 riastrad func_ltwrapper_script_p () 1266 1.1 riastrad { 1267 1.1 riastrad func_lalib_p "$1" 1268 1.1 riastrad } 1269 1.1 riastrad 1270 1.1 riastrad # func_ltwrapper_executable_p file 1271 1.1 riastrad # True iff FILE is a libtool wrapper executable 1272 1.1 riastrad # This function is only a basic sanity check; it will hardly flush out 1273 1.1 riastrad # determined imposters. 1274 1.1 riastrad func_ltwrapper_executable_p () 1275 1.1 riastrad { 1276 1.1 riastrad func_ltwrapper_exec_suffix= 1277 1.1 riastrad case $1 in 1278 1.1 riastrad *.exe) ;; 1279 1.1 riastrad *) func_ltwrapper_exec_suffix=.exe ;; 1280 1.1 riastrad esac 1281 1.1 riastrad $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 1282 1.1 riastrad } 1283 1.1 riastrad 1284 1.1 riastrad # func_ltwrapper_scriptname file 1285 1.1 riastrad # Assumes file is an ltwrapper_executable 1286 1.1 riastrad # uses $file to determine the appropriate filename for a 1287 1.1 riastrad # temporary ltwrapper_script. 1288 1.1 riastrad func_ltwrapper_scriptname () 1289 1.1 riastrad { 1290 1.1 riastrad func_dirname_and_basename "$1" "" "." 1291 1.1 riastrad func_stripname '' '.exe' "$func_basename_result" 1292 1.1 riastrad func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 1293 1.1 riastrad } 1294 1.1 riastrad 1295 1.1 riastrad # func_ltwrapper_p file 1296 1.1 riastrad # True iff FILE is a libtool wrapper script or wrapper executable 1297 1.1 riastrad # This function is only a basic sanity check; it will hardly flush out 1298 1.1 riastrad # determined imposters. 1299 1.1 riastrad func_ltwrapper_p () 1300 1.1 riastrad { 1301 1.1 riastrad func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 1302 1.1 riastrad } 1303 1.1 riastrad 1304 1.1 riastrad 1305 1.1 riastrad # func_execute_cmds commands fail_cmd 1306 1.1 riastrad # Execute tilde-delimited COMMANDS. 1307 1.1 riastrad # If FAIL_CMD is given, eval that upon failure. 1308 1.1 riastrad # FAIL_CMD may read-access the current command in variable CMD! 1309 1.1 riastrad func_execute_cmds () 1310 1.1 riastrad { 1311 1.1 riastrad $opt_debug 1312 1.1 riastrad save_ifs=$IFS; IFS='~' 1313 1.1 riastrad for cmd in $1; do 1314 1.1 riastrad IFS=$save_ifs 1315 1.1 riastrad eval cmd=\"$cmd\" 1316 1.1 riastrad func_show_eval "$cmd" "${2-:}" 1317 1.1 riastrad done 1318 1.1 riastrad IFS=$save_ifs 1319 1.1 riastrad } 1320 1.1 riastrad 1321 1.1 riastrad 1322 1.1 riastrad # func_source file 1323 1.1 riastrad # Source FILE, adding directory component if necessary. 1324 1.1 riastrad # Note that it is not necessary on cygwin/mingw to append a dot to 1325 1.1 riastrad # FILE even if both FILE and FILE.exe exist: automatic-append-.exe 1326 1.1 riastrad # behavior happens only for exec(3), not for open(2)! Also, sourcing 1327 1.1 riastrad # `FILE.' does not work on cygwin managed mounts. 1328 1.1 riastrad func_source () 1329 1.1 riastrad { 1330 1.1 riastrad $opt_debug 1331 1.1 riastrad case $1 in 1332 1.1 riastrad */* | *\\*) . "$1" ;; 1333 1.1 riastrad *) . "./$1" ;; 1334 1.1 riastrad esac 1335 1.1 riastrad } 1336 1.1 riastrad 1337 1.1 riastrad 1338 1.1 riastrad # func_resolve_sysroot PATH 1339 1.1 riastrad # Replace a leading = in PATH with a sysroot. Store the result into 1340 1.1 riastrad # func_resolve_sysroot_result 1341 1.1 riastrad func_resolve_sysroot () 1342 1.1 riastrad { 1343 1.1 riastrad func_resolve_sysroot_result=$1 1344 1.1 riastrad case $func_resolve_sysroot_result in 1345 1.1 riastrad =*) 1346 1.1 riastrad func_stripname '=' '' "$func_resolve_sysroot_result" 1347 1.1 riastrad func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 1348 1.1 riastrad ;; 1349 1.1 riastrad esac 1350 1.1 riastrad } 1351 1.1 riastrad 1352 1.1 riastrad # func_replace_sysroot PATH 1353 1.1 riastrad # If PATH begins with the sysroot, replace it with = and 1354 1.1 riastrad # store the result into func_replace_sysroot_result. 1355 1.1 riastrad func_replace_sysroot () 1356 1.1 riastrad { 1357 1.1 riastrad case "$lt_sysroot:$1" in 1358 1.1 riastrad ?*:"$lt_sysroot"*) 1359 1.1 riastrad func_stripname "$lt_sysroot" '' "$1" 1360 1.1 riastrad func_replace_sysroot_result="=$func_stripname_result" 1361 1.1 riastrad ;; 1362 1.1 riastrad *) 1363 1.1 riastrad # Including no sysroot. 1364 1.1 riastrad func_replace_sysroot_result=$1 1365 1.1 riastrad ;; 1366 1.1 riastrad esac 1367 1.1 riastrad } 1368 1.1 riastrad 1369 1.1 riastrad # func_infer_tag arg 1370 1.1 riastrad # Infer tagged configuration to use if any are available and 1371 1.1 riastrad # if one wasn't chosen via the "--tag" command line option. 1372 1.1 riastrad # Only attempt this if the compiler in the base compile 1373 1.1 riastrad # command doesn't match the default compiler. 1374 1.1 riastrad # arg is usually of the form 'gcc ...' 1375 1.1 riastrad func_infer_tag () 1376 1.1 riastrad { 1377 1.1 riastrad $opt_debug 1378 1.1 riastrad if test -n "$available_tags" && test -z "$tagname"; then 1379 1.1 riastrad CC_quoted= 1380 1.1 riastrad for arg in $CC; do 1381 1.1 riastrad func_append_quoted CC_quoted "$arg" 1382 1.1 riastrad done 1383 1.1 riastrad CC_expanded=`func_echo_all $CC` 1384 1.1 riastrad CC_quoted_expanded=`func_echo_all $CC_quoted` 1385 1.1 riastrad case $@ in 1386 1.1 riastrad # Blanks in the command may have been stripped by the calling shell, 1387 1.1 riastrad # but not from the CC environment variable when configure was run. 1388 1.1 riastrad " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1389 1.1 riastrad " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 1390 1.1 riastrad # Blanks at the start of $base_compile will cause this to fail 1391 1.1 riastrad # if we don't check for them as well. 1392 1.1 riastrad *) 1393 1.1 riastrad for z in $available_tags; do 1394 1.1 riastrad if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1395 1.1 riastrad # Evaluate the configuration. 1396 1.1 riastrad eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1397 1.1 riastrad CC_quoted= 1398 1.1 riastrad for arg in $CC; do 1399 1.1 riastrad # Double-quote args containing other shell metacharacters. 1400 1.1 riastrad func_append_quoted CC_quoted "$arg" 1401 1.1 riastrad done 1402 1.1 riastrad CC_expanded=`func_echo_all $CC` 1403 1.1 riastrad CC_quoted_expanded=`func_echo_all $CC_quoted` 1404 1.1 riastrad case "$@ " in 1405 1.1 riastrad " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1406 1.1 riastrad " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 1407 1.1 riastrad # The compiler in the base compile command matches 1408 1.1 riastrad # the one in the tagged configuration. 1409 1.1 riastrad # Assume this is the tagged configuration we want. 1410 1.1 riastrad tagname=$z 1411 1.1 riastrad break 1412 1.1 riastrad ;; 1413 1.1 riastrad esac 1414 1.1 riastrad fi 1415 1.1 riastrad done 1416 1.1 riastrad # If $tagname still isn't set, then no tagged configuration 1417 1.1 riastrad # was found and let the user know that the "--tag" command 1418 1.1 riastrad # line option must be used. 1419 1.1 riastrad if test -z "$tagname"; then 1420 1.1 riastrad func_echo "unable to infer tagged configuration" 1421 1.1 riastrad func_fatal_error "specify a tag with \`--tag'" 1422 1.1 riastrad # else 1423 1.1 riastrad # func_verbose "using $tagname tagged configuration" 1424 1.1 riastrad fi 1425 1.1 riastrad ;; 1426 1.1 riastrad esac 1427 1.1 riastrad fi 1428 1.1 riastrad } 1429 1.1 riastrad 1430 1.1 riastrad 1431 1.1 riastrad 1432 1.1 riastrad # func_write_libtool_object output_name pic_name nonpic_name 1433 1.1 riastrad # Create a libtool object file (analogous to a ".la" file), 1434 1.1 riastrad # but don't create it if we're doing a dry run. 1435 1.1 riastrad func_write_libtool_object () 1436 1.1 riastrad { 1437 1.1 riastrad write_libobj=${1} 1438 1.1 riastrad if test "$build_libtool_libs" = yes; then 1439 1.1 riastrad write_lobj=\'${2}\' 1440 1.1 riastrad else 1441 1.1 riastrad write_lobj=none 1442 1.1 riastrad fi 1443 1.1 riastrad 1444 1.1 riastrad if test "$build_old_libs" = yes; then 1445 1.1 riastrad write_oldobj=\'${3}\' 1446 1.1 riastrad else 1447 1.1 riastrad write_oldobj=none 1448 1.1 riastrad fi 1449 1.1 riastrad 1450 1.1 riastrad $opt_dry_run || { 1451 1.1 riastrad cat >${write_libobj}T <<EOF 1452 1.1 riastrad # $write_libobj - a libtool object file 1453 1.1 riastrad # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1454 1.1 riastrad # 1455 1.1 riastrad # Please DO NOT delete this file! 1456 1.1 riastrad # It is necessary for linking the library. 1457 1.1 riastrad 1458 1.1 riastrad # Name of the PIC object. 1459 1.1 riastrad pic_object=$write_lobj 1460 1.1 riastrad 1461 1.1 riastrad # Name of the non-PIC object 1462 1.1 riastrad non_pic_object=$write_oldobj 1463 1.1 riastrad 1464 1.1 riastrad EOF 1465 1.1 riastrad $MV "${write_libobj}T" "${write_libobj}" 1466 1.1 riastrad } 1467 1.1 riastrad } 1468 1.1 riastrad 1469 1.1 riastrad 1470 1.1 riastrad ################################################## 1471 1.1 riastrad # FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 1472 1.1 riastrad ################################################## 1473 1.1 riastrad 1474 1.1 riastrad # func_convert_core_file_wine_to_w32 ARG 1475 1.1 riastrad # Helper function used by file name conversion functions when $build is *nix, 1476 1.1 riastrad # and $host is mingw, cygwin, or some other w32 environment. Relies on a 1477 1.1 riastrad # correctly configured wine environment available, with the winepath program 1478 1.1 riastrad # in $build's $PATH. 1479 1.1 riastrad # 1480 1.1 riastrad # ARG is the $build file name to be converted to w32 format. 1481 1.1 riastrad # Result is available in $func_convert_core_file_wine_to_w32_result, and will 1482 1.1 riastrad # be empty on error (or when ARG is empty) 1483 1.1 riastrad func_convert_core_file_wine_to_w32 () 1484 1.1 riastrad { 1485 1.1 riastrad $opt_debug 1486 1.1 riastrad func_convert_core_file_wine_to_w32_result="$1" 1487 1.1 riastrad if test -n "$1"; then 1488 1.1 riastrad # Unfortunately, winepath does not exit with a non-zero error code, so we 1489 1.1 riastrad # are forced to check the contents of stdout. On the other hand, if the 1490 1.1 riastrad # command is not found, the shell will set an exit code of 127 and print 1491 1.1 riastrad # *an error message* to stdout. So we must check for both error code of 1492 1.1 riastrad # zero AND non-empty stdout, which explains the odd construction: 1493 1.1 riastrad func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 1494 1.1 riastrad if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 1495 1.1 riastrad func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 1496 1.1 riastrad $SED -e "$lt_sed_naive_backslashify"` 1497 1.1 riastrad else 1498 1.1 riastrad func_convert_core_file_wine_to_w32_result= 1499 1.1 riastrad fi 1500 1.1 riastrad fi 1501 1.1 riastrad } 1502 1.1 riastrad # end: func_convert_core_file_wine_to_w32 1503 1.1 riastrad 1504 1.1 riastrad 1505 1.1 riastrad # func_convert_core_path_wine_to_w32 ARG 1506 1.1 riastrad # Helper function used by path conversion functions when $build is *nix, and 1507 1.1 riastrad # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 1508 1.1 riastrad # configured wine environment available, with the winepath program in $build's 1509 1.1 riastrad # $PATH. Assumes ARG has no leading or trailing path separator characters. 1510 1.1 riastrad # 1511 1.1 riastrad # ARG is path to be converted from $build format to win32. 1512 1.1 riastrad # Result is available in $func_convert_core_path_wine_to_w32_result. 1513 1.1 riastrad # Unconvertible file (directory) names in ARG are skipped; if no directory names 1514 1.1 riastrad # are convertible, then the result may be empty. 1515 1.1 riastrad func_convert_core_path_wine_to_w32 () 1516 1.1 riastrad { 1517 1.1 riastrad $opt_debug 1518 1.1 riastrad # unfortunately, winepath doesn't convert paths, only file names 1519 1.1 riastrad func_convert_core_path_wine_to_w32_result="" 1520 1.1 riastrad if test -n "$1"; then 1521 1.1 riastrad oldIFS=$IFS 1522 1.1 riastrad IFS=: 1523 1.1 riastrad for func_convert_core_path_wine_to_w32_f in $1; do 1524 1.1 riastrad IFS=$oldIFS 1525 1.1 riastrad func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 1526 1.1 riastrad if test -n "$func_convert_core_file_wine_to_w32_result" ; then 1527 1.1 riastrad if test -z "$func_convert_core_path_wine_to_w32_result"; then 1528 1.1 riastrad func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 1529 1.1 riastrad else 1530 1.1 riastrad func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 1531 1.1 riastrad fi 1532 1.1 riastrad fi 1533 1.1 riastrad done 1534 1.1 riastrad IFS=$oldIFS 1535 1.1 riastrad fi 1536 1.1 riastrad } 1537 1.1 riastrad # end: func_convert_core_path_wine_to_w32 1538 1.1 riastrad 1539 1.1 riastrad 1540 1.1 riastrad # func_cygpath ARGS... 1541 1.1 riastrad # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 1542 1.1 riastrad # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 1543 1.1 riastrad # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 1544 1.1 riastrad # (2), returns the Cygwin file name or path in func_cygpath_result (input 1545 1.1 riastrad # file name or path is assumed to be in w32 format, as previously converted 1546 1.1 riastrad # from $build's *nix or MSYS format). In case (3), returns the w32 file name 1547 1.1 riastrad # or path in func_cygpath_result (input file name or path is assumed to be in 1548 1.1 riastrad # Cygwin format). Returns an empty string on error. 1549 1.1 riastrad # 1550 1.1 riastrad # ARGS are passed to cygpath, with the last one being the file name or path to 1551 1.1 riastrad # be converted. 1552 1.1 riastrad # 1553 1.1 riastrad # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 1554 1.1 riastrad # environment variable; do not put it in $PATH. 1555 1.1 riastrad func_cygpath () 1556 1.1 riastrad { 1557 1.1 riastrad $opt_debug 1558 1.1 riastrad if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 1559 1.1 riastrad func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 1560 1.1 riastrad if test "$?" -ne 0; then 1561 1.1 riastrad # on failure, ensure result is empty 1562 1.1 riastrad func_cygpath_result= 1563 1.1 riastrad fi 1564 1.1 riastrad else 1565 1.1 riastrad func_cygpath_result= 1566 1.1 riastrad func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 1567 1.1 riastrad fi 1568 1.1 riastrad } 1569 1.1 riastrad #end: func_cygpath 1570 1.1 riastrad 1571 1.1 riastrad 1572 1.1 riastrad # func_convert_core_msys_to_w32 ARG 1573 1.1 riastrad # Convert file name or path ARG from MSYS format to w32 format. Return 1574 1.1 riastrad # result in func_convert_core_msys_to_w32_result. 1575 1.1 riastrad func_convert_core_msys_to_w32 () 1576 1.1 riastrad { 1577 1.1 riastrad $opt_debug 1578 1.1 riastrad # awkward: cmd appends spaces to result 1579 1.1 riastrad func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 1580 1.1 riastrad $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 1581 1.1 riastrad } 1582 1.1 riastrad #end: func_convert_core_msys_to_w32 1583 1.1 riastrad 1584 1.1 riastrad 1585 1.1 riastrad # func_convert_file_check ARG1 ARG2 1586 1.1 riastrad # Verify that ARG1 (a file name in $build format) was converted to $host 1587 1.1 riastrad # format in ARG2. Otherwise, emit an error message, but continue (resetting 1588 1.1 riastrad # func_to_host_file_result to ARG1). 1589 1.1 riastrad func_convert_file_check () 1590 1.1 riastrad { 1591 1.1 riastrad $opt_debug 1592 1.1 riastrad if test -z "$2" && test -n "$1" ; then 1593 1.1 riastrad func_error "Could not determine host file name corresponding to" 1594 1.1 riastrad func_error " \`$1'" 1595 1.1 riastrad func_error "Continuing, but uninstalled executables may not work." 1596 1.1 riastrad # Fallback: 1597 1.1 riastrad func_to_host_file_result="$1" 1598 1.1 riastrad fi 1599 1.1 riastrad } 1600 1.1 riastrad # end func_convert_file_check 1601 1.1 riastrad 1602 1.1 riastrad 1603 1.1 riastrad # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 1604 1.1 riastrad # Verify that FROM_PATH (a path in $build format) was converted to $host 1605 1.1 riastrad # format in TO_PATH. Otherwise, emit an error message, but continue, resetting 1606 1.1 riastrad # func_to_host_file_result to a simplistic fallback value (see below). 1607 1.1 riastrad func_convert_path_check () 1608 1.1 riastrad { 1609 1.1 riastrad $opt_debug 1610 1.1 riastrad if test -z "$4" && test -n "$3"; then 1611 1.1 riastrad func_error "Could not determine the host path corresponding to" 1612 1.1 riastrad func_error " \`$3'" 1613 1.1 riastrad func_error "Continuing, but uninstalled executables may not work." 1614 1.1 riastrad # Fallback. This is a deliberately simplistic "conversion" and 1615 1.1 riastrad # should not be "improved". See libtool.info. 1616 1.1 riastrad if test "x$1" != "x$2"; then 1617 1.1 riastrad lt_replace_pathsep_chars="s|$1|$2|g" 1618 1.1 riastrad func_to_host_path_result=`echo "$3" | 1619 1.1 riastrad $SED -e "$lt_replace_pathsep_chars"` 1620 1.1 riastrad else 1621 1.1 riastrad func_to_host_path_result="$3" 1622 1.1 riastrad fi 1623 1.1 riastrad fi 1624 1.1 riastrad } 1625 1.1 riastrad # end func_convert_path_check 1626 1.1 riastrad 1627 1.1 riastrad 1628 1.1 riastrad # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 1629 1.1 riastrad # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 1630 1.1 riastrad # and appending REPL if ORIG matches BACKPAT. 1631 1.1 riastrad func_convert_path_front_back_pathsep () 1632 1.1 riastrad { 1633 1.1 riastrad $opt_debug 1634 1.1 riastrad case $4 in 1635 1.1 riastrad $1 ) func_to_host_path_result="$3$func_to_host_path_result" 1636 1.1 riastrad ;; 1637 1.1 riastrad esac 1638 1.1 riastrad case $4 in 1639 1.1 riastrad $2 ) func_append func_to_host_path_result "$3" 1640 1.1 riastrad ;; 1641 1.1 riastrad esac 1642 1.1 riastrad } 1643 1.1 riastrad # end func_convert_path_front_back_pathsep 1644 1.1 riastrad 1645 1.1 riastrad 1646 1.1 riastrad ################################################## 1647 1.1 riastrad # $build to $host FILE NAME CONVERSION FUNCTIONS # 1648 1.1 riastrad ################################################## 1649 1.1 riastrad # invoked via `$to_host_file_cmd ARG' 1650 1.1 riastrad # 1651 1.1 riastrad # In each case, ARG is the path to be converted from $build to $host format. 1652 1.1 riastrad # Result will be available in $func_to_host_file_result. 1653 1.1 riastrad 1654 1.1 riastrad 1655 1.1 riastrad # func_to_host_file ARG 1656 1.1 riastrad # Converts the file name ARG from $build format to $host format. Return result 1657 1.1 riastrad # in func_to_host_file_result. 1658 1.1 riastrad func_to_host_file () 1659 1.1 riastrad { 1660 1.1 riastrad $opt_debug 1661 1.1 riastrad $to_host_file_cmd "$1" 1662 1.1 riastrad } 1663 1.1 riastrad # end func_to_host_file 1664 1.1 riastrad 1665 1.1 riastrad 1666 1.1 riastrad # func_to_tool_file ARG LAZY 1667 1.1 riastrad # converts the file name ARG from $build format to toolchain format. Return 1668 1.1 riastrad # result in func_to_tool_file_result. If the conversion in use is listed 1669 1.1 riastrad # in (the comma separated) LAZY, no conversion takes place. 1670 1.1 riastrad func_to_tool_file () 1671 1.1 riastrad { 1672 1.1 riastrad $opt_debug 1673 1.1 riastrad case ,$2, in 1674 1.1 riastrad *,"$to_tool_file_cmd",*) 1675 1.1 riastrad func_to_tool_file_result=$1 1676 1.1 riastrad ;; 1677 1.1 riastrad *) 1678 1.1 riastrad $to_tool_file_cmd "$1" 1679 1.1 riastrad func_to_tool_file_result=$func_to_host_file_result 1680 1.1 riastrad ;; 1681 1.1 riastrad esac 1682 1.1 riastrad } 1683 1.1 riastrad # end func_to_tool_file 1684 1.1 riastrad 1685 1.1 riastrad 1686 1.1 riastrad # func_convert_file_noop ARG 1687 1.1 riastrad # Copy ARG to func_to_host_file_result. 1688 1.1 riastrad func_convert_file_noop () 1689 1.1 riastrad { 1690 1.1 riastrad func_to_host_file_result="$1" 1691 1.1 riastrad } 1692 1.1 riastrad # end func_convert_file_noop 1693 1.1 riastrad 1694 1.1 riastrad 1695 1.1 riastrad # func_convert_file_msys_to_w32 ARG 1696 1.1 riastrad # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 1697 1.1 riastrad # conversion to w32 is not available inside the cwrapper. Returns result in 1698 1.1 riastrad # func_to_host_file_result. 1699 1.1 riastrad func_convert_file_msys_to_w32 () 1700 1.1 riastrad { 1701 1.1 riastrad $opt_debug 1702 1.1 riastrad func_to_host_file_result="$1" 1703 1.1 riastrad if test -n "$1"; then 1704 1.1 riastrad func_convert_core_msys_to_w32 "$1" 1705 1.1 riastrad func_to_host_file_result="$func_convert_core_msys_to_w32_result" 1706 1.1 riastrad fi 1707 1.1 riastrad func_convert_file_check "$1" "$func_to_host_file_result" 1708 1.1 riastrad } 1709 1.1 riastrad # end func_convert_file_msys_to_w32 1710 1.1 riastrad 1711 1.1 riastrad 1712 1.1 riastrad # func_convert_file_cygwin_to_w32 ARG 1713 1.1 riastrad # Convert file name ARG from Cygwin to w32 format. Returns result in 1714 1.1 riastrad # func_to_host_file_result. 1715 1.1 riastrad func_convert_file_cygwin_to_w32 () 1716 1.1 riastrad { 1717 1.1 riastrad $opt_debug 1718 1.1 riastrad func_to_host_file_result="$1" 1719 1.1 riastrad if test -n "$1"; then 1720 1.1 riastrad # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 1721 1.1 riastrad # LT_CYGPATH in this case. 1722 1.1 riastrad func_to_host_file_result=`cygpath -m "$1"` 1723 1.1 riastrad fi 1724 1.1 riastrad func_convert_file_check "$1" "$func_to_host_file_result" 1725 1.1 riastrad } 1726 1.1 riastrad # end func_convert_file_cygwin_to_w32 1727 1.1 riastrad 1728 1.1 riastrad 1729 1.1 riastrad # func_convert_file_nix_to_w32 ARG 1730 1.1 riastrad # Convert file name ARG from *nix to w32 format. Requires a wine environment 1731 1.1 riastrad # and a working winepath. Returns result in func_to_host_file_result. 1732 1.1 riastrad func_convert_file_nix_to_w32 () 1733 1.1 riastrad { 1734 1.1 riastrad $opt_debug 1735 1.1 riastrad func_to_host_file_result="$1" 1736 1.1 riastrad if test -n "$1"; then 1737 1.1 riastrad func_convert_core_file_wine_to_w32 "$1" 1738 1.1 riastrad func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 1739 1.1 riastrad fi 1740 1.1 riastrad func_convert_file_check "$1" "$func_to_host_file_result" 1741 1.1 riastrad } 1742 1.1 riastrad # end func_convert_file_nix_to_w32 1743 1.1 riastrad 1744 1.1 riastrad 1745 1.1 riastrad # func_convert_file_msys_to_cygwin ARG 1746 1.1 riastrad # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1747 1.1 riastrad # Returns result in func_to_host_file_result. 1748 1.1 riastrad func_convert_file_msys_to_cygwin () 1749 1.1 riastrad { 1750 1.1 riastrad $opt_debug 1751 1.1 riastrad func_to_host_file_result="$1" 1752 1.1 riastrad if test -n "$1"; then 1753 1.1 riastrad func_convert_core_msys_to_w32 "$1" 1754 1.1 riastrad func_cygpath -u "$func_convert_core_msys_to_w32_result" 1755 1.1 riastrad func_to_host_file_result="$func_cygpath_result" 1756 1.1 riastrad fi 1757 1.1 riastrad func_convert_file_check "$1" "$func_to_host_file_result" 1758 1.1 riastrad } 1759 1.1 riastrad # end func_convert_file_msys_to_cygwin 1760 1.1 riastrad 1761 1.1 riastrad 1762 1.1 riastrad # func_convert_file_nix_to_cygwin ARG 1763 1.1 riastrad # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 1764 1.1 riastrad # in a wine environment, working winepath, and LT_CYGPATH set. Returns result 1765 1.1 riastrad # in func_to_host_file_result. 1766 1.1 riastrad func_convert_file_nix_to_cygwin () 1767 1.1 riastrad { 1768 1.1 riastrad $opt_debug 1769 1.1 riastrad func_to_host_file_result="$1" 1770 1.1 riastrad if test -n "$1"; then 1771 1.1 riastrad # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 1772 1.1 riastrad func_convert_core_file_wine_to_w32 "$1" 1773 1.1 riastrad func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 1774 1.1 riastrad func_to_host_file_result="$func_cygpath_result" 1775 1.1 riastrad fi 1776 1.1 riastrad func_convert_file_check "$1" "$func_to_host_file_result" 1777 1.1 riastrad } 1778 1.1 riastrad # end func_convert_file_nix_to_cygwin 1779 1.1 riastrad 1780 1.1 riastrad 1781 1.1 riastrad ############################################# 1782 1.1 riastrad # $build to $host PATH CONVERSION FUNCTIONS # 1783 1.1 riastrad ############################################# 1784 1.1 riastrad # invoked via `$to_host_path_cmd ARG' 1785 1.1 riastrad # 1786 1.1 riastrad # In each case, ARG is the path to be converted from $build to $host format. 1787 1.1 riastrad # The result will be available in $func_to_host_path_result. 1788 1.1 riastrad # 1789 1.1 riastrad # Path separators are also converted from $build format to $host format. If 1790 1.1 riastrad # ARG begins or ends with a path separator character, it is preserved (but 1791 1.1 riastrad # converted to $host format) on output. 1792 1.1 riastrad # 1793 1.1 riastrad # All path conversion functions are named using the following convention: 1794 1.1 riastrad # file name conversion function : func_convert_file_X_to_Y () 1795 1.1 riastrad # path conversion function : func_convert_path_X_to_Y () 1796 1.1 riastrad # where, for any given $build/$host combination the 'X_to_Y' value is the 1797 1.1 riastrad # same. If conversion functions are added for new $build/$host combinations, 1798 1.1 riastrad # the two new functions must follow this pattern, or func_init_to_host_path_cmd 1799 1.1 riastrad # will break. 1800 1.1 riastrad 1801 1.1 riastrad 1802 1.1 riastrad # func_init_to_host_path_cmd 1803 1.1 riastrad # Ensures that function "pointer" variable $to_host_path_cmd is set to the 1804 1.1 riastrad # appropriate value, based on the value of $to_host_file_cmd. 1805 1.1 riastrad to_host_path_cmd= 1806 1.1 riastrad func_init_to_host_path_cmd () 1807 1.1 riastrad { 1808 1.1 riastrad $opt_debug 1809 1.1 riastrad if test -z "$to_host_path_cmd"; then 1810 1.1 riastrad func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 1811 1.1 riastrad to_host_path_cmd="func_convert_path_${func_stripname_result}" 1812 1.1 riastrad fi 1813 1.1 riastrad } 1814 1.1 riastrad 1815 1.1 riastrad 1816 1.1 riastrad # func_to_host_path ARG 1817 1.1 riastrad # Converts the path ARG from $build format to $host format. Return result 1818 1.1 riastrad # in func_to_host_path_result. 1819 1.1 riastrad func_to_host_path () 1820 1.1 riastrad { 1821 1.1 riastrad $opt_debug 1822 1.1 riastrad func_init_to_host_path_cmd 1823 1.1 riastrad $to_host_path_cmd "$1" 1824 1.1 riastrad } 1825 1.1 riastrad # end func_to_host_path 1826 1.1 riastrad 1827 1.1 riastrad 1828 1.1 riastrad # func_convert_path_noop ARG 1829 1.1 riastrad # Copy ARG to func_to_host_path_result. 1830 1.1 riastrad func_convert_path_noop () 1831 1.1 riastrad { 1832 1.1 riastrad func_to_host_path_result="$1" 1833 1.1 riastrad } 1834 1.1 riastrad # end func_convert_path_noop 1835 1.1 riastrad 1836 1.1 riastrad 1837 1.1 riastrad # func_convert_path_msys_to_w32 ARG 1838 1.1 riastrad # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 1839 1.1 riastrad # conversion to w32 is not available inside the cwrapper. Returns result in 1840 1.1 riastrad # func_to_host_path_result. 1841 1.1 riastrad func_convert_path_msys_to_w32 () 1842 1.1 riastrad { 1843 1.1 riastrad $opt_debug 1844 1.1 riastrad func_to_host_path_result="$1" 1845 1.1 riastrad if test -n "$1"; then 1846 1.1 riastrad # Remove leading and trailing path separator characters from ARG. MSYS 1847 1.1 riastrad # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 1848 1.1 riastrad # and winepath ignores them completely. 1849 1.1 riastrad func_stripname : : "$1" 1850 1.1 riastrad func_to_host_path_tmp1=$func_stripname_result 1851 1.1 riastrad func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1852 1.1 riastrad func_to_host_path_result="$func_convert_core_msys_to_w32_result" 1853 1.1 riastrad func_convert_path_check : ";" \ 1854 1.1 riastrad "$func_to_host_path_tmp1" "$func_to_host_path_result" 1855 1.1 riastrad func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1856 1.1 riastrad fi 1857 1.1 riastrad } 1858 1.1 riastrad # end func_convert_path_msys_to_w32 1859 1.1 riastrad 1860 1.1 riastrad 1861 1.1 riastrad # func_convert_path_cygwin_to_w32 ARG 1862 1.1 riastrad # Convert path ARG from Cygwin to w32 format. Returns result in 1863 1.1 riastrad # func_to_host_file_result. 1864 1.1 riastrad func_convert_path_cygwin_to_w32 () 1865 1.1 riastrad { 1866 1.1 riastrad $opt_debug 1867 1.1 riastrad func_to_host_path_result="$1" 1868 1.1 riastrad if test -n "$1"; then 1869 1.1 riastrad # See func_convert_path_msys_to_w32: 1870 1.1 riastrad func_stripname : : "$1" 1871 1.1 riastrad func_to_host_path_tmp1=$func_stripname_result 1872 1.1 riastrad func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 1873 1.1 riastrad func_convert_path_check : ";" \ 1874 1.1 riastrad "$func_to_host_path_tmp1" "$func_to_host_path_result" 1875 1.1 riastrad func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1876 1.1 riastrad fi 1877 1.1 riastrad } 1878 1.1 riastrad # end func_convert_path_cygwin_to_w32 1879 1.1 riastrad 1880 1.1 riastrad 1881 1.1 riastrad # func_convert_path_nix_to_w32 ARG 1882 1.1 riastrad # Convert path ARG from *nix to w32 format. Requires a wine environment and 1883 1.1 riastrad # a working winepath. Returns result in func_to_host_file_result. 1884 1.1 riastrad func_convert_path_nix_to_w32 () 1885 1.1 riastrad { 1886 1.1 riastrad $opt_debug 1887 1.1 riastrad func_to_host_path_result="$1" 1888 1.1 riastrad if test -n "$1"; then 1889 1.1 riastrad # See func_convert_path_msys_to_w32: 1890 1.1 riastrad func_stripname : : "$1" 1891 1.1 riastrad func_to_host_path_tmp1=$func_stripname_result 1892 1.1 riastrad func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1893 1.1 riastrad func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 1894 1.1 riastrad func_convert_path_check : ";" \ 1895 1.1 riastrad "$func_to_host_path_tmp1" "$func_to_host_path_result" 1896 1.1 riastrad func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1897 1.1 riastrad fi 1898 1.1 riastrad } 1899 1.1 riastrad # end func_convert_path_nix_to_w32 1900 1.1 riastrad 1901 1.1 riastrad 1902 1.1 riastrad # func_convert_path_msys_to_cygwin ARG 1903 1.1 riastrad # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1904 1.1 riastrad # Returns result in func_to_host_file_result. 1905 1.1 riastrad func_convert_path_msys_to_cygwin () 1906 1.1 riastrad { 1907 1.1 riastrad $opt_debug 1908 1.1 riastrad func_to_host_path_result="$1" 1909 1.1 riastrad if test -n "$1"; then 1910 1.1 riastrad # See func_convert_path_msys_to_w32: 1911 1.1 riastrad func_stripname : : "$1" 1912 1.1 riastrad func_to_host_path_tmp1=$func_stripname_result 1913 1.1 riastrad func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1914 1.1 riastrad func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 1915 1.1 riastrad func_to_host_path_result="$func_cygpath_result" 1916 1.1 riastrad func_convert_path_check : : \ 1917 1.1 riastrad "$func_to_host_path_tmp1" "$func_to_host_path_result" 1918 1.1 riastrad func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1919 1.1 riastrad fi 1920 1.1 riastrad } 1921 1.1 riastrad # end func_convert_path_msys_to_cygwin 1922 1.1 riastrad 1923 1.1 riastrad 1924 1.1 riastrad # func_convert_path_nix_to_cygwin ARG 1925 1.1 riastrad # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 1926 1.1 riastrad # a wine environment, working winepath, and LT_CYGPATH set. Returns result in 1927 1.1 riastrad # func_to_host_file_result. 1928 1.1 riastrad func_convert_path_nix_to_cygwin () 1929 1.1 riastrad { 1930 1.1 riastrad $opt_debug 1931 1.1 riastrad func_to_host_path_result="$1" 1932 1.1 riastrad if test -n "$1"; then 1933 1.1 riastrad # Remove leading and trailing path separator characters from 1934 1.1 riastrad # ARG. msys behavior is inconsistent here, cygpath turns them 1935 1.1 riastrad # into '.;' and ';.', and winepath ignores them completely. 1936 1.1 riastrad func_stripname : : "$1" 1937 1.1 riastrad func_to_host_path_tmp1=$func_stripname_result 1938 1.1 riastrad func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1939 1.1 riastrad func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 1940 1.1 riastrad func_to_host_path_result="$func_cygpath_result" 1941 1.1 riastrad func_convert_path_check : : \ 1942 1.1 riastrad "$func_to_host_path_tmp1" "$func_to_host_path_result" 1943 1.1 riastrad func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1944 1.1 riastrad fi 1945 1.1 riastrad } 1946 1.1 riastrad # end func_convert_path_nix_to_cygwin 1947 1.1 riastrad 1948 1.1 riastrad 1949 1.1 riastrad # func_mode_compile arg... 1950 1.1 riastrad func_mode_compile () 1951 1.1 riastrad { 1952 1.1 riastrad $opt_debug 1953 1.1 riastrad # Get the compilation command and the source file. 1954 1.1 riastrad base_compile= 1955 1.1 riastrad srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1956 1.1 riastrad suppress_opt=yes 1957 1.1 riastrad suppress_output= 1958 1.1 riastrad arg_mode=normal 1959 1.1 riastrad libobj= 1960 1.1 riastrad later= 1961 1.1 riastrad pie_flag= 1962 1.1 riastrad 1963 1.1 riastrad for arg 1964 1.1 riastrad do 1965 1.1 riastrad case $arg_mode in 1966 1.1 riastrad arg ) 1967 1.1 riastrad # do not "continue". Instead, add this to base_compile 1968 1.1 riastrad lastarg="$arg" 1969 1.1 riastrad arg_mode=normal 1970 1.1 riastrad ;; 1971 1.1 riastrad 1972 1.1 riastrad target ) 1973 1.1 riastrad libobj="$arg" 1974 1.1 riastrad arg_mode=normal 1975 1.1 riastrad continue 1976 1.1 riastrad ;; 1977 1.1 riastrad 1978 1.1 riastrad normal ) 1979 1.1 riastrad # Accept any command-line options. 1980 1.1 riastrad case $arg in 1981 1.1 riastrad -o) 1982 1.1 riastrad test -n "$libobj" && \ 1983 1.1 riastrad func_fatal_error "you cannot specify \`-o' more than once" 1984 1.1 riastrad arg_mode=target 1985 1.1 riastrad continue 1986 1.1 riastrad ;; 1987 1.1 riastrad 1988 1.1 riastrad -pie | -fpie | -fPIE) 1989 1.1 riastrad func_append pie_flag " $arg" 1990 1.1 riastrad continue 1991 1.1 riastrad ;; 1992 1.1 riastrad 1993 1.1 riastrad -shared | -static | -prefer-pic | -prefer-non-pic) 1994 1.1 riastrad func_append later " $arg" 1995 1.1 riastrad continue 1996 1.1 riastrad ;; 1997 1.1 riastrad 1998 1.1 riastrad -no-suppress) 1999 1.1 riastrad suppress_opt=no 2000 1.1 riastrad continue 2001 1.1 riastrad ;; 2002 1.1 riastrad 2003 1.1 riastrad -Xcompiler) 2004 1.1 riastrad arg_mode=arg # the next one goes into the "base_compile" arg list 2005 1.1 riastrad continue # The current "srcfile" will either be retained or 2006 1.1 riastrad ;; # replaced later. I would guess that would be a bug. 2007 1.1 riastrad 2008 1.1 riastrad -Wc,*) 2009 1.1 riastrad func_stripname '-Wc,' '' "$arg" 2010 1.1 riastrad args=$func_stripname_result 2011 1.1 riastrad lastarg= 2012 1.1 riastrad save_ifs="$IFS"; IFS=',' 2013 1.1 riastrad for arg in $args; do 2014 1.1 riastrad IFS="$save_ifs" 2015 1.1 riastrad func_append_quoted lastarg "$arg" 2016 1.1 riastrad done 2017 1.1 riastrad IFS="$save_ifs" 2018 1.1 riastrad func_stripname ' ' '' "$lastarg" 2019 1.1 riastrad lastarg=$func_stripname_result 2020 1.1 riastrad 2021 1.1 riastrad # Add the arguments to base_compile. 2022 1.1 riastrad func_append base_compile " $lastarg" 2023 1.1 riastrad continue 2024 1.1 riastrad ;; 2025 1.1 riastrad 2026 1.1 riastrad *) 2027 1.1 riastrad # Accept the current argument as the source file. 2028 1.1 riastrad # The previous "srcfile" becomes the current argument. 2029 1.1 riastrad # 2030 1.1 riastrad lastarg="$srcfile" 2031 1.1 riastrad srcfile="$arg" 2032 1.1 riastrad ;; 2033 1.1 riastrad esac # case $arg 2034 1.1 riastrad ;; 2035 1.1 riastrad esac # case $arg_mode 2036 1.1 riastrad 2037 1.1 riastrad # Aesthetically quote the previous argument. 2038 1.1 riastrad func_append_quoted base_compile "$lastarg" 2039 1.1 riastrad done # for arg 2040 1.1 riastrad 2041 1.1 riastrad case $arg_mode in 2042 1.1 riastrad arg) 2043 1.1 riastrad func_fatal_error "you must specify an argument for -Xcompile" 2044 1.1 riastrad ;; 2045 1.1 riastrad target) 2046 1.1 riastrad func_fatal_error "you must specify a target with \`-o'" 2047 1.1 riastrad ;; 2048 1.1 riastrad *) 2049 1.1 riastrad # Get the name of the library object. 2050 1.1 riastrad test -z "$libobj" && { 2051 1.1 riastrad func_basename "$srcfile" 2052 1.1 riastrad libobj="$func_basename_result" 2053 1.1 riastrad } 2054 1.1 riastrad ;; 2055 1.1 riastrad esac 2056 1.1 riastrad 2057 1.1 riastrad # Recognize several different file suffixes. 2058 1.1 riastrad # If the user specifies -o file.o, it is replaced with file.lo 2059 1.1 riastrad case $libobj in 2060 1.1 riastrad *.[cCFSifmso] | \ 2061 1.1 riastrad *.ada | *.adb | *.ads | *.asm | \ 2062 1.1 riastrad *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 2063 1.1 riastrad *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 2064 1.1 riastrad func_xform "$libobj" 2065 1.1 riastrad libobj=$func_xform_result 2066 1.1 riastrad ;; 2067 1.1 riastrad esac 2068 1.1 riastrad 2069 1.1 riastrad case $libobj in 2070 1.1 riastrad *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 2071 1.1 riastrad *) 2072 1.1 riastrad func_fatal_error "cannot determine name of library object from \`$libobj'" 2073 1.1 riastrad ;; 2074 1.1 riastrad esac 2075 1.1 riastrad 2076 1.1 riastrad func_infer_tag $base_compile 2077 1.1 riastrad 2078 1.1 riastrad for arg in $later; do 2079 1.1 riastrad case $arg in 2080 1.1 riastrad -shared) 2081 1.1 riastrad test "$build_libtool_libs" != yes && \ 2082 1.1 riastrad func_fatal_configuration "can not build a shared library" 2083 1.1 riastrad build_old_libs=no 2084 1.1 riastrad continue 2085 1.1 riastrad ;; 2086 1.1 riastrad 2087 1.1 riastrad -static) 2088 1.1 riastrad build_libtool_libs=no 2089 1.1 riastrad build_old_libs=yes 2090 1.1 riastrad continue 2091 1.1 riastrad ;; 2092 1.1 riastrad 2093 1.1 riastrad -prefer-pic) 2094 1.1 riastrad pic_mode=yes 2095 1.1 riastrad continue 2096 1.1 riastrad ;; 2097 1.1 riastrad 2098 1.1 riastrad -prefer-non-pic) 2099 1.1 riastrad pic_mode=no 2100 1.1 riastrad continue 2101 1.1 riastrad ;; 2102 1.1 riastrad esac 2103 1.1 riastrad done 2104 1.1 riastrad 2105 1.1 riastrad func_quote_for_eval "$libobj" 2106 1.1 riastrad test "X$libobj" != "X$func_quote_for_eval_result" \ 2107 1.1 riastrad && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 2108 1.1 riastrad && func_warning "libobj name \`$libobj' may not contain shell special characters." 2109 1.1 riastrad func_dirname_and_basename "$obj" "/" "" 2110 1.1 riastrad objname="$func_basename_result" 2111 1.1 riastrad xdir="$func_dirname_result" 2112 1.1 riastrad lobj=${xdir}$objdir/$objname 2113 1.1 riastrad 2114 1.1 riastrad test -z "$base_compile" && \ 2115 1.1 riastrad func_fatal_help "you must specify a compilation command" 2116 1.1 riastrad 2117 1.1 riastrad # Delete any leftover library objects. 2118 1.1 riastrad if test "$build_old_libs" = yes; then 2119 1.1 riastrad removelist="$obj $lobj $libobj ${libobj}T" 2120 1.1 riastrad else 2121 1.1 riastrad removelist="$lobj $libobj ${libobj}T" 2122 1.1 riastrad fi 2123 1.1 riastrad 2124 1.1 riastrad # On Cygwin there's no "real" PIC flag so we must build both object types 2125 1.1 riastrad case $host_os in 2126 1.1 riastrad cygwin* | mingw* | pw32* | os2* | cegcc*) 2127 1.1 riastrad pic_mode=default 2128 1.1 riastrad ;; 2129 1.1 riastrad esac 2130 1.1 riastrad if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 2131 1.1 riastrad # non-PIC code in shared libraries is not supported 2132 1.1 riastrad pic_mode=default 2133 1.1 riastrad fi 2134 1.1 riastrad 2135 1.1 riastrad # Calculate the filename of the output object if compiler does 2136 1.1 riastrad # not support -o with -c 2137 1.1 riastrad if test "$compiler_c_o" = no; then 2138 1.1 riastrad output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 2139 1.1 riastrad lockfile="$output_obj.lock" 2140 1.1 riastrad else 2141 1.1 riastrad output_obj= 2142 1.1 riastrad need_locks=no 2143 1.1 riastrad lockfile= 2144 1.1 riastrad fi 2145 1.1 riastrad 2146 1.1 riastrad # Lock this critical section if it is needed 2147 1.1 riastrad # We use this script file to make the link, it avoids creating a new file 2148 1.1 riastrad if test "$need_locks" = yes; then 2149 1.1 riastrad until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 2150 1.1 riastrad func_echo "Waiting for $lockfile to be removed" 2151 1.1 riastrad sleep 2 2152 1.1 riastrad done 2153 1.1 riastrad elif test "$need_locks" = warn; then 2154 1.1 riastrad if test -f "$lockfile"; then 2155 1.1 riastrad $ECHO "\ 2156 1.1 riastrad *** ERROR, $lockfile exists and contains: 2157 1.1 riastrad `cat $lockfile 2>/dev/null` 2158 1.1 riastrad 2159 1.1 riastrad This indicates that another process is trying to use the same 2160 1.1 riastrad temporary object file, and libtool could not work around it because 2161 1.1 riastrad your compiler does not support \`-c' and \`-o' together. If you 2162 1.1 riastrad repeat this compilation, it may succeed, by chance, but you had better 2163 1.1 riastrad avoid parallel builds (make -j) in this platform, or get a better 2164 1.1 riastrad compiler." 2165 1.1 riastrad 2166 1.1 riastrad $opt_dry_run || $RM $removelist 2167 1.1 riastrad exit $EXIT_FAILURE 2168 1.1 riastrad fi 2169 1.1 riastrad func_append removelist " $output_obj" 2170 1.1 riastrad $ECHO "$srcfile" > "$lockfile" 2171 1.1 riastrad fi 2172 1.1 riastrad 2173 1.1 riastrad $opt_dry_run || $RM $removelist 2174 1.1 riastrad func_append removelist " $lockfile" 2175 1.1 riastrad trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 2176 1.1 riastrad 2177 1.1 riastrad func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 2178 1.1 riastrad srcfile=$func_to_tool_file_result 2179 1.1 riastrad func_quote_for_eval "$srcfile" 2180 1.1 riastrad qsrcfile=$func_quote_for_eval_result 2181 1.1 riastrad 2182 1.1 riastrad # Only build a PIC object if we are building libtool libraries. 2183 1.1 riastrad if test "$build_libtool_libs" = yes; then 2184 1.1 riastrad # Without this assignment, base_compile gets emptied. 2185 1.1 riastrad fbsd_hideous_sh_bug=$base_compile 2186 1.1 riastrad 2187 1.1 riastrad if test "$pic_mode" != no; then 2188 1.1 riastrad command="$base_compile $qsrcfile $pic_flag" 2189 1.1 riastrad else 2190 1.1 riastrad # Don't build PIC code 2191 1.1 riastrad command="$base_compile $qsrcfile" 2192 1.1 riastrad fi 2193 1.1 riastrad 2194 1.1 riastrad func_mkdir_p "$xdir$objdir" 2195 1.1 riastrad 2196 1.1 riastrad if test -z "$output_obj"; then 2197 1.1 riastrad # Place PIC objects in $objdir 2198 1.1 riastrad func_append command " -o $lobj" 2199 1.1 riastrad fi 2200 1.1 riastrad 2201 1.1 riastrad func_show_eval_locale "$command" \ 2202 1.1 riastrad 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 2203 1.1 riastrad 2204 1.1 riastrad if test "$need_locks" = warn && 2205 1.1 riastrad test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2206 1.1 riastrad $ECHO "\ 2207 1.1 riastrad *** ERROR, $lockfile contains: 2208 1.1 riastrad `cat $lockfile 2>/dev/null` 2209 1.1 riastrad 2210 1.1 riastrad but it should contain: 2211 1.1 riastrad $srcfile 2212 1.1 riastrad 2213 1.1 riastrad This indicates that another process is trying to use the same 2214 1.1 riastrad temporary object file, and libtool could not work around it because 2215 1.1 riastrad your compiler does not support \`-c' and \`-o' together. If you 2216 1.1 riastrad repeat this compilation, it may succeed, by chance, but you had better 2217 1.1 riastrad avoid parallel builds (make -j) in this platform, or get a better 2218 1.1 riastrad compiler." 2219 1.1 riastrad 2220 1.1 riastrad $opt_dry_run || $RM $removelist 2221 1.1 riastrad exit $EXIT_FAILURE 2222 1.1 riastrad fi 2223 1.1 riastrad 2224 1.1 riastrad # Just move the object if needed, then go on to compile the next one 2225 1.1 riastrad if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 2226 1.1 riastrad func_show_eval '$MV "$output_obj" "$lobj"' \ 2227 1.1 riastrad 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2228 1.1 riastrad fi 2229 1.1 riastrad 2230 1.1 riastrad # Allow error messages only from the first compilation. 2231 1.1 riastrad if test "$suppress_opt" = yes; then 2232 1.1 riastrad suppress_output=' >/dev/null 2>&1' 2233 1.1 riastrad fi 2234 1.1 riastrad fi 2235 1.1 riastrad 2236 1.1 riastrad # Only build a position-dependent object if we build old libraries. 2237 1.1 riastrad if test "$build_old_libs" = yes; then 2238 1.1 riastrad if test "$pic_mode" != yes; then 2239 1.1 riastrad # Don't build PIC code 2240 1.1 riastrad command="$base_compile $qsrcfile$pie_flag" 2241 1.1 riastrad else 2242 1.1 riastrad command="$base_compile $qsrcfile $pic_flag" 2243 1.1 riastrad fi 2244 1.1 riastrad if test "$compiler_c_o" = yes; then 2245 1.1 riastrad func_append command " -o $obj" 2246 1.1 riastrad fi 2247 1.1 riastrad 2248 1.1 riastrad # Suppress compiler output if we already did a PIC compilation. 2249 1.1 riastrad func_append command "$suppress_output" 2250 1.1 riastrad func_show_eval_locale "$command" \ 2251 1.1 riastrad '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 2252 1.1 riastrad 2253 1.1 riastrad if test "$need_locks" = warn && 2254 1.1 riastrad test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2255 1.1 riastrad $ECHO "\ 2256 1.1 riastrad *** ERROR, $lockfile contains: 2257 1.1 riastrad `cat $lockfile 2>/dev/null` 2258 1.1 riastrad 2259 1.1 riastrad but it should contain: 2260 1.1 riastrad $srcfile 2261 1.1 riastrad 2262 1.1 riastrad This indicates that another process is trying to use the same 2263 1.1 riastrad temporary object file, and libtool could not work around it because 2264 1.1 riastrad your compiler does not support \`-c' and \`-o' together. If you 2265 1.1 riastrad repeat this compilation, it may succeed, by chance, but you had better 2266 1.1 riastrad avoid parallel builds (make -j) in this platform, or get a better 2267 1.1 riastrad compiler." 2268 1.1 riastrad 2269 1.1 riastrad $opt_dry_run || $RM $removelist 2270 1.1 riastrad exit $EXIT_FAILURE 2271 1.1 riastrad fi 2272 1.1 riastrad 2273 1.1 riastrad # Just move the object if needed 2274 1.1 riastrad if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 2275 1.1 riastrad func_show_eval '$MV "$output_obj" "$obj"' \ 2276 1.1 riastrad 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2277 1.1 riastrad fi 2278 1.1 riastrad fi 2279 1.1 riastrad 2280 1.1 riastrad $opt_dry_run || { 2281 1.1 riastrad func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 2282 1.1 riastrad 2283 1.1 riastrad # Unlock the critical section if it was locked 2284 1.1 riastrad if test "$need_locks" != no; then 2285 1.1 riastrad removelist=$lockfile 2286 1.1 riastrad $RM "$lockfile" 2287 1.1 riastrad fi 2288 1.1 riastrad } 2289 1.1 riastrad 2290 1.1 riastrad exit $EXIT_SUCCESS 2291 1.1 riastrad } 2292 1.1 riastrad 2293 1.1 riastrad $opt_help || { 2294 1.1 riastrad test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 2295 1.1 riastrad } 2296 1.1 riastrad 2297 1.1 riastrad func_mode_help () 2298 1.1 riastrad { 2299 1.1 riastrad # We need to display help for each of the modes. 2300 1.1 riastrad case $opt_mode in 2301 1.1 riastrad "") 2302 1.1 riastrad # Generic help is extracted from the usage comments 2303 1.1 riastrad # at the start of this file. 2304 1.1 riastrad func_help 2305 1.1 riastrad ;; 2306 1.1 riastrad 2307 1.1 riastrad clean) 2308 1.1 riastrad $ECHO \ 2309 1.1 riastrad "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 2310 1.1 riastrad 2311 1.1 riastrad Remove files from the build directory. 2312 1.1 riastrad 2313 1.1 riastrad RM is the name of the program to use to delete files associated with each FILE 2314 1.1 riastrad (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2315 1.1 riastrad to RM. 2316 1.1 riastrad 2317 1.1 riastrad If FILE is a libtool library, object or program, all the files associated 2318 1.1 riastrad with it are deleted. Otherwise, only FILE itself is deleted using RM." 2319 1.1 riastrad ;; 2320 1.1 riastrad 2321 1.1 riastrad compile) 2322 1.1 riastrad $ECHO \ 2323 1.1 riastrad "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2324 1.1 riastrad 2325 1.1 riastrad Compile a source file into a libtool library object. 2326 1.1 riastrad 2327 1.1 riastrad This mode accepts the following additional options: 2328 1.1 riastrad 2329 1.1 riastrad -o OUTPUT-FILE set the output file name to OUTPUT-FILE 2330 1.1 riastrad -no-suppress do not suppress compiler output for multiple passes 2331 1.1 riastrad -prefer-pic try to build PIC objects only 2332 1.1 riastrad -prefer-non-pic try to build non-PIC objects only 2333 1.1 riastrad -shared do not build a \`.o' file suitable for static linking 2334 1.1 riastrad -static only build a \`.o' file suitable for static linking 2335 1.1 riastrad -Wc,FLAG pass FLAG directly to the compiler 2336 1.1 riastrad 2337 1.1 riastrad COMPILE-COMMAND is a command to be used in creating a \`standard' object file 2338 1.1 riastrad from the given SOURCEFILE. 2339 1.1 riastrad 2340 1.1 riastrad The output file name is determined by removing the directory component from 2341 1.1 riastrad SOURCEFILE, then substituting the C source code suffix \`.c' with the 2342 1.1 riastrad library object suffix, \`.lo'." 2343 1.1 riastrad ;; 2344 1.1 riastrad 2345 1.1 riastrad execute) 2346 1.1 riastrad $ECHO \ 2347 1.1 riastrad "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 2348 1.1 riastrad 2349 1.1 riastrad Automatically set library path, then run a program. 2350 1.1 riastrad 2351 1.1 riastrad This mode accepts the following additional options: 2352 1.1 riastrad 2353 1.1 riastrad -dlopen FILE add the directory containing FILE to the library path 2354 1.1 riastrad 2355 1.1 riastrad This mode sets the library path environment variable according to \`-dlopen' 2356 1.1 riastrad flags. 2357 1.1 riastrad 2358 1.1 riastrad If any of the ARGS are libtool executable wrappers, then they are translated 2359 1.1 riastrad into their corresponding uninstalled binary, and any of their required library 2360 1.1 riastrad directories are added to the library path. 2361 1.1 riastrad 2362 1.1 riastrad Then, COMMAND is executed, with ARGS as arguments." 2363 1.1 riastrad ;; 2364 1.1 riastrad 2365 1.1 riastrad finish) 2366 1.1 riastrad $ECHO \ 2367 1.1 riastrad "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 2368 1.1 riastrad 2369 1.1 riastrad Complete the installation of libtool libraries. 2370 1.1 riastrad 2371 1.1 riastrad Each LIBDIR is a directory that contains libtool libraries. 2372 1.1 riastrad 2373 1.1 riastrad The commands that this mode executes may require superuser privileges. Use 2374 1.1 riastrad the \`--dry-run' option if you just want to see what would be executed." 2375 1.1 riastrad ;; 2376 1.1 riastrad 2377 1.1 riastrad install) 2378 1.1 riastrad $ECHO \ 2379 1.1 riastrad "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 2380 1.1 riastrad 2381 1.1 riastrad Install executables or libraries. 2382 1.1 riastrad 2383 1.1 riastrad INSTALL-COMMAND is the installation command. The first component should be 2384 1.1 riastrad either the \`install' or \`cp' program. 2385 1.1 riastrad 2386 1.1 riastrad The following components of INSTALL-COMMAND are treated specially: 2387 1.1 riastrad 2388 1.1 riastrad -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 2389 1.1 riastrad 2390 1.1 riastrad The rest of the components are interpreted as arguments to that command (only 2391 1.1 riastrad BSD-compatible install options are recognized)." 2392 1.1 riastrad ;; 2393 1.1 riastrad 2394 1.1 riastrad link) 2395 1.1 riastrad $ECHO \ 2396 1.1 riastrad "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 2397 1.1 riastrad 2398 1.1 riastrad Link object files or libraries together to form another library, or to 2399 1.1 riastrad create an executable program. 2400 1.1 riastrad 2401 1.1 riastrad LINK-COMMAND is a command using the C compiler that you would use to create 2402 1.1 riastrad a program from several object files. 2403 1.1 riastrad 2404 1.1 riastrad The following components of LINK-COMMAND are treated specially: 2405 1.1 riastrad 2406 1.1 riastrad -all-static do not do any dynamic linking at all 2407 1.1 riastrad -avoid-version do not add a version suffix if possible 2408 1.1 riastrad -bindir BINDIR specify path to binaries directory (for systems where 2409 1.1 riastrad libraries must be found in the PATH setting at runtime) 2410 1.1 riastrad -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 2411 1.1 riastrad -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 2412 1.1 riastrad -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 2413 1.1 riastrad -export-symbols SYMFILE 2414 1.1 riastrad try to export only the symbols listed in SYMFILE 2415 1.1 riastrad -export-symbols-regex REGEX 2416 1.1 riastrad try to export only the symbols matching REGEX 2417 1.1 riastrad -LLIBDIR search LIBDIR for required installed libraries 2418 1.1 riastrad -lNAME OUTPUT-FILE requires the installed library libNAME 2419 1.1 riastrad -module build a library that can dlopened 2420 1.1 riastrad -no-fast-install disable the fast-install mode 2421 1.1 riastrad -no-install link a not-installable executable 2422 1.1 riastrad -no-undefined declare that a library does not refer to external symbols 2423 1.1 riastrad -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 2424 1.1 riastrad -objectlist FILE Use a list of object files found in FILE to specify objects 2425 1.1 riastrad -precious-files-regex REGEX 2426 1.1 riastrad don't remove output files matching REGEX 2427 1.1 riastrad -release RELEASE specify package release information 2428 1.1 riastrad -rpath LIBDIR the created library will eventually be installed in LIBDIR 2429 1.1 riastrad -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 2430 1.1 riastrad -shared only do dynamic linking of libtool libraries 2431 1.1 riastrad -shrext SUFFIX override the standard shared library file extension 2432 1.1 riastrad -static do not do any dynamic linking of uninstalled libtool libraries 2433 1.1 riastrad -static-libtool-libs 2434 1.1 riastrad do not do any dynamic linking of libtool libraries 2435 1.1 riastrad -version-info CURRENT[:REVISION[:AGE]] 2436 1.1 riastrad specify library version info [each variable defaults to 0] 2437 1.1 riastrad -weak LIBNAME declare that the target provides the LIBNAME interface 2438 1.1 riastrad -Wc,FLAG 2439 1.1 riastrad -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 2440 1.1 riastrad -Wl,FLAG 2441 1.1 riastrad -Xlinker FLAG pass linker-specific FLAG directly to the linker 2442 1.1 riastrad -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 2443 1.1 riastrad 2444 1.1 riastrad All other options (arguments beginning with \`-') are ignored. 2445 1.1 riastrad 2446 1.1 riastrad Every other argument is treated as a filename. Files ending in \`.la' are 2447 1.1 riastrad treated as uninstalled libtool libraries, other files are standard or library 2448 1.1 riastrad object files. 2449 1.1 riastrad 2450 1.1 riastrad If the OUTPUT-FILE ends in \`.la', then a libtool library is created, 2451 1.1 riastrad only library objects (\`.lo' files) may be specified, and \`-rpath' is 2452 1.1 riastrad required, except when creating a convenience library. 2453 1.1 riastrad 2454 1.1 riastrad If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 2455 1.1 riastrad using \`ar' and \`ranlib', or on Windows using \`lib'. 2456 1.1 riastrad 2457 1.1 riastrad If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 2458 1.1 riastrad is created, otherwise an executable program is created." 2459 1.1 riastrad ;; 2460 1.1 riastrad 2461 1.1 riastrad uninstall) 2462 1.1 riastrad $ECHO \ 2463 1.1 riastrad "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 2464 1.1 riastrad 2465 1.1 riastrad Remove libraries from an installation directory. 2466 1.1 riastrad 2467 1.1 riastrad RM is the name of the program to use to delete files associated with each FILE 2468 1.1 riastrad (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2469 1.1 riastrad to RM. 2470 1.1 riastrad 2471 1.1 riastrad If FILE is a libtool library, all the files associated with it are deleted. 2472 1.1 riastrad Otherwise, only FILE itself is deleted using RM." 2473 1.1 riastrad ;; 2474 1.1 riastrad 2475 1.1 riastrad *) 2476 1.1 riastrad func_fatal_help "invalid operation mode \`$opt_mode'" 2477 1.1 riastrad ;; 2478 1.1 riastrad esac 2479 1.1 riastrad 2480 1.1 riastrad echo 2481 1.1 riastrad $ECHO "Try \`$progname --help' for more information about other modes." 2482 1.1 riastrad } 2483 1.1 riastrad 2484 1.1 riastrad # Now that we've collected a possible --mode arg, show help if necessary 2485 1.1 riastrad if $opt_help; then 2486 1.1 riastrad if test "$opt_help" = :; then 2487 1.1 riastrad func_mode_help 2488 1.1 riastrad else 2489 1.1 riastrad { 2490 1.1 riastrad func_help noexit 2491 1.1 riastrad for opt_mode in compile link execute install finish uninstall clean; do 2492 1.1 riastrad func_mode_help 2493 1.1 riastrad done 2494 1.1 riastrad } | sed -n '1p; 2,$s/^Usage:/ or: /p' 2495 1.1 riastrad { 2496 1.1 riastrad func_help noexit 2497 1.1 riastrad for opt_mode in compile link execute install finish uninstall clean; do 2498 1.1 riastrad echo 2499 1.1 riastrad func_mode_help 2500 1.1 riastrad done 2501 1.1 riastrad } | 2502 1.1 riastrad sed '1d 2503 1.1 riastrad /^When reporting/,/^Report/{ 2504 1.1 riastrad H 2505 1.1 riastrad d 2506 1.1 riastrad } 2507 1.1 riastrad $x 2508 1.1 riastrad /information about other modes/d 2509 1.1 riastrad /more detailed .*MODE/d 2510 1.1 riastrad s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 2511 1.1 riastrad fi 2512 1.1 riastrad exit $? 2513 1.1 riastrad fi 2514 1.1 riastrad 2515 1.1 riastrad 2516 1.1 riastrad # func_mode_execute arg... 2517 1.1 riastrad func_mode_execute () 2518 1.1 riastrad { 2519 1.1 riastrad $opt_debug 2520 1.1 riastrad # The first argument is the command name. 2521 1.1 riastrad cmd="$nonopt" 2522 1.1 riastrad test -z "$cmd" && \ 2523 1.1 riastrad func_fatal_help "you must specify a COMMAND" 2524 1.1 riastrad 2525 1.1 riastrad # Handle -dlopen flags immediately. 2526 1.1 riastrad for file in $opt_dlopen; do 2527 1.1 riastrad test -f "$file" \ 2528 1.1 riastrad || func_fatal_help "\`$file' is not a file" 2529 1.1 riastrad 2530 1.1 riastrad dir= 2531 1.1 riastrad case $file in 2532 1.1 riastrad *.la) 2533 1.1 riastrad func_resolve_sysroot "$file" 2534 1.1 riastrad file=$func_resolve_sysroot_result 2535 1.1 riastrad 2536 1.1 riastrad # Check to see that this really is a libtool archive. 2537 1.1 riastrad func_lalib_unsafe_p "$file" \ 2538 1.1 riastrad || func_fatal_help "\`$lib' is not a valid libtool archive" 2539 1.1 riastrad 2540 1.1 riastrad # Read the libtool library. 2541 1.1 riastrad dlname= 2542 1.1 riastrad library_names= 2543 1.1 riastrad func_source "$file" 2544 1.1 riastrad 2545 1.1 riastrad # Skip this library if it cannot be dlopened. 2546 1.1 riastrad if test -z "$dlname"; then 2547 1.1 riastrad # Warn if it was a shared library. 2548 1.1 riastrad test -n "$library_names" && \ 2549 1.1 riastrad func_warning "\`$file' was not linked with \`-export-dynamic'" 2550 1.1 riastrad continue 2551 1.1 riastrad fi 2552 1.1 riastrad 2553 1.1 riastrad func_dirname "$file" "" "." 2554 1.1 riastrad dir="$func_dirname_result" 2555 1.1 riastrad 2556 1.1 riastrad if test -f "$dir/$objdir/$dlname"; then 2557 1.1 riastrad func_append dir "/$objdir" 2558 1.1 riastrad else 2559 1.1 riastrad if test ! -f "$dir/$dlname"; then 2560 1.1 riastrad func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 2561 1.1 riastrad fi 2562 1.1 riastrad fi 2563 1.1 riastrad ;; 2564 1.1 riastrad 2565 1.1 riastrad *.lo) 2566 1.1 riastrad # Just add the directory containing the .lo file. 2567 1.1 riastrad func_dirname "$file" "" "." 2568 1.1 riastrad dir="$func_dirname_result" 2569 1.1 riastrad ;; 2570 1.1 riastrad 2571 1.1 riastrad *) 2572 1.1 riastrad func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 2573 1.1 riastrad continue 2574 1.1 riastrad ;; 2575 1.1 riastrad esac 2576 1.1 riastrad 2577 1.1 riastrad # Get the absolute pathname. 2578 1.1 riastrad absdir=`cd "$dir" && pwd` 2579 1.1 riastrad test -n "$absdir" && dir="$absdir" 2580 1.1 riastrad 2581 1.1 riastrad # Now add the directory to shlibpath_var. 2582 1.1 riastrad if eval "test -z \"\$$shlibpath_var\""; then 2583 1.1 riastrad eval "$shlibpath_var=\"\$dir\"" 2584 1.1 riastrad else 2585 1.1 riastrad eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 2586 1.1 riastrad fi 2587 1.1 riastrad done 2588 1.1 riastrad 2589 1.1 riastrad # This variable tells wrapper scripts just to set shlibpath_var 2590 1.1 riastrad # rather than running their programs. 2591 1.1 riastrad libtool_execute_magic="$magic" 2592 1.1 riastrad 2593 1.1 riastrad # Check if any of the arguments is a wrapper script. 2594 1.1 riastrad args= 2595 1.1 riastrad for file 2596 1.1 riastrad do 2597 1.1 riastrad case $file in 2598 1.1 riastrad -* | *.la | *.lo ) ;; 2599 1.1 riastrad *) 2600 1.1 riastrad # Do a test to see if this is really a libtool program. 2601 1.1 riastrad if func_ltwrapper_script_p "$file"; then 2602 1.1 riastrad func_source "$file" 2603 1.1 riastrad # Transform arg to wrapped name. 2604 1.1 riastrad file="$progdir/$program" 2605 1.1 riastrad elif func_ltwrapper_executable_p "$file"; then 2606 1.1 riastrad func_ltwrapper_scriptname "$file" 2607 1.1 riastrad func_source "$func_ltwrapper_scriptname_result" 2608 1.1 riastrad # Transform arg to wrapped name. 2609 1.1 riastrad file="$progdir/$program" 2610 1.1 riastrad fi 2611 1.1 riastrad ;; 2612 1.1 riastrad esac 2613 1.1 riastrad # Quote arguments (to preserve shell metacharacters). 2614 1.1 riastrad func_append_quoted args "$file" 2615 1.1 riastrad done 2616 1.1 riastrad 2617 1.1 riastrad if test "X$opt_dry_run" = Xfalse; then 2618 1.1 riastrad if test -n "$shlibpath_var"; then 2619 1.1 riastrad # Export the shlibpath_var. 2620 1.1 riastrad eval "export $shlibpath_var" 2621 1.1 riastrad fi 2622 1.1 riastrad 2623 1.1 riastrad # Restore saved environment variables 2624 1.1 riastrad for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 2625 1.1 riastrad do 2626 1.1 riastrad eval "if test \"\${save_$lt_var+set}\" = set; then 2627 1.1 riastrad $lt_var=\$save_$lt_var; export $lt_var 2628 1.1 riastrad else 2629 1.1 riastrad $lt_unset $lt_var 2630 1.1 riastrad fi" 2631 1.1 riastrad done 2632 1.1 riastrad 2633 1.1 riastrad # Now prepare to actually exec the command. 2634 1.1 riastrad exec_cmd="\$cmd$args" 2635 1.1 riastrad else 2636 1.1 riastrad # Display what would be done. 2637 1.1 riastrad if test -n "$shlibpath_var"; then 2638 1.1 riastrad eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 2639 1.1 riastrad echo "export $shlibpath_var" 2640 1.1 riastrad fi 2641 1.1 riastrad $ECHO "$cmd$args" 2642 1.1 riastrad exit $EXIT_SUCCESS 2643 1.1 riastrad fi 2644 1.1 riastrad } 2645 1.1 riastrad 2646 1.1 riastrad test "$opt_mode" = execute && func_mode_execute ${1+"$@"} 2647 1.1 riastrad 2648 1.1 riastrad 2649 1.1 riastrad # func_mode_finish arg... 2650 1.1 riastrad func_mode_finish () 2651 1.1 riastrad { 2652 1.1 riastrad $opt_debug 2653 1.1 riastrad libs= 2654 1.1 riastrad libdirs= 2655 1.1 riastrad admincmds= 2656 1.1 riastrad 2657 1.1 riastrad for opt in "$nonopt" ${1+"$@"} 2658 1.1 riastrad do 2659 1.1 riastrad if test -d "$opt"; then 2660 1.1 riastrad func_append libdirs " $opt" 2661 1.1 riastrad 2662 1.1 riastrad elif test -f "$opt"; then 2663 1.1 riastrad if func_lalib_unsafe_p "$opt"; then 2664 1.1 riastrad func_append libs " $opt" 2665 1.1 riastrad else 2666 1.1 riastrad func_warning "\`$opt' is not a valid libtool archive" 2667 1.1 riastrad fi 2668 1.1 riastrad 2669 1.1 riastrad else 2670 1.1 riastrad func_fatal_error "invalid argument \`$opt'" 2671 1.1 riastrad fi 2672 1.1 riastrad done 2673 1.1 riastrad 2674 1.1 riastrad if test -n "$libs"; then 2675 1.1 riastrad if test -n "$lt_sysroot"; then 2676 1.1 riastrad sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 2677 1.1 riastrad sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 2678 1.1 riastrad else 2679 1.1 riastrad sysroot_cmd= 2680 1.1 riastrad fi 2681 1.1 riastrad 2682 1.1 riastrad # Remove sysroot references 2683 1.1 riastrad if $opt_dry_run; then 2684 1.1 riastrad for lib in $libs; do 2685 1.1 riastrad echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 2686 1.1 riastrad done 2687 1.1 riastrad else 2688 1.1 riastrad tmpdir=`func_mktempdir` 2689 1.1 riastrad for lib in $libs; do 2690 1.1 riastrad sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 2691 1.1 riastrad > $tmpdir/tmp-la 2692 1.1 riastrad mv -f $tmpdir/tmp-la $lib 2693 1.1 riastrad done 2694 1.1 riastrad ${RM}r "$tmpdir" 2695 1.1 riastrad fi 2696 1.1 riastrad fi 2697 1.1 riastrad 2698 1.1 riastrad if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2699 1.1 riastrad for libdir in $libdirs; do 2700 1.1 riastrad if test -n "$finish_cmds"; then 2701 1.1 riastrad # Do each command in the finish commands. 2702 1.1 riastrad func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 2703 1.1 riastrad '"$cmd"'"' 2704 1.1 riastrad fi 2705 1.1 riastrad if test -n "$finish_eval"; then 2706 1.1 riastrad # Do the single finish_eval. 2707 1.1 riastrad eval cmds=\"$finish_eval\" 2708 1.1 riastrad $opt_dry_run || eval "$cmds" || func_append admincmds " 2709 1.1 riastrad $cmds" 2710 1.1 riastrad fi 2711 1.1 riastrad done 2712 1.1 riastrad fi 2713 1.1 riastrad 2714 1.1 riastrad # Exit here if they wanted silent mode. 2715 1.1 riastrad $opt_silent && exit $EXIT_SUCCESS 2716 1.1 riastrad 2717 1.1 riastrad if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2718 1.1 riastrad echo "----------------------------------------------------------------------" 2719 1.1 riastrad echo "Libraries have been installed in:" 2720 1.1 riastrad for libdir in $libdirs; do 2721 1.1 riastrad $ECHO " $libdir" 2722 1.1 riastrad done 2723 1.1 riastrad echo 2724 1.1 riastrad echo "If you ever happen to want to link against installed libraries" 2725 1.1 riastrad echo "in a given directory, LIBDIR, you must either use libtool, and" 2726 1.1 riastrad echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 2727 1.1 riastrad echo "flag during linking and do at least one of the following:" 2728 1.1 riastrad if test -n "$shlibpath_var"; then 2729 1.1 riastrad echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2730 1.1 riastrad echo " during execution" 2731 1.1 riastrad fi 2732 1.1 riastrad if test -n "$runpath_var"; then 2733 1.1 riastrad echo " - add LIBDIR to the \`$runpath_var' environment variable" 2734 1.1 riastrad echo " during linking" 2735 1.1 riastrad fi 2736 1.1 riastrad if test -n "$hardcode_libdir_flag_spec"; then 2737 1.1 riastrad libdir=LIBDIR 2738 1.1 riastrad eval flag=\"$hardcode_libdir_flag_spec\" 2739 1.1 riastrad 2740 1.1 riastrad $ECHO " - use the \`$flag' linker flag" 2741 1.1 riastrad fi 2742 1.1 riastrad if test -n "$admincmds"; then 2743 1.1 riastrad $ECHO " - have your system administrator run these commands:$admincmds" 2744 1.1 riastrad fi 2745 1.1 riastrad if test -f /etc/ld.so.conf; then 2746 1.1 riastrad echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2747 1.1 riastrad fi 2748 1.1 riastrad echo 2749 1.1 riastrad 2750 1.1 riastrad echo "See any operating system documentation about shared libraries for" 2751 1.1 riastrad case $host in 2752 1.1 riastrad solaris2.[6789]|solaris2.1[0-9]) 2753 1.1 riastrad echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 2754 1.1 riastrad echo "pages." 2755 1.1 riastrad ;; 2756 1.1 riastrad *) 2757 1.1 riastrad echo "more information, such as the ld(1) and ld.so(8) manual pages." 2758 1.1 riastrad ;; 2759 1.1 riastrad esac 2760 1.1 riastrad echo "----------------------------------------------------------------------" 2761 1.1 riastrad fi 2762 1.1 riastrad exit $EXIT_SUCCESS 2763 1.1 riastrad } 2764 1.1 riastrad 2765 1.1 riastrad test "$opt_mode" = finish && func_mode_finish ${1+"$@"} 2766 1.1 riastrad 2767 1.1 riastrad 2768 1.1 riastrad # func_mode_install arg... 2769 1.1 riastrad func_mode_install () 2770 1.1 riastrad { 2771 1.1 riastrad $opt_debug 2772 1.1 riastrad # There may be an optional sh(1) argument at the beginning of 2773 1.1 riastrad # install_prog (especially on Windows NT). 2774 1.1 riastrad if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 2775 1.1 riastrad # Allow the use of GNU shtool's install command. 2776 1.1 riastrad case $nonopt in *shtool*) :;; *) false;; esac; then 2777 1.1 riastrad # Aesthetically quote it. 2778 1.1 riastrad func_quote_for_eval "$nonopt" 2779 1.1 riastrad install_prog="$func_quote_for_eval_result " 2780 1.1 riastrad arg=$1 2781 1.1 riastrad shift 2782 1.1 riastrad else 2783 1.1 riastrad install_prog= 2784 1.1 riastrad arg=$nonopt 2785 1.1 riastrad fi 2786 1.1 riastrad 2787 1.1 riastrad # The real first argument should be the name of the installation program. 2788 1.1 riastrad # Aesthetically quote it. 2789 1.1 riastrad func_quote_for_eval "$arg" 2790 1.1 riastrad func_append install_prog "$func_quote_for_eval_result" 2791 1.1 riastrad install_shared_prog=$install_prog 2792 1.1 riastrad case " $install_prog " in 2793 1.1 riastrad *[\\\ /]cp\ *) install_cp=: ;; 2794 1.1 riastrad *) install_cp=false ;; 2795 1.1 riastrad esac 2796 1.1 riastrad 2797 1.1 riastrad # We need to accept at least all the BSD install flags. 2798 1.1 riastrad dest= 2799 1.1 riastrad files= 2800 1.1 riastrad opts= 2801 1.1 riastrad prev= 2802 1.1 riastrad install_type= 2803 1.1 riastrad isdir=no 2804 1.1 riastrad stripme= 2805 1.1 riastrad no_mode=: 2806 1.1 riastrad for arg 2807 1.1 riastrad do 2808 1.1 riastrad arg2= 2809 1.1 riastrad if test -n "$dest"; then 2810 1.1 riastrad func_append files " $dest" 2811 1.1 riastrad dest=$arg 2812 1.1 riastrad continue 2813 1.1 riastrad fi 2814 1.1 riastrad 2815 1.1 riastrad case $arg in 2816 1.1 riastrad -d) isdir=yes ;; 2817 1.1 riastrad -f) 2818 1.1 riastrad if $install_cp; then :; else 2819 1.1 riastrad prev=$arg 2820 1.1 riastrad fi 2821 1.1 riastrad ;; 2822 1.1 riastrad -g | -m | -o) 2823 1.1 riastrad prev=$arg 2824 1.1 riastrad ;; 2825 1.1 riastrad -s) 2826 1.1 riastrad stripme=" -s" 2827 1.1 riastrad continue 2828 1.1 riastrad ;; 2829 1.1 riastrad -*) 2830 1.1 riastrad ;; 2831 1.1 riastrad *) 2832 1.1 riastrad # If the previous option needed an argument, then skip it. 2833 1.1 riastrad if test -n "$prev"; then 2834 1.1 riastrad if test "x$prev" = x-m && test -n "$install_override_mode"; then 2835 1.1 riastrad arg2=$install_override_mode 2836 1.1 riastrad no_mode=false 2837 1.1 riastrad fi 2838 1.1 riastrad prev= 2839 1.1 riastrad else 2840 1.1 riastrad dest=$arg 2841 1.1 riastrad continue 2842 1.1 riastrad fi 2843 1.1 riastrad ;; 2844 1.1 riastrad esac 2845 1.1 riastrad 2846 1.1 riastrad # Aesthetically quote the argument. 2847 1.1 riastrad func_quote_for_eval "$arg" 2848 1.1 riastrad func_append install_prog " $func_quote_for_eval_result" 2849 1.1 riastrad if test -n "$arg2"; then 2850 1.1 riastrad func_quote_for_eval "$arg2" 2851 1.1 riastrad fi 2852 1.1 riastrad func_append install_shared_prog " $func_quote_for_eval_result" 2853 1.1 riastrad done 2854 1.1 riastrad 2855 1.1 riastrad test -z "$install_prog" && \ 2856 1.1 riastrad func_fatal_help "you must specify an install program" 2857 1.1 riastrad 2858 1.1 riastrad test -n "$prev" && \ 2859 1.1 riastrad func_fatal_help "the \`$prev' option requires an argument" 2860 1.1 riastrad 2861 1.1 riastrad if test -n "$install_override_mode" && $no_mode; then 2862 1.1 riastrad if $install_cp; then :; else 2863 1.1 riastrad func_quote_for_eval "$install_override_mode" 2864 1.1 riastrad func_append install_shared_prog " -m $func_quote_for_eval_result" 2865 1.1 riastrad fi 2866 1.1 riastrad fi 2867 1.1 riastrad 2868 1.1 riastrad if test -z "$files"; then 2869 1.1 riastrad if test -z "$dest"; then 2870 1.1 riastrad func_fatal_help "no file or destination specified" 2871 1.1 riastrad else 2872 1.1 riastrad func_fatal_help "you must specify a destination" 2873 1.1 riastrad fi 2874 1.1 riastrad fi 2875 1.1 riastrad 2876 1.1 riastrad # Strip any trailing slash from the destination. 2877 1.1 riastrad func_stripname '' '/' "$dest" 2878 1.1 riastrad dest=$func_stripname_result 2879 1.1 riastrad 2880 1.1 riastrad # Check to see that the destination is a directory. 2881 1.1 riastrad test -d "$dest" && isdir=yes 2882 1.1 riastrad if test "$isdir" = yes; then 2883 1.1 riastrad destdir="$dest" 2884 1.1 riastrad destname= 2885 1.1 riastrad else 2886 1.1 riastrad func_dirname_and_basename "$dest" "" "." 2887 1.1 riastrad destdir="$func_dirname_result" 2888 1.1 riastrad destname="$func_basename_result" 2889 1.1 riastrad 2890 1.1 riastrad # Not a directory, so check to see that there is only one file specified. 2891 1.1 riastrad set dummy $files; shift 2892 1.1 riastrad test "$#" -gt 1 && \ 2893 1.1 riastrad func_fatal_help "\`$dest' is not a directory" 2894 1.1 riastrad fi 2895 1.1 riastrad case $destdir in 2896 1.1 riastrad [\\/]* | [A-Za-z]:[\\/]*) ;; 2897 1.1 riastrad *) 2898 1.1 riastrad for file in $files; do 2899 1.1 riastrad case $file in 2900 1.1 riastrad *.lo) ;; 2901 1.1 riastrad *) 2902 1.1 riastrad func_fatal_help "\`$destdir' must be an absolute directory name" 2903 1.1 riastrad ;; 2904 1.1 riastrad esac 2905 1.1 riastrad done 2906 1.1 riastrad ;; 2907 1.1 riastrad esac 2908 1.1 riastrad 2909 1.1 riastrad # This variable tells wrapper scripts just to set variables rather 2910 1.1 riastrad # than running their programs. 2911 1.1 riastrad libtool_install_magic="$magic" 2912 1.1 riastrad 2913 1.1 riastrad staticlibs= 2914 1.1 riastrad future_libdirs= 2915 1.1 riastrad current_libdirs= 2916 1.1 riastrad for file in $files; do 2917 1.1 riastrad 2918 1.1 riastrad # Do each installation. 2919 1.1 riastrad case $file in 2920 1.1 riastrad *.$libext) 2921 1.1 riastrad # Do the static libraries later. 2922 1.1 riastrad func_append staticlibs " $file" 2923 1.1 riastrad ;; 2924 1.1 riastrad 2925 1.1 riastrad *.la) 2926 1.1 riastrad func_resolve_sysroot "$file" 2927 1.1 riastrad file=$func_resolve_sysroot_result 2928 1.1 riastrad 2929 1.1 riastrad # Check to see that this really is a libtool archive. 2930 1.1 riastrad func_lalib_unsafe_p "$file" \ 2931 1.1 riastrad || func_fatal_help "\`$file' is not a valid libtool archive" 2932 1.1 riastrad 2933 1.1 riastrad library_names= 2934 1.1 riastrad old_library= 2935 1.1 riastrad relink_command= 2936 1.1 riastrad func_source "$file" 2937 1.1 riastrad 2938 1.1 riastrad # Add the libdir to current_libdirs if it is the destination. 2939 1.1 riastrad if test "X$destdir" = "X$libdir"; then 2940 1.1 riastrad case "$current_libdirs " in 2941 1.1 riastrad *" $libdir "*) ;; 2942 1.1 riastrad *) func_append current_libdirs " $libdir" ;; 2943 1.1 riastrad esac 2944 1.1 riastrad else 2945 1.1 riastrad # Note the libdir as a future libdir. 2946 1.1 riastrad case "$future_libdirs " in 2947 1.1 riastrad *" $libdir "*) ;; 2948 1.1 riastrad *) func_append future_libdirs " $libdir" ;; 2949 1.1 riastrad esac 2950 1.1 riastrad fi 2951 1.1 riastrad 2952 1.1 riastrad func_dirname "$file" "/" "" 2953 1.1 riastrad dir="$func_dirname_result" 2954 1.1 riastrad func_append dir "$objdir" 2955 1.1 riastrad 2956 1.1 riastrad if test -n "$relink_command"; then 2957 1.1 riastrad # Determine the prefix the user has applied to our future dir. 2958 1.1 riastrad inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 2959 1.1 riastrad 2960 1.1 riastrad # Don't allow the user to place us outside of our expected 2961 1.1 riastrad # location b/c this prevents finding dependent libraries that 2962 1.1 riastrad # are installed to the same prefix. 2963 1.1 riastrad # At present, this check doesn't affect windows .dll's that 2964 1.1 riastrad # are installed into $libdir/../bin (currently, that works fine) 2965 1.1 riastrad # but it's something to keep an eye on. 2966 1.1 riastrad test "$inst_prefix_dir" = "$destdir" && \ 2967 1.1 riastrad func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2968 1.1 riastrad 2969 1.1 riastrad if test -n "$inst_prefix_dir"; then 2970 1.1 riastrad # Stick the inst_prefix_dir data into the link command. 2971 1.1 riastrad relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2972 1.1 riastrad else 2973 1.1 riastrad relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 2974 1.1 riastrad fi 2975 1.1 riastrad 2976 1.1 riastrad func_warning "relinking \`$file'" 2977 1.1 riastrad func_show_eval "$relink_command" \ 2978 1.1 riastrad 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2979 1.1 riastrad fi 2980 1.1 riastrad 2981 1.1 riastrad # See the names of the shared library. 2982 1.1 riastrad set dummy $library_names; shift 2983 1.1 riastrad if test -n "$1"; then 2984 1.1 riastrad realname="$1" 2985 1.1 riastrad shift 2986 1.1 riastrad 2987 1.1 riastrad srcname="$realname" 2988 1.1 riastrad test -n "$relink_command" && srcname="$realname"T 2989 1.1 riastrad 2990 1.1 riastrad # Install the shared library and build the symlinks. 2991 1.1 riastrad func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 2992 1.1 riastrad 'exit $?' 2993 1.1 riastrad tstripme="$stripme" 2994 1.1 riastrad case $host_os in 2995 1.1 riastrad cygwin* | mingw* | pw32* | cegcc*) 2996 1.1 riastrad case $realname in 2997 1.1 riastrad *.dll.a) 2998 1.1 riastrad tstripme="" 2999 1.1 riastrad ;; 3000 1.1 riastrad esac 3001 1.1 riastrad ;; 3002 1.1 riastrad esac 3003 1.1 riastrad if test -n "$tstripme" && test -n "$striplib"; then 3004 1.1 riastrad func_show_eval "$striplib $destdir/$realname" 'exit $?' 3005 1.1 riastrad fi 3006 1.1 riastrad 3007 1.1 riastrad if test "$#" -gt 0; then 3008 1.1 riastrad # Delete the old symlinks, and create new ones. 3009 1.1 riastrad # Try `ln -sf' first, because the `ln' binary might depend on 3010 1.1 riastrad # the symlink we replace! Solaris /bin/ln does not understand -f, 3011 1.1 riastrad # so we also need to try rm && ln -s. 3012 1.1 riastrad for linkname 3013 1.1 riastrad do 3014 1.1 riastrad test "$linkname" != "$realname" \ 3015 1.1 riastrad && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 3016 1.1 riastrad done 3017 1.1 riastrad fi 3018 1.1 riastrad 3019 1.1 riastrad # Do each command in the postinstall commands. 3020 1.1 riastrad lib="$destdir/$realname" 3021 1.1 riastrad func_execute_cmds "$postinstall_cmds" 'exit $?' 3022 1.1 riastrad fi 3023 1.1 riastrad 3024 1.1 riastrad # Install the pseudo-library for information purposes. 3025 1.1 riastrad func_basename "$file" 3026 1.1 riastrad name="$func_basename_result" 3027 1.1 riastrad instname="$dir/$name"i 3028 1.1 riastrad func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 3029 1.1 riastrad 3030 1.1 riastrad # Maybe install the static library, too. 3031 1.1 riastrad test -n "$old_library" && func_append staticlibs " $dir/$old_library" 3032 1.1 riastrad ;; 3033 1.1 riastrad 3034 1.1 riastrad *.lo) 3035 1.1 riastrad # Install (i.e. copy) a libtool object. 3036 1.1 riastrad 3037 1.1 riastrad # Figure out destination file name, if it wasn't already specified. 3038 1.1 riastrad if test -n "$destname"; then 3039 1.1 riastrad destfile="$destdir/$destname" 3040 1.1 riastrad else 3041 1.1 riastrad func_basename "$file" 3042 1.1 riastrad destfile="$func_basename_result" 3043 1.1 riastrad destfile="$destdir/$destfile" 3044 1.1 riastrad fi 3045 1.1 riastrad 3046 1.1 riastrad # Deduce the name of the destination old-style object file. 3047 1.1 riastrad case $destfile in 3048 1.1 riastrad *.lo) 3049 1.1 riastrad func_lo2o "$destfile" 3050 1.1 riastrad staticdest=$func_lo2o_result 3051 1.1 riastrad ;; 3052 1.1 riastrad *.$objext) 3053 1.1 riastrad staticdest="$destfile" 3054 1.1 riastrad destfile= 3055 1.1 riastrad ;; 3056 1.1 riastrad *) 3057 1.1 riastrad func_fatal_help "cannot copy a libtool object to \`$destfile'" 3058 1.1 riastrad ;; 3059 1.1 riastrad esac 3060 1.1 riastrad 3061 1.1 riastrad # Install the libtool object if requested. 3062 1.1 riastrad test -n "$destfile" && \ 3063 1.1 riastrad func_show_eval "$install_prog $file $destfile" 'exit $?' 3064 1.1 riastrad 3065 1.1 riastrad # Install the old object if enabled. 3066 1.1 riastrad if test "$build_old_libs" = yes; then 3067 1.1 riastrad # Deduce the name of the old-style object file. 3068 1.1 riastrad func_lo2o "$file" 3069 1.1 riastrad staticobj=$func_lo2o_result 3070 1.1 riastrad func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 3071 1.1 riastrad fi 3072 1.1 riastrad exit $EXIT_SUCCESS 3073 1.1 riastrad ;; 3074 1.1 riastrad 3075 1.1 riastrad *) 3076 1.1 riastrad # Figure out destination file name, if it wasn't already specified. 3077 1.1 riastrad if test -n "$destname"; then 3078 1.1 riastrad destfile="$destdir/$destname" 3079 1.1 riastrad else 3080 1.1 riastrad func_basename "$file" 3081 1.1 riastrad destfile="$func_basename_result" 3082 1.1 riastrad destfile="$destdir/$destfile" 3083 1.1 riastrad fi 3084 1.1 riastrad 3085 1.1 riastrad # If the file is missing, and there is a .exe on the end, strip it 3086 1.1 riastrad # because it is most likely a libtool script we actually want to 3087 1.1 riastrad # install 3088 1.1 riastrad stripped_ext="" 3089 1.1 riastrad case $file in 3090 1.1 riastrad *.exe) 3091 1.1 riastrad if test ! -f "$file"; then 3092 1.1 riastrad func_stripname '' '.exe' "$file" 3093 1.1 riastrad file=$func_stripname_result 3094 1.1 riastrad stripped_ext=".exe" 3095 1.1 riastrad fi 3096 1.1 riastrad ;; 3097 1.1 riastrad esac 3098 1.1 riastrad 3099 1.1 riastrad # Do a test to see if this is really a libtool program. 3100 1.1 riastrad case $host in 3101 1.1 riastrad *cygwin* | *mingw*) 3102 1.1 riastrad if func_ltwrapper_executable_p "$file"; then 3103 1.1 riastrad func_ltwrapper_scriptname "$file" 3104 1.1 riastrad wrapper=$func_ltwrapper_scriptname_result 3105 1.1 riastrad else 3106 1.1 riastrad func_stripname '' '.exe' "$file" 3107 1.1 riastrad wrapper=$func_stripname_result 3108 1.1 riastrad fi 3109 1.1 riastrad ;; 3110 1.1 riastrad *) 3111 1.1 riastrad wrapper=$file 3112 1.1 riastrad ;; 3113 1.1 riastrad esac 3114 1.1 riastrad if func_ltwrapper_script_p "$wrapper"; then 3115 1.1 riastrad notinst_deplibs= 3116 1.1 riastrad relink_command= 3117 1.1 riastrad 3118 1.1 riastrad func_source "$wrapper" 3119 1.1 riastrad 3120 1.1 riastrad # Check the variables that should have been set. 3121 1.1 riastrad test -z "$generated_by_libtool_version" && \ 3122 1.1 riastrad func_fatal_error "invalid libtool wrapper script \`$wrapper'" 3123 1.1 riastrad 3124 1.1 riastrad finalize=yes 3125 1.1 riastrad for lib in $notinst_deplibs; do 3126 1.1 riastrad # Check to see that each library is installed. 3127 1.1 riastrad libdir= 3128 1.1 riastrad if test -f "$lib"; then 3129 1.1 riastrad func_source "$lib" 3130 1.1 riastrad fi 3131 1.1 riastrad libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 3132 1.1 riastrad if test -n "$libdir" && test ! -f "$libfile"; then 3133 1.1 riastrad func_warning "\`$lib' has not been installed in \`$libdir'" 3134 1.1 riastrad finalize=no 3135 1.1 riastrad fi 3136 1.1 riastrad done 3137 1.1 riastrad 3138 1.1 riastrad relink_command= 3139 1.1 riastrad func_source "$wrapper" 3140 1.1 riastrad 3141 1.1 riastrad outputname= 3142 1.1 riastrad if test "$fast_install" = no && test -n "$relink_command"; then 3143 1.1 riastrad $opt_dry_run || { 3144 1.1 riastrad if test "$finalize" = yes; then 3145 1.1 riastrad tmpdir=`func_mktempdir` 3146 1.1 riastrad func_basename "$file$stripped_ext" 3147 1.1 riastrad file="$func_basename_result" 3148 1.1 riastrad outputname="$tmpdir/$file" 3149 1.1 riastrad # Replace the output file specification. 3150 1.1 riastrad relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 3151 1.1 riastrad 3152 1.1 riastrad $opt_silent || { 3153 1.1 riastrad func_quote_for_expand "$relink_command" 3154 1.1 riastrad eval "func_echo $func_quote_for_expand_result" 3155 1.1 riastrad } 3156 1.1 riastrad if eval "$relink_command"; then : 3157 1.1 riastrad else 3158 1.1 riastrad func_error "error: relink \`$file' with the above command before installing it" 3159 1.1 riastrad $opt_dry_run || ${RM}r "$tmpdir" 3160 1.1 riastrad continue 3161 1.1 riastrad fi 3162 1.1 riastrad file="$outputname" 3163 1.1 riastrad else 3164 1.1 riastrad func_warning "cannot relink \`$file'" 3165 1.1 riastrad fi 3166 1.1 riastrad } 3167 1.1 riastrad else 3168 1.1 riastrad # Install the binary that we compiled earlier. 3169 1.1 riastrad file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 3170 1.1 riastrad fi 3171 1.1 riastrad fi 3172 1.1 riastrad 3173 1.1 riastrad # remove .exe since cygwin /usr/bin/install will append another 3174 1.1 riastrad # one anyway 3175 1.1 riastrad case $install_prog,$host in 3176 1.1 riastrad */usr/bin/install*,*cygwin*) 3177 1.1 riastrad case $file:$destfile in 3178 1.1 riastrad *.exe:*.exe) 3179 1.1 riastrad # this is ok 3180 1.1 riastrad ;; 3181 1.1 riastrad *.exe:*) 3182 1.1 riastrad destfile=$destfile.exe 3183 1.1 riastrad ;; 3184 1.1 riastrad *:*.exe) 3185 1.1 riastrad func_stripname '' '.exe' "$destfile" 3186 1.1 riastrad destfile=$func_stripname_result 3187 1.1 riastrad ;; 3188 1.1 riastrad esac 3189 1.1 riastrad ;; 3190 1.1 riastrad esac 3191 1.1 riastrad func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 3192 1.1 riastrad $opt_dry_run || if test -n "$outputname"; then 3193 1.1 riastrad ${RM}r "$tmpdir" 3194 1.1 riastrad fi 3195 1.1 riastrad ;; 3196 1.1 riastrad esac 3197 1.1 riastrad done 3198 1.1 riastrad 3199 1.1 riastrad for file in $staticlibs; do 3200 1.1 riastrad func_basename "$file" 3201 1.1 riastrad name="$func_basename_result" 3202 1.1 riastrad 3203 1.1 riastrad # Set up the ranlib parameters. 3204 1.1 riastrad oldlib="$destdir/$name" 3205 1.1 riastrad func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 3206 1.1 riastrad tool_oldlib=$func_to_tool_file_result 3207 1.1 riastrad 3208 1.1 riastrad func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 3209 1.1 riastrad 3210 1.1 riastrad if test -n "$stripme" && test -n "$old_striplib"; then 3211 1.1 riastrad func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 3212 1.1 riastrad fi 3213 1.1 riastrad 3214 1.1 riastrad # Do each command in the postinstall commands. 3215 1.1 riastrad func_execute_cmds "$old_postinstall_cmds" 'exit $?' 3216 1.1 riastrad done 3217 1.1 riastrad 3218 1.1 riastrad test -n "$future_libdirs" && \ 3219 1.1 riastrad func_warning "remember to run \`$progname --finish$future_libdirs'" 3220 1.1 riastrad 3221 1.1 riastrad if test -n "$current_libdirs"; then 3222 1.1 riastrad # Maybe just do a dry run. 3223 1.1 riastrad $opt_dry_run && current_libdirs=" -n$current_libdirs" 3224 1.1 riastrad exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 3225 1.1 riastrad else 3226 1.1 riastrad exit $EXIT_SUCCESS 3227 1.1 riastrad fi 3228 1.1 riastrad } 3229 1.1 riastrad 3230 1.1 riastrad test "$opt_mode" = install && func_mode_install ${1+"$@"} 3231 1.1 riastrad 3232 1.1 riastrad 3233 1.1 riastrad # func_generate_dlsyms outputname originator pic_p 3234 1.1 riastrad # Extract symbols from dlprefiles and create ${outputname}S.o with 3235 1.1 riastrad # a dlpreopen symbol table. 3236 1.1 riastrad func_generate_dlsyms () 3237 1.1 riastrad { 3238 1.1 riastrad $opt_debug 3239 1.1 riastrad my_outputname="$1" 3240 1.1 riastrad my_originator="$2" 3241 1.1 riastrad my_pic_p="${3-no}" 3242 1.1 riastrad my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 3243 1.1 riastrad my_dlsyms= 3244 1.1 riastrad 3245 1.1 riastrad if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3246 1.1 riastrad if test -n "$NM" && test -n "$global_symbol_pipe"; then 3247 1.1 riastrad my_dlsyms="${my_outputname}S.c" 3248 1.1 riastrad else 3249 1.1 riastrad func_error "not configured to extract global symbols from dlpreopened files" 3250 1.1 riastrad fi 3251 1.1 riastrad fi 3252 1.1 riastrad 3253 1.1 riastrad if test -n "$my_dlsyms"; then 3254 1.1 riastrad case $my_dlsyms in 3255 1.1 riastrad "") ;; 3256 1.1 riastrad *.c) 3257 1.1 riastrad # Discover the nlist of each of the dlfiles. 3258 1.1 riastrad nlist="$output_objdir/${my_outputname}.nm" 3259 1.1 riastrad 3260 1.1 riastrad func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 3261 1.1 riastrad 3262 1.1 riastrad # Parse the name list into a source file. 3263 1.1 riastrad func_verbose "creating $output_objdir/$my_dlsyms" 3264 1.1 riastrad 3265 1.1 riastrad $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 3266 1.1 riastrad /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 3267 1.1 riastrad /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 3268 1.1 riastrad 3269 1.1 riastrad #ifdef __cplusplus 3270 1.1 riastrad extern \"C\" { 3271 1.1 riastrad #endif 3272 1.1 riastrad 3273 1.1 riastrad #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 3274 1.1 riastrad #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 3275 1.1 riastrad #endif 3276 1.1 riastrad 3277 1.1 riastrad /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 3278 1.1 riastrad #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 3279 1.1 riastrad /* DATA imports from DLLs on WIN32 con't be const, because runtime 3280 1.1 riastrad relocations are performed -- see ld's documentation on pseudo-relocs. */ 3281 1.1 riastrad # define LT_DLSYM_CONST 3282 1.1 riastrad #elif defined(__osf__) 3283 1.1 riastrad /* This system does not cope well with relocations in const data. */ 3284 1.1 riastrad # define LT_DLSYM_CONST 3285 1.1 riastrad #else 3286 1.1 riastrad # define LT_DLSYM_CONST const 3287 1.1 riastrad #endif 3288 1.1 riastrad 3289 1.1 riastrad /* External symbol declarations for the compiler. */\ 3290 1.1 riastrad " 3291 1.1 riastrad 3292 1.1 riastrad if test "$dlself" = yes; then 3293 1.1 riastrad func_verbose "generating symbol list for \`$output'" 3294 1.1 riastrad 3295 1.1 riastrad $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 3296 1.1 riastrad 3297 1.1 riastrad # Add our own program objects to the symbol list. 3298 1.1 riastrad progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 3299 1.1 riastrad for progfile in $progfiles; do 3300 1.1 riastrad func_to_tool_file "$progfile" func_convert_file_msys_to_w32 3301 1.1 riastrad func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 3302 1.1 riastrad $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 3303 1.1 riastrad done 3304 1.1 riastrad 3305 1.1 riastrad if test -n "$exclude_expsyms"; then 3306 1.1 riastrad $opt_dry_run || { 3307 1.1 riastrad eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 3308 1.1 riastrad eval '$MV "$nlist"T "$nlist"' 3309 1.1 riastrad } 3310 1.1 riastrad fi 3311 1.1 riastrad 3312 1.1 riastrad if test -n "$export_symbols_regex"; then 3313 1.1 riastrad $opt_dry_run || { 3314 1.1 riastrad eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 3315 1.1 riastrad eval '$MV "$nlist"T "$nlist"' 3316 1.1 riastrad } 3317 1.1 riastrad fi 3318 1.1 riastrad 3319 1.1 riastrad # Prepare the list of exported symbols 3320 1.1 riastrad if test -z "$export_symbols"; then 3321 1.1 riastrad export_symbols="$output_objdir/$outputname.exp" 3322 1.1 riastrad $opt_dry_run || { 3323 1.1 riastrad $RM $export_symbols 3324 1.1 riastrad eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 3325 1.1 riastrad case $host in 3326 1.1 riastrad *cygwin* | *mingw* | *cegcc* ) 3327 1.1 riastrad eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3328 1.1 riastrad eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 3329 1.1 riastrad ;; 3330 1.1 riastrad esac 3331 1.1 riastrad } 3332 1.1 riastrad else 3333 1.1 riastrad $opt_dry_run || { 3334 1.1 riastrad eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 3335 1.1 riastrad eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 3336 1.1 riastrad eval '$MV "$nlist"T "$nlist"' 3337 1.1 riastrad case $host in 3338 1.1 riastrad *cygwin* | *mingw* | *cegcc* ) 3339 1.1 riastrad eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3340 1.1 riastrad eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 3341 1.1 riastrad ;; 3342 1.1 riastrad esac 3343 1.1 riastrad } 3344 1.1 riastrad fi 3345 1.1 riastrad fi 3346 1.1 riastrad 3347 1.1 riastrad for dlprefile in $dlprefiles; do 3348 1.1 riastrad func_verbose "extracting global C symbols from \`$dlprefile'" 3349 1.1 riastrad func_basename "$dlprefile" 3350 1.1 riastrad name="$func_basename_result" 3351 1.1 riastrad case $host in 3352 1.1 riastrad *cygwin* | *mingw* | *cegcc* ) 3353 1.1 riastrad # if an import library, we need to obtain dlname 3354 1.1 riastrad if func_win32_import_lib_p "$dlprefile"; then 3355 1.1 riastrad func_tr_sh "$dlprefile" 3356 1.1 riastrad eval "curr_lafile=\$libfile_$func_tr_sh_result" 3357 1.1 riastrad dlprefile_dlbasename="" 3358 1.1 riastrad if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 3359 1.1 riastrad # Use subshell, to avoid clobbering current variable values 3360 1.1 riastrad dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 3361 1.1 riastrad if test -n "$dlprefile_dlname" ; then 3362 1.1 riastrad func_basename "$dlprefile_dlname" 3363 1.1 riastrad dlprefile_dlbasename="$func_basename_result" 3364 1.1 riastrad else 3365 1.1 riastrad # no lafile. user explicitly requested -dlpreopen <import library>. 3366 1.1 riastrad $sharedlib_from_linklib_cmd "$dlprefile" 3367 1.1 riastrad dlprefile_dlbasename=$sharedlib_from_linklib_result 3368 1.1 riastrad fi 3369 1.1 riastrad fi 3370 1.1 riastrad $opt_dry_run || { 3371 1.1 riastrad if test -n "$dlprefile_dlbasename" ; then 3372 1.1 riastrad eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 3373 1.1 riastrad else 3374 1.1 riastrad func_warning "Could not compute DLL name from $name" 3375 1.1 riastrad eval '$ECHO ": $name " >> "$nlist"' 3376 1.1 riastrad fi 3377 1.1 riastrad func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3378 1.1 riastrad eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 3379 1.1 riastrad $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 3380 1.1 riastrad } 3381 1.1 riastrad else # not an import lib 3382 1.1 riastrad $opt_dry_run || { 3383 1.1 riastrad eval '$ECHO ": $name " >> "$nlist"' 3384 1.1 riastrad func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3385 1.1 riastrad eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3386 1.1 riastrad } 3387 1.1 riastrad fi 3388 1.1 riastrad ;; 3389 1.1 riastrad *) 3390 1.1 riastrad $opt_dry_run || { 3391 1.1 riastrad eval '$ECHO ": $name " >> "$nlist"' 3392 1.1 riastrad func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3393 1.1 riastrad eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3394 1.1 riastrad } 3395 1.1 riastrad ;; 3396 1.1 riastrad esac 3397 1.1 riastrad done 3398 1.1 riastrad 3399 1.1 riastrad $opt_dry_run || { 3400 1.1 riastrad # Make sure we have at least an empty file. 3401 1.1 riastrad test -f "$nlist" || : > "$nlist" 3402 1.1 riastrad 3403 1.1 riastrad if test -n "$exclude_expsyms"; then 3404 1.1 riastrad $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 3405 1.1 riastrad $MV "$nlist"T "$nlist" 3406 1.1 riastrad fi 3407 1.1 riastrad 3408 1.1 riastrad # Try sorting and uniquifying the output. 3409 1.1 riastrad if $GREP -v "^: " < "$nlist" | 3410 1.1 riastrad if sort -k 3 </dev/null >/dev/null 2>&1; then 3411 1.1 riastrad sort -k 3 3412 1.1 riastrad else 3413 1.1 riastrad sort +2 3414 1.1 riastrad fi | 3415 1.1 riastrad uniq > "$nlist"S; then 3416 1.1 riastrad : 3417 1.1 riastrad else 3418 1.1 riastrad $GREP -v "^: " < "$nlist" > "$nlist"S 3419 1.1 riastrad fi 3420 1.1 riastrad 3421 1.1 riastrad if test -f "$nlist"S; then 3422 1.1 riastrad eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 3423 1.1 riastrad else 3424 1.1 riastrad echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 3425 1.1 riastrad fi 3426 1.1 riastrad 3427 1.1 riastrad echo >> "$output_objdir/$my_dlsyms" "\ 3428 1.1 riastrad 3429 1.1 riastrad /* The mapping between symbol names and symbols. */ 3430 1.1 riastrad typedef struct { 3431 1.1 riastrad const char *name; 3432 1.1 riastrad void *address; 3433 1.1 riastrad } lt_dlsymlist; 3434 1.1 riastrad extern LT_DLSYM_CONST lt_dlsymlist 3435 1.1 riastrad lt_${my_prefix}_LTX_preloaded_symbols[]; 3436 1.1 riastrad LT_DLSYM_CONST lt_dlsymlist 3437 1.1 riastrad lt_${my_prefix}_LTX_preloaded_symbols[] = 3438 1.1 riastrad {\ 3439 1.1 riastrad { \"$my_originator\", (void *) 0 }," 3440 1.1 riastrad 3441 1.1 riastrad case $need_lib_prefix in 3442 1.1 riastrad no) 3443 1.1 riastrad eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 3444 1.1 riastrad ;; 3445 1.1 riastrad *) 3446 1.1 riastrad eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 3447 1.1 riastrad ;; 3448 1.1 riastrad esac 3449 1.1 riastrad echo >> "$output_objdir/$my_dlsyms" "\ 3450 1.1 riastrad {0, (void *) 0} 3451 1.1 riastrad }; 3452 1.1 riastrad 3453 1.1 riastrad /* This works around a problem in FreeBSD linker */ 3454 1.1 riastrad #ifdef FREEBSD_WORKAROUND 3455 1.1 riastrad static const void *lt_preloaded_setup() { 3456 1.1 riastrad return lt_${my_prefix}_LTX_preloaded_symbols; 3457 1.1 riastrad } 3458 1.1 riastrad #endif 3459 1.1 riastrad 3460 1.1 riastrad #ifdef __cplusplus 3461 1.1 riastrad } 3462 1.1 riastrad #endif\ 3463 1.1 riastrad " 3464 1.1 riastrad } # !$opt_dry_run 3465 1.1 riastrad 3466 1.1 riastrad pic_flag_for_symtable= 3467 1.1 riastrad case "$compile_command " in 3468 1.1 riastrad *" -static "*) ;; 3469 1.1 riastrad *) 3470 1.1 riastrad case $host in 3471 1.1 riastrad # compiling the symbol table file with pic_flag works around 3472 1.1 riastrad # a FreeBSD bug that causes programs to crash when -lm is 3473 1.1 riastrad # linked before any other PIC object. But we must not use 3474 1.1 riastrad # pic_flag when linking with -static. The problem exists in 3475 1.1 riastrad # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 3476 1.1 riastrad *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 3477 1.1 riastrad pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 3478 1.1 riastrad *-*-hpux*) 3479 1.1 riastrad pic_flag_for_symtable=" $pic_flag" ;; 3480 1.1 riastrad *) 3481 1.1 riastrad if test "X$my_pic_p" != Xno; then 3482 1.1 riastrad pic_flag_for_symtable=" $pic_flag" 3483 1.1 riastrad fi 3484 1.1 riastrad ;; 3485 1.1 riastrad esac 3486 1.1 riastrad ;; 3487 1.1 riastrad esac 3488 1.1 riastrad symtab_cflags= 3489 1.1 riastrad for arg in $LTCFLAGS; do 3490 1.1 riastrad case $arg in 3491 1.1 riastrad -pie | -fpie | -fPIE) ;; 3492 1.1 riastrad *) func_append symtab_cflags " $arg" ;; 3493 1.1 riastrad esac 3494 1.1 riastrad done 3495 1.1 riastrad 3496 1.1 riastrad # Now compile the dynamic symbol file. 3497 1.1 riastrad func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 3498 1.1 riastrad 3499 1.1 riastrad # Clean up the generated files. 3500 1.1 riastrad func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 3501 1.1 riastrad 3502 1.1 riastrad # Transform the symbol file into the correct name. 3503 1.1 riastrad symfileobj="$output_objdir/${my_outputname}S.$objext" 3504 1.1 riastrad case $host in 3505 1.1 riastrad *cygwin* | *mingw* | *cegcc* ) 3506 1.1 riastrad if test -f "$output_objdir/$my_outputname.def"; then 3507 1.1 riastrad compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3508 1.1 riastrad finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3509 1.1 riastrad else 3510 1.1 riastrad compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3511 1.1 riastrad finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3512 1.1 riastrad fi 3513 1.1 riastrad ;; 3514 1.1 riastrad *) 3515 1.1 riastrad compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3516 1.1 riastrad finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3517 1.1 riastrad ;; 3518 1.1 riastrad esac 3519 1.1 riastrad ;; 3520 1.1 riastrad *) 3521 1.1 riastrad func_fatal_error "unknown suffix for \`$my_dlsyms'" 3522 1.1 riastrad ;; 3523 1.1 riastrad esac 3524 1.1 riastrad else 3525 1.1 riastrad # We keep going just in case the user didn't refer to 3526 1.1 riastrad # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 3527 1.1 riastrad # really was required. 3528 1.1 riastrad 3529 1.1 riastrad # Nullify the symbol file. 3530 1.1 riastrad compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 3531 1.1 riastrad finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 3532 1.1 riastrad fi 3533 1.1 riastrad } 3534 1.1 riastrad 3535 1.1 riastrad # func_win32_libid arg 3536 1.1 riastrad # return the library type of file 'arg' 3537 1.1 riastrad # 3538 1.1 riastrad # Need a lot of goo to handle *both* DLLs and import libs 3539 1.1 riastrad # Has to be a shell function in order to 'eat' the argument 3540 1.1 riastrad # that is supplied when $file_magic_command is called. 3541 1.1 riastrad # Despite the name, also deal with 64 bit binaries. 3542 1.1 riastrad func_win32_libid () 3543 1.1 riastrad { 3544 1.1 riastrad $opt_debug 3545 1.1 riastrad win32_libid_type="unknown" 3546 1.1 riastrad win32_fileres=`file -L $1 2>/dev/null` 3547 1.1 riastrad case $win32_fileres in 3548 1.1 riastrad *ar\ archive\ import\ library*) # definitely import 3549 1.1 riastrad win32_libid_type="x86 archive import" 3550 1.1 riastrad ;; 3551 1.1 riastrad *ar\ archive*) # could be an import, or static 3552 1.1 riastrad # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 3553 1.1 riastrad if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 3554 1.1 riastrad $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 3555 1.1 riastrad func_to_tool_file "$1" func_convert_file_msys_to_w32 3556 1.1 riastrad win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 3557 1.1 riastrad $SED -n -e ' 3558 1.1 riastrad 1,100{ 3559 1.1 riastrad / I /{ 3560 1.1 riastrad s,.*,import, 3561 1.1 riastrad p 3562 1.1 riastrad q 3563 1.1 riastrad } 3564 1.1 riastrad }'` 3565 1.1 riastrad case $win32_nmres in 3566 1.1 riastrad import*) win32_libid_type="x86 archive import";; 3567 1.1 riastrad *) win32_libid_type="x86 archive static";; 3568 1.1 riastrad esac 3569 1.1 riastrad fi 3570 1.1 riastrad ;; 3571 1.1 riastrad *DLL*) 3572 1.1 riastrad win32_libid_type="x86 DLL" 3573 1.1 riastrad ;; 3574 1.1 riastrad *executable*) # but shell scripts are "executable" too... 3575 1.1 riastrad case $win32_fileres in 3576 1.1 riastrad *MS\ Windows\ PE\ Intel*) 3577 1.1 riastrad win32_libid_type="x86 DLL" 3578 1.1 riastrad ;; 3579 1.1 riastrad esac 3580 1.1 riastrad ;; 3581 1.1 riastrad esac 3582 1.1 riastrad $ECHO "$win32_libid_type" 3583 1.1 riastrad } 3584 1.1 riastrad 3585 1.1 riastrad # func_cygming_dll_for_implib ARG 3586 1.1 riastrad # 3587 1.1 riastrad # Platform-specific function to extract the 3588 1.1 riastrad # name of the DLL associated with the specified 3589 1.1 riastrad # import library ARG. 3590 1.1 riastrad # Invoked by eval'ing the libtool variable 3591 1.1 riastrad # $sharedlib_from_linklib_cmd 3592 1.1 riastrad # Result is available in the variable 3593 1.1 riastrad # $sharedlib_from_linklib_result 3594 1.1 riastrad func_cygming_dll_for_implib () 3595 1.1 riastrad { 3596 1.1 riastrad $opt_debug 3597 1.1 riastrad sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 3598 1.1 riastrad } 3599 1.1 riastrad 3600 1.1 riastrad # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 3601 1.1 riastrad # 3602 1.1 riastrad # The is the core of a fallback implementation of a 3603 1.1 riastrad # platform-specific function to extract the name of the 3604 1.1 riastrad # DLL associated with the specified import library LIBNAME. 3605 1.1 riastrad # 3606 1.1 riastrad # SECTION_NAME is either .idata$6 or .idata$7, depending 3607 1.1 riastrad # on the platform and compiler that created the implib. 3608 1.1 riastrad # 3609 1.1 riastrad # Echos the name of the DLL associated with the 3610 1.1 riastrad # specified import library. 3611 1.1 riastrad func_cygming_dll_for_implib_fallback_core () 3612 1.1 riastrad { 3613 1.1 riastrad $opt_debug 3614 1.1 riastrad match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 3615 1.1 riastrad $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 3616 1.1 riastrad $SED '/^Contents of section '"$match_literal"':/{ 3617 1.1 riastrad # Place marker at beginning of archive member dllname section 3618 1.1 riastrad s/.*/====MARK====/ 3619 1.1 riastrad p 3620 1.1 riastrad d 3621 1.1 riastrad } 3622 1.1 riastrad # These lines can sometimes be longer than 43 characters, but 3623 1.1 riastrad # are always uninteresting 3624 1.1 riastrad /:[ ]*file format pe[i]\{,1\}-/d 3625 1.1 riastrad /^In archive [^:]*:/d 3626 1.1 riastrad # Ensure marker is printed 3627 1.1 riastrad /^====MARK====/p 3628 1.1 riastrad # Remove all lines with less than 43 characters 3629 1.1 riastrad /^.\{43\}/!d 3630 1.1 riastrad # From remaining lines, remove first 43 characters 3631 1.1 riastrad s/^.\{43\}//' | 3632 1.1 riastrad $SED -n ' 3633 1.1 riastrad # Join marker and all lines until next marker into a single line 3634 1.1 riastrad /^====MARK====/ b para 3635 1.1 riastrad H 3636 1.1 riastrad $ b para 3637 1.1 riastrad b 3638 1.1 riastrad :para 3639 1.1 riastrad x 3640 1.1 riastrad s/\n//g 3641 1.1 riastrad # Remove the marker 3642 1.1 riastrad s/^====MARK====// 3643 1.1 riastrad # Remove trailing dots and whitespace 3644 1.1 riastrad s/[\. \t]*$// 3645 1.1 riastrad # Print 3646 1.1 riastrad /./p' | 3647 1.1 riastrad # we now have a list, one entry per line, of the stringified 3648 1.1 riastrad # contents of the appropriate section of all members of the 3649 1.1 riastrad # archive which possess that section. Heuristic: eliminate 3650 1.1 riastrad # all those which have a first or second character that is 3651 1.1 riastrad # a '.' (that is, objdump's representation of an unprintable 3652 1.1 riastrad # character.) This should work for all archives with less than 3653 1.1 riastrad # 0x302f exports -- but will fail for DLLs whose name actually 3654 1.1 riastrad # begins with a literal '.' or a single character followed by 3655 1.1 riastrad # a '.'. 3656 1.1 riastrad # 3657 1.1 riastrad # Of those that remain, print the first one. 3658 1.1 riastrad $SED -e '/^\./d;/^.\./d;q' 3659 1.1 riastrad } 3660 1.1 riastrad 3661 1.1 riastrad # func_cygming_gnu_implib_p ARG 3662 1.1 riastrad # This predicate returns with zero status (TRUE) if 3663 1.1 riastrad # ARG is a GNU/binutils-style import library. Returns 3664 1.1 riastrad # with nonzero status (FALSE) otherwise. 3665 1.1 riastrad func_cygming_gnu_implib_p () 3666 1.1 riastrad { 3667 1.1 riastrad $opt_debug 3668 1.1 riastrad func_to_tool_file "$1" func_convert_file_msys_to_w32 3669 1.1 riastrad func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` 3670 1.1 riastrad test -n "$func_cygming_gnu_implib_tmp" 3671 1.1 riastrad } 3672 1.1 riastrad 3673 1.1 riastrad # func_cygming_ms_implib_p ARG 3674 1.1 riastrad # This predicate returns with zero status (TRUE) if 3675 1.1 riastrad # ARG is an MS-style import library. Returns 3676 1.1 riastrad # with nonzero status (FALSE) otherwise. 3677 1.1 riastrad func_cygming_ms_implib_p () 3678 1.1 riastrad { 3679 1.1 riastrad $opt_debug 3680 1.1 riastrad func_to_tool_file "$1" func_convert_file_msys_to_w32 3681 1.1 riastrad func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 3682 1.1 riastrad test -n "$func_cygming_ms_implib_tmp" 3683 1.1 riastrad } 3684 1.1 riastrad 3685 1.1 riastrad # func_cygming_dll_for_implib_fallback ARG 3686 1.1 riastrad # Platform-specific function to extract the 3687 1.1 riastrad # name of the DLL associated with the specified 3688 1.1 riastrad # import library ARG. 3689 1.1 riastrad # 3690 1.1 riastrad # This fallback implementation is for use when $DLLTOOL 3691 1.1 riastrad # does not support the --identify-strict option. 3692 1.1 riastrad # Invoked by eval'ing the libtool variable 3693 1.1 riastrad # $sharedlib_from_linklib_cmd 3694 1.1 riastrad # Result is available in the variable 3695 1.1 riastrad # $sharedlib_from_linklib_result 3696 1.1 riastrad func_cygming_dll_for_implib_fallback () 3697 1.1 riastrad { 3698 1.1 riastrad $opt_debug 3699 1.1 riastrad if func_cygming_gnu_implib_p "$1" ; then 3700 1.1 riastrad # binutils import library 3701 1.1 riastrad sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 3702 1.1 riastrad elif func_cygming_ms_implib_p "$1" ; then 3703 1.1 riastrad # ms-generated import library 3704 1.1 riastrad sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 3705 1.1 riastrad else 3706 1.1 riastrad # unknown 3707 1.1 riastrad sharedlib_from_linklib_result="" 3708 1.1 riastrad fi 3709 1.1 riastrad } 3710 1.1 riastrad 3711 1.1 riastrad 3712 1.1 riastrad # func_extract_an_archive dir oldlib 3713 1.1 riastrad func_extract_an_archive () 3714 1.1 riastrad { 3715 1.1 riastrad $opt_debug 3716 1.1 riastrad f_ex_an_ar_dir="$1"; shift 3717 1.1 riastrad f_ex_an_ar_oldlib="$1" 3718 1.1 riastrad if test "$lock_old_archive_extraction" = yes; then 3719 1.1 riastrad lockfile=$f_ex_an_ar_oldlib.lock 3720 1.1 riastrad until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 3721 1.1 riastrad func_echo "Waiting for $lockfile to be removed" 3722 1.1 riastrad sleep 2 3723 1.1 riastrad done 3724 1.1 riastrad fi 3725 1.1 riastrad func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 3726 1.1 riastrad 'stat=$?; rm -f "$lockfile"; exit $stat' 3727 1.1 riastrad if test "$lock_old_archive_extraction" = yes; then 3728 1.1 riastrad $opt_dry_run || rm -f "$lockfile" 3729 1.1 riastrad fi 3730 1.1 riastrad if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 3731 1.1 riastrad : 3732 1.1 riastrad else 3733 1.1 riastrad func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 3734 1.1 riastrad fi 3735 1.1 riastrad } 3736 1.1 riastrad 3737 1.1 riastrad 3738 1.1 riastrad # func_extract_archives gentop oldlib ... 3739 1.1 riastrad func_extract_archives () 3740 1.1 riastrad { 3741 1.1 riastrad $opt_debug 3742 1.1 riastrad my_gentop="$1"; shift 3743 1.1 riastrad my_oldlibs=${1+"$@"} 3744 1.1 riastrad my_oldobjs="" 3745 1.1 riastrad my_xlib="" 3746 1.1 riastrad my_xabs="" 3747 1.1 riastrad my_xdir="" 3748 1.1 riastrad 3749 1.1 riastrad for my_xlib in $my_oldlibs; do 3750 1.1 riastrad # Extract the objects. 3751 1.1 riastrad case $my_xlib in 3752 1.1 riastrad [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 3753 1.1 riastrad *) my_xabs=`pwd`"/$my_xlib" ;; 3754 1.1 riastrad esac 3755 1.1 riastrad func_basename "$my_xlib" 3756 1.1 riastrad my_xlib="$func_basename_result" 3757 1.1 riastrad my_xlib_u=$my_xlib 3758 1.1 riastrad while :; do 3759 1.1 riastrad case " $extracted_archives " in 3760 1.1 riastrad *" $my_xlib_u "*) 3761 1.1 riastrad func_arith $extracted_serial + 1 3762 1.1 riastrad extracted_serial=$func_arith_result 3763 1.1 riastrad my_xlib_u=lt$extracted_serial-$my_xlib ;; 3764 1.1 riastrad *) break ;; 3765 1.1 riastrad esac 3766 1.1 riastrad done 3767 1.1 riastrad extracted_archives="$extracted_archives $my_xlib_u" 3768 1.1 riastrad my_xdir="$my_gentop/$my_xlib_u" 3769 1.1 riastrad 3770 1.1 riastrad func_mkdir_p "$my_xdir" 3771 1.1 riastrad 3772 1.1 riastrad case $host in 3773 1.1 riastrad *-darwin*) 3774 1.1 riastrad func_verbose "Extracting $my_xabs" 3775 1.1 riastrad # Do not bother doing anything if just a dry run 3776 1.1 riastrad $opt_dry_run || { 3777 1.1 riastrad darwin_orig_dir=`pwd` 3778 1.1 riastrad cd $my_xdir || exit $? 3779 1.1 riastrad darwin_archive=$my_xabs 3780 1.1 riastrad darwin_curdir=`pwd` 3781 1.1 riastrad darwin_base_archive=`basename "$darwin_archive"` 3782 1.1 riastrad darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 3783 1.1 riastrad if test -n "$darwin_arches"; then 3784 1.1 riastrad darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 3785 1.1 riastrad darwin_arch= 3786 1.1 riastrad func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 3787 1.1 riastrad for darwin_arch in $darwin_arches ; do 3788 1.1 riastrad func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3789 1.1 riastrad $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 3790 1.1 riastrad cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3791 1.1 riastrad func_extract_an_archive "`pwd`" "${darwin_base_archive}" 3792 1.1 riastrad cd "$darwin_curdir" 3793 1.1 riastrad $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 3794 1.1 riastrad done # $darwin_arches 3795 1.1 riastrad ## Okay now we've a bunch of thin objects, gotta fatten them up :) 3796 1.1 riastrad darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 3797 1.1 riastrad darwin_file= 3798 1.1 riastrad darwin_files= 3799 1.1 riastrad for darwin_file in $darwin_filelist; do 3800 1.1 riastrad darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 3801 1.1 riastrad $LIPO -create -output "$darwin_file" $darwin_files 3802 1.1 riastrad done # $darwin_filelist 3803 1.1 riastrad $RM -rf unfat-$$ 3804 1.1 riastrad cd "$darwin_orig_dir" 3805 1.1 riastrad else 3806 1.1 riastrad cd $darwin_orig_dir 3807 1.1 riastrad func_extract_an_archive "$my_xdir" "$my_xabs" 3808 1.1 riastrad fi # $darwin_arches 3809 1.1 riastrad } # !$opt_dry_run 3810 1.1 riastrad ;; 3811 1.1 riastrad *) 3812 1.1 riastrad func_extract_an_archive "$my_xdir" "$my_xabs" 3813 1.1 riastrad ;; 3814 1.1 riastrad esac 3815 1.1 riastrad my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 3816 1.1 riastrad done 3817 1.1 riastrad 3818 1.1 riastrad func_extract_archives_result="$my_oldobjs" 3819 1.1 riastrad } 3820 1.1 riastrad 3821 1.1 riastrad 3822 1.1 riastrad # func_emit_wrapper [arg=no] 3823 1.1 riastrad # 3824 1.1 riastrad # Emit a libtool wrapper script on stdout. 3825 1.1 riastrad # Don't directly open a file because we may want to 3826 1.1 riastrad # incorporate the script contents within a cygwin/mingw 3827 1.1 riastrad # wrapper executable. Must ONLY be called from within 3828 1.1 riastrad # func_mode_link because it depends on a number of variables 3829 1.1 riastrad # set therein. 3830 1.1 riastrad # 3831 1.1 riastrad # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 3832 1.1 riastrad # variable will take. If 'yes', then the emitted script 3833 1.1 riastrad # will assume that the directory in which it is stored is 3834 1.1 riastrad # the $objdir directory. This is a cygwin/mingw-specific 3835 1.1 riastrad # behavior. 3836 1.1 riastrad func_emit_wrapper () 3837 1.1 riastrad { 3838 1.1 riastrad func_emit_wrapper_arg1=${1-no} 3839 1.1 riastrad 3840 1.1 riastrad $ECHO "\ 3841 1.1 riastrad #! $SHELL 3842 1.1 riastrad 3843 1.1 riastrad # $output - temporary wrapper script for $objdir/$outputname 3844 1.1 riastrad # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 3845 1.1 riastrad # 3846 1.1 riastrad # The $output program cannot be directly executed until all the libtool 3847 1.1 riastrad # libraries that it depends on are installed. 3848 1.1 riastrad # 3849 1.1 riastrad # This wrapper script should never be moved out of the build directory. 3850 1.1 riastrad # If it is, it will not operate correctly. 3851 1.1 riastrad 3852 1.1 riastrad # Sed substitution that helps us do robust quoting. It backslashifies 3853 1.1 riastrad # metacharacters that are still active within double-quoted strings. 3854 1.1 riastrad sed_quote_subst='$sed_quote_subst' 3855 1.1 riastrad 3856 1.1 riastrad # Be Bourne compatible 3857 1.1 riastrad if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 3858 1.1 riastrad emulate sh 3859 1.1 riastrad NULLCMD=: 3860 1.1 riastrad # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 3861 1.1 riastrad # is contrary to our usage. Disable this feature. 3862 1.1 riastrad alias -g '\${1+\"\$@\"}'='\"\$@\"' 3863 1.1 riastrad setopt NO_GLOB_SUBST 3864 1.1 riastrad else 3865 1.1 riastrad case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 3866 1.1 riastrad fi 3867 1.1 riastrad BIN_SH=xpg4; export BIN_SH # for Tru64 3868 1.1 riastrad DUALCASE=1; export DUALCASE # for MKS sh 3869 1.1 riastrad 3870 1.1 riastrad # The HP-UX ksh and POSIX shell print the target directory to stdout 3871 1.1 riastrad # if CDPATH is set. 3872 1.1 riastrad (unset CDPATH) >/dev/null 2>&1 && unset CDPATH 3873 1.1 riastrad 3874 1.1 riastrad relink_command=\"$relink_command\" 3875 1.1 riastrad 3876 1.1 riastrad # This environment variable determines our operation mode. 3877 1.1 riastrad if test \"\$libtool_install_magic\" = \"$magic\"; then 3878 1.1 riastrad # install mode needs the following variables: 3879 1.1 riastrad generated_by_libtool_version='$macro_version' 3880 1.1 riastrad notinst_deplibs='$notinst_deplibs' 3881 1.1 riastrad else 3882 1.1 riastrad # When we are sourced in execute mode, \$file and \$ECHO are already set. 3883 1.1 riastrad if test \"\$libtool_execute_magic\" != \"$magic\"; then 3884 1.1 riastrad file=\"\$0\"" 3885 1.1 riastrad 3886 1.1 riastrad qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 3887 1.1 riastrad $ECHO "\ 3888 1.1 riastrad 3889 1.1 riastrad # A function that is used when there is no print builtin or printf. 3890 1.1 riastrad func_fallback_echo () 3891 1.1 riastrad { 3892 1.1 riastrad eval 'cat <<_LTECHO_EOF 3893 1.1 riastrad \$1 3894 1.1 riastrad _LTECHO_EOF' 3895 1.1 riastrad } 3896 1.1 riastrad ECHO=\"$qECHO\" 3897 1.1 riastrad fi 3898 1.1 riastrad 3899 1.1 riastrad # Very basic option parsing. These options are (a) specific to 3900 1.1 riastrad # the libtool wrapper, (b) are identical between the wrapper 3901 1.1 riastrad # /script/ and the wrapper /executable/ which is used only on 3902 1.1 riastrad # windows platforms, and (c) all begin with the string "--lt-" 3903 1.1 riastrad # (application programs are unlikely to have options which match 3904 1.1 riastrad # this pattern). 3905 1.1 riastrad # 3906 1.1 riastrad # There are only two supported options: --lt-debug and 3907 1.1 riastrad # --lt-dump-script. There is, deliberately, no --lt-help. 3908 1.1 riastrad # 3909 1.1 riastrad # The first argument to this parsing function should be the 3910 1.1 riastrad # script's $0 value, followed by "$@". 3911 1.1 riastrad lt_option_debug= 3912 1.1 riastrad func_parse_lt_options () 3913 1.1 riastrad { 3914 1.1 riastrad lt_script_arg0=\$0 3915 1.1 riastrad shift 3916 1.1 riastrad for lt_opt 3917 1.1 riastrad do 3918 1.1 riastrad case \"\$lt_opt\" in 3919 1.1 riastrad --lt-debug) lt_option_debug=1 ;; 3920 1.1 riastrad --lt-dump-script) 3921 1.1 riastrad lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 3922 1.1 riastrad test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 3923 1.1 riastrad lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 3924 1.1 riastrad cat \"\$lt_dump_D/\$lt_dump_F\" 3925 1.1 riastrad exit 0 3926 1.1 riastrad ;; 3927 1.1 riastrad --lt-*) 3928 1.1 riastrad \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 3929 1.1 riastrad exit 1 3930 1.1 riastrad ;; 3931 1.1 riastrad esac 3932 1.1 riastrad done 3933 1.1 riastrad 3934 1.1 riastrad # Print the debug banner immediately: 3935 1.1 riastrad if test -n \"\$lt_option_debug\"; then 3936 1.1 riastrad echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 3937 1.1 riastrad fi 3938 1.1 riastrad } 3939 1.1 riastrad 3940 1.1 riastrad # Used when --lt-debug. Prints its arguments to stdout 3941 1.1 riastrad # (redirection is the responsibility of the caller) 3942 1.1 riastrad func_lt_dump_args () 3943 1.1 riastrad { 3944 1.1 riastrad lt_dump_args_N=1; 3945 1.1 riastrad for lt_arg 3946 1.1 riastrad do 3947 1.1 riastrad \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 3948 1.1 riastrad lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 3949 1.1 riastrad done 3950 1.1 riastrad } 3951 1.1 riastrad 3952 1.1 riastrad # Core function for launching the target application 3953 1.1 riastrad func_exec_program_core () 3954 1.1 riastrad { 3955 1.1 riastrad " 3956 1.1 riastrad case $host in 3957 1.1 riastrad # Backslashes separate directories on plain windows 3958 1.1 riastrad *-*-mingw | *-*-os2* | *-cegcc*) 3959 1.1 riastrad $ECHO "\ 3960 1.1 riastrad if test -n \"\$lt_option_debug\"; then 3961 1.1 riastrad \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 3962 1.1 riastrad func_lt_dump_args \${1+\"\$@\"} 1>&2 3963 1.1 riastrad fi 3964 1.1 riastrad exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 3965 1.1 riastrad " 3966 1.1 riastrad ;; 3967 1.1 riastrad 3968 1.1 riastrad *) 3969 1.1 riastrad $ECHO "\ 3970 1.1 riastrad if test -n \"\$lt_option_debug\"; then 3971 1.1 riastrad \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 3972 1.1 riastrad func_lt_dump_args \${1+\"\$@\"} 1>&2 3973 1.1 riastrad fi 3974 1.1 riastrad exec \"\$progdir/\$program\" \${1+\"\$@\"} 3975 1.1 riastrad " 3976 1.1 riastrad ;; 3977 1.1 riastrad esac 3978 1.1 riastrad $ECHO "\ 3979 1.1 riastrad \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 3980 1.1 riastrad exit 1 3981 1.1 riastrad } 3982 1.1 riastrad 3983 1.1 riastrad # A function to encapsulate launching the target application 3984 1.1 riastrad # Strips options in the --lt-* namespace from \$@ and 3985 1.1 riastrad # launches target application with the remaining arguments. 3986 1.1 riastrad func_exec_program () 3987 1.1 riastrad { 3988 1.1 riastrad case \" \$* \" in 3989 1.1 riastrad *\\ --lt-*) 3990 1.1 riastrad for lt_wr_arg 3991 1.1 riastrad do 3992 1.1 riastrad case \$lt_wr_arg in 3993 1.1 riastrad --lt-*) ;; 3994 1.1 riastrad *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 3995 1.1 riastrad esac 3996 1.1 riastrad shift 3997 1.1 riastrad done ;; 3998 1.1 riastrad esac 3999 1.1 riastrad func_exec_program_core \${1+\"\$@\"} 4000 1.1 riastrad } 4001 1.1 riastrad 4002 1.1 riastrad # Parse options 4003 1.1 riastrad func_parse_lt_options \"\$0\" \${1+\"\$@\"} 4004 1.1 riastrad 4005 1.1 riastrad # Find the directory that this script lives in. 4006 1.1 riastrad thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 4007 1.1 riastrad test \"x\$thisdir\" = \"x\$file\" && thisdir=. 4008 1.1 riastrad 4009 1.1 riastrad # Follow symbolic links until we get to the real thisdir. 4010 1.1 riastrad file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 4011 1.1 riastrad while test -n \"\$file\"; do 4012 1.1 riastrad destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 4013 1.1 riastrad 4014 1.1 riastrad # If there was a directory component, then change thisdir. 4015 1.1 riastrad if test \"x\$destdir\" != \"x\$file\"; then 4016 1.1 riastrad case \"\$destdir\" in 4017 1.1 riastrad [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 4018 1.1 riastrad *) thisdir=\"\$thisdir/\$destdir\" ;; 4019 1.1 riastrad esac 4020 1.1 riastrad fi 4021 1.1 riastrad 4022 1.1 riastrad file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 4023 1.1 riastrad file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 4024 1.1 riastrad done 4025 1.1 riastrad 4026 1.1 riastrad # Usually 'no', except on cygwin/mingw when embedded into 4027 1.1 riastrad # the cwrapper. 4028 1.1 riastrad WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 4029 1.1 riastrad if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 4030 1.1 riastrad # special case for '.' 4031 1.1 riastrad if test \"\$thisdir\" = \".\"; then 4032 1.1 riastrad thisdir=\`pwd\` 4033 1.1 riastrad fi 4034 1.1 riastrad # remove .libs from thisdir 4035 1.1 riastrad case \"\$thisdir\" in 4036 1.1 riastrad *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 4037 1.1 riastrad $objdir ) thisdir=. ;; 4038 1.1 riastrad esac 4039 1.1 riastrad fi 4040 1.1 riastrad 4041 1.1 riastrad # Try to get the absolute directory name. 4042 1.1 riastrad absdir=\`cd \"\$thisdir\" && pwd\` 4043 1.1 riastrad test -n \"\$absdir\" && thisdir=\"\$absdir\" 4044 1.1 riastrad " 4045 1.1 riastrad 4046 1.1 riastrad if test "$fast_install" = yes; then 4047 1.1 riastrad $ECHO "\ 4048 1.1 riastrad program=lt-'$outputname'$exeext 4049 1.1 riastrad progdir=\"\$thisdir/$objdir\" 4050 1.1 riastrad 4051 1.1 riastrad if test ! -f \"\$progdir/\$program\" || 4052 1.1 riastrad { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 4053 1.1 riastrad test \"X\$file\" != \"X\$progdir/\$program\"; }; then 4054 1.1 riastrad 4055 1.1 riastrad file=\"\$\$-\$program\" 4056 1.1 riastrad 4057 1.1 riastrad if test ! -d \"\$progdir\"; then 4058 1.1 riastrad $MKDIR \"\$progdir\" 4059 1.1 riastrad else 4060 1.1 riastrad $RM \"\$progdir/\$file\" 4061 1.1 riastrad fi" 4062 1.1 riastrad 4063 1.1 riastrad $ECHO "\ 4064 1.1 riastrad 4065 1.1 riastrad # relink executable if necessary 4066 1.1 riastrad if test -n \"\$relink_command\"; then 4067 1.1 riastrad if relink_command_output=\`eval \$relink_command 2>&1\`; then : 4068 1.1 riastrad else 4069 1.1 riastrad $ECHO \"\$relink_command_output\" >&2 4070 1.1 riastrad $RM \"\$progdir/\$file\" 4071 1.1 riastrad exit 1 4072 1.1 riastrad fi 4073 1.1 riastrad fi 4074 1.1 riastrad 4075 1.1 riastrad $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 4076 1.1 riastrad { $RM \"\$progdir/\$program\"; 4077 1.1 riastrad $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 4078 1.1 riastrad $RM \"\$progdir/\$file\" 4079 1.1 riastrad fi" 4080 1.1 riastrad else 4081 1.1 riastrad $ECHO "\ 4082 1.1 riastrad program='$outputname' 4083 1.1 riastrad progdir=\"\$thisdir/$objdir\" 4084 1.1 riastrad " 4085 1.1 riastrad fi 4086 1.1 riastrad 4087 1.1 riastrad $ECHO "\ 4088 1.1 riastrad 4089 1.1 riastrad if test -f \"\$progdir/\$program\"; then" 4090 1.1 riastrad 4091 1.1 riastrad # fixup the dll searchpath if we need to. 4092 1.1 riastrad # 4093 1.1 riastrad # Fix the DLL searchpath if we need to. Do this before prepending 4094 1.1 riastrad # to shlibpath, because on Windows, both are PATH and uninstalled 4095 1.1 riastrad # libraries must come first. 4096 1.1 riastrad if test -n "$dllsearchpath"; then 4097 1.1 riastrad $ECHO "\ 4098 1.1 riastrad # Add the dll search path components to the executable PATH 4099 1.1 riastrad PATH=$dllsearchpath:\$PATH 4100 1.1 riastrad " 4101 1.1 riastrad fi 4102 1.1 riastrad 4103 1.1 riastrad # Export our shlibpath_var if we have one. 4104 1.1 riastrad if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4105 1.1 riastrad $ECHO "\ 4106 1.1 riastrad # Add our own library path to $shlibpath_var 4107 1.1 riastrad $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 4108 1.1 riastrad 4109 1.1 riastrad # Some systems cannot cope with colon-terminated $shlibpath_var 4110 1.1 riastrad # The second colon is a workaround for a bug in BeOS R4 sed 4111 1.1 riastrad $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 4112 1.1 riastrad 4113 1.1 riastrad export $shlibpath_var 4114 1.1 riastrad " 4115 1.1 riastrad fi 4116 1.1 riastrad 4117 1.1 riastrad $ECHO "\ 4118 1.1 riastrad if test \"\$libtool_execute_magic\" != \"$magic\"; then 4119 1.1 riastrad # Run the actual program with our arguments. 4120 1.1 riastrad func_exec_program \${1+\"\$@\"} 4121 1.1 riastrad fi 4122 1.1 riastrad else 4123 1.1 riastrad # The program doesn't exist. 4124 1.1 riastrad \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 4125 1.1 riastrad \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 4126 1.1 riastrad \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 4127 1.1 riastrad exit 1 4128 1.1 riastrad fi 4129 1.1 riastrad fi\ 4130 1.1 riastrad " 4131 1.1 riastrad } 4132 1.1 riastrad 4133 1.1 riastrad 4134 1.1 riastrad # func_emit_cwrapperexe_src 4135 1.1 riastrad # emit the source code for a wrapper executable on stdout 4136 1.1 riastrad # Must ONLY be called from within func_mode_link because 4137 1.1 riastrad # it depends on a number of variable set therein. 4138 1.1 riastrad func_emit_cwrapperexe_src () 4139 1.1 riastrad { 4140 1.1 riastrad cat <<EOF 4141 1.1 riastrad 4142 1.1 riastrad /* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4143 1.1 riastrad Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 4144 1.1 riastrad 4145 1.1 riastrad The $output program cannot be directly executed until all the libtool 4146 1.1 riastrad libraries that it depends on are installed. 4147 1.1 riastrad 4148 1.1 riastrad This wrapper executable should never be moved out of the build directory. 4149 1.1 riastrad If it is, it will not operate correctly. 4150 1.1 riastrad */ 4151 1.1 riastrad EOF 4152 1.1 riastrad cat <<"EOF" 4153 1.1 riastrad #ifdef _MSC_VER 4154 1.1 riastrad # define _CRT_SECURE_NO_DEPRECATE 1 4155 1.1 riastrad #endif 4156 1.1 riastrad #include <stdio.h> 4157 1.1 riastrad #include <stdlib.h> 4158 1.1 riastrad #ifdef _MSC_VER 4159 1.1 riastrad # include <direct.h> 4160 1.1 riastrad # include <process.h> 4161 1.1 riastrad # include <io.h> 4162 1.1 riastrad #else 4163 1.1 riastrad # include <unistd.h> 4164 1.1 riastrad # include <stdint.h> 4165 1.1 riastrad # ifdef __CYGWIN__ 4166 1.1 riastrad # include <io.h> 4167 1.1 riastrad # endif 4168 1.1 riastrad #endif 4169 1.1 riastrad #include <malloc.h> 4170 1.1 riastrad #include <stdarg.h> 4171 1.1 riastrad #include <assert.h> 4172 1.1 riastrad #include <string.h> 4173 1.1 riastrad #include <ctype.h> 4174 1.1 riastrad #include <errno.h> 4175 1.1 riastrad #include <fcntl.h> 4176 1.1 riastrad #include <sys/stat.h> 4177 1.1 riastrad 4178 1.1 riastrad /* declarations of non-ANSI functions */ 4179 1.1 riastrad #if defined(__MINGW32__) 4180 1.1 riastrad # ifdef __STRICT_ANSI__ 4181 1.1 riastrad int _putenv (const char *); 4182 1.1 riastrad # endif 4183 1.1 riastrad #elif defined(__CYGWIN__) 4184 1.1 riastrad # ifdef __STRICT_ANSI__ 4185 1.1 riastrad char *realpath (const char *, char *); 4186 1.1 riastrad int putenv (char *); 4187 1.1 riastrad int setenv (const char *, const char *, int); 4188 1.1 riastrad # endif 4189 1.1 riastrad /* #elif defined (other platforms) ... */ 4190 1.1 riastrad #endif 4191 1.1 riastrad 4192 1.1 riastrad /* portability defines, excluding path handling macros */ 4193 1.1 riastrad #if defined(_MSC_VER) 4194 1.1 riastrad # define setmode _setmode 4195 1.1 riastrad # define stat _stat 4196 1.1 riastrad # define chmod _chmod 4197 1.1 riastrad # define getcwd _getcwd 4198 1.1 riastrad # define putenv _putenv 4199 1.1 riastrad # define S_IXUSR _S_IEXEC 4200 1.1 riastrad # ifndef _INTPTR_T_DEFINED 4201 1.1 riastrad # define _INTPTR_T_DEFINED 4202 1.1 riastrad # define intptr_t int 4203 1.1 riastrad # endif 4204 1.1 riastrad #elif defined(__MINGW32__) 4205 1.1 riastrad # define setmode _setmode 4206 1.1 riastrad # define stat _stat 4207 1.1 riastrad # define chmod _chmod 4208 1.1 riastrad # define getcwd _getcwd 4209 1.1 riastrad # define putenv _putenv 4210 1.1 riastrad #elif defined(__CYGWIN__) 4211 1.1 riastrad # define HAVE_SETENV 4212 1.1 riastrad # define FOPEN_WB "wb" 4213 1.1 riastrad /* #elif defined (other platforms) ... */ 4214 1.1 riastrad #endif 4215 1.1 riastrad 4216 1.1 riastrad #if defined(PATH_MAX) 4217 1.1 riastrad # define LT_PATHMAX PATH_MAX 4218 1.1 riastrad #elif defined(MAXPATHLEN) 4219 1.1 riastrad # define LT_PATHMAX MAXPATHLEN 4220 1.1 riastrad #else 4221 1.1 riastrad # define LT_PATHMAX 1024 4222 1.1 riastrad #endif 4223 1.1 riastrad 4224 1.1 riastrad #ifndef S_IXOTH 4225 1.1 riastrad # define S_IXOTH 0 4226 1.1 riastrad #endif 4227 1.1 riastrad #ifndef S_IXGRP 4228 1.1 riastrad # define S_IXGRP 0 4229 1.1 riastrad #endif 4230 1.1 riastrad 4231 1.1 riastrad /* path handling portability macros */ 4232 1.1 riastrad #ifndef DIR_SEPARATOR 4233 1.1 riastrad # define DIR_SEPARATOR '/' 4234 1.1 riastrad # define PATH_SEPARATOR ':' 4235 1.1 riastrad #endif 4236 1.1 riastrad 4237 1.1 riastrad #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4238 1.1 riastrad defined (__OS2__) 4239 1.1 riastrad # define HAVE_DOS_BASED_FILE_SYSTEM 4240 1.1 riastrad # define FOPEN_WB "wb" 4241 1.1 riastrad # ifndef DIR_SEPARATOR_2 4242 1.1 riastrad # define DIR_SEPARATOR_2 '\\' 4243 1.1 riastrad # endif 4244 1.1 riastrad # ifndef PATH_SEPARATOR_2 4245 1.1 riastrad # define PATH_SEPARATOR_2 ';' 4246 1.1 riastrad # endif 4247 1.1 riastrad #endif 4248 1.1 riastrad 4249 1.1 riastrad #ifndef DIR_SEPARATOR_2 4250 1.1 riastrad # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4251 1.1 riastrad #else /* DIR_SEPARATOR_2 */ 4252 1.1 riastrad # define IS_DIR_SEPARATOR(ch) \ 4253 1.1 riastrad (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4254 1.1 riastrad #endif /* DIR_SEPARATOR_2 */ 4255 1.1 riastrad 4256 1.1 riastrad #ifndef PATH_SEPARATOR_2 4257 1.1 riastrad # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4258 1.1 riastrad #else /* PATH_SEPARATOR_2 */ 4259 1.1 riastrad # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4260 1.1 riastrad #endif /* PATH_SEPARATOR_2 */ 4261 1.1 riastrad 4262 1.1 riastrad #ifndef FOPEN_WB 4263 1.1 riastrad # define FOPEN_WB "w" 4264 1.1 riastrad #endif 4265 1.1 riastrad #ifndef _O_BINARY 4266 1.1 riastrad # define _O_BINARY 0 4267 1.1 riastrad #endif 4268 1.1 riastrad 4269 1.1 riastrad #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 4270 1.1 riastrad #define XFREE(stale) do { \ 4271 1.1 riastrad if (stale) { free ((void *) stale); stale = 0; } \ 4272 1.1 riastrad } while (0) 4273 1.1 riastrad 4274 1.1 riastrad #if defined(LT_DEBUGWRAPPER) 4275 1.1 riastrad static int lt_debug = 1; 4276 1.1 riastrad #else 4277 1.1 riastrad static int lt_debug = 0; 4278 1.1 riastrad #endif 4279 1.1 riastrad 4280 1.1 riastrad const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 4281 1.1 riastrad 4282 1.1 riastrad void *xmalloc (size_t num); 4283 1.1 riastrad char *xstrdup (const char *string); 4284 1.1 riastrad const char *base_name (const char *name); 4285 1.1 riastrad char *find_executable (const char *wrapper); 4286 1.1 riastrad char *chase_symlinks (const char *pathspec); 4287 1.1 riastrad int make_executable (const char *path); 4288 1.1 riastrad int check_executable (const char *path); 4289 1.1 riastrad char *strendzap (char *str, const char *pat); 4290 1.1 riastrad void lt_debugprintf (const char *file, int line, const char *fmt, ...); 4291 1.1 riastrad void lt_fatal (const char *file, int line, const char *message, ...); 4292 1.1 riastrad static const char *nonnull (const char *s); 4293 1.1 riastrad static const char *nonempty (const char *s); 4294 1.1 riastrad void lt_setenv (const char *name, const char *value); 4295 1.1 riastrad char *lt_extend_str (const char *orig_value, const char *add, int to_end); 4296 1.1 riastrad void lt_update_exe_path (const char *name, const char *value); 4297 1.1 riastrad void lt_update_lib_path (const char *name, const char *value); 4298 1.1 riastrad char **prepare_spawn (char **argv); 4299 1.1 riastrad void lt_dump_script (FILE *f); 4300 1.1 riastrad EOF 4301 1.1 riastrad 4302 1.1 riastrad cat <<EOF 4303 1.1 riastrad volatile const char * MAGIC_EXE = "$magic_exe"; 4304 1.1 riastrad const char * LIB_PATH_VARNAME = "$shlibpath_var"; 4305 1.1 riastrad EOF 4306 1.1 riastrad 4307 1.1 riastrad if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4308 1.1 riastrad func_to_host_path "$temp_rpath" 4309 1.1 riastrad cat <<EOF 4310 1.1 riastrad const char * LIB_PATH_VALUE = "$func_to_host_path_result"; 4311 1.1 riastrad EOF 4312 1.1 riastrad else 4313 1.1 riastrad cat <<"EOF" 4314 1.1 riastrad const char * LIB_PATH_VALUE = ""; 4315 1.1 riastrad EOF 4316 1.1 riastrad fi 4317 1.1 riastrad 4318 1.1 riastrad if test -n "$dllsearchpath"; then 4319 1.1 riastrad func_to_host_path "$dllsearchpath:" 4320 1.1 riastrad cat <<EOF 4321 1.1 riastrad const char * EXE_PATH_VARNAME = "PATH"; 4322 1.1 riastrad const char * EXE_PATH_VALUE = "$func_to_host_path_result"; 4323 1.1 riastrad EOF 4324 1.1 riastrad else 4325 1.1 riastrad cat <<"EOF" 4326 1.1 riastrad const char * EXE_PATH_VARNAME = ""; 4327 1.1 riastrad const char * EXE_PATH_VALUE = ""; 4328 1.1 riastrad EOF 4329 1.1 riastrad fi 4330 1.1 riastrad 4331 1.1 riastrad if test "$fast_install" = yes; then 4332 1.1 riastrad cat <<EOF 4333 1.1 riastrad const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 4334 1.1 riastrad EOF 4335 1.1 riastrad else 4336 1.1 riastrad cat <<EOF 4337 1.1 riastrad const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 4338 1.1 riastrad EOF 4339 1.1 riastrad fi 4340 1.1 riastrad 4341 1.1 riastrad 4342 1.1 riastrad cat <<"EOF" 4343 1.1 riastrad 4344 1.1 riastrad #define LTWRAPPER_OPTION_PREFIX "--lt-" 4345 1.1 riastrad 4346 1.1 riastrad static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 4347 1.1 riastrad static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 4348 1.1 riastrad static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 4349 1.1 riastrad 4350 1.1 riastrad int 4351 1.1 riastrad main (int argc, char *argv[]) 4352 1.1 riastrad { 4353 1.1 riastrad char **newargz; 4354 1.1 riastrad int newargc; 4355 1.1 riastrad char *tmp_pathspec; 4356 1.1 riastrad char *actual_cwrapper_path; 4357 1.1 riastrad char *actual_cwrapper_name; 4358 1.1 riastrad char *target_name; 4359 1.1 riastrad char *lt_argv_zero; 4360 1.1 riastrad intptr_t rval = 127; 4361 1.1 riastrad 4362 1.1 riastrad int i; 4363 1.1 riastrad 4364 1.1 riastrad program_name = (char *) xstrdup (base_name (argv[0])); 4365 1.1 riastrad newargz = XMALLOC (char *, argc + 1); 4366 1.1 riastrad 4367 1.1 riastrad /* very simple arg parsing; don't want to rely on getopt 4368 1.1 riastrad * also, copy all non cwrapper options to newargz, except 4369 1.1 riastrad * argz[0], which is handled differently 4370 1.1 riastrad */ 4371 1.1 riastrad newargc=0; 4372 1.1 riastrad for (i = 1; i < argc; i++) 4373 1.1 riastrad { 4374 1.1 riastrad if (strcmp (argv[i], dumpscript_opt) == 0) 4375 1.1 riastrad { 4376 1.1 riastrad EOF 4377 1.1 riastrad case "$host" in 4378 1.1 riastrad *mingw* | *cygwin* ) 4379 1.1 riastrad # make stdout use "unix" line endings 4380 1.1 riastrad echo " setmode(1,_O_BINARY);" 4381 1.1 riastrad ;; 4382 1.1 riastrad esac 4383 1.1 riastrad 4384 1.1 riastrad cat <<"EOF" 4385 1.1 riastrad lt_dump_script (stdout); 4386 1.1 riastrad return 0; 4387 1.1 riastrad } 4388 1.1 riastrad if (strcmp (argv[i], debug_opt) == 0) 4389 1.1 riastrad { 4390 1.1 riastrad lt_debug = 1; 4391 1.1 riastrad continue; 4392 1.1 riastrad } 4393 1.1 riastrad if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 4394 1.1 riastrad { 4395 1.1 riastrad /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 4396 1.1 riastrad namespace, but it is not one of the ones we know about and 4397 1.1 riastrad have already dealt with, above (inluding dump-script), then 4398 1.1 riastrad report an error. Otherwise, targets might begin to believe 4399 1.1 riastrad they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 4400 1.1 riastrad namespace. The first time any user complains about this, we'll 4401 1.1 riastrad need to make LTWRAPPER_OPTION_PREFIX a configure-time option 4402 1.1 riastrad or a configure.ac-settable value. 4403 1.1 riastrad */ 4404 1.1 riastrad lt_fatal (__FILE__, __LINE__, 4405 1.1 riastrad "unrecognized %s option: '%s'", 4406 1.1 riastrad ltwrapper_option_prefix, argv[i]); 4407 1.1 riastrad } 4408 1.1 riastrad /* otherwise ... */ 4409 1.1 riastrad newargz[++newargc] = xstrdup (argv[i]); 4410 1.1 riastrad } 4411 1.1 riastrad newargz[++newargc] = NULL; 4412 1.1 riastrad 4413 1.1 riastrad EOF 4414 1.1 riastrad cat <<EOF 4415 1.1 riastrad /* The GNU banner must be the first non-error debug message */ 4416 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 4417 1.1 riastrad EOF 4418 1.1 riastrad cat <<"EOF" 4419 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 4420 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 4421 1.1 riastrad 4422 1.1 riastrad tmp_pathspec = find_executable (argv[0]); 4423 1.1 riastrad if (tmp_pathspec == NULL) 4424 1.1 riastrad lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 4425 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, 4426 1.1 riastrad "(main) found exe (before symlink chase) at: %s\n", 4427 1.1 riastrad tmp_pathspec); 4428 1.1 riastrad 4429 1.1 riastrad actual_cwrapper_path = chase_symlinks (tmp_pathspec); 4430 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, 4431 1.1 riastrad "(main) found exe (after symlink chase) at: %s\n", 4432 1.1 riastrad actual_cwrapper_path); 4433 1.1 riastrad XFREE (tmp_pathspec); 4434 1.1 riastrad 4435 1.1 riastrad actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 4436 1.1 riastrad strendzap (actual_cwrapper_path, actual_cwrapper_name); 4437 1.1 riastrad 4438 1.1 riastrad /* wrapper name transforms */ 4439 1.1 riastrad strendzap (actual_cwrapper_name, ".exe"); 4440 1.1 riastrad tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 4441 1.1 riastrad XFREE (actual_cwrapper_name); 4442 1.1 riastrad actual_cwrapper_name = tmp_pathspec; 4443 1.1 riastrad tmp_pathspec = 0; 4444 1.1 riastrad 4445 1.1 riastrad /* target_name transforms -- use actual target program name; might have lt- prefix */ 4446 1.1 riastrad target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 4447 1.1 riastrad strendzap (target_name, ".exe"); 4448 1.1 riastrad tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 4449 1.1 riastrad XFREE (target_name); 4450 1.1 riastrad target_name = tmp_pathspec; 4451 1.1 riastrad tmp_pathspec = 0; 4452 1.1 riastrad 4453 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, 4454 1.1 riastrad "(main) libtool target name: %s\n", 4455 1.1 riastrad target_name); 4456 1.1 riastrad EOF 4457 1.1 riastrad 4458 1.1 riastrad cat <<EOF 4459 1.1 riastrad newargz[0] = 4460 1.1 riastrad XMALLOC (char, (strlen (actual_cwrapper_path) + 4461 1.1 riastrad strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 4462 1.1 riastrad strcpy (newargz[0], actual_cwrapper_path); 4463 1.1 riastrad strcat (newargz[0], "$objdir"); 4464 1.1 riastrad strcat (newargz[0], "/"); 4465 1.1 riastrad EOF 4466 1.1 riastrad 4467 1.1 riastrad cat <<"EOF" 4468 1.1 riastrad /* stop here, and copy so we don't have to do this twice */ 4469 1.1 riastrad tmp_pathspec = xstrdup (newargz[0]); 4470 1.1 riastrad 4471 1.1 riastrad /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 4472 1.1 riastrad strcat (newargz[0], actual_cwrapper_name); 4473 1.1 riastrad 4474 1.1 riastrad /* DO want the lt- prefix here if it exists, so use target_name */ 4475 1.1 riastrad lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 4476 1.1 riastrad XFREE (tmp_pathspec); 4477 1.1 riastrad tmp_pathspec = NULL; 4478 1.1 riastrad EOF 4479 1.1 riastrad 4480 1.1 riastrad case $host_os in 4481 1.1 riastrad mingw*) 4482 1.1 riastrad cat <<"EOF" 4483 1.1 riastrad { 4484 1.1 riastrad char* p; 4485 1.1 riastrad while ((p = strchr (newargz[0], '\\')) != NULL) 4486 1.1 riastrad { 4487 1.1 riastrad *p = '/'; 4488 1.1 riastrad } 4489 1.1 riastrad while ((p = strchr (lt_argv_zero, '\\')) != NULL) 4490 1.1 riastrad { 4491 1.1 riastrad *p = '/'; 4492 1.1 riastrad } 4493 1.1 riastrad } 4494 1.1 riastrad EOF 4495 1.1 riastrad ;; 4496 1.1 riastrad esac 4497 1.1 riastrad 4498 1.1 riastrad cat <<"EOF" 4499 1.1 riastrad XFREE (target_name); 4500 1.1 riastrad XFREE (actual_cwrapper_path); 4501 1.1 riastrad XFREE (actual_cwrapper_name); 4502 1.1 riastrad 4503 1.1 riastrad lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 4504 1.1 riastrad lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 4505 1.1 riastrad /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 4506 1.1 riastrad be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 4507 1.1 riastrad because on Windows, both *_VARNAMEs are PATH but uninstalled 4508 1.1 riastrad libraries must come first. */ 4509 1.1 riastrad lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 4510 1.1 riastrad lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 4511 1.1 riastrad 4512 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 4513 1.1 riastrad nonnull (lt_argv_zero)); 4514 1.1 riastrad for (i = 0; i < newargc; i++) 4515 1.1 riastrad { 4516 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 4517 1.1 riastrad i, nonnull (newargz[i])); 4518 1.1 riastrad } 4519 1.1 riastrad 4520 1.1 riastrad EOF 4521 1.1 riastrad 4522 1.1 riastrad case $host_os in 4523 1.1 riastrad mingw*) 4524 1.1 riastrad cat <<"EOF" 4525 1.1 riastrad /* execv doesn't actually work on mingw as expected on unix */ 4526 1.1 riastrad newargz = prepare_spawn (newargz); 4527 1.1 riastrad rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 4528 1.1 riastrad if (rval == -1) 4529 1.1 riastrad { 4530 1.1 riastrad /* failed to start process */ 4531 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, 4532 1.1 riastrad "(main) failed to launch target \"%s\": %s\n", 4533 1.1 riastrad lt_argv_zero, nonnull (strerror (errno))); 4534 1.1 riastrad return 127; 4535 1.1 riastrad } 4536 1.1 riastrad return rval; 4537 1.1 riastrad EOF 4538 1.1 riastrad ;; 4539 1.1 riastrad *) 4540 1.1 riastrad cat <<"EOF" 4541 1.1 riastrad execv (lt_argv_zero, newargz); 4542 1.1 riastrad return rval; /* =127, but avoids unused variable warning */ 4543 1.1 riastrad EOF 4544 1.1 riastrad ;; 4545 1.1 riastrad esac 4546 1.1 riastrad 4547 1.1 riastrad cat <<"EOF" 4548 1.1 riastrad } 4549 1.1 riastrad 4550 1.1 riastrad void * 4551 1.1 riastrad xmalloc (size_t num) 4552 1.1 riastrad { 4553 1.1 riastrad void *p = (void *) malloc (num); 4554 1.1 riastrad if (!p) 4555 1.1 riastrad lt_fatal (__FILE__, __LINE__, "memory exhausted"); 4556 1.1 riastrad 4557 1.1 riastrad return p; 4558 1.1 riastrad } 4559 1.1 riastrad 4560 1.1 riastrad char * 4561 1.1 riastrad xstrdup (const char *string) 4562 1.1 riastrad { 4563 1.1 riastrad return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 4564 1.1 riastrad string) : NULL; 4565 1.1 riastrad } 4566 1.1 riastrad 4567 1.1 riastrad const char * 4568 1.1 riastrad base_name (const char *name) 4569 1.1 riastrad { 4570 1.1 riastrad const char *base; 4571 1.1 riastrad 4572 1.1 riastrad #if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4573 1.1 riastrad /* Skip over the disk name in MSDOS pathnames. */ 4574 1.1 riastrad if (isalpha ((unsigned char) name[0]) && name[1] == ':') 4575 1.1 riastrad name += 2; 4576 1.1 riastrad #endif 4577 1.1 riastrad 4578 1.1 riastrad for (base = name; *name; name++) 4579 1.1 riastrad if (IS_DIR_SEPARATOR (*name)) 4580 1.1 riastrad base = name + 1; 4581 1.1 riastrad return base; 4582 1.1 riastrad } 4583 1.1 riastrad 4584 1.1 riastrad int 4585 1.1 riastrad check_executable (const char *path) 4586 1.1 riastrad { 4587 1.1 riastrad struct stat st; 4588 1.1 riastrad 4589 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 4590 1.1 riastrad nonempty (path)); 4591 1.1 riastrad if ((!path) || (!*path)) 4592 1.1 riastrad return 0; 4593 1.1 riastrad 4594 1.1 riastrad if ((stat (path, &st) >= 0) 4595 1.1 riastrad && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 4596 1.1 riastrad return 1; 4597 1.1 riastrad else 4598 1.1 riastrad return 0; 4599 1.1 riastrad } 4600 1.1 riastrad 4601 1.1 riastrad int 4602 1.1 riastrad make_executable (const char *path) 4603 1.1 riastrad { 4604 1.1 riastrad int rval = 0; 4605 1.1 riastrad struct stat st; 4606 1.1 riastrad 4607 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 4608 1.1 riastrad nonempty (path)); 4609 1.1 riastrad if ((!path) || (!*path)) 4610 1.1 riastrad return 0; 4611 1.1 riastrad 4612 1.1 riastrad if (stat (path, &st) >= 0) 4613 1.1 riastrad { 4614 1.1 riastrad rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 4615 1.1 riastrad } 4616 1.1 riastrad return rval; 4617 1.1 riastrad } 4618 1.1 riastrad 4619 1.1 riastrad /* Searches for the full path of the wrapper. Returns 4620 1.1 riastrad newly allocated full path name if found, NULL otherwise 4621 1.1 riastrad Does not chase symlinks, even on platforms that support them. 4622 1.1 riastrad */ 4623 1.1 riastrad char * 4624 1.1 riastrad find_executable (const char *wrapper) 4625 1.1 riastrad { 4626 1.1 riastrad int has_slash = 0; 4627 1.1 riastrad const char *p; 4628 1.1 riastrad const char *p_next; 4629 1.1 riastrad /* static buffer for getcwd */ 4630 1.1 riastrad char tmp[LT_PATHMAX + 1]; 4631 1.1 riastrad int tmp_len; 4632 1.1 riastrad char *concat_name; 4633 1.1 riastrad 4634 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 4635 1.1 riastrad nonempty (wrapper)); 4636 1.1 riastrad 4637 1.1 riastrad if ((wrapper == NULL) || (*wrapper == '\0')) 4638 1.1 riastrad return NULL; 4639 1.1 riastrad 4640 1.1 riastrad /* Absolute path? */ 4641 1.1 riastrad #if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4642 1.1 riastrad if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 4643 1.1 riastrad { 4644 1.1 riastrad concat_name = xstrdup (wrapper); 4645 1.1 riastrad if (check_executable (concat_name)) 4646 1.1 riastrad return concat_name; 4647 1.1 riastrad XFREE (concat_name); 4648 1.1 riastrad } 4649 1.1 riastrad else 4650 1.1 riastrad { 4651 1.1 riastrad #endif 4652 1.1 riastrad if (IS_DIR_SEPARATOR (wrapper[0])) 4653 1.1 riastrad { 4654 1.1 riastrad concat_name = xstrdup (wrapper); 4655 1.1 riastrad if (check_executable (concat_name)) 4656 1.1 riastrad return concat_name; 4657 1.1 riastrad XFREE (concat_name); 4658 1.1 riastrad } 4659 1.1 riastrad #if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4660 1.1 riastrad } 4661 1.1 riastrad #endif 4662 1.1 riastrad 4663 1.1 riastrad for (p = wrapper; *p; p++) 4664 1.1 riastrad if (*p == '/') 4665 1.1 riastrad { 4666 1.1 riastrad has_slash = 1; 4667 1.1 riastrad break; 4668 1.1 riastrad } 4669 1.1 riastrad if (!has_slash) 4670 1.1 riastrad { 4671 1.1 riastrad /* no slashes; search PATH */ 4672 1.1 riastrad const char *path = getenv ("PATH"); 4673 1.1 riastrad if (path != NULL) 4674 1.1 riastrad { 4675 1.1 riastrad for (p = path; *p; p = p_next) 4676 1.1 riastrad { 4677 1.1 riastrad const char *q; 4678 1.1 riastrad size_t p_len; 4679 1.1 riastrad for (q = p; *q; q++) 4680 1.1 riastrad if (IS_PATH_SEPARATOR (*q)) 4681 1.1 riastrad break; 4682 1.1 riastrad p_len = q - p; 4683 1.1 riastrad p_next = (*q == '\0' ? q : q + 1); 4684 1.1 riastrad if (p_len == 0) 4685 1.1 riastrad { 4686 1.1 riastrad /* empty path: current directory */ 4687 1.1 riastrad if (getcwd (tmp, LT_PATHMAX) == NULL) 4688 1.1 riastrad lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4689 1.1 riastrad nonnull (strerror (errno))); 4690 1.1 riastrad tmp_len = strlen (tmp); 4691 1.1 riastrad concat_name = 4692 1.1 riastrad XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4693 1.1 riastrad memcpy (concat_name, tmp, tmp_len); 4694 1.1 riastrad concat_name[tmp_len] = '/'; 4695 1.1 riastrad strcpy (concat_name + tmp_len + 1, wrapper); 4696 1.1 riastrad } 4697 1.1 riastrad else 4698 1.1 riastrad { 4699 1.1 riastrad concat_name = 4700 1.1 riastrad XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 4701 1.1 riastrad memcpy (concat_name, p, p_len); 4702 1.1 riastrad concat_name[p_len] = '/'; 4703 1.1 riastrad strcpy (concat_name + p_len + 1, wrapper); 4704 1.1 riastrad } 4705 1.1 riastrad if (check_executable (concat_name)) 4706 1.1 riastrad return concat_name; 4707 1.1 riastrad XFREE (concat_name); 4708 1.1 riastrad } 4709 1.1 riastrad } 4710 1.1 riastrad /* not found in PATH; assume curdir */ 4711 1.1 riastrad } 4712 1.1 riastrad /* Relative path | not found in path: prepend cwd */ 4713 1.1 riastrad if (getcwd (tmp, LT_PATHMAX) == NULL) 4714 1.1 riastrad lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4715 1.1 riastrad nonnull (strerror (errno))); 4716 1.1 riastrad tmp_len = strlen (tmp); 4717 1.1 riastrad concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4718 1.1 riastrad memcpy (concat_name, tmp, tmp_len); 4719 1.1 riastrad concat_name[tmp_len] = '/'; 4720 1.1 riastrad strcpy (concat_name + tmp_len + 1, wrapper); 4721 1.1 riastrad 4722 1.1 riastrad if (check_executable (concat_name)) 4723 1.1 riastrad return concat_name; 4724 1.1 riastrad XFREE (concat_name); 4725 1.1 riastrad return NULL; 4726 1.1 riastrad } 4727 1.1 riastrad 4728 1.1 riastrad char * 4729 1.1 riastrad chase_symlinks (const char *pathspec) 4730 1.1 riastrad { 4731 1.1 riastrad #ifndef S_ISLNK 4732 1.1 riastrad return xstrdup (pathspec); 4733 1.1 riastrad #else 4734 1.1 riastrad char buf[LT_PATHMAX]; 4735 1.1 riastrad struct stat s; 4736 1.1 riastrad char *tmp_pathspec = xstrdup (pathspec); 4737 1.1 riastrad char *p; 4738 1.1 riastrad int has_symlinks = 0; 4739 1.1 riastrad while (strlen (tmp_pathspec) && !has_symlinks) 4740 1.1 riastrad { 4741 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, 4742 1.1 riastrad "checking path component for symlinks: %s\n", 4743 1.1 riastrad tmp_pathspec); 4744 1.1 riastrad if (lstat (tmp_pathspec, &s) == 0) 4745 1.1 riastrad { 4746 1.1 riastrad if (S_ISLNK (s.st_mode) != 0) 4747 1.1 riastrad { 4748 1.1 riastrad has_symlinks = 1; 4749 1.1 riastrad break; 4750 1.1 riastrad } 4751 1.1 riastrad 4752 1.1 riastrad /* search backwards for last DIR_SEPARATOR */ 4753 1.1 riastrad p = tmp_pathspec + strlen (tmp_pathspec) - 1; 4754 1.1 riastrad while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4755 1.1 riastrad p--; 4756 1.1 riastrad if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4757 1.1 riastrad { 4758 1.1 riastrad /* no more DIR_SEPARATORS left */ 4759 1.1 riastrad break; 4760 1.1 riastrad } 4761 1.1 riastrad *p = '\0'; 4762 1.1 riastrad } 4763 1.1 riastrad else 4764 1.1 riastrad { 4765 1.1 riastrad lt_fatal (__FILE__, __LINE__, 4766 1.1 riastrad "error accessing file \"%s\": %s", 4767 1.1 riastrad tmp_pathspec, nonnull (strerror (errno))); 4768 1.1 riastrad } 4769 1.1 riastrad } 4770 1.1 riastrad XFREE (tmp_pathspec); 4771 1.1 riastrad 4772 1.1 riastrad if (!has_symlinks) 4773 1.1 riastrad { 4774 1.1 riastrad return xstrdup (pathspec); 4775 1.1 riastrad } 4776 1.1 riastrad 4777 1.1 riastrad tmp_pathspec = realpath (pathspec, buf); 4778 1.1 riastrad if (tmp_pathspec == 0) 4779 1.1 riastrad { 4780 1.1 riastrad lt_fatal (__FILE__, __LINE__, 4781 1.1 riastrad "could not follow symlinks for %s", pathspec); 4782 1.1 riastrad } 4783 1.1 riastrad return xstrdup (tmp_pathspec); 4784 1.1 riastrad #endif 4785 1.1 riastrad } 4786 1.1 riastrad 4787 1.1 riastrad char * 4788 1.1 riastrad strendzap (char *str, const char *pat) 4789 1.1 riastrad { 4790 1.1 riastrad size_t len, patlen; 4791 1.1 riastrad 4792 1.1 riastrad assert (str != NULL); 4793 1.1 riastrad assert (pat != NULL); 4794 1.1 riastrad 4795 1.1 riastrad len = strlen (str); 4796 1.1 riastrad patlen = strlen (pat); 4797 1.1 riastrad 4798 1.1 riastrad if (patlen <= len) 4799 1.1 riastrad { 4800 1.1 riastrad str += len - patlen; 4801 1.1 riastrad if (strcmp (str, pat) == 0) 4802 1.1 riastrad *str = '\0'; 4803 1.1 riastrad } 4804 1.1 riastrad return str; 4805 1.1 riastrad } 4806 1.1 riastrad 4807 1.1 riastrad void 4808 1.1 riastrad lt_debugprintf (const char *file, int line, const char *fmt, ...) 4809 1.1 riastrad { 4810 1.1 riastrad va_list args; 4811 1.1 riastrad if (lt_debug) 4812 1.1 riastrad { 4813 1.1 riastrad (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 4814 1.1 riastrad va_start (args, fmt); 4815 1.1 riastrad (void) vfprintf (stderr, fmt, args); 4816 1.1 riastrad va_end (args); 4817 1.1 riastrad } 4818 1.1 riastrad } 4819 1.1 riastrad 4820 1.1 riastrad static void 4821 1.1 riastrad lt_error_core (int exit_status, const char *file, 4822 1.1 riastrad int line, const char *mode, 4823 1.1 riastrad const char *message, va_list ap) 4824 1.1 riastrad { 4825 1.1 riastrad fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 4826 1.1 riastrad vfprintf (stderr, message, ap); 4827 1.1 riastrad fprintf (stderr, ".\n"); 4828 1.1 riastrad 4829 1.1 riastrad if (exit_status >= 0) 4830 1.1 riastrad exit (exit_status); 4831 1.1 riastrad } 4832 1.1 riastrad 4833 1.1 riastrad void 4834 1.1 riastrad lt_fatal (const char *file, int line, const char *message, ...) 4835 1.1 riastrad { 4836 1.1 riastrad va_list ap; 4837 1.1 riastrad va_start (ap, message); 4838 1.1 riastrad lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 4839 1.1 riastrad va_end (ap); 4840 1.1 riastrad } 4841 1.1 riastrad 4842 1.1 riastrad static const char * 4843 1.1 riastrad nonnull (const char *s) 4844 1.1 riastrad { 4845 1.1 riastrad return s ? s : "(null)"; 4846 1.1 riastrad } 4847 1.1 riastrad 4848 1.1 riastrad static const char * 4849 1.1 riastrad nonempty (const char *s) 4850 1.1 riastrad { 4851 1.1 riastrad return (s && !*s) ? "(empty)" : nonnull (s); 4852 1.1 riastrad } 4853 1.1 riastrad 4854 1.1 riastrad void 4855 1.1 riastrad lt_setenv (const char *name, const char *value) 4856 1.1 riastrad { 4857 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, 4858 1.1 riastrad "(lt_setenv) setting '%s' to '%s'\n", 4859 1.1 riastrad nonnull (name), nonnull (value)); 4860 1.1 riastrad { 4861 1.1 riastrad #ifdef HAVE_SETENV 4862 1.1 riastrad /* always make a copy, for consistency with !HAVE_SETENV */ 4863 1.1 riastrad char *str = xstrdup (value); 4864 1.1 riastrad setenv (name, str, 1); 4865 1.1 riastrad #else 4866 1.1 riastrad int len = strlen (name) + 1 + strlen (value) + 1; 4867 1.1 riastrad char *str = XMALLOC (char, len); 4868 1.1 riastrad sprintf (str, "%s=%s", name, value); 4869 1.1 riastrad if (putenv (str) != EXIT_SUCCESS) 4870 1.1 riastrad { 4871 1.1 riastrad XFREE (str); 4872 1.1 riastrad } 4873 1.1 riastrad #endif 4874 1.1 riastrad } 4875 1.1 riastrad } 4876 1.1 riastrad 4877 1.1 riastrad char * 4878 1.1 riastrad lt_extend_str (const char *orig_value, const char *add, int to_end) 4879 1.1 riastrad { 4880 1.1 riastrad char *new_value; 4881 1.1 riastrad if (orig_value && *orig_value) 4882 1.1 riastrad { 4883 1.1 riastrad int orig_value_len = strlen (orig_value); 4884 1.1 riastrad int add_len = strlen (add); 4885 1.1 riastrad new_value = XMALLOC (char, add_len + orig_value_len + 1); 4886 1.1 riastrad if (to_end) 4887 1.1 riastrad { 4888 1.1 riastrad strcpy (new_value, orig_value); 4889 1.1 riastrad strcpy (new_value + orig_value_len, add); 4890 1.1 riastrad } 4891 1.1 riastrad else 4892 1.1 riastrad { 4893 1.1 riastrad strcpy (new_value, add); 4894 1.1 riastrad strcpy (new_value + add_len, orig_value); 4895 1.1 riastrad } 4896 1.1 riastrad } 4897 1.1 riastrad else 4898 1.1 riastrad { 4899 1.1 riastrad new_value = xstrdup (add); 4900 1.1 riastrad } 4901 1.1 riastrad return new_value; 4902 1.1 riastrad } 4903 1.1 riastrad 4904 1.1 riastrad void 4905 1.1 riastrad lt_update_exe_path (const char *name, const char *value) 4906 1.1 riastrad { 4907 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, 4908 1.1 riastrad "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 4909 1.1 riastrad nonnull (name), nonnull (value)); 4910 1.1 riastrad 4911 1.1 riastrad if (name && *name && value && *value) 4912 1.1 riastrad { 4913 1.1 riastrad char *new_value = lt_extend_str (getenv (name), value, 0); 4914 1.1 riastrad /* some systems can't cope with a ':'-terminated path #' */ 4915 1.1 riastrad int len = strlen (new_value); 4916 1.1 riastrad while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 4917 1.1 riastrad { 4918 1.1 riastrad new_value[len-1] = '\0'; 4919 1.1 riastrad } 4920 1.1 riastrad lt_setenv (name, new_value); 4921 1.1 riastrad XFREE (new_value); 4922 1.1 riastrad } 4923 1.1 riastrad } 4924 1.1 riastrad 4925 1.1 riastrad void 4926 1.1 riastrad lt_update_lib_path (const char *name, const char *value) 4927 1.1 riastrad { 4928 1.1 riastrad lt_debugprintf (__FILE__, __LINE__, 4929 1.1 riastrad "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4930 1.1 riastrad nonnull (name), nonnull (value)); 4931 1.1 riastrad 4932 1.1 riastrad if (name && *name && value && *value) 4933 1.1 riastrad { 4934 1.1 riastrad char *new_value = lt_extend_str (getenv (name), value, 0); 4935 1.1 riastrad lt_setenv (name, new_value); 4936 1.1 riastrad XFREE (new_value); 4937 1.1 riastrad } 4938 1.1 riastrad } 4939 1.1 riastrad 4940 1.1 riastrad EOF 4941 1.1 riastrad case $host_os in 4942 1.1 riastrad mingw*) 4943 1.1 riastrad cat <<"EOF" 4944 1.1 riastrad 4945 1.1 riastrad /* Prepares an argument vector before calling spawn(). 4946 1.1 riastrad Note that spawn() does not by itself call the command interpreter 4947 1.1 riastrad (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 4948 1.1 riastrad ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 4949 1.1 riastrad GetVersionEx(&v); 4950 1.1 riastrad v.dwPlatformId == VER_PLATFORM_WIN32_NT; 4951 1.1 riastrad }) ? "cmd.exe" : "command.com"). 4952 1.1 riastrad Instead it simply concatenates the arguments, separated by ' ', and calls 4953 1.1 riastrad CreateProcess(). We must quote the arguments since Win32 CreateProcess() 4954 1.1 riastrad interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 4955 1.1 riastrad special way: 4956 1.1 riastrad - Space and tab are interpreted as delimiters. They are not treated as 4957 1.1 riastrad delimiters if they are surrounded by double quotes: "...". 4958 1.1 riastrad - Unescaped double quotes are removed from the input. Their only effect is 4959 1.1 riastrad that within double quotes, space and tab are treated like normal 4960 1.1 riastrad characters. 4961 1.1 riastrad - Backslashes not followed by double quotes are not special. 4962 1.1 riastrad - But 2*n+1 backslashes followed by a double quote become 4963 1.1 riastrad n backslashes followed by a double quote (n >= 0): 4964 1.1 riastrad \" -> " 4965 1.1 riastrad \\\" -> \" 4966 1.1 riastrad \\\\\" -> \\" 4967 1.1 riastrad */ 4968 1.1 riastrad #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 4969 1.1 riastrad #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 4970 1.1 riastrad char ** 4971 1.1 riastrad prepare_spawn (char **argv) 4972 1.1 riastrad { 4973 1.1 riastrad size_t argc; 4974 1.1 riastrad char **new_argv; 4975 1.1 riastrad size_t i; 4976 1.1 riastrad 4977 1.1 riastrad /* Count number of arguments. */ 4978 1.1 riastrad for (argc = 0; argv[argc] != NULL; argc++) 4979 1.1 riastrad ; 4980 1.1 riastrad 4981 1.1 riastrad /* Allocate new argument vector. */ 4982 1.1 riastrad new_argv = XMALLOC (char *, argc + 1); 4983 1.1 riastrad 4984 1.1 riastrad /* Put quoted arguments into the new argument vector. */ 4985 1.1 riastrad for (i = 0; i < argc; i++) 4986 1.1 riastrad { 4987 1.1 riastrad const char *string = argv[i]; 4988 1.1 riastrad 4989 1.1 riastrad if (string[0] == '\0') 4990 1.1 riastrad new_argv[i] = xstrdup ("\"\""); 4991 1.1 riastrad else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 4992 1.1 riastrad { 4993 1.1 riastrad int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 4994 1.1 riastrad size_t length; 4995 1.1 riastrad unsigned int backslashes; 4996 1.1 riastrad const char *s; 4997 1.1 riastrad char *quoted_string; 4998 1.1 riastrad char *p; 4999 1.1 riastrad 5000 1.1 riastrad length = 0; 5001 1.1 riastrad backslashes = 0; 5002 1.1 riastrad if (quote_around) 5003 1.1 riastrad length++; 5004 1.1 riastrad for (s = string; *s != '\0'; s++) 5005 1.1 riastrad { 5006 1.1 riastrad char c = *s; 5007 1.1 riastrad if (c == '"') 5008 1.1 riastrad length += backslashes + 1; 5009 1.1 riastrad length++; 5010 1.1 riastrad if (c == '\\') 5011 1.1 riastrad backslashes++; 5012 1.1 riastrad else 5013 1.1 riastrad backslashes = 0; 5014 1.1 riastrad } 5015 1.1 riastrad if (quote_around) 5016 1.1 riastrad length += backslashes + 1; 5017 1.1 riastrad 5018 1.1 riastrad quoted_string = XMALLOC (char, length + 1); 5019 1.1 riastrad 5020 1.1 riastrad p = quoted_string; 5021 1.1 riastrad backslashes = 0; 5022 1.1 riastrad if (quote_around) 5023 1.1 riastrad *p++ = '"'; 5024 1.1 riastrad for (s = string; *s != '\0'; s++) 5025 1.1 riastrad { 5026 1.1 riastrad char c = *s; 5027 1.1 riastrad if (c == '"') 5028 1.1 riastrad { 5029 1.1 riastrad unsigned int j; 5030 1.1 riastrad for (j = backslashes + 1; j > 0; j--) 5031 1.1 riastrad *p++ = '\\'; 5032 1.1 riastrad } 5033 1.1 riastrad *p++ = c; 5034 1.1 riastrad if (c == '\\') 5035 1.1 riastrad backslashes++; 5036 1.1 riastrad else 5037 1.1 riastrad backslashes = 0; 5038 1.1 riastrad } 5039 1.1 riastrad if (quote_around) 5040 1.1 riastrad { 5041 1.1 riastrad unsigned int j; 5042 1.1 riastrad for (j = backslashes; j > 0; j--) 5043 1.1 riastrad *p++ = '\\'; 5044 1.1 riastrad *p++ = '"'; 5045 1.1 riastrad } 5046 1.1 riastrad *p = '\0'; 5047 1.1 riastrad 5048 1.1 riastrad new_argv[i] = quoted_string; 5049 1.1 riastrad } 5050 1.1 riastrad else 5051 1.1 riastrad new_argv[i] = (char *) string; 5052 1.1 riastrad } 5053 1.1 riastrad new_argv[argc] = NULL; 5054 1.1 riastrad 5055 1.1 riastrad return new_argv; 5056 1.1 riastrad } 5057 1.1 riastrad EOF 5058 1.1 riastrad ;; 5059 1.1 riastrad esac 5060 1.1 riastrad 5061 1.1 riastrad cat <<"EOF" 5062 1.1 riastrad void lt_dump_script (FILE* f) 5063 1.1 riastrad { 5064 1.1 riastrad EOF 5065 1.1 riastrad func_emit_wrapper yes | 5066 1.1 riastrad $SED -n -e ' 5067 1.1 riastrad s/^\(.\{79\}\)\(..*\)/\1\ 5068 1.1 riastrad \2/ 5069 1.1 riastrad h 5070 1.1 riastrad s/\([\\"]\)/\\\1/g 5071 1.1 riastrad s/$/\\n/ 5072 1.1 riastrad s/\([^\n]*\).*/ fputs ("\1", f);/p 5073 1.1 riastrad g 5074 1.1 riastrad D' 5075 1.1 riastrad cat <<"EOF" 5076 1.1 riastrad } 5077 1.1 riastrad EOF 5078 1.1 riastrad } 5079 1.1 riastrad # end: func_emit_cwrapperexe_src 5080 1.1 riastrad 5081 1.1 riastrad # func_win32_import_lib_p ARG 5082 1.1 riastrad # True if ARG is an import lib, as indicated by $file_magic_cmd 5083 1.1 riastrad func_win32_import_lib_p () 5084 1.1 riastrad { 5085 1.1 riastrad $opt_debug 5086 1.1 riastrad case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 5087 1.1 riastrad *import*) : ;; 5088 1.1 riastrad *) false ;; 5089 1.1 riastrad esac 5090 1.1 riastrad } 5091 1.1 riastrad 5092 1.1 riastrad # func_mode_link arg... 5093 1.1 riastrad func_mode_link () 5094 1.1 riastrad { 5095 1.1 riastrad $opt_debug 5096 1.1 riastrad case $host in 5097 1.1 riastrad *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5098 1.1 riastrad # It is impossible to link a dll without this setting, and 5099 1.1 riastrad # we shouldn't force the makefile maintainer to figure out 5100 1.1 riastrad # which system we are compiling for in order to pass an extra 5101 1.1 riastrad # flag for every libtool invocation. 5102 1.1 riastrad # allow_undefined=no 5103 1.1 riastrad 5104 1.1 riastrad # FIXME: Unfortunately, there are problems with the above when trying 5105 1.1 riastrad # to make a dll which has undefined symbols, in which case not 5106 1.1 riastrad # even a static library is built. For now, we need to specify 5107 1.1 riastrad # -no-undefined on the libtool link line when we can be certain 5108 1.1 riastrad # that all symbols are satisfied, otherwise we get a static library. 5109 1.1 riastrad allow_undefined=yes 5110 1.1 riastrad ;; 5111 1.1 riastrad *) 5112 1.1 riastrad allow_undefined=yes 5113 1.1 riastrad ;; 5114 1.1 riastrad esac 5115 1.1 riastrad libtool_args=$nonopt 5116 1.1 riastrad base_compile="$nonopt $@" 5117 1.1 riastrad compile_command=$nonopt 5118 1.1 riastrad finalize_command=$nonopt 5119 1.1 riastrad 5120 1.1 riastrad compile_rpath= 5121 1.1 riastrad finalize_rpath= 5122 1.1 riastrad compile_shlibpath= 5123 1.1 riastrad finalize_shlibpath= 5124 1.1 riastrad convenience= 5125 1.1 riastrad old_convenience= 5126 1.1 riastrad deplibs= 5127 1.1 riastrad old_deplibs= 5128 1.1 riastrad compiler_flags= 5129 1.1 riastrad linker_flags= 5130 1.1 riastrad dllsearchpath= 5131 1.1 riastrad lib_search_path=`pwd` 5132 1.1 riastrad inst_prefix_dir= 5133 1.1 riastrad new_inherited_linker_flags= 5134 1.1 riastrad 5135 1.1 riastrad avoid_version=no 5136 1.1 riastrad bindir= 5137 1.1 riastrad dlfiles= 5138 1.1 riastrad dlprefiles= 5139 1.1 riastrad dlself=no 5140 1.1 riastrad export_dynamic=no 5141 1.1 riastrad export_symbols= 5142 1.1 riastrad export_symbols_regex= 5143 1.1 riastrad generated= 5144 1.1 riastrad libobjs= 5145 1.1 riastrad ltlibs= 5146 1.1 riastrad module=no 5147 1.1 riastrad no_install=no 5148 1.1 riastrad objs= 5149 1.1 riastrad non_pic_objects= 5150 1.1 riastrad precious_files_regex= 5151 1.1 riastrad prefer_static_libs=no 5152 1.1 riastrad preload=no 5153 1.1 riastrad prev= 5154 1.1 riastrad prevarg= 5155 1.1 riastrad release= 5156 1.1 riastrad rpath= 5157 1.1 riastrad xrpath= 5158 1.1 riastrad perm_rpath= 5159 1.1 riastrad temp_rpath= 5160 1.1 riastrad thread_safe=no 5161 1.1 riastrad vinfo= 5162 1.1 riastrad vinfo_number=no 5163 1.1 riastrad weak_libs= 5164 1.1 riastrad single_module="${wl}-single_module" 5165 1.1 riastrad func_infer_tag $base_compile 5166 1.1 riastrad 5167 1.1 riastrad # We need to know -static, to get the right output filenames. 5168 1.1 riastrad for arg 5169 1.1 riastrad do 5170 1.1 riastrad case $arg in 5171 1.1 riastrad -shared) 5172 1.1 riastrad test "$build_libtool_libs" != yes && \ 5173 1.1 riastrad func_fatal_configuration "can not build a shared library" 5174 1.1 riastrad build_old_libs=no 5175 1.1 riastrad break 5176 1.1 riastrad ;; 5177 1.1 riastrad -all-static | -static | -static-libtool-libs) 5178 1.1 riastrad case $arg in 5179 1.1 riastrad -all-static) 5180 1.1 riastrad if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 5181 1.1 riastrad func_warning "complete static linking is impossible in this configuration" 5182 1.1 riastrad fi 5183 1.1 riastrad if test -n "$link_static_flag"; then 5184 1.1 riastrad dlopen_self=$dlopen_self_static 5185 1.1 riastrad fi 5186 1.1 riastrad prefer_static_libs=yes 5187 1.1 riastrad ;; 5188 1.1 riastrad -static) 5189 1.1 riastrad if test -z "$pic_flag" && test -n "$link_static_flag"; then 5190 1.1 riastrad dlopen_self=$dlopen_self_static 5191 1.1 riastrad fi 5192 1.1 riastrad prefer_static_libs=built 5193 1.1 riastrad ;; 5194 1.1 riastrad -static-libtool-libs) 5195 1.1 riastrad if test -z "$pic_flag" && test -n "$link_static_flag"; then 5196 1.1 riastrad dlopen_self=$dlopen_self_static 5197 1.1 riastrad fi 5198 1.1 riastrad prefer_static_libs=yes 5199 1.1 riastrad ;; 5200 1.1 riastrad esac 5201 1.1 riastrad build_libtool_libs=no 5202 1.1 riastrad build_old_libs=yes 5203 1.1 riastrad break 5204 1.1 riastrad ;; 5205 1.1 riastrad esac 5206 1.1 riastrad done 5207 1.1 riastrad 5208 1.1 riastrad # See if our shared archives depend on static archives. 5209 1.1 riastrad test -n "$old_archive_from_new_cmds" && build_old_libs=yes 5210 1.1 riastrad 5211 1.1 riastrad # Go through the arguments, transforming them on the way. 5212 1.1 riastrad while test "$#" -gt 0; do 5213 1.1 riastrad arg="$1" 5214 1.1 riastrad shift 5215 1.1 riastrad func_quote_for_eval "$arg" 5216 1.1 riastrad qarg=$func_quote_for_eval_unquoted_result 5217 1.1 riastrad func_append libtool_args " $func_quote_for_eval_result" 5218 1.1 riastrad 5219 1.1 riastrad # If the previous option needs an argument, assign it. 5220 1.1 riastrad if test -n "$prev"; then 5221 1.1 riastrad case $prev in 5222 1.1 riastrad output) 5223 1.1 riastrad func_append compile_command " @OUTPUT@" 5224 1.1 riastrad func_append finalize_command " @OUTPUT@" 5225 1.1 riastrad ;; 5226 1.1 riastrad esac 5227 1.1 riastrad 5228 1.1 riastrad case $prev in 5229 1.1 riastrad bindir) 5230 1.1 riastrad bindir="$arg" 5231 1.1 riastrad prev= 5232 1.1 riastrad continue 5233 1.1 riastrad ;; 5234 1.1 riastrad dlfiles|dlprefiles) 5235 1.1 riastrad if test "$preload" = no; then 5236 1.1 riastrad # Add the symbol object into the linking commands. 5237 1.1 riastrad func_append compile_command " @SYMFILE@" 5238 1.1 riastrad func_append finalize_command " @SYMFILE@" 5239 1.1 riastrad preload=yes 5240 1.1 riastrad fi 5241 1.1 riastrad case $arg in 5242 1.1 riastrad *.la | *.lo) ;; # We handle these cases below. 5243 1.1 riastrad force) 5244 1.1 riastrad if test "$dlself" = no; then 5245 1.1 riastrad dlself=needless 5246 1.1 riastrad export_dynamic=yes 5247 1.1 riastrad fi 5248 1.1 riastrad prev= 5249 1.1 riastrad continue 5250 1.1 riastrad ;; 5251 1.1 riastrad self) 5252 1.1 riastrad if test "$prev" = dlprefiles; then 5253 1.1 riastrad dlself=yes 5254 1.1 riastrad elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 5255 1.1 riastrad dlself=yes 5256 1.1 riastrad else 5257 1.1 riastrad dlself=needless 5258 1.1 riastrad export_dynamic=yes 5259 1.1 riastrad fi 5260 1.1 riastrad prev= 5261 1.1 riastrad continue 5262 1.1 riastrad ;; 5263 1.1 riastrad *) 5264 1.1 riastrad if test "$prev" = dlfiles; then 5265 1.1 riastrad func_append dlfiles " $arg" 5266 1.1 riastrad else 5267 1.1 riastrad func_append dlprefiles " $arg" 5268 1.1 riastrad fi 5269 1.1 riastrad prev= 5270 1.1 riastrad continue 5271 1.1 riastrad ;; 5272 1.1 riastrad esac 5273 1.1 riastrad ;; 5274 1.1 riastrad expsyms) 5275 1.1 riastrad export_symbols="$arg" 5276 1.1 riastrad test -f "$arg" \ 5277 1.1 riastrad || func_fatal_error "symbol file \`$arg' does not exist" 5278 1.1 riastrad prev= 5279 1.1 riastrad continue 5280 1.1 riastrad ;; 5281 1.1 riastrad expsyms_regex) 5282 1.1 riastrad export_symbols_regex="$arg" 5283 1.1 riastrad prev= 5284 1.1 riastrad continue 5285 1.1 riastrad ;; 5286 1.1 riastrad framework) 5287 1.1 riastrad case $host in 5288 1.1 riastrad *-*-darwin*) 5289 1.1 riastrad case "$deplibs " in 5290 1.1 riastrad *" $qarg.ltframework "*) ;; 5291 1.1 riastrad *) func_append deplibs " $qarg.ltframework" # this is fixed later 5292 1.1 riastrad ;; 5293 1.1 riastrad esac 5294 1.1 riastrad ;; 5295 1.1 riastrad esac 5296 1.1 riastrad prev= 5297 1.1 riastrad continue 5298 1.1 riastrad ;; 5299 1.1 riastrad inst_prefix) 5300 1.1 riastrad inst_prefix_dir="$arg" 5301 1.1 riastrad prev= 5302 1.1 riastrad continue 5303 1.1 riastrad ;; 5304 1.1 riastrad objectlist) 5305 1.1 riastrad if test -f "$arg"; then 5306 1.1 riastrad save_arg=$arg 5307 1.1 riastrad moreargs= 5308 1.1 riastrad for fil in `cat "$save_arg"` 5309 1.1 riastrad do 5310 1.1 riastrad # func_append moreargs " $fil" 5311 1.1 riastrad arg=$fil 5312 1.1 riastrad # A libtool-controlled object. 5313 1.1 riastrad 5314 1.1 riastrad # Check to see that this really is a libtool object. 5315 1.1 riastrad if func_lalib_unsafe_p "$arg"; then 5316 1.1 riastrad pic_object= 5317 1.1 riastrad non_pic_object= 5318 1.1 riastrad 5319 1.1 riastrad # Read the .lo file 5320 1.1 riastrad func_source "$arg" 5321 1.1 riastrad 5322 1.1 riastrad if test -z "$pic_object" || 5323 1.1 riastrad test -z "$non_pic_object" || 5324 1.1 riastrad test "$pic_object" = none && 5325 1.1 riastrad test "$non_pic_object" = none; then 5326 1.1 riastrad func_fatal_error "cannot find name of object for \`$arg'" 5327 1.1 riastrad fi 5328 1.1 riastrad 5329 1.1 riastrad # Extract subdirectory from the argument. 5330 1.1 riastrad func_dirname "$arg" "/" "" 5331 1.1 riastrad xdir="$func_dirname_result" 5332 1.1 riastrad 5333 1.1 riastrad if test "$pic_object" != none; then 5334 1.1 riastrad # Prepend the subdirectory the object is found in. 5335 1.1 riastrad pic_object="$xdir$pic_object" 5336 1.1 riastrad 5337 1.1 riastrad if test "$prev" = dlfiles; then 5338 1.1 riastrad if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5339 1.1 riastrad func_append dlfiles " $pic_object" 5340 1.1 riastrad prev= 5341 1.1 riastrad continue 5342 1.1 riastrad else 5343 1.1 riastrad # If libtool objects are unsupported, then we need to preload. 5344 1.1 riastrad prev=dlprefiles 5345 1.1 riastrad fi 5346 1.1 riastrad fi 5347 1.1 riastrad 5348 1.1 riastrad # CHECK ME: I think I busted this. -Ossama 5349 1.1 riastrad if test "$prev" = dlprefiles; then 5350 1.1 riastrad # Preload the old-style object. 5351 1.1 riastrad func_append dlprefiles " $pic_object" 5352 1.1 riastrad prev= 5353 1.1 riastrad fi 5354 1.1 riastrad 5355 1.1 riastrad # A PIC object. 5356 1.1 riastrad func_append libobjs " $pic_object" 5357 1.1 riastrad arg="$pic_object" 5358 1.1 riastrad fi 5359 1.1 riastrad 5360 1.1 riastrad # Non-PIC object. 5361 1.1 riastrad if test "$non_pic_object" != none; then 5362 1.1 riastrad # Prepend the subdirectory the object is found in. 5363 1.1 riastrad non_pic_object="$xdir$non_pic_object" 5364 1.1 riastrad 5365 1.1 riastrad # A standard non-PIC object 5366 1.1 riastrad func_append non_pic_objects " $non_pic_object" 5367 1.1 riastrad if test -z "$pic_object" || test "$pic_object" = none ; then 5368 1.1 riastrad arg="$non_pic_object" 5369 1.1 riastrad fi 5370 1.1 riastrad else 5371 1.1 riastrad # If the PIC object exists, use it instead. 5372 1.1 riastrad # $xdir was prepended to $pic_object above. 5373 1.1 riastrad non_pic_object="$pic_object" 5374 1.1 riastrad func_append non_pic_objects " $non_pic_object" 5375 1.1 riastrad fi 5376 1.1 riastrad else 5377 1.1 riastrad # Only an error if not doing a dry-run. 5378 1.1 riastrad if $opt_dry_run; then 5379 1.1 riastrad # Extract subdirectory from the argument. 5380 1.1 riastrad func_dirname "$arg" "/" "" 5381 1.1 riastrad xdir="$func_dirname_result" 5382 1.1 riastrad 5383 1.1 riastrad func_lo2o "$arg" 5384 1.1 riastrad pic_object=$xdir$objdir/$func_lo2o_result 5385 1.1 riastrad non_pic_object=$xdir$func_lo2o_result 5386 1.1 riastrad func_append libobjs " $pic_object" 5387 1.1 riastrad func_append non_pic_objects " $non_pic_object" 5388 1.1 riastrad else 5389 1.1 riastrad func_fatal_error "\`$arg' is not a valid libtool object" 5390 1.1 riastrad fi 5391 1.1 riastrad fi 5392 1.1 riastrad done 5393 1.1 riastrad else 5394 1.1 riastrad func_fatal_error "link input file \`$arg' does not exist" 5395 1.1 riastrad fi 5396 1.1 riastrad arg=$save_arg 5397 1.1 riastrad prev= 5398 1.1 riastrad continue 5399 1.1 riastrad ;; 5400 1.1 riastrad precious_regex) 5401 1.1 riastrad precious_files_regex="$arg" 5402 1.1 riastrad prev= 5403 1.1 riastrad continue 5404 1.1 riastrad ;; 5405 1.1 riastrad release) 5406 1.1 riastrad release="-$arg" 5407 1.1 riastrad prev= 5408 1.1 riastrad continue 5409 1.1 riastrad ;; 5410 1.1 riastrad rpath | xrpath) 5411 1.1 riastrad # We need an absolute path. 5412 1.1 riastrad case $arg in 5413 1.1 riastrad [\\/]* | [A-Za-z]:[\\/]*) ;; 5414 1.1 riastrad *) 5415 1.1 riastrad func_fatal_error "only absolute run-paths are allowed" 5416 1.1 riastrad ;; 5417 1.1 riastrad esac 5418 1.1 riastrad if test "$prev" = rpath; then 5419 1.1 riastrad case "$rpath " in 5420 1.1 riastrad *" $arg "*) ;; 5421 1.1 riastrad *) func_append rpath " $arg" ;; 5422 1.1 riastrad esac 5423 1.1 riastrad else 5424 1.1 riastrad case "$xrpath " in 5425 1.1 riastrad *" $arg "*) ;; 5426 1.1 riastrad *) func_append xrpath " $arg" ;; 5427 1.1 riastrad esac 5428 1.1 riastrad fi 5429 1.1 riastrad prev= 5430 1.1 riastrad continue 5431 1.1 riastrad ;; 5432 1.1 riastrad shrext) 5433 1.1 riastrad shrext_cmds="$arg" 5434 1.1 riastrad prev= 5435 1.1 riastrad continue 5436 1.1 riastrad ;; 5437 1.1 riastrad weak) 5438 1.1 riastrad func_append weak_libs " $arg" 5439 1.1 riastrad prev= 5440 1.1 riastrad continue 5441 1.1 riastrad ;; 5442 1.1 riastrad xcclinker) 5443 1.1 riastrad func_append linker_flags " $qarg" 5444 1.1 riastrad func_append compiler_flags " $qarg" 5445 1.1 riastrad prev= 5446 1.1 riastrad func_append compile_command " $qarg" 5447 1.1 riastrad func_append finalize_command " $qarg" 5448 1.1 riastrad continue 5449 1.1 riastrad ;; 5450 1.1 riastrad xcompiler) 5451 1.1 riastrad func_append compiler_flags " $qarg" 5452 1.1 riastrad prev= 5453 1.1 riastrad func_append compile_command " $qarg" 5454 1.1 riastrad func_append finalize_command " $qarg" 5455 1.1 riastrad continue 5456 1.1 riastrad ;; 5457 1.1 riastrad xlinker) 5458 1.1 riastrad func_append linker_flags " $qarg" 5459 1.1 riastrad func_append compiler_flags " $wl$qarg" 5460 1.1 riastrad prev= 5461 1.1 riastrad func_append compile_command " $wl$qarg" 5462 1.1 riastrad func_append finalize_command " $wl$qarg" 5463 1.1 riastrad continue 5464 1.1 riastrad ;; 5465 1.1 riastrad *) 5466 1.1 riastrad eval "$prev=\"\$arg\"" 5467 1.1 riastrad prev= 5468 1.1 riastrad continue 5469 1.1 riastrad ;; 5470 1.1 riastrad esac 5471 1.1 riastrad fi # test -n "$prev" 5472 1.1 riastrad 5473 1.1 riastrad prevarg="$arg" 5474 1.1 riastrad 5475 1.1 riastrad case $arg in 5476 1.1 riastrad -all-static) 5477 1.1 riastrad if test -n "$link_static_flag"; then 5478 1.1 riastrad # See comment for -static flag below, for more details. 5479 1.1 riastrad func_append compile_command " $link_static_flag" 5480 1.1 riastrad func_append finalize_command " $link_static_flag" 5481 1.1 riastrad fi 5482 1.1 riastrad continue 5483 1.1 riastrad ;; 5484 1.1 riastrad 5485 1.1 riastrad -allow-undefined) 5486 1.1 riastrad # FIXME: remove this flag sometime in the future. 5487 1.1 riastrad func_fatal_error "\`-allow-undefined' must not be used because it is the default" 5488 1.1 riastrad ;; 5489 1.1 riastrad 5490 1.1 riastrad -avoid-version) 5491 1.1 riastrad avoid_version=yes 5492 1.1 riastrad continue 5493 1.1 riastrad ;; 5494 1.1 riastrad 5495 1.1 riastrad -bindir) 5496 1.1 riastrad prev=bindir 5497 1.1 riastrad continue 5498 1.1 riastrad ;; 5499 1.1 riastrad 5500 1.1 riastrad -dlopen) 5501 1.1 riastrad prev=dlfiles 5502 1.1 riastrad continue 5503 1.1 riastrad ;; 5504 1.1 riastrad 5505 1.1 riastrad -dlpreopen) 5506 1.1 riastrad prev=dlprefiles 5507 1.1 riastrad continue 5508 1.1 riastrad ;; 5509 1.1 riastrad 5510 1.1 riastrad -export-dynamic) 5511 1.1 riastrad export_dynamic=yes 5512 1.1 riastrad continue 5513 1.1 riastrad ;; 5514 1.1 riastrad 5515 1.1 riastrad -export-symbols | -export-symbols-regex) 5516 1.1 riastrad if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 5517 1.1 riastrad func_fatal_error "more than one -exported-symbols argument is not allowed" 5518 1.1 riastrad fi 5519 1.1 riastrad if test "X$arg" = "X-export-symbols"; then 5520 1.1 riastrad prev=expsyms 5521 1.1 riastrad else 5522 1.1 riastrad prev=expsyms_regex 5523 1.1 riastrad fi 5524 1.1 riastrad continue 5525 1.1 riastrad ;; 5526 1.1 riastrad 5527 1.1 riastrad -framework) 5528 1.1 riastrad prev=framework 5529 1.1 riastrad continue 5530 1.1 riastrad ;; 5531 1.1 riastrad 5532 1.1 riastrad -inst-prefix-dir) 5533 1.1 riastrad prev=inst_prefix 5534 1.1 riastrad continue 5535 1.1 riastrad ;; 5536 1.1 riastrad 5537 1.1 riastrad # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 5538 1.1 riastrad # so, if we see these flags be careful not to treat them like -L 5539 1.1 riastrad -L[A-Z][A-Z]*:*) 5540 1.1 riastrad case $with_gcc/$host in 5541 1.1 riastrad no/*-*-irix* | /*-*-irix*) 5542 1.1 riastrad func_append compile_command " $arg" 5543 1.1 riastrad func_append finalize_command " $arg" 5544 1.1 riastrad ;; 5545 1.1 riastrad esac 5546 1.1 riastrad continue 5547 1.1 riastrad ;; 5548 1.1 riastrad 5549 1.1 riastrad -L*) 5550 1.1 riastrad func_stripname "-L" '' "$arg" 5551 1.1 riastrad if test -z "$func_stripname_result"; then 5552 1.1 riastrad if test "$#" -gt 0; then 5553 1.1 riastrad func_fatal_error "require no space between \`-L' and \`$1'" 5554 1.1 riastrad else 5555 1.1 riastrad func_fatal_error "need path for \`-L' option" 5556 1.1 riastrad fi 5557 1.1 riastrad fi 5558 1.1 riastrad func_resolve_sysroot "$func_stripname_result" 5559 1.1 riastrad dir=$func_resolve_sysroot_result 5560 1.1 riastrad # We need an absolute path. 5561 1.1 riastrad case $dir in 5562 1.1 riastrad [\\/]* | [A-Za-z]:[\\/]*) ;; 5563 1.1 riastrad *) 5564 1.1 riastrad absdir=`cd "$dir" && pwd` 5565 1.1 riastrad test -z "$absdir" && \ 5566 1.1 riastrad func_fatal_error "cannot determine absolute directory name of \`$dir'" 5567 1.1 riastrad dir="$absdir" 5568 1.1 riastrad ;; 5569 1.1 riastrad esac 5570 1.1 riastrad case "$deplibs " in 5571 1.1 riastrad *" -L$dir "* | *" $arg "*) 5572 1.1 riastrad # Will only happen for absolute or sysroot arguments 5573 1.1 riastrad ;; 5574 1.1 riastrad *) 5575 1.1 riastrad # Preserve sysroot, but never include relative directories 5576 1.1 riastrad case $dir in 5577 1.1 riastrad [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 5578 1.1 riastrad *) func_append deplibs " -L$dir" ;; 5579 1.1 riastrad esac 5580 1.1 riastrad func_append lib_search_path " $dir" 5581 1.1 riastrad ;; 5582 1.1 riastrad esac 5583 1.1 riastrad case $host in 5584 1.1 riastrad *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5585 1.1 riastrad testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 5586 1.1 riastrad case :$dllsearchpath: in 5587 1.1 riastrad *":$dir:"*) ;; 5588 1.1 riastrad ::) dllsearchpath=$dir;; 5589 1.1 riastrad *) func_append dllsearchpath ":$dir";; 5590 1.1 riastrad esac 5591 1.1 riastrad case :$dllsearchpath: in 5592 1.1 riastrad *":$testbindir:"*) ;; 5593 1.1 riastrad ::) dllsearchpath=$testbindir;; 5594 1.1 riastrad *) func_append dllsearchpath ":$testbindir";; 5595 1.1 riastrad esac 5596 1.1 riastrad ;; 5597 1.1 riastrad esac 5598 1.1 riastrad continue 5599 1.1 riastrad ;; 5600 1.1 riastrad 5601 1.1 riastrad -l*) 5602 1.1 riastrad if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 5603 1.1 riastrad case $host in 5604 1.1 riastrad *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 5605 1.1 riastrad # These systems don't actually have a C or math library (as such) 5606 1.1 riastrad continue 5607 1.1 riastrad ;; 5608 1.1 riastrad *-*-os2*) 5609 1.1 riastrad # These systems don't actually have a C library (as such) 5610 1.1 riastrad test "X$arg" = "X-lc" && continue 5611 1.1 riastrad ;; 5612 1.1 riastrad *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5613 1.1 riastrad # Do not include libc due to us having libc/libc_r. 5614 1.1 riastrad test "X$arg" = "X-lc" && continue 5615 1.1 riastrad ;; 5616 1.1 riastrad *-*-rhapsody* | *-*-darwin1.[012]) 5617 1.1 riastrad # Rhapsody C and math libraries are in the System framework 5618 1.1 riastrad func_append deplibs " System.ltframework" 5619 1.1 riastrad continue 5620 1.1 riastrad ;; 5621 1.1 riastrad *-*-sco3.2v5* | *-*-sco5v6*) 5622 1.1 riastrad # Causes problems with __ctype 5623 1.1 riastrad test "X$arg" = "X-lc" && continue 5624 1.1 riastrad ;; 5625 1.1 riastrad *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 5626 1.1 riastrad # Compiler inserts libc in the correct place for threads to work 5627 1.1 riastrad test "X$arg" = "X-lc" && continue 5628 1.1 riastrad ;; 5629 1.1 riastrad esac 5630 1.1 riastrad elif test "X$arg" = "X-lc_r"; then 5631 1.1 riastrad case $host in 5632 1.1 riastrad *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5633 1.1 riastrad # Do not include libc_r directly, use -pthread flag. 5634 1.1 riastrad continue 5635 1.1 riastrad ;; 5636 1.1 riastrad esac 5637 1.1 riastrad fi 5638 1.1 riastrad func_append deplibs " $arg" 5639 1.1 riastrad continue 5640 1.1 riastrad ;; 5641 1.1 riastrad 5642 1.1 riastrad -module) 5643 1.1 riastrad module=yes 5644 1.1 riastrad continue 5645 1.1 riastrad ;; 5646 1.1 riastrad 5647 1.1 riastrad # Tru64 UNIX uses -model [arg] to determine the layout of C++ 5648 1.1 riastrad # classes, name mangling, and exception handling. 5649 1.1 riastrad # Darwin uses the -arch flag to determine output architecture. 5650 1.1 riastrad -model|-arch|-isysroot|--sysroot) 5651 1.1 riastrad func_append compiler_flags " $arg" 5652 1.1 riastrad func_append compile_command " $arg" 5653 1.1 riastrad func_append finalize_command " $arg" 5654 1.1 riastrad prev=xcompiler 5655 1.1 riastrad continue 5656 1.1 riastrad ;; 5657 1.1 riastrad 5658 1.1 riastrad -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 5659 1.1 riastrad |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 5660 1.1 riastrad func_append compiler_flags " $arg" 5661 1.1 riastrad func_append compile_command " $arg" 5662 1.1 riastrad func_append finalize_command " $arg" 5663 1.1 riastrad case "$new_inherited_linker_flags " in 5664 1.1 riastrad *" $arg "*) ;; 5665 1.1 riastrad * ) func_append new_inherited_linker_flags " $arg" ;; 5666 1.1 riastrad esac 5667 1.1 riastrad continue 5668 1.1 riastrad ;; 5669 1.1 riastrad 5670 1.1 riastrad -multi_module) 5671 1.1 riastrad single_module="${wl}-multi_module" 5672 1.1 riastrad continue 5673 1.1 riastrad ;; 5674 1.1 riastrad 5675 1.1 riastrad -no-fast-install) 5676 1.1 riastrad fast_install=no 5677 1.1 riastrad continue 5678 1.1 riastrad ;; 5679 1.1 riastrad 5680 1.1 riastrad -no-install) 5681 1.1 riastrad case $host in 5682 1.1 riastrad *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 5683 1.1 riastrad # The PATH hackery in wrapper scripts is required on Windows 5684 1.1 riastrad # and Darwin in order for the loader to find any dlls it needs. 5685 1.1 riastrad func_warning "\`-no-install' is ignored for $host" 5686 1.1 riastrad func_warning "assuming \`-no-fast-install' instead" 5687 1.1 riastrad fast_install=no 5688 1.1 riastrad ;; 5689 1.1 riastrad *) no_install=yes ;; 5690 1.1 riastrad esac 5691 1.1 riastrad continue 5692 1.1 riastrad ;; 5693 1.1 riastrad 5694 1.1 riastrad -no-undefined) 5695 1.1 riastrad allow_undefined=no 5696 1.1 riastrad continue 5697 1.1 riastrad ;; 5698 1.1 riastrad 5699 1.1 riastrad -objectlist) 5700 1.1 riastrad prev=objectlist 5701 1.1 riastrad continue 5702 1.1 riastrad ;; 5703 1.1 riastrad 5704 1.1 riastrad -o) prev=output ;; 5705 1.1 riastrad 5706 1.1 riastrad -precious-files-regex) 5707 1.1 riastrad prev=precious_regex 5708 1.1 riastrad continue 5709 1.1 riastrad ;; 5710 1.1 riastrad 5711 1.1 riastrad -release) 5712 1.1 riastrad prev=release 5713 1.1 riastrad continue 5714 1.1 riastrad ;; 5715 1.1 riastrad 5716 1.1 riastrad -rpath) 5717 1.1 riastrad prev=rpath 5718 1.1 riastrad continue 5719 1.1 riastrad ;; 5720 1.1 riastrad 5721 1.1 riastrad -R) 5722 1.1 riastrad prev=xrpath 5723 1.1 riastrad continue 5724 1.1 riastrad ;; 5725 1.1 riastrad 5726 1.1 riastrad -R*) 5727 1.1 riastrad func_stripname '-R' '' "$arg" 5728 1.1 riastrad dir=$func_stripname_result 5729 1.1 riastrad # We need an absolute path. 5730 1.1 riastrad case $dir in 5731 1.1 riastrad [\\/]* | [A-Za-z]:[\\/]*) ;; 5732 1.1 riastrad =*) 5733 1.1 riastrad func_stripname '=' '' "$dir" 5734 1.1 riastrad dir=$lt_sysroot$func_stripname_result 5735 1.1 riastrad ;; 5736 1.1 riastrad *) 5737 1.1 riastrad func_fatal_error "only absolute run-paths are allowed" 5738 1.1 riastrad ;; 5739 1.1 riastrad esac 5740 1.1 riastrad case "$xrpath " in 5741 1.1 riastrad *" $dir "*) ;; 5742 1.1 riastrad *) func_append xrpath " $dir" ;; 5743 1.1 riastrad esac 5744 1.1 riastrad continue 5745 1.1 riastrad ;; 5746 1.1 riastrad 5747 1.1 riastrad -shared) 5748 1.1 riastrad # The effects of -shared are defined in a previous loop. 5749 1.1 riastrad continue 5750 1.1 riastrad ;; 5751 1.1 riastrad 5752 1.1 riastrad -shrext) 5753 1.1 riastrad prev=shrext 5754 1.1 riastrad continue 5755 1.1 riastrad ;; 5756 1.1 riastrad 5757 1.1 riastrad -static | -static-libtool-libs) 5758 1.1 riastrad # The effects of -static are defined in a previous loop. 5759 1.1 riastrad # We used to do the same as -all-static on platforms that 5760 1.1 riastrad # didn't have a PIC flag, but the assumption that the effects 5761 1.1 riastrad # would be equivalent was wrong. It would break on at least 5762 1.1 riastrad # Digital Unix and AIX. 5763 1.1 riastrad continue 5764 1.1 riastrad ;; 5765 1.1 riastrad 5766 1.1 riastrad -thread-safe) 5767 1.1 riastrad thread_safe=yes 5768 1.1 riastrad continue 5769 1.1 riastrad ;; 5770 1.1 riastrad 5771 1.1 riastrad -version-info) 5772 1.1 riastrad prev=vinfo 5773 1.1 riastrad continue 5774 1.1 riastrad ;; 5775 1.1 riastrad 5776 1.1 riastrad -version-number) 5777 1.1 riastrad prev=vinfo 5778 1.1 riastrad vinfo_number=yes 5779 1.1 riastrad continue 5780 1.1 riastrad ;; 5781 1.1 riastrad 5782 1.1 riastrad -weak) 5783 1.1 riastrad prev=weak 5784 1.1 riastrad continue 5785 1.1 riastrad ;; 5786 1.1 riastrad 5787 1.1 riastrad -Wc,*) 5788 1.1 riastrad func_stripname '-Wc,' '' "$arg" 5789 1.1 riastrad args=$func_stripname_result 5790 1.1 riastrad arg= 5791 1.1 riastrad save_ifs="$IFS"; IFS=',' 5792 1.1 riastrad for flag in $args; do 5793 1.1 riastrad IFS="$save_ifs" 5794 1.1 riastrad func_quote_for_eval "$flag" 5795 1.1 riastrad func_append arg " $func_quote_for_eval_result" 5796 1.1 riastrad func_append compiler_flags " $func_quote_for_eval_result" 5797 1.1 riastrad done 5798 1.1 riastrad IFS="$save_ifs" 5799 1.1 riastrad func_stripname ' ' '' "$arg" 5800 1.1 riastrad arg=$func_stripname_result 5801 1.1 riastrad ;; 5802 1.1 riastrad 5803 1.1 riastrad -Wl,*) 5804 1.1 riastrad func_stripname '-Wl,' '' "$arg" 5805 1.1 riastrad args=$func_stripname_result 5806 1.1 riastrad arg= 5807 1.1 riastrad save_ifs="$IFS"; IFS=',' 5808 1.1 riastrad for flag in $args; do 5809 1.1 riastrad IFS="$save_ifs" 5810 1.1 riastrad func_quote_for_eval "$flag" 5811 1.1 riastrad func_append arg " $wl$func_quote_for_eval_result" 5812 1.1 riastrad func_append compiler_flags " $wl$func_quote_for_eval_result" 5813 1.1 riastrad func_append linker_flags " $func_quote_for_eval_result" 5814 1.1 riastrad done 5815 1.1 riastrad IFS="$save_ifs" 5816 1.1 riastrad func_stripname ' ' '' "$arg" 5817 1.1 riastrad arg=$func_stripname_result 5818 1.1 riastrad ;; 5819 1.1 riastrad 5820 1.1 riastrad -Xcompiler) 5821 1.1 riastrad prev=xcompiler 5822 1.1 riastrad continue 5823 1.1 riastrad ;; 5824 1.1 riastrad 5825 1.1 riastrad -Xlinker) 5826 1.1 riastrad prev=xlinker 5827 1.1 riastrad continue 5828 1.1 riastrad ;; 5829 1.1 riastrad 5830 1.1 riastrad -XCClinker) 5831 1.1 riastrad prev=xcclinker 5832 1.1 riastrad continue 5833 1.1 riastrad ;; 5834 1.1 riastrad 5835 1.1 riastrad # -msg_* for osf cc 5836 1.1 riastrad -msg_*) 5837 1.1 riastrad func_quote_for_eval "$arg" 5838 1.1 riastrad arg="$func_quote_for_eval_result" 5839 1.1 riastrad ;; 5840 1.1 riastrad 5841 1.1 riastrad # Flags to be passed through unchanged, with rationale: 5842 1.1 riastrad # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 5843 1.1 riastrad # -r[0-9][0-9]* specify processor for the SGI compiler 5844 1.1 riastrad # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 5845 1.1 riastrad # +DA*, +DD* enable 64-bit mode for the HP compiler 5846 1.1 riastrad # -q* compiler args for the IBM compiler 5847 1.1 riastrad # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 5848 1.1 riastrad # -F/path path to uninstalled frameworks, gcc on darwin 5849 1.1 riastrad # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 5850 1.1 riastrad # @file GCC response files 5851 1.1 riastrad # -tp=* Portland pgcc target processor selection 5852 1.1 riastrad # --sysroot=* for sysroot support 5853 1.1 riastrad # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 5854 1.1 riastrad -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 5855 1.1 riastrad -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 5856 1.1 riastrad -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 5857 1.1 riastrad func_quote_for_eval "$arg" 5858 1.1 riastrad arg="$func_quote_for_eval_result" 5859 1.1 riastrad func_append compile_command " $arg" 5860 1.1 riastrad func_append finalize_command " $arg" 5861 1.1 riastrad func_append compiler_flags " $arg" 5862 1.1 riastrad continue 5863 1.1 riastrad ;; 5864 1.1 riastrad 5865 1.1 riastrad # Some other compiler flag. 5866 1.1 riastrad -* | +*) 5867 1.1 riastrad func_quote_for_eval "$arg" 5868 1.1 riastrad arg="$func_quote_for_eval_result" 5869 1.1 riastrad ;; 5870 1.1 riastrad 5871 1.1 riastrad *.$objext) 5872 1.1 riastrad # A standard object. 5873 1.1 riastrad func_append objs " $arg" 5874 1.1 riastrad ;; 5875 1.1 riastrad 5876 1.1 riastrad *.lo) 5877 1.1 riastrad # A libtool-controlled object. 5878 1.1 riastrad 5879 1.1 riastrad # Check to see that this really is a libtool object. 5880 1.1 riastrad if func_lalib_unsafe_p "$arg"; then 5881 1.1 riastrad pic_object= 5882 1.1 riastrad non_pic_object= 5883 1.1 riastrad 5884 1.1 riastrad # Read the .lo file 5885 1.1 riastrad func_source "$arg" 5886 1.1 riastrad 5887 1.1 riastrad if test -z "$pic_object" || 5888 1.1 riastrad test -z "$non_pic_object" || 5889 1.1 riastrad test "$pic_object" = none && 5890 1.1 riastrad test "$non_pic_object" = none; then 5891 1.1 riastrad func_fatal_error "cannot find name of object for \`$arg'" 5892 1.1 riastrad fi 5893 1.1 riastrad 5894 1.1 riastrad # Extract subdirectory from the argument. 5895 1.1 riastrad func_dirname "$arg" "/" "" 5896 1.1 riastrad xdir="$func_dirname_result" 5897 1.1 riastrad 5898 1.1 riastrad if test "$pic_object" != none; then 5899 1.1 riastrad # Prepend the subdirectory the object is found in. 5900 1.1 riastrad pic_object="$xdir$pic_object" 5901 1.1 riastrad 5902 1.1 riastrad if test "$prev" = dlfiles; then 5903 1.1 riastrad if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5904 1.1 riastrad func_append dlfiles " $pic_object" 5905 1.1 riastrad prev= 5906 1.1 riastrad continue 5907 1.1 riastrad else 5908 1.1 riastrad # If libtool objects are unsupported, then we need to preload. 5909 1.1 riastrad prev=dlprefiles 5910 1.1 riastrad fi 5911 1.1 riastrad fi 5912 1.1 riastrad 5913 1.1 riastrad # CHECK ME: I think I busted this. -Ossama 5914 1.1 riastrad if test "$prev" = dlprefiles; then 5915 1.1 riastrad # Preload the old-style object. 5916 1.1 riastrad func_append dlprefiles " $pic_object" 5917 1.1 riastrad prev= 5918 1.1 riastrad fi 5919 1.1 riastrad 5920 1.1 riastrad # A PIC object. 5921 1.1 riastrad func_append libobjs " $pic_object" 5922 1.1 riastrad arg="$pic_object" 5923 1.1 riastrad fi 5924 1.1 riastrad 5925 1.1 riastrad # Non-PIC object. 5926 1.1 riastrad if test "$non_pic_object" != none; then 5927 1.1 riastrad # Prepend the subdirectory the object is found in. 5928 1.1 riastrad non_pic_object="$xdir$non_pic_object" 5929 1.1 riastrad 5930 1.1 riastrad # A standard non-PIC object 5931 1.1 riastrad func_append non_pic_objects " $non_pic_object" 5932 1.1 riastrad if test -z "$pic_object" || test "$pic_object" = none ; then 5933 1.1 riastrad arg="$non_pic_object" 5934 1.1 riastrad fi 5935 1.1 riastrad else 5936 1.1 riastrad # If the PIC object exists, use it instead. 5937 1.1 riastrad # $xdir was prepended to $pic_object above. 5938 1.1 riastrad non_pic_object="$pic_object" 5939 1.1 riastrad func_append non_pic_objects " $non_pic_object" 5940 1.1 riastrad fi 5941 1.1 riastrad else 5942 1.1 riastrad # Only an error if not doing a dry-run. 5943 1.1 riastrad if $opt_dry_run; then 5944 1.1 riastrad # Extract subdirectory from the argument. 5945 1.1 riastrad func_dirname "$arg" "/" "" 5946 1.1 riastrad xdir="$func_dirname_result" 5947 1.1 riastrad 5948 1.1 riastrad func_lo2o "$arg" 5949 1.1 riastrad pic_object=$xdir$objdir/$func_lo2o_result 5950 1.1 riastrad non_pic_object=$xdir$func_lo2o_result 5951 1.1 riastrad func_append libobjs " $pic_object" 5952 1.1 riastrad func_append non_pic_objects " $non_pic_object" 5953 1.1 riastrad else 5954 1.1 riastrad func_fatal_error "\`$arg' is not a valid libtool object" 5955 1.1 riastrad fi 5956 1.1 riastrad fi 5957 1.1 riastrad ;; 5958 1.1 riastrad 5959 1.1 riastrad *.$libext) 5960 1.1 riastrad # An archive. 5961 1.1 riastrad func_append deplibs " $arg" 5962 1.1 riastrad func_append old_deplibs " $arg" 5963 1.1 riastrad continue 5964 1.1 riastrad ;; 5965 1.1 riastrad 5966 1.1 riastrad *.la) 5967 1.1 riastrad # A libtool-controlled library. 5968 1.1 riastrad 5969 1.1 riastrad func_resolve_sysroot "$arg" 5970 1.1 riastrad if test "$prev" = dlfiles; then 5971 1.1 riastrad # This library was specified with -dlopen. 5972 1.1 riastrad func_append dlfiles " $func_resolve_sysroot_result" 5973 1.1 riastrad prev= 5974 1.1 riastrad elif test "$prev" = dlprefiles; then 5975 1.1 riastrad # The library was specified with -dlpreopen. 5976 1.1 riastrad func_append dlprefiles " $func_resolve_sysroot_result" 5977 1.1 riastrad prev= 5978 1.1 riastrad else 5979 1.1 riastrad func_append deplibs " $func_resolve_sysroot_result" 5980 1.1 riastrad fi 5981 1.1 riastrad continue 5982 1.1 riastrad ;; 5983 1.1 riastrad 5984 1.1 riastrad # Some other compiler argument. 5985 1.1 riastrad *) 5986 1.1 riastrad # Unknown arguments in both finalize_command and compile_command need 5987 1.1 riastrad # to be aesthetically quoted because they are evaled later. 5988 1.1 riastrad func_quote_for_eval "$arg" 5989 1.1 riastrad arg="$func_quote_for_eval_result" 5990 1.1 riastrad ;; 5991 1.1 riastrad esac # arg 5992 1.1 riastrad 5993 1.1 riastrad # Now actually substitute the argument into the commands. 5994 1.1 riastrad if test -n "$arg"; then 5995 1.1 riastrad func_append compile_command " $arg" 5996 1.1 riastrad func_append finalize_command " $arg" 5997 1.1 riastrad fi 5998 1.1 riastrad done # argument parsing loop 5999 1.1 riastrad 6000 1.1 riastrad test -n "$prev" && \ 6001 1.1 riastrad func_fatal_help "the \`$prevarg' option requires an argument" 6002 1.1 riastrad 6003 1.1 riastrad if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 6004 1.1 riastrad eval arg=\"$export_dynamic_flag_spec\" 6005 1.1 riastrad func_append compile_command " $arg" 6006 1.1 riastrad func_append finalize_command " $arg" 6007 1.1 riastrad fi 6008 1.1 riastrad 6009 1.1 riastrad oldlibs= 6010 1.1 riastrad # calculate the name of the file, without its directory 6011 1.1 riastrad func_basename "$output" 6012 1.1 riastrad outputname="$func_basename_result" 6013 1.1 riastrad libobjs_save="$libobjs" 6014 1.1 riastrad 6015 1.1 riastrad if test -n "$shlibpath_var"; then 6016 1.1 riastrad # get the directories listed in $shlibpath_var 6017 1.1 riastrad eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 6018 1.1 riastrad else 6019 1.1 riastrad shlib_search_path= 6020 1.1 riastrad fi 6021 1.1 riastrad eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 6022 1.1 riastrad eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 6023 1.1 riastrad 6024 1.1 riastrad func_dirname "$output" "/" "" 6025 1.1 riastrad output_objdir="$func_dirname_result$objdir" 6026 1.1 riastrad func_to_tool_file "$output_objdir/" 6027 1.1 riastrad tool_output_objdir=$func_to_tool_file_result 6028 1.1 riastrad # Create the object directory. 6029 1.1 riastrad func_mkdir_p "$output_objdir" 6030 1.1 riastrad 6031 1.1 riastrad # Determine the type of output 6032 1.1 riastrad case $output in 6033 1.1 riastrad "") 6034 1.1 riastrad func_fatal_help "you must specify an output file" 6035 1.1 riastrad ;; 6036 1.1 riastrad *.$libext) linkmode=oldlib ;; 6037 1.1 riastrad *.lo | *.$objext) linkmode=obj ;; 6038 1.1 riastrad *.la) linkmode=lib ;; 6039 1.1 riastrad *) linkmode=prog ;; # Anything else should be a program. 6040 1.1 riastrad esac 6041 1.1 riastrad 6042 1.1 riastrad specialdeplibs= 6043 1.1 riastrad 6044 1.1 riastrad libs= 6045 1.1 riastrad # Find all interdependent deplibs by searching for libraries 6046 1.1 riastrad # that are linked more than once (e.g. -la -lb -la) 6047 1.1 riastrad for deplib in $deplibs; do 6048 1.1 riastrad if $opt_preserve_dup_deps ; then 6049 1.1 riastrad case "$libs " in 6050 1.1 riastrad *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6051 1.1 riastrad esac 6052 1.1 riastrad fi 6053 1.1 riastrad func_append libs " $deplib" 6054 1.1 riastrad done 6055 1.1 riastrad 6056 1.1 riastrad if test "$linkmode" = lib; then 6057 1.1 riastrad libs="$predeps $libs $compiler_lib_search_path $postdeps" 6058 1.1 riastrad 6059 1.1 riastrad # Compute libraries that are listed more than once in $predeps 6060 1.1 riastrad # $postdeps and mark them as special (i.e., whose duplicates are 6061 1.1 riastrad # not to be eliminated). 6062 1.1 riastrad pre_post_deps= 6063 1.1 riastrad if $opt_duplicate_compiler_generated_deps; then 6064 1.1 riastrad for pre_post_dep in $predeps $postdeps; do 6065 1.1 riastrad case "$pre_post_deps " in 6066 1.1 riastrad *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 6067 1.1 riastrad esac 6068 1.1 riastrad func_append pre_post_deps " $pre_post_dep" 6069 1.1 riastrad done 6070 1.1 riastrad fi 6071 1.1 riastrad pre_post_deps= 6072 1.1 riastrad fi 6073 1.1 riastrad 6074 1.1 riastrad deplibs= 6075 1.1 riastrad newdependency_libs= 6076 1.1 riastrad newlib_search_path= 6077 1.1 riastrad need_relink=no # whether we're linking any uninstalled libtool libraries 6078 1.1 riastrad notinst_deplibs= # not-installed libtool libraries 6079 1.1 riastrad notinst_path= # paths that contain not-installed libtool libraries 6080 1.1 riastrad 6081 1.1 riastrad case $linkmode in 6082 1.1 riastrad lib) 6083 1.1 riastrad passes="conv dlpreopen link" 6084 1.1 riastrad for file in $dlfiles $dlprefiles; do 6085 1.1 riastrad case $file in 6086 1.1 riastrad *.la) ;; 6087 1.1 riastrad *) 6088 1.1 riastrad func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 6089 1.1 riastrad ;; 6090 1.1 riastrad esac 6091 1.1 riastrad done 6092 1.1 riastrad ;; 6093 1.1 riastrad prog) 6094 1.1 riastrad compile_deplibs= 6095 1.1 riastrad finalize_deplibs= 6096 1.1 riastrad alldeplibs=no 6097 1.1 riastrad newdlfiles= 6098 1.1 riastrad newdlprefiles= 6099 1.1 riastrad passes="conv scan dlopen dlpreopen link" 6100 1.1 riastrad ;; 6101 1.1 riastrad *) passes="conv" 6102 1.1 riastrad ;; 6103 1.1 riastrad esac 6104 1.1 riastrad 6105 1.1 riastrad for pass in $passes; do 6106 1.1 riastrad # The preopen pass in lib mode reverses $deplibs; put it back here 6107 1.1 riastrad # so that -L comes before libs that need it for instance... 6108 1.1 riastrad if test "$linkmode,$pass" = "lib,link"; then 6109 1.1 riastrad ## FIXME: Find the place where the list is rebuilt in the wrong 6110 1.1 riastrad ## order, and fix it there properly 6111 1.1 riastrad tmp_deplibs= 6112 1.1 riastrad for deplib in $deplibs; do 6113 1.1 riastrad tmp_deplibs="$deplib $tmp_deplibs" 6114 1.1 riastrad done 6115 1.1 riastrad deplibs="$tmp_deplibs" 6116 1.1 riastrad fi 6117 1.1 riastrad 6118 1.1 riastrad if test "$linkmode,$pass" = "lib,link" || 6119 1.1 riastrad test "$linkmode,$pass" = "prog,scan"; then 6120 1.1 riastrad libs="$deplibs" 6121 1.1 riastrad deplibs= 6122 1.1 riastrad fi 6123 1.1 riastrad if test "$linkmode" = prog; then 6124 1.1 riastrad case $pass in 6125 1.1 riastrad dlopen) libs="$dlfiles" ;; 6126 1.1 riastrad dlpreopen) libs="$dlprefiles" ;; 6127 1.1 riastrad link) 6128 1.1 riastrad libs="$deplibs %DEPLIBS%" 6129 1.1 riastrad test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 6130 1.1 riastrad ;; 6131 1.1 riastrad esac 6132 1.1 riastrad fi 6133 1.1 riastrad if test "$linkmode,$pass" = "lib,dlpreopen"; then 6134 1.1 riastrad # Collect and forward deplibs of preopened libtool libs 6135 1.1 riastrad for lib in $dlprefiles; do 6136 1.1 riastrad # Ignore non-libtool-libs 6137 1.1 riastrad dependency_libs= 6138 1.1 riastrad func_resolve_sysroot "$lib" 6139 1.1 riastrad case $lib in 6140 1.1 riastrad *.la) func_source "$func_resolve_sysroot_result" ;; 6141 1.1 riastrad esac 6142 1.1 riastrad 6143 1.1 riastrad # Collect preopened libtool deplibs, except any this library 6144 1.1 riastrad # has declared as weak libs 6145 1.1 riastrad for deplib in $dependency_libs; do 6146 1.1 riastrad func_basename "$deplib" 6147 1.1 riastrad deplib_base=$func_basename_result 6148 1.1 riastrad case " $weak_libs " in 6149 1.1 riastrad *" $deplib_base "*) ;; 6150 1.1 riastrad *) func_append deplibs " $deplib" ;; 6151 1.1 riastrad esac 6152 1.1 riastrad done 6153 1.1 riastrad done 6154 1.1 riastrad libs="$dlprefiles" 6155 1.1 riastrad fi 6156 1.1 riastrad if test "$pass" = dlopen; then 6157 1.1 riastrad # Collect dlpreopened libraries 6158 1.1 riastrad save_deplibs="$deplibs" 6159 1.1 riastrad deplibs= 6160 1.1 riastrad fi 6161 1.1 riastrad 6162 1.1 riastrad for deplib in $libs; do 6163 1.1 riastrad lib= 6164 1.1 riastrad found=no 6165 1.1 riastrad case $deplib in 6166 1.1 riastrad -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 6167 1.1 riastrad |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 6168 1.1 riastrad if test "$linkmode,$pass" = "prog,link"; then 6169 1.1 riastrad compile_deplibs="$deplib $compile_deplibs" 6170 1.1 riastrad finalize_deplibs="$deplib $finalize_deplibs" 6171 1.1 riastrad else 6172 1.1 riastrad func_append compiler_flags " $deplib" 6173 1.1 riastrad if test "$linkmode" = lib ; then 6174 1.1 riastrad case "$new_inherited_linker_flags " in 6175 1.1 riastrad *" $deplib "*) ;; 6176 1.1 riastrad * ) func_append new_inherited_linker_flags " $deplib" ;; 6177 1.1 riastrad esac 6178 1.1 riastrad fi 6179 1.1 riastrad fi 6180 1.1 riastrad continue 6181 1.1 riastrad ;; 6182 1.1 riastrad -l*) 6183 1.1 riastrad if test "$linkmode" != lib && test "$linkmode" != prog; then 6184 1.1 riastrad func_warning "\`-l' is ignored for archives/objects" 6185 1.1 riastrad continue 6186 1.1 riastrad fi 6187 1.1 riastrad func_stripname '-l' '' "$deplib" 6188 1.1 riastrad name=$func_stripname_result 6189 1.1 riastrad if test "$linkmode" = lib; then 6190 1.1 riastrad searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 6191 1.1 riastrad else 6192 1.1 riastrad searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 6193 1.1 riastrad fi 6194 1.1 riastrad for searchdir in $searchdirs; do 6195 1.1 riastrad for search_ext in .la $std_shrext .so .a; do 6196 1.1 riastrad # Search the libtool library 6197 1.1 riastrad lib="$searchdir/lib${name}${search_ext}" 6198 1.1 riastrad if test -f "$lib"; then 6199 1.1 riastrad if test "$search_ext" = ".la"; then 6200 1.1 riastrad found=yes 6201 1.1 riastrad else 6202 1.1 riastrad found=no 6203 1.1 riastrad fi 6204 1.1 riastrad break 2 6205 1.1 riastrad fi 6206 1.1 riastrad done 6207 1.1 riastrad done 6208 1.1 riastrad if test "$found" != yes; then 6209 1.1 riastrad # deplib doesn't seem to be a libtool library 6210 1.1 riastrad if test "$linkmode,$pass" = "prog,link"; then 6211 1.1 riastrad compile_deplibs="$deplib $compile_deplibs" 6212 1.1 riastrad finalize_deplibs="$deplib $finalize_deplibs" 6213 1.1 riastrad else 6214 1.1 riastrad deplibs="$deplib $deplibs" 6215 1.1 riastrad test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6216 1.1 riastrad fi 6217 1.1 riastrad continue 6218 1.1 riastrad else # deplib is a libtool library 6219 1.1 riastrad # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 6220 1.1 riastrad # We need to do some special things here, and not later. 6221 1.1 riastrad if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6222 1.1 riastrad case " $predeps $postdeps " in 6223 1.1 riastrad *" $deplib "*) 6224 1.1 riastrad if func_lalib_p "$lib"; then 6225 1.1 riastrad library_names= 6226 1.1 riastrad old_library= 6227 1.1 riastrad func_source "$lib" 6228 1.1 riastrad for l in $old_library $library_names; do 6229 1.1 riastrad ll="$l" 6230 1.1 riastrad done 6231 1.1 riastrad if test "X$ll" = "X$old_library" ; then # only static version available 6232 1.1 riastrad found=no 6233 1.1 riastrad func_dirname "$lib" "" "." 6234 1.1 riastrad ladir="$func_dirname_result" 6235 1.1 riastrad lib=$ladir/$old_library 6236 1.1 riastrad if test "$linkmode,$pass" = "prog,link"; then 6237 1.1 riastrad compile_deplibs="$deplib $compile_deplibs" 6238 1.1 riastrad finalize_deplibs="$deplib $finalize_deplibs" 6239 1.1 riastrad else 6240 1.1 riastrad deplibs="$deplib $deplibs" 6241 1.1 riastrad test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6242 1.1 riastrad fi 6243 1.1 riastrad continue 6244 1.1 riastrad fi 6245 1.1 riastrad fi 6246 1.1 riastrad ;; 6247 1.1 riastrad *) ;; 6248 1.1 riastrad esac 6249 1.1 riastrad fi 6250 1.1 riastrad fi 6251 1.1 riastrad ;; # -l 6252 1.1 riastrad *.ltframework) 6253 1.1 riastrad if test "$linkmode,$pass" = "prog,link"; then 6254 1.1 riastrad compile_deplibs="$deplib $compile_deplibs" 6255 1.1 riastrad finalize_deplibs="$deplib $finalize_deplibs" 6256 1.1 riastrad else 6257 1.1 riastrad deplibs="$deplib $deplibs" 6258 1.1 riastrad if test "$linkmode" = lib ; then 6259 1.1 riastrad case "$new_inherited_linker_flags " in 6260 1.1 riastrad *" $deplib "*) ;; 6261 1.1 riastrad * ) func_append new_inherited_linker_flags " $deplib" ;; 6262 1.1 riastrad esac 6263 1.1 riastrad fi 6264 1.1 riastrad fi 6265 1.1 riastrad continue 6266 1.1 riastrad ;; 6267 1.1 riastrad -L*) 6268 1.1 riastrad case $linkmode in 6269 1.1 riastrad lib) 6270 1.1 riastrad deplibs="$deplib $deplibs" 6271 1.1 riastrad test "$pass" = conv && continue 6272 1.1 riastrad newdependency_libs="$deplib $newdependency_libs" 6273 1.1 riastrad func_stripname '-L' '' "$deplib" 6274 1.1 riastrad func_resolve_sysroot "$func_stripname_result" 6275 1.1 riastrad func_append newlib_search_path " $func_resolve_sysroot_result" 6276 1.1 riastrad ;; 6277 1.1 riastrad prog) 6278 1.1 riastrad if test "$pass" = conv; then 6279 1.1 riastrad deplibs="$deplib $deplibs" 6280 1.1 riastrad continue 6281 1.1 riastrad fi 6282 1.1 riastrad if test "$pass" = scan; then 6283 1.1 riastrad deplibs="$deplib $deplibs" 6284 1.1 riastrad else 6285 1.1 riastrad compile_deplibs="$deplib $compile_deplibs" 6286 1.1 riastrad finalize_deplibs="$deplib $finalize_deplibs" 6287 1.1 riastrad fi 6288 1.1 riastrad func_stripname '-L' '' "$deplib" 6289 1.1 riastrad func_resolve_sysroot "$func_stripname_result" 6290 1.1 riastrad func_append newlib_search_path " $func_resolve_sysroot_result" 6291 1.1 riastrad ;; 6292 1.1 riastrad *) 6293 1.1 riastrad func_warning "\`-L' is ignored for archives/objects" 6294 1.1 riastrad ;; 6295 1.1 riastrad esac # linkmode 6296 1.1 riastrad continue 6297 1.1 riastrad ;; # -L 6298 1.1 riastrad -R*) 6299 1.1 riastrad if test "$pass" = link; then 6300 1.1 riastrad func_stripname '-R' '' "$deplib" 6301 1.1 riastrad func_resolve_sysroot "$func_stripname_result" 6302 1.1 riastrad dir=$func_resolve_sysroot_result 6303 1.1 riastrad # Make sure the xrpath contains only unique directories. 6304 1.1 riastrad case "$xrpath " in 6305 1.1 riastrad *" $dir "*) ;; 6306 1.1 riastrad *) func_append xrpath " $dir" ;; 6307 1.1 riastrad esac 6308 1.1 riastrad fi 6309 1.1 riastrad deplibs="$deplib $deplibs" 6310 1.1 riastrad continue 6311 1.1 riastrad ;; 6312 1.1 riastrad *.la) 6313 1.1 riastrad func_resolve_sysroot "$deplib" 6314 1.1 riastrad lib=$func_resolve_sysroot_result 6315 1.1 riastrad ;; 6316 1.1 riastrad *.$libext) 6317 1.1 riastrad if test "$pass" = conv; then 6318 1.1 riastrad deplibs="$deplib $deplibs" 6319 1.1 riastrad continue 6320 1.1 riastrad fi 6321 1.1 riastrad case $linkmode in 6322 1.1 riastrad lib) 6323 1.1 riastrad # Linking convenience modules into shared libraries is allowed, 6324 1.1 riastrad # but linking other static libraries is non-portable. 6325 1.1 riastrad case " $dlpreconveniencelibs " in 6326 1.1 riastrad *" $deplib "*) ;; 6327 1.1 riastrad *) 6328 1.1 riastrad valid_a_lib=no 6329 1.1 riastrad case $deplibs_check_method in 6330 1.1 riastrad match_pattern*) 6331 1.1 riastrad set dummy $deplibs_check_method; shift 6332 1.1 riastrad match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6333 1.1 riastrad if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 6334 1.1 riastrad | $EGREP "$match_pattern_regex" > /dev/null; then 6335 1.1 riastrad valid_a_lib=yes 6336 1.1 riastrad fi 6337 1.1 riastrad ;; 6338 1.1 riastrad pass_all) 6339 1.1 riastrad valid_a_lib=yes 6340 1.1 riastrad ;; 6341 1.1 riastrad esac 6342 1.1 riastrad if test "$valid_a_lib" != yes; then 6343 1.1 riastrad echo 6344 1.1 riastrad $ECHO "*** Warning: Trying to link with static lib archive $deplib." 6345 1.1 riastrad echo "*** I have the capability to make that library automatically link in when" 6346 1.1 riastrad echo "*** you link to this library. But I can only do this if you have a" 6347 1.1 riastrad echo "*** shared version of the library, which you do not appear to have" 6348 1.1 riastrad echo "*** because the file extensions .$libext of this argument makes me believe" 6349 1.1 riastrad echo "*** that it is just a static archive that I should not use here." 6350 1.1 riastrad else 6351 1.1 riastrad echo 6352 1.1 riastrad $ECHO "*** Warning: Linking the shared library $output against the" 6353 1.1 riastrad $ECHO "*** static library $deplib is not portable!" 6354 1.1 riastrad deplibs="$deplib $deplibs" 6355 1.1 riastrad fi 6356 1.1 riastrad ;; 6357 1.1 riastrad esac 6358 1.1 riastrad continue 6359 1.1 riastrad ;; 6360 1.1 riastrad prog) 6361 1.1 riastrad if test "$pass" != link; then 6362 1.1 riastrad deplibs="$deplib $deplibs" 6363 1.1 riastrad else 6364 1.1 riastrad compile_deplibs="$deplib $compile_deplibs" 6365 1.1 riastrad finalize_deplibs="$deplib $finalize_deplibs" 6366 1.1 riastrad fi 6367 1.1 riastrad continue 6368 1.1 riastrad ;; 6369 1.1 riastrad esac # linkmode 6370 1.1 riastrad ;; # *.$libext 6371 1.1 riastrad *.lo | *.$objext) 6372 1.1 riastrad if test "$pass" = conv; then 6373 1.1 riastrad deplibs="$deplib $deplibs" 6374 1.1 riastrad elif test "$linkmode" = prog; then 6375 1.1 riastrad if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 6376 1.1 riastrad # If there is no dlopen support or we're linking statically, 6377 1.1 riastrad # we need to preload. 6378 1.1 riastrad func_append newdlprefiles " $deplib" 6379 1.1 riastrad compile_deplibs="$deplib $compile_deplibs" 6380 1.1 riastrad finalize_deplibs="$deplib $finalize_deplibs" 6381 1.1 riastrad else 6382 1.1 riastrad func_append newdlfiles " $deplib" 6383 1.1 riastrad fi 6384 1.1 riastrad fi 6385 1.1 riastrad continue 6386 1.1 riastrad ;; 6387 1.1 riastrad %DEPLIBS%) 6388 1.1 riastrad alldeplibs=yes 6389 1.1 riastrad continue 6390 1.1 riastrad ;; 6391 1.1 riastrad esac # case $deplib 6392 1.1 riastrad 6393 1.1 riastrad if test "$found" = yes || test -f "$lib"; then : 6394 1.1 riastrad else 6395 1.1 riastrad func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 6396 1.1 riastrad fi 6397 1.1 riastrad 6398 1.1 riastrad # Check to see that this really is a libtool archive. 6399 1.1 riastrad func_lalib_unsafe_p "$lib" \ 6400 1.1 riastrad || func_fatal_error "\`$lib' is not a valid libtool archive" 6401 1.1 riastrad 6402 1.1 riastrad func_dirname "$lib" "" "." 6403 1.1 riastrad ladir="$func_dirname_result" 6404 1.1 riastrad 6405 1.1 riastrad dlname= 6406 1.1 riastrad dlopen= 6407 1.1 riastrad dlpreopen= 6408 1.1 riastrad libdir= 6409 1.1 riastrad library_names= 6410 1.1 riastrad old_library= 6411 1.1 riastrad inherited_linker_flags= 6412 1.1 riastrad # If the library was installed with an old release of libtool, 6413 1.1 riastrad # it will not redefine variables installed, or shouldnotlink 6414 1.1 riastrad installed=yes 6415 1.1 riastrad shouldnotlink=no 6416 1.1 riastrad avoidtemprpath= 6417 1.1 riastrad 6418 1.1 riastrad 6419 1.1 riastrad # Read the .la file 6420 1.1 riastrad func_source "$lib" 6421 1.1 riastrad 6422 1.1 riastrad # Convert "-framework foo" to "foo.ltframework" 6423 1.1 riastrad if test -n "$inherited_linker_flags"; then 6424 1.1 riastrad tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 6425 1.1 riastrad for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 6426 1.1 riastrad case " $new_inherited_linker_flags " in 6427 1.1 riastrad *" $tmp_inherited_linker_flag "*) ;; 6428 1.1 riastrad *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 6429 1.1 riastrad esac 6430 1.1 riastrad done 6431 1.1 riastrad fi 6432 1.1 riastrad dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 6433 1.1 riastrad if test "$linkmode,$pass" = "lib,link" || 6434 1.1 riastrad test "$linkmode,$pass" = "prog,scan" || 6435 1.1 riastrad { test "$linkmode" != prog && test "$linkmode" != lib; }; then 6436 1.1 riastrad test -n "$dlopen" && func_append dlfiles " $dlopen" 6437 1.1 riastrad test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 6438 1.1 riastrad fi 6439 1.1 riastrad 6440 1.1 riastrad if test "$pass" = conv; then 6441 1.1 riastrad # Only check for convenience libraries 6442 1.1 riastrad deplibs="$lib $deplibs" 6443 1.1 riastrad if test -z "$libdir"; then 6444 1.1 riastrad if test -z "$old_library"; then 6445 1.1 riastrad func_fatal_error "cannot find name of link library for \`$lib'" 6446 1.1 riastrad fi 6447 1.1 riastrad # It is a libtool convenience library, so add in its objects. 6448 1.1 riastrad func_append convenience " $ladir/$objdir/$old_library" 6449 1.1 riastrad func_append old_convenience " $ladir/$objdir/$old_library" 6450 1.1 riastrad tmp_libs= 6451 1.1 riastrad for deplib in $dependency_libs; do 6452 1.1 riastrad deplibs="$deplib $deplibs" 6453 1.1 riastrad if $opt_preserve_dup_deps ; then 6454 1.1 riastrad case "$tmp_libs " in 6455 1.1 riastrad *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6456 1.1 riastrad esac 6457 1.1 riastrad fi 6458 1.1 riastrad func_append tmp_libs " $deplib" 6459 1.1 riastrad done 6460 1.1 riastrad elif test "$linkmode" != prog && test "$linkmode" != lib; then 6461 1.1 riastrad func_fatal_error "\`$lib' is not a convenience library" 6462 1.1 riastrad fi 6463 1.1 riastrad continue 6464 1.1 riastrad fi # $pass = conv 6465 1.1 riastrad 6466 1.1 riastrad 6467 1.1 riastrad # Get the name of the library we link against. 6468 1.1 riastrad linklib= 6469 1.1 riastrad if test -n "$old_library" && 6470 1.1 riastrad { test "$prefer_static_libs" = yes || 6471 1.1 riastrad test "$prefer_static_libs,$installed" = "built,no"; }; then 6472 1.1 riastrad linklib=$old_library 6473 1.1 riastrad else 6474 1.1 riastrad for l in $old_library $library_names; do 6475 1.1 riastrad linklib="$l" 6476 1.1 riastrad done 6477 1.1 riastrad fi 6478 1.1 riastrad if test -z "$linklib"; then 6479 1.1 riastrad func_fatal_error "cannot find name of link library for \`$lib'" 6480 1.1 riastrad fi 6481 1.1 riastrad 6482 1.1 riastrad # This library was specified with -dlopen. 6483 1.1 riastrad if test "$pass" = dlopen; then 6484 1.1 riastrad if test -z "$libdir"; then 6485 1.1 riastrad func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 6486 1.1 riastrad fi 6487 1.1 riastrad if test -z "$dlname" || 6488 1.1 riastrad test "$dlopen_support" != yes || 6489 1.1 riastrad test "$build_libtool_libs" = no; then 6490 1.1 riastrad # If there is no dlname, no dlopen support or we're linking 6491 1.1 riastrad # statically, we need to preload. We also need to preload any 6492 1.1 riastrad # dependent libraries so libltdl's deplib preloader doesn't 6493 1.1 riastrad # bomb out in the load deplibs phase. 6494 1.1 riastrad func_append dlprefiles " $lib $dependency_libs" 6495 1.1 riastrad else 6496 1.1 riastrad func_append newdlfiles " $lib" 6497 1.1 riastrad fi 6498 1.1 riastrad continue 6499 1.1 riastrad fi # $pass = dlopen 6500 1.1 riastrad 6501 1.1 riastrad # We need an absolute path. 6502 1.1 riastrad case $ladir in 6503 1.1 riastrad [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 6504 1.1 riastrad *) 6505 1.1 riastrad abs_ladir=`cd "$ladir" && pwd` 6506 1.1 riastrad if test -z "$abs_ladir"; then 6507 1.1 riastrad func_warning "cannot determine absolute directory name of \`$ladir'" 6508 1.1 riastrad func_warning "passing it literally to the linker, although it might fail" 6509 1.1 riastrad abs_ladir="$ladir" 6510 1.1 riastrad fi 6511 1.1 riastrad ;; 6512 1.1 riastrad esac 6513 1.1 riastrad func_basename "$lib" 6514 1.1 riastrad laname="$func_basename_result" 6515 1.1 riastrad 6516 1.1 riastrad # Find the relevant object directory and library name. 6517 1.1 riastrad if test "X$installed" = Xyes; then 6518 1.1 riastrad if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6519 1.1 riastrad func_warning "library \`$lib' was moved." 6520 1.1 riastrad dir="$ladir" 6521 1.1 riastrad absdir="$abs_ladir" 6522 1.1 riastrad libdir="$abs_ladir" 6523 1.1 riastrad else 6524 1.1 riastrad dir="$lt_sysroot$libdir" 6525 1.1 riastrad absdir="$lt_sysroot$libdir" 6526 1.1 riastrad fi 6527 1.1 riastrad test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 6528 1.1 riastrad else 6529 1.1 riastrad if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6530 1.1 riastrad dir="$ladir" 6531 1.1 riastrad absdir="$abs_ladir" 6532 1.1 riastrad # Remove this search path later 6533 1.1 riastrad func_append notinst_path " $abs_ladir" 6534 1.1 riastrad else 6535 1.1 riastrad dir="$ladir/$objdir" 6536 1.1 riastrad absdir="$abs_ladir/$objdir" 6537 1.1 riastrad # Remove this search path later 6538 1.1 riastrad func_append notinst_path " $abs_ladir" 6539 1.1 riastrad fi 6540 1.1 riastrad fi # $installed = yes 6541 1.1 riastrad func_stripname 'lib' '.la' "$laname" 6542 1.1 riastrad name=$func_stripname_result 6543 1.1 riastrad 6544 1.1 riastrad # This library was specified with -dlpreopen. 6545 1.1 riastrad if test "$pass" = dlpreopen; then 6546 1.1 riastrad if test -z "$libdir" && test "$linkmode" = prog; then 6547 1.1 riastrad func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 6548 1.1 riastrad fi 6549 1.1 riastrad case "$host" in 6550 1.1 riastrad # special handling for platforms with PE-DLLs. 6551 1.1 riastrad *cygwin* | *mingw* | *cegcc* ) 6552 1.1 riastrad # Linker will automatically link against shared library if both 6553 1.1 riastrad # static and shared are present. Therefore, ensure we extract 6554 1.1 riastrad # symbols from the import library if a shared library is present 6555 1.1 riastrad # (otherwise, the dlopen module name will be incorrect). We do 6556 1.1 riastrad # this by putting the import library name into $newdlprefiles. 6557 1.1 riastrad # We recover the dlopen module name by 'saving' the la file 6558 1.1 riastrad # name in a special purpose variable, and (later) extracting the 6559 1.1 riastrad # dlname from the la file. 6560 1.1 riastrad if test -n "$dlname"; then 6561 1.1 riastrad func_tr_sh "$dir/$linklib" 6562 1.1 riastrad eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 6563 1.1 riastrad func_append newdlprefiles " $dir/$linklib" 6564 1.1 riastrad else 6565 1.1 riastrad func_append newdlprefiles " $dir/$old_library" 6566 1.1 riastrad # Keep a list of preopened convenience libraries to check 6567 1.1 riastrad # that they are being used correctly in the link pass. 6568 1.1 riastrad test -z "$libdir" && \ 6569 1.1 riastrad func_append dlpreconveniencelibs " $dir/$old_library" 6570 1.1 riastrad fi 6571 1.1 riastrad ;; 6572 1.1 riastrad * ) 6573 1.1 riastrad # Prefer using a static library (so that no silly _DYNAMIC symbols 6574 1.1 riastrad # are required to link). 6575 1.1 riastrad if test -n "$old_library"; then 6576 1.1 riastrad func_append newdlprefiles " $dir/$old_library" 6577 1.1 riastrad # Keep a list of preopened convenience libraries to check 6578 1.1 riastrad # that they are being used correctly in the link pass. 6579 1.1 riastrad test -z "$libdir" && \ 6580 1.1 riastrad func_append dlpreconveniencelibs " $dir/$old_library" 6581 1.1 riastrad # Otherwise, use the dlname, so that lt_dlopen finds it. 6582 1.1 riastrad elif test -n "$dlname"; then 6583 1.1 riastrad func_append newdlprefiles " $dir/$dlname" 6584 1.1 riastrad else 6585 1.1 riastrad func_append newdlprefiles " $dir/$linklib" 6586 1.1 riastrad fi 6587 1.1 riastrad ;; 6588 1.1 riastrad esac 6589 1.1 riastrad fi # $pass = dlpreopen 6590 1.1 riastrad 6591 1.1 riastrad if test -z "$libdir"; then 6592 1.1 riastrad # Link the convenience library 6593 1.1 riastrad if test "$linkmode" = lib; then 6594 1.1 riastrad deplibs="$dir/$old_library $deplibs" 6595 1.1 riastrad elif test "$linkmode,$pass" = "prog,link"; then 6596 1.1 riastrad compile_deplibs="$dir/$old_library $compile_deplibs" 6597 1.1 riastrad finalize_deplibs="$dir/$old_library $finalize_deplibs" 6598 1.1 riastrad else 6599 1.1 riastrad deplibs="$lib $deplibs" # used for prog,scan pass 6600 1.1 riastrad fi 6601 1.1 riastrad continue 6602 1.1 riastrad fi 6603 1.1 riastrad 6604 1.1 riastrad 6605 1.1 riastrad if test "$linkmode" = prog && test "$pass" != link; then 6606 1.1 riastrad func_append newlib_search_path " $ladir" 6607 1.1 riastrad deplibs="$lib $deplibs" 6608 1.1 riastrad 6609 1.1 riastrad linkalldeplibs=no 6610 1.1 riastrad if test "$link_all_deplibs" != no || test -z "$library_names" || 6611 1.1 riastrad test "$build_libtool_libs" = no; then 6612 1.1 riastrad linkalldeplibs=yes 6613 1.1 riastrad fi 6614 1.1 riastrad 6615 1.1 riastrad tmp_libs= 6616 1.1 riastrad for deplib in $dependency_libs; do 6617 1.1 riastrad case $deplib in 6618 1.1 riastrad -L*) func_stripname '-L' '' "$deplib" 6619 1.1 riastrad func_resolve_sysroot "$func_stripname_result" 6620 1.1 riastrad func_append newlib_search_path " $func_resolve_sysroot_result" 6621 1.1 riastrad ;; 6622 1.1 riastrad esac 6623 1.1 riastrad # Need to link against all dependency_libs? 6624 1.1 riastrad if test "$linkalldeplibs" = yes; then 6625 1.1 riastrad deplibs="$deplib $deplibs" 6626 1.1 riastrad else 6627 1.1 riastrad # Need to hardcode shared library paths 6628 1.1 riastrad # or/and link against static libraries 6629 1.1 riastrad newdependency_libs="$deplib $newdependency_libs" 6630 1.1 riastrad fi 6631 1.1 riastrad if $opt_preserve_dup_deps ; then 6632 1.1 riastrad case "$tmp_libs " in 6633 1.1 riastrad *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6634 1.1 riastrad esac 6635 1.1 riastrad fi 6636 1.1 riastrad func_append tmp_libs " $deplib" 6637 1.1 riastrad done # for deplib 6638 1.1 riastrad continue 6639 1.1 riastrad fi # $linkmode = prog... 6640 1.1 riastrad 6641 1.1 riastrad if test "$linkmode,$pass" = "prog,link"; then 6642 1.1 riastrad if test -n "$library_names" && 6643 1.1 riastrad { { test "$prefer_static_libs" = no || 6644 1.1 riastrad test "$prefer_static_libs,$installed" = "built,yes"; } || 6645 1.1 riastrad test -z "$old_library"; }; then 6646 1.1 riastrad # We need to hardcode the library path 6647 1.1 riastrad if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 6648 1.1 riastrad # Make sure the rpath contains only unique directories. 6649 1.1 riastrad case "$temp_rpath:" in 6650 1.1 riastrad *"$absdir:"*) ;; 6651 1.1 riastrad *) func_append temp_rpath "$absdir:" ;; 6652 1.1 riastrad esac 6653 1.1 riastrad fi 6654 1.1 riastrad 6655 1.1 riastrad # Hardcode the library path. 6656 1.1 riastrad # Skip directories that are in the system default run-time 6657 1.1 riastrad # search path. 6658 1.1 riastrad case " $sys_lib_dlsearch_path " in 6659 1.1 riastrad *" $absdir "*) ;; 6660 1.1 riastrad *) 6661 1.1 riastrad case "$compile_rpath " in 6662 1.1 riastrad *" $absdir "*) ;; 6663 1.1 riastrad *) func_append compile_rpath " $absdir" ;; 6664 1.1 riastrad esac 6665 1.1 riastrad ;; 6666 1.1 riastrad esac 6667 1.1 riastrad case " $sys_lib_dlsearch_path " in 6668 1.1 riastrad *" $libdir "*) ;; 6669 1.1 riastrad *) 6670 1.1 riastrad case "$finalize_rpath " in 6671 1.1 riastrad *" $libdir "*) ;; 6672 1.1 riastrad *) func_append finalize_rpath " $libdir" ;; 6673 1.1 riastrad esac 6674 1.1 riastrad ;; 6675 1.1 riastrad esac 6676 1.1 riastrad fi # $linkmode,$pass = prog,link... 6677 1.1 riastrad 6678 1.1 riastrad if test "$alldeplibs" = yes && 6679 1.1 riastrad { test "$deplibs_check_method" = pass_all || 6680 1.1 riastrad { test "$build_libtool_libs" = yes && 6681 1.1 riastrad test -n "$library_names"; }; }; then 6682 1.1 riastrad # We only need to search for static libraries 6683 1.1 riastrad continue 6684 1.1 riastrad fi 6685 1.1 riastrad fi 6686 1.1 riastrad 6687 1.1 riastrad link_static=no # Whether the deplib will be linked statically 6688 1.1 riastrad use_static_libs=$prefer_static_libs 6689 1.1 riastrad if test "$use_static_libs" = built && test "$installed" = yes; then 6690 1.1 riastrad use_static_libs=no 6691 1.1 riastrad fi 6692 1.1 riastrad if test -n "$library_names" && 6693 1.1 riastrad { test "$use_static_libs" = no || test -z "$old_library"; }; then 6694 1.1 riastrad case $host in 6695 1.1 riastrad *cygwin* | *mingw* | *cegcc*) 6696 1.1 riastrad # No point in relinking DLLs because paths are not encoded 6697 1.1 riastrad func_append notinst_deplibs " $lib" 6698 1.1 riastrad need_relink=no 6699 1.1 riastrad ;; 6700 1.1 riastrad *) 6701 1.1 riastrad if test "$installed" = no; then 6702 1.1 riastrad func_append notinst_deplibs " $lib" 6703 1.1 riastrad need_relink=yes 6704 1.1 riastrad fi 6705 1.1 riastrad ;; 6706 1.1 riastrad esac 6707 1.1 riastrad # This is a shared library 6708 1.1 riastrad 6709 1.1 riastrad # Warn about portability, can't link against -module's on some 6710 1.1 riastrad # systems (darwin). Don't bleat about dlopened modules though! 6711 1.1 riastrad dlopenmodule="" 6712 1.1 riastrad for dlpremoduletest in $dlprefiles; do 6713 1.1 riastrad if test "X$dlpremoduletest" = "X$lib"; then 6714 1.1 riastrad dlopenmodule="$dlpremoduletest" 6715 1.1 riastrad break 6716 1.1 riastrad fi 6717 1.1 riastrad done 6718 1.1 riastrad if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 6719 1.1 riastrad echo 6720 1.1 riastrad if test "$linkmode" = prog; then 6721 1.1 riastrad $ECHO "*** Warning: Linking the executable $output against the loadable module" 6722 1.1 riastrad else 6723 1.1 riastrad $ECHO "*** Warning: Linking the shared library $output against the loadable module" 6724 1.1 riastrad fi 6725 1.1 riastrad $ECHO "*** $linklib is not portable!" 6726 1.1 riastrad fi 6727 1.1 riastrad if test "$linkmode" = lib && 6728 1.1 riastrad test "$hardcode_into_libs" = yes; then 6729 1.1 riastrad # Hardcode the library path. 6730 1.1 riastrad # Skip directories that are in the system default run-time 6731 1.1 riastrad # search path. 6732 1.1 riastrad case " $sys_lib_dlsearch_path " in 6733 1.1 riastrad *" $absdir "*) ;; 6734 1.1 riastrad *) 6735 1.1 riastrad case "$compile_rpath " in 6736 1.1 riastrad *" $absdir "*) ;; 6737 1.1 riastrad *) func_append compile_rpath " $absdir" ;; 6738 1.1 riastrad esac 6739 1.1 riastrad ;; 6740 1.1 riastrad esac 6741 1.1 riastrad case " $sys_lib_dlsearch_path " in 6742 1.1 riastrad *" $libdir "*) ;; 6743 1.1 riastrad *) 6744 1.1 riastrad case "$finalize_rpath " in 6745 1.1 riastrad *" $libdir "*) ;; 6746 1.1 riastrad *) func_append finalize_rpath " $libdir" ;; 6747 1.1 riastrad esac 6748 1.1 riastrad ;; 6749 1.1 riastrad esac 6750 1.1 riastrad fi 6751 1.1 riastrad 6752 1.1 riastrad if test -n "$old_archive_from_expsyms_cmds"; then 6753 1.1 riastrad # figure out the soname 6754 1.1 riastrad set dummy $library_names 6755 1.1 riastrad shift 6756 1.1 riastrad realname="$1" 6757 1.1 riastrad shift 6758 1.1 riastrad libname=`eval "\\$ECHO \"$libname_spec\""` 6759 1.1 riastrad # use dlname if we got it. it's perfectly good, no? 6760 1.1 riastrad if test -n "$dlname"; then 6761 1.1 riastrad soname="$dlname" 6762 1.1 riastrad elif test -n "$soname_spec"; then 6763 1.1 riastrad # bleh windows 6764 1.1 riastrad case $host in 6765 1.1 riastrad *cygwin* | mingw* | *cegcc*) 6766 1.1 riastrad func_arith $current - $age 6767 1.1 riastrad major=$func_arith_result 6768 1.1 riastrad versuffix="-$major" 6769 1.1 riastrad ;; 6770 1.1 riastrad esac 6771 1.1 riastrad eval soname=\"$soname_spec\" 6772 1.1 riastrad else 6773 1.1 riastrad soname="$realname" 6774 1.1 riastrad fi 6775 1.1 riastrad 6776 1.1 riastrad # Make a new name for the extract_expsyms_cmds to use 6777 1.1 riastrad soroot="$soname" 6778 1.1 riastrad func_basename "$soroot" 6779 1.1 riastrad soname="$func_basename_result" 6780 1.1 riastrad func_stripname 'lib' '.dll' "$soname" 6781 1.1 riastrad newlib=libimp-$func_stripname_result.a 6782 1.1 riastrad 6783 1.1 riastrad # If the library has no export list, then create one now 6784 1.1 riastrad if test -f "$output_objdir/$soname-def"; then : 6785 1.1 riastrad else 6786 1.1 riastrad func_verbose "extracting exported symbol list from \`$soname'" 6787 1.1 riastrad func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 6788 1.1 riastrad fi 6789 1.1 riastrad 6790 1.1 riastrad # Create $newlib 6791 1.1 riastrad if test -f "$output_objdir/$newlib"; then :; else 6792 1.1 riastrad func_verbose "generating import library for \`$soname'" 6793 1.1 riastrad func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 6794 1.1 riastrad fi 6795 1.1 riastrad # make sure the library variables are pointing to the new library 6796 1.1 riastrad dir=$output_objdir 6797 1.1 riastrad linklib=$newlib 6798 1.1 riastrad fi # test -n "$old_archive_from_expsyms_cmds" 6799 1.1 riastrad 6800 1.1 riastrad if test "$linkmode" = prog || test "$opt_mode" != relink; then 6801 1.1 riastrad add_shlibpath= 6802 1.1 riastrad add_dir= 6803 1.1 riastrad add= 6804 1.1 riastrad lib_linked=yes 6805 1.1 riastrad case $hardcode_action in 6806 1.1 riastrad immediate | unsupported) 6807 1.1 riastrad if test "$hardcode_direct" = no; then 6808 1.1 riastrad add="$dir/$linklib" 6809 1.1 riastrad case $host in 6810 1.1 riastrad *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 6811 1.1 riastrad *-*-sysv4*uw2*) add_dir="-L$dir" ;; 6812 1.1 riastrad *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 6813 1.1 riastrad *-*-unixware7*) add_dir="-L$dir" ;; 6814 1.1 riastrad *-*-darwin* ) 6815 1.1 riastrad # if the lib is a (non-dlopened) module then we can not 6816 1.1 riastrad # link against it, someone is ignoring the earlier warnings 6817 1.1 riastrad if /usr/bin/file -L $add 2> /dev/null | 6818 1.1 riastrad $GREP ": [^:]* bundle" >/dev/null ; then 6819 1.1 riastrad if test "X$dlopenmodule" != "X$lib"; then 6820 1.1 riastrad $ECHO "*** Warning: lib $linklib is a module, not a shared library" 6821 1.1 riastrad if test -z "$old_library" ; then 6822 1.1 riastrad echo 6823 1.1 riastrad echo "*** And there doesn't seem to be a static archive available" 6824 1.1 riastrad echo "*** The link will probably fail, sorry" 6825 1.1 riastrad else 6826 1.1 riastrad add="$dir/$old_library" 6827 1.1 riastrad fi 6828 1.1 riastrad elif test -n "$old_library"; then 6829 1.1 riastrad add="$dir/$old_library" 6830 1.1 riastrad fi 6831 1.1 riastrad fi 6832 1.1 riastrad esac 6833 1.1 riastrad elif test "$hardcode_minus_L" = no; then 6834 1.1 riastrad case $host in 6835 1.1 riastrad *-*-sunos*) add_shlibpath="$dir" ;; 6836 1.1 riastrad esac 6837 1.1 riastrad add_dir="-L$dir" 6838 1.1 riastrad add="-l$name" 6839 1.1 riastrad elif test "$hardcode_shlibpath_var" = no; then 6840 1.1 riastrad add_shlibpath="$dir" 6841 1.1 riastrad add="-l$name" 6842 1.1 riastrad else 6843 1.1 riastrad lib_linked=no 6844 1.1 riastrad fi 6845 1.1 riastrad ;; 6846 1.1 riastrad relink) 6847 1.1 riastrad if test "$hardcode_direct" = yes && 6848 1.1 riastrad test "$hardcode_direct_absolute" = no; then 6849 1.1 riastrad add="$dir/$linklib" 6850 1.1 riastrad elif test "$hardcode_minus_L" = yes; then 6851 1.1 riastrad add_dir="-L$absdir" 6852 1.1 riastrad # Try looking first in the location we're being installed to. 6853 1.1 riastrad if test -n "$inst_prefix_dir"; then 6854 1.1 riastrad case $libdir in 6855 1.1 riastrad [\\/]*) 6856 1.1 riastrad func_append add_dir " -L$inst_prefix_dir$libdir" 6857 1.1 riastrad ;; 6858 1.1 riastrad esac 6859 1.1 riastrad fi 6860 1.1 riastrad add="-l$name" 6861 1.1 riastrad elif test "$hardcode_shlibpath_var" = yes; then 6862 1.1 riastrad add_shlibpath="$dir" 6863 1.1 riastrad add="-l$name" 6864 1.1 riastrad else 6865 1.1 riastrad lib_linked=no 6866 1.1 riastrad fi 6867 1.1 riastrad ;; 6868 1.1 riastrad *) lib_linked=no ;; 6869 1.1 riastrad esac 6870 1.1 riastrad 6871 1.1 riastrad if test "$lib_linked" != yes; then 6872 1.1 riastrad func_fatal_configuration "unsupported hardcode properties" 6873 1.1 riastrad fi 6874 1.1 riastrad 6875 1.1 riastrad if test -n "$add_shlibpath"; then 6876 1.1 riastrad case :$compile_shlibpath: in 6877 1.1 riastrad *":$add_shlibpath:"*) ;; 6878 1.1 riastrad *) func_append compile_shlibpath "$add_shlibpath:" ;; 6879 1.1 riastrad esac 6880 1.1 riastrad fi 6881 1.1 riastrad if test "$linkmode" = prog; then 6882 1.1 riastrad test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 6883 1.1 riastrad test -n "$add" && compile_deplibs="$add $compile_deplibs" 6884 1.1 riastrad else 6885 1.1 riastrad test -n "$add_dir" && deplibs="$add_dir $deplibs" 6886 1.1 riastrad test -n "$add" && deplibs="$add $deplibs" 6887 1.1 riastrad if test "$hardcode_direct" != yes && 6888 1.1 riastrad test "$hardcode_minus_L" != yes && 6889 1.1 riastrad test "$hardcode_shlibpath_var" = yes; then 6890 1.1 riastrad case :$finalize_shlibpath: in 6891 1.1 riastrad *":$libdir:"*) ;; 6892 1.1 riastrad *) func_append finalize_shlibpath "$libdir:" ;; 6893 1.1 riastrad esac 6894 1.1 riastrad fi 6895 1.1 riastrad fi 6896 1.1 riastrad fi 6897 1.1 riastrad 6898 1.1 riastrad if test "$linkmode" = prog || test "$opt_mode" = relink; then 6899 1.1 riastrad add_shlibpath= 6900 1.1 riastrad add_dir= 6901 1.1 riastrad add= 6902 1.1 riastrad # Finalize command for both is simple: just hardcode it. 6903 1.1 riastrad if test "$hardcode_direct" = yes && 6904 1.1 riastrad test "$hardcode_direct_absolute" = no; then 6905 1.1 riastrad add="$libdir/$linklib" 6906 1.1 riastrad elif test "$hardcode_minus_L" = yes; then 6907 1.1 riastrad add_dir="-L$libdir" 6908 1.1 riastrad add="-l$name" 6909 1.1 riastrad elif test "$hardcode_shlibpath_var" = yes; then 6910 1.1 riastrad case :$finalize_shlibpath: in 6911 1.1 riastrad *":$libdir:"*) ;; 6912 1.1 riastrad *) func_append finalize_shlibpath "$libdir:" ;; 6913 1.1 riastrad esac 6914 1.1 riastrad add="-l$name" 6915 1.1 riastrad elif test "$hardcode_automatic" = yes; then 6916 1.1 riastrad if test -n "$inst_prefix_dir" && 6917 1.1 riastrad test -f "$inst_prefix_dir$libdir/$linklib" ; then 6918 1.1 riastrad add="$inst_prefix_dir$libdir/$linklib" 6919 1.1 riastrad else 6920 1.1 riastrad add="$libdir/$linklib" 6921 1.1 riastrad fi 6922 1.1 riastrad else 6923 1.1 riastrad # We cannot seem to hardcode it, guess we'll fake it. 6924 1.1 riastrad add_dir="-L$libdir" 6925 1.1 riastrad # Try looking first in the location we're being installed to. 6926 1.1 riastrad if test -n "$inst_prefix_dir"; then 6927 1.1 riastrad case $libdir in 6928 1.1 riastrad [\\/]*) 6929 1.1 riastrad func_append add_dir " -L$inst_prefix_dir$libdir" 6930 1.1 riastrad ;; 6931 1.1 riastrad esac 6932 1.1 riastrad fi 6933 1.1 riastrad add="-l$name" 6934 1.1 riastrad fi 6935 1.1 riastrad 6936 1.1 riastrad if test "$linkmode" = prog; then 6937 1.1 riastrad test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 6938 1.1 riastrad test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 6939 1.1 riastrad else 6940 1.1 riastrad test -n "$add_dir" && deplibs="$add_dir $deplibs" 6941 1.1 riastrad test -n "$add" && deplibs="$add $deplibs" 6942 1.1 riastrad fi 6943 1.1 riastrad fi 6944 1.1 riastrad elif test "$linkmode" = prog; then 6945 1.1 riastrad # Here we assume that one of hardcode_direct or hardcode_minus_L 6946 1.1 riastrad # is not unsupported. This is valid on all known static and 6947 1.1 riastrad # shared platforms. 6948 1.1 riastrad if test "$hardcode_direct" != unsupported; then 6949 1.1 riastrad test -n "$old_library" && linklib="$old_library" 6950 1.1 riastrad compile_deplibs="$dir/$linklib $compile_deplibs" 6951 1.1 riastrad finalize_deplibs="$dir/$linklib $finalize_deplibs" 6952 1.1 riastrad else 6953 1.1 riastrad compile_deplibs="-l$name -L$dir $compile_deplibs" 6954 1.1 riastrad finalize_deplibs="-l$name -L$dir $finalize_deplibs" 6955 1.1 riastrad fi 6956 1.1 riastrad elif test "$build_libtool_libs" = yes; then 6957 1.1 riastrad # Not a shared library 6958 1.1 riastrad if test "$deplibs_check_method" != pass_all; then 6959 1.1 riastrad # We're trying link a shared library against a static one 6960 1.1 riastrad # but the system doesn't support it. 6961 1.1 riastrad 6962 1.1 riastrad # Just print a warning and add the library to dependency_libs so 6963 1.1 riastrad # that the program can be linked against the static library. 6964 1.1 riastrad echo 6965 1.1 riastrad $ECHO "*** Warning: This system can not link to static lib archive $lib." 6966 1.1 riastrad echo "*** I have the capability to make that library automatically link in when" 6967 1.1 riastrad echo "*** you link to this library. But I can only do this if you have a" 6968 1.1 riastrad echo "*** shared version of the library, which you do not appear to have." 6969 1.1 riastrad if test "$module" = yes; then 6970 1.1 riastrad echo "*** But as you try to build a module library, libtool will still create " 6971 1.1 riastrad echo "*** a static module, that should work as long as the dlopening application" 6972 1.1 riastrad echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 6973 1.1 riastrad if test -z "$global_symbol_pipe"; then 6974 1.1 riastrad echo 6975 1.1 riastrad echo "*** However, this would only work if libtool was able to extract symbol" 6976 1.1 riastrad echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 6977 1.1 riastrad echo "*** not find such a program. So, this module is probably useless." 6978 1.1 riastrad echo "*** \`nm' from GNU binutils and a full rebuild may help." 6979 1.1 riastrad fi 6980 1.1 riastrad if test "$build_old_libs" = no; then 6981 1.1 riastrad build_libtool_libs=module 6982 1.1 riastrad build_old_libs=yes 6983 1.1 riastrad else 6984 1.1 riastrad build_libtool_libs=no 6985 1.1 riastrad fi 6986 1.1 riastrad fi 6987 1.1 riastrad else 6988 1.1 riastrad deplibs="$dir/$old_library $deplibs" 6989 1.1 riastrad link_static=yes 6990 1.1 riastrad fi 6991 1.1 riastrad fi # link shared/static library? 6992 1.1 riastrad 6993 1.1 riastrad if test "$linkmode" = lib; then 6994 1.1 riastrad if test -n "$dependency_libs" && 6995 1.1 riastrad { test "$hardcode_into_libs" != yes || 6996 1.1 riastrad test "$build_old_libs" = yes || 6997 1.1 riastrad test "$link_static" = yes; }; then 6998 1.1 riastrad # Extract -R from dependency_libs 6999 1.1 riastrad temp_deplibs= 7000 1.1 riastrad for libdir in $dependency_libs; do 7001 1.1 riastrad case $libdir in 7002 1.1 riastrad -R*) func_stripname '-R' '' "$libdir" 7003 1.1 riastrad temp_xrpath=$func_stripname_result 7004 1.1 riastrad case " $xrpath " in 7005 1.1 riastrad *" $temp_xrpath "*) ;; 7006 1.1 riastrad *) func_append xrpath " $temp_xrpath";; 7007 1.1 riastrad esac;; 7008 1.1 riastrad *) func_append temp_deplibs " $libdir";; 7009 1.1 riastrad esac 7010 1.1 riastrad done 7011 1.1 riastrad dependency_libs="$temp_deplibs" 7012 1.1 riastrad fi 7013 1.1 riastrad 7014 1.1 riastrad func_append newlib_search_path " $absdir" 7015 1.1 riastrad # Link against this library 7016 1.1 riastrad test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 7017 1.1 riastrad # ... and its dependency_libs 7018 1.1 riastrad tmp_libs= 7019 1.1 riastrad for deplib in $dependency_libs; do 7020 1.1 riastrad newdependency_libs="$deplib $newdependency_libs" 7021 1.1 riastrad case $deplib in 7022 1.1 riastrad -L*) func_stripname '-L' '' "$deplib" 7023 1.1 riastrad func_resolve_sysroot "$func_stripname_result";; 7024 1.1 riastrad *) func_resolve_sysroot "$deplib" ;; 7025 1.1 riastrad esac 7026 1.1 riastrad if $opt_preserve_dup_deps ; then 7027 1.1 riastrad case "$tmp_libs " in 7028 1.1 riastrad *" $func_resolve_sysroot_result "*) 7029 1.1 riastrad func_append specialdeplibs " $func_resolve_sysroot_result" ;; 7030 1.1 riastrad esac 7031 1.1 riastrad fi 7032 1.1 riastrad func_append tmp_libs " $func_resolve_sysroot_result" 7033 1.1 riastrad done 7034 1.1 riastrad 7035 1.1 riastrad if test "$link_all_deplibs" != no; then 7036 1.1 riastrad # Add the search paths of all dependency libraries 7037 1.1 riastrad for deplib in $dependency_libs; do 7038 1.1 riastrad path= 7039 1.1 riastrad case $deplib in 7040 1.1 riastrad -L*) path="$deplib" ;; 7041 1.1 riastrad *.la) 7042 1.1 riastrad func_resolve_sysroot "$deplib" 7043 1.1 riastrad deplib=$func_resolve_sysroot_result 7044 1.1 riastrad func_dirname "$deplib" "" "." 7045 1.1 riastrad dir=$func_dirname_result 7046 1.1 riastrad # We need an absolute path. 7047 1.1 riastrad case $dir in 7048 1.1 riastrad [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 7049 1.1 riastrad *) 7050 1.1 riastrad absdir=`cd "$dir" && pwd` 7051 1.1 riastrad if test -z "$absdir"; then 7052 1.1 riastrad func_warning "cannot determine absolute directory name of \`$dir'" 7053 1.1 riastrad absdir="$dir" 7054 1.1 riastrad fi 7055 1.1 riastrad ;; 7056 1.1 riastrad esac 7057 1.1 riastrad if $GREP "^installed=no" $deplib > /dev/null; then 7058 1.1 riastrad case $host in 7059 1.1 riastrad *-*-darwin*) 7060 1.1 riastrad depdepl= 7061 1.1 riastrad eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 7062 1.1 riastrad if test -n "$deplibrary_names" ; then 7063 1.1 riastrad for tmp in $deplibrary_names ; do 7064 1.1 riastrad depdepl=$tmp 7065 1.1 riastrad done 7066 1.1 riastrad if test -f "$absdir/$objdir/$depdepl" ; then 7067 1.1 riastrad depdepl="$absdir/$objdir/$depdepl" 7068 1.1 riastrad darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7069 1.1 riastrad if test -z "$darwin_install_name"; then 7070 1.1 riastrad darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7071 1.1 riastrad fi 7072 1.1 riastrad func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 7073 1.1 riastrad func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 7074 1.1 riastrad path= 7075 1.1 riastrad fi 7076 1.1 riastrad fi 7077 1.1 riastrad ;; 7078 1.1 riastrad *) 7079 1.1 riastrad path="-L$absdir/$objdir" 7080 1.1 riastrad ;; 7081 1.1 riastrad esac 7082 1.1 riastrad else 7083 1.1 riastrad eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 7084 1.1 riastrad test -z "$libdir" && \ 7085 1.1 riastrad func_fatal_error "\`$deplib' is not a valid libtool archive" 7086 1.1 riastrad test "$absdir" != "$libdir" && \ 7087 1.1 riastrad func_warning "\`$deplib' seems to be moved" 7088 1.1 riastrad 7089 1.1 riastrad path="-L$absdir" 7090 1.1 riastrad fi 7091 1.1 riastrad ;; 7092 1.1 riastrad esac 7093 1.1 riastrad case " $deplibs " in 7094 1.1 riastrad *" $path "*) ;; 7095 1.1 riastrad *) deplibs="$path $deplibs" ;; 7096 1.1 riastrad esac 7097 1.1 riastrad done 7098 1.1 riastrad fi # link_all_deplibs != no 7099 1.1 riastrad fi # linkmode = lib 7100 1.1 riastrad done # for deplib in $libs 7101 1.1 riastrad if test "$pass" = link; then 7102 1.1 riastrad if test "$linkmode" = "prog"; then 7103 1.1 riastrad compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 7104 1.1 riastrad finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 7105 1.1 riastrad else 7106 1.1 riastrad compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7107 1.1 riastrad fi 7108 1.1 riastrad fi 7109 1.1 riastrad dependency_libs="$newdependency_libs" 7110 1.1 riastrad if test "$pass" = dlpreopen; then 7111 1.1 riastrad # Link the dlpreopened libraries before other libraries 7112 1.1 riastrad for deplib in $save_deplibs; do 7113 1.1 riastrad deplibs="$deplib $deplibs" 7114 1.1 riastrad done 7115 1.1 riastrad fi 7116 1.1 riastrad if test "$pass" != dlopen; then 7117 1.1 riastrad if test "$pass" != conv; then 7118 1.1 riastrad # Make sure lib_search_path contains only unique directories. 7119 1.1 riastrad lib_search_path= 7120 1.1 riastrad for dir in $newlib_search_path; do 7121 1.1 riastrad case "$lib_search_path " in 7122 1.1 riastrad *" $dir "*) ;; 7123 1.1 riastrad *) func_append lib_search_path " $dir" ;; 7124 1.1 riastrad esac 7125 1.1 riastrad done 7126 1.1 riastrad newlib_search_path= 7127 1.1 riastrad fi 7128 1.1 riastrad 7129 1.1 riastrad if test "$linkmode,$pass" != "prog,link"; then 7130 1.1 riastrad vars="deplibs" 7131 1.1 riastrad else 7132 1.1 riastrad vars="compile_deplibs finalize_deplibs" 7133 1.1 riastrad fi 7134 1.1 riastrad for var in $vars dependency_libs; do 7135 1.1 riastrad # Add libraries to $var in reverse order 7136 1.1 riastrad eval tmp_libs=\"\$$var\" 7137 1.1 riastrad new_libs= 7138 1.1 riastrad for deplib in $tmp_libs; do 7139 1.1 riastrad # FIXME: Pedantically, this is the right thing to do, so 7140 1.1 riastrad # that some nasty dependency loop isn't accidentally 7141 1.1 riastrad # broken: 7142 1.1 riastrad #new_libs="$deplib $new_libs" 7143 1.1 riastrad # Pragmatically, this seems to cause very few problems in 7144 1.1 riastrad # practice: 7145 1.1 riastrad case $deplib in 7146 1.1 riastrad -L*) new_libs="$deplib $new_libs" ;; 7147 1.1 riastrad -R*) ;; 7148 1.1 riastrad *) 7149 1.1 riastrad # And here is the reason: when a library appears more 7150 1.1 riastrad # than once as an explicit dependence of a library, or 7151 1.1 riastrad # is implicitly linked in more than once by the 7152 1.1 riastrad # compiler, it is considered special, and multiple 7153 1.1 riastrad # occurrences thereof are not removed. Compare this 7154 1.1 riastrad # with having the same library being listed as a 7155 1.1 riastrad # dependency of multiple other libraries: in this case, 7156 1.1 riastrad # we know (pedantically, we assume) the library does not 7157 1.1 riastrad # need to be listed more than once, so we keep only the 7158 1.1 riastrad # last copy. This is not always right, but it is rare 7159 1.1 riastrad # enough that we require users that really mean to play 7160 1.1 riastrad # such unportable linking tricks to link the library 7161 1.1 riastrad # using -Wl,-lname, so that libtool does not consider it 7162 1.1 riastrad # for duplicate removal. 7163 1.1 riastrad case " $specialdeplibs " in 7164 1.1 riastrad *" $deplib "*) new_libs="$deplib $new_libs" ;; 7165 1.1 riastrad *) 7166 1.1 riastrad case " $new_libs " in 7167 1.1 riastrad *" $deplib "*) ;; 7168 1.1 riastrad *) new_libs="$deplib $new_libs" ;; 7169 1.1 riastrad esac 7170 1.1 riastrad ;; 7171 1.1 riastrad esac 7172 1.1 riastrad ;; 7173 1.1 riastrad esac 7174 1.1 riastrad done 7175 1.1 riastrad tmp_libs= 7176 1.1 riastrad for deplib in $new_libs; do 7177 1.1 riastrad case $deplib in 7178 1.1 riastrad -L*) 7179 1.1 riastrad case " $tmp_libs " in 7180 1.1 riastrad *" $deplib "*) ;; 7181 1.1 riastrad *) func_append tmp_libs " $deplib" ;; 7182 1.1 riastrad esac 7183 1.1 riastrad ;; 7184 1.1 riastrad *) func_append tmp_libs " $deplib" ;; 7185 1.1 riastrad esac 7186 1.1 riastrad done 7187 1.1 riastrad eval $var=\"$tmp_libs\" 7188 1.1 riastrad done # for var 7189 1.1 riastrad fi 7190 1.1 riastrad # Last step: remove runtime libs from dependency_libs 7191 1.1 riastrad # (they stay in deplibs) 7192 1.1 riastrad tmp_libs= 7193 1.1 riastrad for i in $dependency_libs ; do 7194 1.1 riastrad case " $predeps $postdeps $compiler_lib_search_path " in 7195 1.1 riastrad *" $i "*) 7196 1.1 riastrad i="" 7197 1.1 riastrad ;; 7198 1.1 riastrad esac 7199 1.1 riastrad if test -n "$i" ; then 7200 1.1 riastrad func_append tmp_libs " $i" 7201 1.1 riastrad fi 7202 1.1 riastrad done 7203 1.1 riastrad dependency_libs=$tmp_libs 7204 1.1 riastrad done # for pass 7205 1.1 riastrad if test "$linkmode" = prog; then 7206 1.1 riastrad dlfiles="$newdlfiles" 7207 1.1 riastrad fi 7208 1.1 riastrad if test "$linkmode" = prog || test "$linkmode" = lib; then 7209 1.1 riastrad dlprefiles="$newdlprefiles" 7210 1.1 riastrad fi 7211 1.1 riastrad 7212 1.1 riastrad case $linkmode in 7213 1.1 riastrad oldlib) 7214 1.1 riastrad if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 7215 1.1 riastrad func_warning "\`-dlopen' is ignored for archives" 7216 1.1 riastrad fi 7217 1.1 riastrad 7218 1.1 riastrad case " $deplibs" in 7219 1.1 riastrad *\ -l* | *\ -L*) 7220 1.1 riastrad func_warning "\`-l' and \`-L' are ignored for archives" ;; 7221 1.1 riastrad esac 7222 1.1 riastrad 7223 1.1 riastrad test -n "$rpath" && \ 7224 1.1 riastrad func_warning "\`-rpath' is ignored for archives" 7225 1.1 riastrad 7226 1.1 riastrad test -n "$xrpath" && \ 7227 1.1 riastrad func_warning "\`-R' is ignored for archives" 7228 1.1 riastrad 7229 1.1 riastrad test -n "$vinfo" && \ 7230 1.1 riastrad func_warning "\`-version-info/-version-number' is ignored for archives" 7231 1.1 riastrad 7232 1.1 riastrad test -n "$release" && \ 7233 1.1 riastrad func_warning "\`-release' is ignored for archives" 7234 1.1 riastrad 7235 1.1 riastrad test -n "$export_symbols$export_symbols_regex" && \ 7236 1.1 riastrad func_warning "\`-export-symbols' is ignored for archives" 7237 1.1 riastrad 7238 1.1 riastrad # Now set the variables for building old libraries. 7239 1.1 riastrad build_libtool_libs=no 7240 1.1 riastrad oldlibs="$output" 7241 1.1 riastrad func_append objs "$old_deplibs" 7242 1.1 riastrad ;; 7243 1.1 riastrad 7244 1.1 riastrad lib) 7245 1.1 riastrad # Make sure we only generate libraries of the form `libNAME.la'. 7246 1.1 riastrad case $outputname in 7247 1.1 riastrad lib*) 7248 1.1 riastrad func_stripname 'lib' '.la' "$outputname" 7249 1.1 riastrad name=$func_stripname_result 7250 1.1 riastrad eval shared_ext=\"$shrext_cmds\" 7251 1.1 riastrad eval libname=\"$libname_spec\" 7252 1.1 riastrad ;; 7253 1.1 riastrad *) 7254 1.1 riastrad test "$module" = no && \ 7255 1.1 riastrad func_fatal_help "libtool library \`$output' must begin with \`lib'" 7256 1.1 riastrad 7257 1.1 riastrad if test "$need_lib_prefix" != no; then 7258 1.1 riastrad # Add the "lib" prefix for modules if required 7259 1.1 riastrad func_stripname '' '.la' "$outputname" 7260 1.1 riastrad name=$func_stripname_result 7261 1.1 riastrad eval shared_ext=\"$shrext_cmds\" 7262 1.1 riastrad eval libname=\"$libname_spec\" 7263 1.1 riastrad else 7264 1.1 riastrad func_stripname '' '.la' "$outputname" 7265 1.1 riastrad libname=$func_stripname_result 7266 1.1 riastrad fi 7267 1.1 riastrad ;; 7268 1.1 riastrad esac 7269 1.1 riastrad 7270 1.1 riastrad if test -n "$objs"; then 7271 1.1 riastrad if test "$deplibs_check_method" != pass_all; then 7272 1.1 riastrad func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 7273 1.1 riastrad else 7274 1.1 riastrad echo 7275 1.1 riastrad $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 7276 1.1 riastrad $ECHO "*** objects $objs is not portable!" 7277 1.1 riastrad func_append libobjs " $objs" 7278 1.1 riastrad fi 7279 1.1 riastrad fi 7280 1.1 riastrad 7281 1.1 riastrad test "$dlself" != no && \ 7282 1.1 riastrad func_warning "\`-dlopen self' is ignored for libtool libraries" 7283 1.1 riastrad 7284 1.1 riastrad set dummy $rpath 7285 1.1 riastrad shift 7286 1.1 riastrad test "$#" -gt 1 && \ 7287 1.1 riastrad func_warning "ignoring multiple \`-rpath's for a libtool library" 7288 1.1 riastrad 7289 1.1 riastrad install_libdir="$1" 7290 1.1 riastrad 7291 1.1 riastrad oldlibs= 7292 1.1 riastrad if test -z "$rpath"; then 7293 1.1 riastrad if test "$build_libtool_libs" = yes; then 7294 1.1 riastrad # Building a libtool convenience library. 7295 1.1 riastrad # Some compilers have problems with a `.al' extension so 7296 1.1 riastrad # convenience libraries should have the same extension an 7297 1.1 riastrad # archive normally would. 7298 1.1 riastrad oldlibs="$output_objdir/$libname.$libext $oldlibs" 7299 1.1 riastrad build_libtool_libs=convenience 7300 1.1 riastrad build_old_libs=yes 7301 1.1 riastrad fi 7302 1.1 riastrad 7303 1.1 riastrad test -n "$vinfo" && \ 7304 1.1 riastrad func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 7305 1.1 riastrad 7306 1.1 riastrad test -n "$release" && \ 7307 1.1 riastrad func_warning "\`-release' is ignored for convenience libraries" 7308 1.1 riastrad else 7309 1.1 riastrad 7310 1.1 riastrad # Parse the version information argument. 7311 1.1 riastrad save_ifs="$IFS"; IFS=':' 7312 1.1 riastrad set dummy $vinfo 0 0 0 7313 1.1 riastrad shift 7314 1.1 riastrad IFS="$save_ifs" 7315 1.1 riastrad 7316 1.1 riastrad test -n "$7" && \ 7317 1.1 riastrad func_fatal_help "too many parameters to \`-version-info'" 7318 1.1 riastrad 7319 1.1 riastrad # convert absolute version numbers to libtool ages 7320 1.1 riastrad # this retains compatibility with .la files and attempts 7321 1.1 riastrad # to make the code below a bit more comprehensible 7322 1.1 riastrad 7323 1.1 riastrad case $vinfo_number in 7324 1.1 riastrad yes) 7325 1.1 riastrad number_major="$1" 7326 1.1 riastrad number_minor="$2" 7327 1.1 riastrad number_revision="$3" 7328 1.1 riastrad # 7329 1.1 riastrad # There are really only two kinds -- those that 7330 1.1 riastrad # use the current revision as the major version 7331 1.1 riastrad # and those that subtract age and use age as 7332 1.1 riastrad # a minor version. But, then there is irix 7333 1.1 riastrad # which has an extra 1 added just for fun 7334 1.1 riastrad # 7335 1.1 riastrad case $version_type in 7336 1.1 riastrad # correct linux to gnu/linux during the next big refactor 7337 1.1 riastrad darwin|linux|osf|windows|none) 7338 1.1 riastrad func_arith $number_major + $number_minor 7339 1.1 riastrad current=$func_arith_result 7340 1.1 riastrad age="$number_minor" 7341 1.1 riastrad revision="$number_revision" 7342 1.1 riastrad ;; 7343 1.1 riastrad freebsd-aout|freebsd-elf|qnx|sunos) 7344 1.1 riastrad current="$number_major" 7345 1.1 riastrad revision="$number_minor" 7346 1.1 riastrad age="0" 7347 1.1 riastrad ;; 7348 1.1 riastrad irix|nonstopux) 7349 1.1 riastrad func_arith $number_major + $number_minor 7350 1.1 riastrad current=$func_arith_result 7351 1.1 riastrad age="$number_minor" 7352 1.1 riastrad revision="$number_minor" 7353 1.1 riastrad lt_irix_increment=no 7354 1.1 riastrad ;; 7355 1.1 riastrad *) 7356 1.1 riastrad func_fatal_configuration "$modename: unknown library version type \`$version_type'" 7357 1.1 riastrad ;; 7358 1.1 riastrad esac 7359 1.1 riastrad ;; 7360 1.1 riastrad no) 7361 1.1 riastrad current="$1" 7362 1.1 riastrad revision="$2" 7363 1.1 riastrad age="$3" 7364 1.1 riastrad ;; 7365 1.1 riastrad esac 7366 1.1 riastrad 7367 1.1 riastrad # Check that each of the things are valid numbers. 7368 1.1 riastrad case $current in 7369 1.1 riastrad 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 7370 1.1 riastrad *) 7371 1.1 riastrad func_error "CURRENT \`$current' must be a nonnegative integer" 7372 1.1 riastrad func_fatal_error "\`$vinfo' is not valid version information" 7373 1.1 riastrad ;; 7374 1.1 riastrad esac 7375 1.1 riastrad 7376 1.1 riastrad case $revision in 7377 1.1 riastrad 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 7378 1.1 riastrad *) 7379 1.1 riastrad func_error "REVISION \`$revision' must be a nonnegative integer" 7380 1.1 riastrad func_fatal_error "\`$vinfo' is not valid version information" 7381 1.1 riastrad ;; 7382 1.1 riastrad esac 7383 1.1 riastrad 7384 1.1 riastrad case $age in 7385 1.1 riastrad 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 7386 1.1 riastrad *) 7387 1.1 riastrad func_error "AGE \`$age' must be a nonnegative integer" 7388 1.1 riastrad func_fatal_error "\`$vinfo' is not valid version information" 7389 1.1 riastrad ;; 7390 1.1 riastrad esac 7391 1.1 riastrad 7392 1.1 riastrad if test "$age" -gt "$current"; then 7393 1.1 riastrad func_error "AGE \`$age' is greater than the current interface number \`$current'" 7394 1.1 riastrad func_fatal_error "\`$vinfo' is not valid version information" 7395 1.1 riastrad fi 7396 1.1 riastrad 7397 1.1 riastrad # Calculate the version variables. 7398 1.1 riastrad major= 7399 1.1 riastrad versuffix= 7400 1.1 riastrad verstring= 7401 1.1 riastrad case $version_type in 7402 1.1 riastrad none) ;; 7403 1.1 riastrad 7404 1.1 riastrad darwin) 7405 1.1 riastrad # Like Linux, but with the current version available in 7406 1.1 riastrad # verstring for coding it into the library header 7407 1.1 riastrad func_arith $current - $age 7408 1.1 riastrad major=.$func_arith_result 7409 1.1 riastrad versuffix="$major.$age.$revision" 7410 1.1 riastrad # Darwin ld doesn't like 0 for these options... 7411 1.1 riastrad func_arith $current + 1 7412 1.1 riastrad minor_current=$func_arith_result 7413 1.1 riastrad xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 7414 1.1 riastrad verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 7415 1.1 riastrad ;; 7416 1.1 riastrad 7417 1.1 riastrad freebsd-aout) 7418 1.1 riastrad major=".$current" 7419 1.1 riastrad versuffix=".$current.$revision"; 7420 1.1 riastrad ;; 7421 1.1 riastrad 7422 1.1 riastrad freebsd-elf) 7423 1.1 riastrad major=".$current" 7424 1.1 riastrad versuffix=".$current" 7425 1.1 riastrad ;; 7426 1.1 riastrad 7427 1.1 riastrad irix | nonstopux) 7428 1.1 riastrad if test "X$lt_irix_increment" = "Xno"; then 7429 1.1 riastrad func_arith $current - $age 7430 1.1 riastrad else 7431 1.1 riastrad func_arith $current - $age + 1 7432 1.1 riastrad fi 7433 1.1 riastrad major=$func_arith_result 7434 1.1 riastrad 7435 1.1 riastrad case $version_type in 7436 1.1 riastrad nonstopux) verstring_prefix=nonstopux ;; 7437 1.1 riastrad *) verstring_prefix=sgi ;; 7438 1.1 riastrad esac 7439 1.1 riastrad verstring="$verstring_prefix$major.$revision" 7440 1.1 riastrad 7441 1.1 riastrad # Add in all the interfaces that we are compatible with. 7442 1.1 riastrad loop=$revision 7443 1.1 riastrad while test "$loop" -ne 0; do 7444 1.1 riastrad func_arith $revision - $loop 7445 1.1 riastrad iface=$func_arith_result 7446 1.1 riastrad func_arith $loop - 1 7447 1.1 riastrad loop=$func_arith_result 7448 1.1 riastrad verstring="$verstring_prefix$major.$iface:$verstring" 7449 1.1 riastrad done 7450 1.1 riastrad 7451 1.1 riastrad # Before this point, $major must not contain `.'. 7452 1.1 riastrad major=.$major 7453 1.1 riastrad versuffix="$major.$revision" 7454 1.1 riastrad ;; 7455 1.1 riastrad 7456 1.1 riastrad linux) # correct to gnu/linux during the next big refactor 7457 1.1 riastrad func_arith $current - $age 7458 1.1 riastrad major=.$func_arith_result 7459 1.1 riastrad versuffix="$major.$age.$revision" 7460 1.1 riastrad ;; 7461 1.1 riastrad 7462 1.1 riastrad osf) 7463 1.1 riastrad func_arith $current - $age 7464 1.1 riastrad major=.$func_arith_result 7465 1.1 riastrad versuffix=".$current.$age.$revision" 7466 1.1 riastrad verstring="$current.$age.$revision" 7467 1.1 riastrad 7468 1.1 riastrad # Add in all the interfaces that we are compatible with. 7469 1.1 riastrad loop=$age 7470 1.1 riastrad while test "$loop" -ne 0; do 7471 1.1 riastrad func_arith $current - $loop 7472 1.1 riastrad iface=$func_arith_result 7473 1.1 riastrad func_arith $loop - 1 7474 1.1 riastrad loop=$func_arith_result 7475 1.1 riastrad verstring="$verstring:${iface}.0" 7476 1.1 riastrad done 7477 1.1 riastrad 7478 1.1 riastrad # Make executables depend on our current version. 7479 1.1 riastrad func_append verstring ":${current}.0" 7480 1.1 riastrad ;; 7481 1.1 riastrad 7482 1.1 riastrad qnx) 7483 1.1 riastrad major=".$current" 7484 1.1 riastrad versuffix=".$current" 7485 1.1 riastrad ;; 7486 1.1 riastrad 7487 1.1 riastrad sunos) 7488 1.1 riastrad major=".$current" 7489 1.1 riastrad versuffix=".$current.$revision" 7490 1.1 riastrad ;; 7491 1.1 riastrad 7492 1.1 riastrad windows) 7493 1.1 riastrad # Use '-' rather than '.', since we only want one 7494 1.1 riastrad # extension on DOS 8.3 filesystems. 7495 1.1 riastrad func_arith $current - $age 7496 1.1 riastrad major=$func_arith_result 7497 1.1 riastrad versuffix="-$major" 7498 1.1 riastrad ;; 7499 1.1 riastrad 7500 1.1 riastrad *) 7501 1.1 riastrad func_fatal_configuration "unknown library version type \`$version_type'" 7502 1.1 riastrad ;; 7503 1.1 riastrad esac 7504 1.1 riastrad 7505 1.1 riastrad # Clear the version info if we defaulted, and they specified a release. 7506 1.1 riastrad if test -z "$vinfo" && test -n "$release"; then 7507 1.1 riastrad major= 7508 1.1 riastrad case $version_type in 7509 1.1 riastrad darwin) 7510 1.1 riastrad # we can't check for "0.0" in archive_cmds due to quoting 7511 1.1 riastrad # problems, so we reset it completely 7512 1.1 riastrad verstring= 7513 1.1 riastrad ;; 7514 1.1 riastrad *) 7515 1.1 riastrad verstring="0.0" 7516 1.1 riastrad ;; 7517 1.1 riastrad esac 7518 1.1 riastrad if test "$need_version" = no; then 7519 1.1 riastrad versuffix= 7520 1.1 riastrad else 7521 1.1 riastrad versuffix=".0.0" 7522 1.1 riastrad fi 7523 1.1 riastrad fi 7524 1.1 riastrad 7525 1.1 riastrad # Remove version info from name if versioning should be avoided 7526 1.1 riastrad if test "$avoid_version" = yes && test "$need_version" = no; then 7527 1.1 riastrad major= 7528 1.1 riastrad versuffix= 7529 1.1 riastrad verstring="" 7530 1.1 riastrad fi 7531 1.1 riastrad 7532 1.1 riastrad # Check to see if the archive will have undefined symbols. 7533 1.1 riastrad if test "$allow_undefined" = yes; then 7534 1.1 riastrad if test "$allow_undefined_flag" = unsupported; then 7535 1.1 riastrad func_warning "undefined symbols not allowed in $host shared libraries" 7536 1.1 riastrad build_libtool_libs=no 7537 1.1 riastrad build_old_libs=yes 7538 1.1 riastrad fi 7539 1.1 riastrad else 7540 1.1 riastrad # Don't allow undefined symbols. 7541 1.1 riastrad allow_undefined_flag="$no_undefined_flag" 7542 1.1 riastrad fi 7543 1.1 riastrad 7544 1.1 riastrad fi 7545 1.1 riastrad 7546 1.1 riastrad func_generate_dlsyms "$libname" "$libname" "yes" 7547 1.1 riastrad func_append libobjs " $symfileobj" 7548 1.1 riastrad test "X$libobjs" = "X " && libobjs= 7549 1.1 riastrad 7550 1.1 riastrad if test "$opt_mode" != relink; then 7551 1.1 riastrad # Remove our outputs, but don't remove object files since they 7552 1.1 riastrad # may have been created when compiling PIC objects. 7553 1.1 riastrad removelist= 7554 1.1 riastrad tempremovelist=`$ECHO "$output_objdir/*"` 7555 1.1 riastrad for p in $tempremovelist; do 7556 1.1 riastrad case $p in 7557 1.1 riastrad *.$objext | *.gcno) 7558 1.1 riastrad ;; 7559 1.1 riastrad $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 7560 1.1 riastrad if test "X$precious_files_regex" != "X"; then 7561 1.1 riastrad if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 7562 1.1 riastrad then 7563 1.1 riastrad continue 7564 1.1 riastrad fi 7565 1.1 riastrad fi 7566 1.1 riastrad func_append removelist " $p" 7567 1.1 riastrad ;; 7568 1.1 riastrad *) ;; 7569 1.1 riastrad esac 7570 1.1 riastrad done 7571 1.1 riastrad test -n "$removelist" && \ 7572 1.1 riastrad func_show_eval "${RM}r \$removelist" 7573 1.1 riastrad fi 7574 1.1 riastrad 7575 1.1 riastrad # Now set the variables for building old libraries. 7576 1.1 riastrad if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 7577 1.1 riastrad func_append oldlibs " $output_objdir/$libname.$libext" 7578 1.1 riastrad 7579 1.1 riastrad # Transform .lo files to .o files. 7580 1.1 riastrad oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 7581 1.1 riastrad fi 7582 1.1 riastrad 7583 1.1 riastrad # Eliminate all temporary directories. 7584 1.1 riastrad #for path in $notinst_path; do 7585 1.1 riastrad # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 7586 1.1 riastrad # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 7587 1.1 riastrad # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 7588 1.1 riastrad #done 7589 1.1 riastrad 7590 1.1 riastrad if test -n "$xrpath"; then 7591 1.1 riastrad # If the user specified any rpath flags, then add them. 7592 1.1 riastrad temp_xrpath= 7593 1.1 riastrad for libdir in $xrpath; do 7594 1.1 riastrad func_replace_sysroot "$libdir" 7595 1.1 riastrad func_append temp_xrpath " -R$func_replace_sysroot_result" 7596 1.1 riastrad case "$finalize_rpath " in 7597 1.1 riastrad *" $libdir "*) ;; 7598 1.1 riastrad *) func_append finalize_rpath " $libdir" ;; 7599 1.1 riastrad esac 7600 1.1 riastrad done 7601 1.1 riastrad if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 7602 1.1 riastrad dependency_libs="$temp_xrpath $dependency_libs" 7603 1.1 riastrad fi 7604 1.1 riastrad fi 7605 1.1 riastrad 7606 1.1 riastrad # Make sure dlfiles contains only unique files that won't be dlpreopened 7607 1.1 riastrad old_dlfiles="$dlfiles" 7608 1.1 riastrad dlfiles= 7609 1.1 riastrad for lib in $old_dlfiles; do 7610 1.1 riastrad case " $dlprefiles $dlfiles " in 7611 1.1 riastrad *" $lib "*) ;; 7612 1.1 riastrad *) func_append dlfiles " $lib" ;; 7613 1.1 riastrad esac 7614 1.1 riastrad done 7615 1.1 riastrad 7616 1.1 riastrad # Make sure dlprefiles contains only unique files 7617 1.1 riastrad old_dlprefiles="$dlprefiles" 7618 1.1 riastrad dlprefiles= 7619 1.1 riastrad for lib in $old_dlprefiles; do 7620 1.1 riastrad case "$dlprefiles " in 7621 1.1 riastrad *" $lib "*) ;; 7622 1.1 riastrad *) func_append dlprefiles " $lib" ;; 7623 1.1 riastrad esac 7624 1.1 riastrad done 7625 1.1 riastrad 7626 1.1 riastrad if test "$build_libtool_libs" = yes; then 7627 1.1 riastrad if test -n "$rpath"; then 7628 1.1 riastrad case $host in 7629 1.1 riastrad *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 7630 1.1 riastrad # these systems don't actually have a c library (as such)! 7631 1.1 riastrad ;; 7632 1.1 riastrad *-*-rhapsody* | *-*-darwin1.[012]) 7633 1.1 riastrad # Rhapsody C library is in the System framework 7634 1.1 riastrad func_append deplibs " System.ltframework" 7635 1.1 riastrad ;; 7636 1.1 riastrad *-*-netbsd*) 7637 1.1 riastrad # Don't link with libc until the a.out ld.so is fixed. 7638 1.1 riastrad ;; 7639 1.1 riastrad *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 7640 1.1 riastrad # Do not include libc due to us having libc/libc_r. 7641 1.1 riastrad ;; 7642 1.1 riastrad *-*-sco3.2v5* | *-*-sco5v6*) 7643 1.1 riastrad # Causes problems with __ctype 7644 1.1 riastrad ;; 7645 1.1 riastrad *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 7646 1.1 riastrad # Compiler inserts libc in the correct place for threads to work 7647 1.1 riastrad ;; 7648 1.1 riastrad *) 7649 1.1 riastrad # Add libc to deplibs on all other systems if necessary. 7650 1.1 riastrad if test "$build_libtool_need_lc" = "yes"; then 7651 1.1 riastrad func_append deplibs " -lc" 7652 1.1 riastrad fi 7653 1.1 riastrad ;; 7654 1.1 riastrad esac 7655 1.1 riastrad fi 7656 1.1 riastrad 7657 1.1 riastrad # Transform deplibs into only deplibs that can be linked in shared. 7658 1.1 riastrad name_save=$name 7659 1.1 riastrad libname_save=$libname 7660 1.1 riastrad release_save=$release 7661 1.1 riastrad versuffix_save=$versuffix 7662 1.1 riastrad major_save=$major 7663 1.1 riastrad # I'm not sure if I'm treating the release correctly. I think 7664 1.1 riastrad # release should show up in the -l (ie -lgmp5) so we don't want to 7665 1.1 riastrad # add it in twice. Is that correct? 7666 1.1 riastrad release="" 7667 1.1 riastrad versuffix="" 7668 1.1 riastrad major="" 7669 1.1 riastrad newdeplibs= 7670 1.1 riastrad droppeddeps=no 7671 1.1 riastrad case $deplibs_check_method in 7672 1.1 riastrad pass_all) 7673 1.1 riastrad # Don't check for shared/static. Everything works. 7674 1.1 riastrad # This might be a little naive. We might want to check 7675 1.1 riastrad # whether the library exists or not. But this is on 7676 1.1 riastrad # osf3 & osf4 and I'm not really sure... Just 7677 1.1 riastrad # implementing what was already the behavior. 7678 1.1 riastrad newdeplibs=$deplibs 7679 1.1 riastrad ;; 7680 1.1 riastrad test_compile) 7681 1.1 riastrad # This code stresses the "libraries are programs" paradigm to its 7682 1.1 riastrad # limits. Maybe even breaks it. We compile a program, linking it 7683 1.1 riastrad # against the deplibs as a proxy for the library. Then we can check 7684 1.1 riastrad # whether they linked in statically or dynamically with ldd. 7685 1.1 riastrad $opt_dry_run || $RM conftest.c 7686 1.1 riastrad cat > conftest.c <<EOF 7687 1.1 riastrad int main() { return 0; } 7688 1.1 riastrad EOF 7689 1.1 riastrad $opt_dry_run || $RM conftest 7690 1.1 riastrad if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 7691 1.1 riastrad ldd_output=`ldd conftest` 7692 1.1 riastrad for i in $deplibs; do 7693 1.1 riastrad case $i in 7694 1.1 riastrad -l*) 7695 1.1 riastrad func_stripname -l '' "$i" 7696 1.1 riastrad name=$func_stripname_result 7697 1.1 riastrad if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7698 1.1 riastrad case " $predeps $postdeps " in 7699 1.1 riastrad *" $i "*) 7700 1.1 riastrad func_append newdeplibs " $i" 7701 1.1 riastrad i="" 7702 1.1 riastrad ;; 7703 1.1 riastrad esac 7704 1.1 riastrad fi 7705 1.1 riastrad if test -n "$i" ; then 7706 1.1 riastrad libname=`eval "\\$ECHO \"$libname_spec\""` 7707 1.1 riastrad deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7708 1.1 riastrad set dummy $deplib_matches; shift 7709 1.1 riastrad deplib_match=$1 7710 1.1 riastrad if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7711 1.1 riastrad func_append newdeplibs " $i" 7712 1.1 riastrad else 7713 1.1 riastrad droppeddeps=yes 7714 1.1 riastrad echo 7715 1.1 riastrad $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7716 1.1 riastrad echo "*** I have the capability to make that library automatically link in when" 7717 1.1 riastrad echo "*** you link to this library. But I can only do this if you have a" 7718 1.1 riastrad echo "*** shared version of the library, which I believe you do not have" 7719 1.1 riastrad echo "*** because a test_compile did reveal that the linker did not use it for" 7720 1.1 riastrad echo "*** its dynamic dependency list that programs get resolved with at runtime." 7721 1.1 riastrad fi 7722 1.1 riastrad fi 7723 1.1 riastrad ;; 7724 1.1 riastrad *) 7725 1.1 riastrad func_append newdeplibs " $i" 7726 1.1 riastrad ;; 7727 1.1 riastrad esac 7728 1.1 riastrad done 7729 1.1 riastrad else 7730 1.1 riastrad # Error occurred in the first compile. Let's try to salvage 7731 1.1 riastrad # the situation: Compile a separate program for each library. 7732 1.1 riastrad for i in $deplibs; do 7733 1.1 riastrad case $i in 7734 1.1 riastrad -l*) 7735 1.1 riastrad func_stripname -l '' "$i" 7736 1.1 riastrad name=$func_stripname_result 7737 1.1 riastrad $opt_dry_run || $RM conftest 7738 1.1 riastrad if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 7739 1.1 riastrad ldd_output=`ldd conftest` 7740 1.1 riastrad if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7741 1.1 riastrad case " $predeps $postdeps " in 7742 1.1 riastrad *" $i "*) 7743 1.1 riastrad func_append newdeplibs " $i" 7744 1.1 riastrad i="" 7745 1.1 riastrad ;; 7746 1.1 riastrad esac 7747 1.1 riastrad fi 7748 1.1 riastrad if test -n "$i" ; then 7749 1.1 riastrad libname=`eval "\\$ECHO \"$libname_spec\""` 7750 1.1 riastrad deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7751 1.1 riastrad set dummy $deplib_matches; shift 7752 1.1 riastrad deplib_match=$1 7753 1.1 riastrad if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7754 1.1 riastrad func_append newdeplibs " $i" 7755 1.1 riastrad else 7756 1.1 riastrad droppeddeps=yes 7757 1.1 riastrad echo 7758 1.1 riastrad $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7759 1.1 riastrad echo "*** I have the capability to make that library automatically link in when" 7760 1.1 riastrad echo "*** you link to this library. But I can only do this if you have a" 7761 1.1 riastrad echo "*** shared version of the library, which you do not appear to have" 7762 1.1 riastrad echo "*** because a test_compile did reveal that the linker did not use this one" 7763 1.1 riastrad echo "*** as a dynamic dependency that programs can get resolved with at runtime." 7764 1.1 riastrad fi 7765 1.1 riastrad fi 7766 1.1 riastrad else 7767 1.1 riastrad droppeddeps=yes 7768 1.1 riastrad echo 7769 1.1 riastrad $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 7770 1.1 riastrad echo "*** make it link in! You will probably need to install it or some" 7771 1.1 riastrad echo "*** library that it depends on before this library will be fully" 7772 1.1 riastrad echo "*** functional. Installing it before continuing would be even better." 7773 1.1 riastrad fi 7774 1.1 riastrad ;; 7775 1.1 riastrad *) 7776 1.1 riastrad func_append newdeplibs " $i" 7777 1.1 riastrad ;; 7778 1.1 riastrad esac 7779 1.1 riastrad done 7780 1.1 riastrad fi 7781 1.1 riastrad ;; 7782 1.1 riastrad file_magic*) 7783 1.1 riastrad set dummy $deplibs_check_method; shift 7784 1.1 riastrad file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7785 1.1 riastrad for a_deplib in $deplibs; do 7786 1.1 riastrad case $a_deplib in 7787 1.1 riastrad -l*) 7788 1.1 riastrad func_stripname -l '' "$a_deplib" 7789 1.1 riastrad name=$func_stripname_result 7790 1.1 riastrad if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7791 1.1 riastrad case " $predeps $postdeps " in 7792 1.1 riastrad *" $a_deplib "*) 7793 1.1 riastrad func_append newdeplibs " $a_deplib" 7794 1.1 riastrad a_deplib="" 7795 1.1 riastrad ;; 7796 1.1 riastrad esac 7797 1.1 riastrad fi 7798 1.1 riastrad if test -n "$a_deplib" ; then 7799 1.1 riastrad libname=`eval "\\$ECHO \"$libname_spec\""` 7800 1.1 riastrad if test -n "$file_magic_glob"; then 7801 1.1 riastrad libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 7802 1.1 riastrad else 7803 1.1 riastrad libnameglob=$libname 7804 1.1 riastrad fi 7805 1.1 riastrad test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 7806 1.1 riastrad for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7807 1.1 riastrad if test "$want_nocaseglob" = yes; then 7808 1.1 riastrad shopt -s nocaseglob 7809 1.1 riastrad potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7810 1.1 riastrad $nocaseglob 7811 1.1 riastrad else 7812 1.1 riastrad potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7813 1.1 riastrad fi 7814 1.1 riastrad for potent_lib in $potential_libs; do 7815 1.1 riastrad # Follow soft links. 7816 1.1 riastrad if ls -lLd "$potent_lib" 2>/dev/null | 7817 1.1 riastrad $GREP " -> " >/dev/null; then 7818 1.1 riastrad continue 7819 1.1 riastrad fi 7820 1.1 riastrad # The statement above tries to avoid entering an 7821 1.1 riastrad # endless loop below, in case of cyclic links. 7822 1.1 riastrad # We might still enter an endless loop, since a link 7823 1.1 riastrad # loop can be closed while we follow links, 7824 1.1 riastrad # but so what? 7825 1.1 riastrad potlib="$potent_lib" 7826 1.1 riastrad while test -h "$potlib" 2>/dev/null; do 7827 1.1 riastrad potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 7828 1.1 riastrad case $potliblink in 7829 1.1 riastrad [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 7830 1.1 riastrad *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 7831 1.1 riastrad esac 7832 1.1 riastrad done 7833 1.1 riastrad if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 7834 1.1 riastrad $SED -e 10q | 7835 1.1 riastrad $EGREP "$file_magic_regex" > /dev/null; then 7836 1.1 riastrad func_append newdeplibs " $a_deplib" 7837 1.1 riastrad a_deplib="" 7838 1.1 riastrad break 2 7839 1.1 riastrad fi 7840 1.1 riastrad done 7841 1.1 riastrad done 7842 1.1 riastrad fi 7843 1.1 riastrad if test -n "$a_deplib" ; then 7844 1.1 riastrad droppeddeps=yes 7845 1.1 riastrad echo 7846 1.1 riastrad $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7847 1.1 riastrad echo "*** I have the capability to make that library automatically link in when" 7848 1.1 riastrad echo "*** you link to this library. But I can only do this if you have a" 7849 1.1 riastrad echo "*** shared version of the library, which you do not appear to have" 7850 1.1 riastrad echo "*** because I did check the linker path looking for a file starting" 7851 1.1 riastrad if test -z "$potlib" ; then 7852 1.1 riastrad $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 7853 1.1 riastrad else 7854 1.1 riastrad $ECHO "*** with $libname and none of the candidates passed a file format test" 7855 1.1 riastrad $ECHO "*** using a file magic. Last file checked: $potlib" 7856 1.1 riastrad fi 7857 1.1 riastrad fi 7858 1.1 riastrad ;; 7859 1.1 riastrad *) 7860 1.1 riastrad # Add a -L argument. 7861 1.1 riastrad func_append newdeplibs " $a_deplib" 7862 1.1 riastrad ;; 7863 1.1 riastrad esac 7864 1.1 riastrad done # Gone through all deplibs. 7865 1.1 riastrad ;; 7866 1.1 riastrad match_pattern*) 7867 1.1 riastrad set dummy $deplibs_check_method; shift 7868 1.1 riastrad match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7869 1.1 riastrad for a_deplib in $deplibs; do 7870 1.1 riastrad case $a_deplib in 7871 1.1 riastrad -l*) 7872 1.1 riastrad func_stripname -l '' "$a_deplib" 7873 1.1 riastrad name=$func_stripname_result 7874 1.1 riastrad if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7875 1.1 riastrad case " $predeps $postdeps " in 7876 1.1 riastrad *" $a_deplib "*) 7877 1.1 riastrad func_append newdeplibs " $a_deplib" 7878 1.1 riastrad a_deplib="" 7879 1.1 riastrad ;; 7880 1.1 riastrad esac 7881 1.1 riastrad fi 7882 1.1 riastrad if test -n "$a_deplib" ; then 7883 1.1 riastrad libname=`eval "\\$ECHO \"$libname_spec\""` 7884 1.1 riastrad for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7885 1.1 riastrad potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 7886 1.1 riastrad for potent_lib in $potential_libs; do 7887 1.1 riastrad potlib="$potent_lib" # see symlink-check above in file_magic test 7888 1.1 riastrad if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 7889 1.1 riastrad $EGREP "$match_pattern_regex" > /dev/null; then 7890 1.1 riastrad func_append newdeplibs " $a_deplib" 7891 1.1 riastrad a_deplib="" 7892 1.1 riastrad break 2 7893 1.1 riastrad fi 7894 1.1 riastrad done 7895 1.1 riastrad done 7896 1.1 riastrad fi 7897 1.1 riastrad if test -n "$a_deplib" ; then 7898 1.1 riastrad droppeddeps=yes 7899 1.1 riastrad echo 7900 1.1 riastrad $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7901 1.1 riastrad echo "*** I have the capability to make that library automatically link in when" 7902 1.1 riastrad echo "*** you link to this library. But I can only do this if you have a" 7903 1.1 riastrad echo "*** shared version of the library, which you do not appear to have" 7904 1.1 riastrad echo "*** because I did check the linker path looking for a file starting" 7905 1.1 riastrad if test -z "$potlib" ; then 7906 1.1 riastrad $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 7907 1.1 riastrad else 7908 1.1 riastrad $ECHO "*** with $libname and none of the candidates passed a file format test" 7909 1.1 riastrad $ECHO "*** using a regex pattern. Last file checked: $potlib" 7910 1.1 riastrad fi 7911 1.1 riastrad fi 7912 1.1 riastrad ;; 7913 1.1 riastrad *) 7914 1.1 riastrad # Add a -L argument. 7915 1.1 riastrad func_append newdeplibs " $a_deplib" 7916 1.1 riastrad ;; 7917 1.1 riastrad esac 7918 1.1 riastrad done # Gone through all deplibs. 7919 1.1 riastrad ;; 7920 1.1 riastrad none | unknown | *) 7921 1.1 riastrad newdeplibs="" 7922 1.1 riastrad tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 7923 1.1 riastrad if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7924 1.1 riastrad for i in $predeps $postdeps ; do 7925 1.1 riastrad # can't use Xsed below, because $i might contain '/' 7926 1.1 riastrad tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 7927 1.1 riastrad done 7928 1.1 riastrad fi 7929 1.1 riastrad case $tmp_deplibs in 7930 1.1 riastrad *[!\ \ ]*) 7931 1.1 riastrad echo 7932 1.1 riastrad if test "X$deplibs_check_method" = "Xnone"; then 7933 1.1 riastrad echo "*** Warning: inter-library dependencies are not supported in this platform." 7934 1.1 riastrad else 7935 1.1 riastrad echo "*** Warning: inter-library dependencies are not known to be supported." 7936 1.1 riastrad fi 7937 1.1 riastrad echo "*** All declared inter-library dependencies are being dropped." 7938 1.1 riastrad droppeddeps=yes 7939 1.1 riastrad ;; 7940 1.1 riastrad esac 7941 1.1 riastrad ;; 7942 1.1 riastrad esac 7943 1.1 riastrad versuffix=$versuffix_save 7944 1.1 riastrad major=$major_save 7945 1.1 riastrad release=$release_save 7946 1.1 riastrad libname=$libname_save 7947 1.1 riastrad name=$name_save 7948 1.1 riastrad 7949 1.1 riastrad case $host in 7950 1.1 riastrad *-*-rhapsody* | *-*-darwin1.[012]) 7951 1.1 riastrad # On Rhapsody replace the C library with the System framework 7952 1.1 riastrad newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 7953 1.1 riastrad ;; 7954 1.1 riastrad esac 7955 1.1 riastrad 7956 1.1 riastrad if test "$droppeddeps" = yes; then 7957 1.1 riastrad if test "$module" = yes; then 7958 1.1 riastrad echo 7959 1.1 riastrad echo "*** Warning: libtool could not satisfy all declared inter-library" 7960 1.1 riastrad $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 7961 1.1 riastrad echo "*** a static module, that should work as long as the dlopening" 7962 1.1 riastrad echo "*** application is linked with the -dlopen flag." 7963 1.1 riastrad if test -z "$global_symbol_pipe"; then 7964 1.1 riastrad echo 7965 1.1 riastrad echo "*** However, this would only work if libtool was able to extract symbol" 7966 1.1 riastrad echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 7967 1.1 riastrad echo "*** not find such a program. So, this module is probably useless." 7968 1.1 riastrad echo "*** \`nm' from GNU binutils and a full rebuild may help." 7969 1.1 riastrad fi 7970 1.1 riastrad if test "$build_old_libs" = no; then 7971 1.1 riastrad oldlibs="$output_objdir/$libname.$libext" 7972 1.1 riastrad build_libtool_libs=module 7973 1.1 riastrad build_old_libs=yes 7974 1.1 riastrad else 7975 1.1 riastrad build_libtool_libs=no 7976 1.1 riastrad fi 7977 1.1 riastrad else 7978 1.1 riastrad echo "*** The inter-library dependencies that have been dropped here will be" 7979 1.1 riastrad echo "*** automatically added whenever a program is linked with this library" 7980 1.1 riastrad echo "*** or is declared to -dlopen it." 7981 1.1 riastrad 7982 1.1 riastrad if test "$allow_undefined" = no; then 7983 1.1 riastrad echo 7984 1.1 riastrad echo "*** Since this library must not contain undefined symbols," 7985 1.1 riastrad echo "*** because either the platform does not support them or" 7986 1.1 riastrad echo "*** it was explicitly requested with -no-undefined," 7987 1.1 riastrad echo "*** libtool will only create a static version of it." 7988 1.1 riastrad if test "$build_old_libs" = no; then 7989 1.1 riastrad oldlibs="$output_objdir/$libname.$libext" 7990 1.1 riastrad build_libtool_libs=module 7991 1.1 riastrad build_old_libs=yes 7992 1.1 riastrad else 7993 1.1 riastrad build_libtool_libs=no 7994 1.1 riastrad fi 7995 1.1 riastrad fi 7996 1.1 riastrad fi 7997 1.1 riastrad fi 7998 1.1 riastrad # Done checking deplibs! 7999 1.1 riastrad deplibs=$newdeplibs 8000 1.1 riastrad fi 8001 1.1 riastrad # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8002 1.1 riastrad case $host in 8003 1.1 riastrad *-*-darwin*) 8004 1.1 riastrad newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8005 1.1 riastrad new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8006 1.1 riastrad deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8007 1.1 riastrad ;; 8008 1.1 riastrad esac 8009 1.1 riastrad 8010 1.1 riastrad # move library search paths that coincide with paths to not yet 8011 1.1 riastrad # installed libraries to the beginning of the library search list 8012 1.1 riastrad new_libs= 8013 1.1 riastrad for path in $notinst_path; do 8014 1.1 riastrad case " $new_libs " in 8015 1.1 riastrad *" -L$path/$objdir "*) ;; 8016 1.1 riastrad *) 8017 1.1 riastrad case " $deplibs " in 8018 1.1 riastrad *" -L$path/$objdir "*) 8019 1.1 riastrad func_append new_libs " -L$path/$objdir" ;; 8020 1.1 riastrad esac 8021 1.1 riastrad ;; 8022 1.1 riastrad esac 8023 1.1 riastrad done 8024 1.1 riastrad for deplib in $deplibs; do 8025 1.1 riastrad case $deplib in 8026 1.1 riastrad -L*) 8027 1.1 riastrad case " $new_libs " in 8028 1.1 riastrad *" $deplib "*) ;; 8029 1.1 riastrad *) func_append new_libs " $deplib" ;; 8030 1.1 riastrad esac 8031 1.1 riastrad ;; 8032 1.1 riastrad *) func_append new_libs " $deplib" ;; 8033 1.1 riastrad esac 8034 1.1 riastrad done 8035 1.1 riastrad deplibs="$new_libs" 8036 1.1 riastrad 8037 1.1 riastrad # All the library-specific variables (install_libdir is set above). 8038 1.1 riastrad library_names= 8039 1.1 riastrad old_library= 8040 1.1 riastrad dlname= 8041 1.1 riastrad 8042 1.1 riastrad # Test again, we may have decided not to build it any more 8043 1.1 riastrad if test "$build_libtool_libs" = yes; then 8044 1.1 riastrad # Remove ${wl} instances when linking with ld. 8045 1.1 riastrad # FIXME: should test the right _cmds variable. 8046 1.1 riastrad case $archive_cmds in 8047 1.1 riastrad *\$LD\ *) wl= ;; 8048 1.1 riastrad esac 8049 1.1 riastrad if test "$hardcode_into_libs" = yes; then 8050 1.1 riastrad # Hardcode the library paths 8051 1.1 riastrad hardcode_libdirs= 8052 1.1 riastrad dep_rpath= 8053 1.1 riastrad rpath="$finalize_rpath" 8054 1.1 riastrad test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 8055 1.1 riastrad for libdir in $rpath; do 8056 1.1 riastrad if test -n "$hardcode_libdir_flag_spec"; then 8057 1.1 riastrad if test -n "$hardcode_libdir_separator"; then 8058 1.1 riastrad func_replace_sysroot "$libdir" 8059 1.1 riastrad libdir=$func_replace_sysroot_result 8060 1.1 riastrad if test -z "$hardcode_libdirs"; then 8061 1.1 riastrad hardcode_libdirs="$libdir" 8062 1.1 riastrad else 8063 1.1 riastrad # Just accumulate the unique libdirs. 8064 1.1 riastrad case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8065 1.1 riastrad *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8066 1.1 riastrad ;; 8067 1.1 riastrad *) 8068 1.1 riastrad func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8069 1.1 riastrad ;; 8070 1.1 riastrad esac 8071 1.1 riastrad fi 8072 1.1 riastrad else 8073 1.1 riastrad eval flag=\"$hardcode_libdir_flag_spec\" 8074 1.1 riastrad func_append dep_rpath " $flag" 8075 1.1 riastrad fi 8076 1.1 riastrad elif test -n "$runpath_var"; then 8077 1.1 riastrad case "$perm_rpath " in 8078 1.1 riastrad *" $libdir "*) ;; 8079 1.1 riastrad *) func_append perm_rpath " $libdir" ;; 8080 1.1 riastrad esac 8081 1.1 riastrad fi 8082 1.1 riastrad done 8083 1.1 riastrad # Substitute the hardcoded libdirs into the rpath. 8084 1.1 riastrad if test -n "$hardcode_libdir_separator" && 8085 1.1 riastrad test -n "$hardcode_libdirs"; then 8086 1.1 riastrad libdir="$hardcode_libdirs" 8087 1.1 riastrad eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 8088 1.1 riastrad fi 8089 1.1 riastrad if test -n "$runpath_var" && test -n "$perm_rpath"; then 8090 1.1 riastrad # We should set the runpath_var. 8091 1.1 riastrad rpath= 8092 1.1 riastrad for dir in $perm_rpath; do 8093 1.1 riastrad func_append rpath "$dir:" 8094 1.1 riastrad done 8095 1.1 riastrad eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 8096 1.1 riastrad fi 8097 1.1 riastrad test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 8098 1.1 riastrad fi 8099 1.1 riastrad 8100 1.1 riastrad shlibpath="$finalize_shlibpath" 8101 1.1 riastrad test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 8102 1.1 riastrad if test -n "$shlibpath"; then 8103 1.1 riastrad eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 8104 1.1 riastrad fi 8105 1.1 riastrad 8106 1.1 riastrad # Get the real and link names of the library. 8107 1.1 riastrad eval shared_ext=\"$shrext_cmds\" 8108 1.1 riastrad eval library_names=\"$library_names_spec\" 8109 1.1 riastrad set dummy $library_names 8110 1.1 riastrad shift 8111 1.1 riastrad realname="$1" 8112 1.1 riastrad shift 8113 1.1 riastrad 8114 1.1 riastrad if test -n "$soname_spec"; then 8115 1.1 riastrad eval soname=\"$soname_spec\" 8116 1.1 riastrad else 8117 1.1 riastrad soname="$realname" 8118 1.1 riastrad fi 8119 1.1 riastrad if test -z "$dlname"; then 8120 1.1 riastrad dlname=$soname 8121 1.1 riastrad fi 8122 1.1 riastrad 8123 1.1 riastrad lib="$output_objdir/$realname" 8124 1.1 riastrad linknames= 8125 1.1 riastrad for link 8126 1.1 riastrad do 8127 1.1 riastrad func_append linknames " $link" 8128 1.1 riastrad done 8129 1.1 riastrad 8130 1.1 riastrad # Use standard objects if they are pic 8131 1.1 riastrad test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 8132 1.1 riastrad test "X$libobjs" = "X " && libobjs= 8133 1.1 riastrad 8134 1.1 riastrad delfiles= 8135 1.1 riastrad if test -n "$export_symbols" && test -n "$include_expsyms"; then 8136 1.1 riastrad $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 8137 1.1 riastrad export_symbols="$output_objdir/$libname.uexp" 8138 1.1 riastrad func_append delfiles " $export_symbols" 8139 1.1 riastrad fi 8140 1.1 riastrad 8141 1.1 riastrad orig_export_symbols= 8142 1.1 riastrad case $host_os in 8143 1.1 riastrad cygwin* | mingw* | cegcc*) 8144 1.1 riastrad if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 8145 1.1 riastrad # exporting using user supplied symfile 8146 1.1 riastrad if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 8147 1.1 riastrad # and it's NOT already a .def file. Must figure out 8148 1.1 riastrad # which of the given symbols are data symbols and tag 8149 1.1 riastrad # them as such. So, trigger use of export_symbols_cmds. 8150 1.1 riastrad # export_symbols gets reassigned inside the "prepare 8151 1.1 riastrad # the list of exported symbols" if statement, so the 8152 1.1 riastrad # include_expsyms logic still works. 8153 1.1 riastrad orig_export_symbols="$export_symbols" 8154 1.1 riastrad export_symbols= 8155 1.1 riastrad always_export_symbols=yes 8156 1.1 riastrad fi 8157 1.1 riastrad fi 8158 1.1 riastrad ;; 8159 1.1 riastrad esac 8160 1.1 riastrad 8161 1.1 riastrad # Prepare the list of exported symbols 8162 1.1 riastrad if test -z "$export_symbols"; then 8163 1.1 riastrad if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 8164 1.1 riastrad func_verbose "generating symbol list for \`$libname.la'" 8165 1.1 riastrad export_symbols="$output_objdir/$libname.exp" 8166 1.1 riastrad $opt_dry_run || $RM $export_symbols 8167 1.1 riastrad cmds=$export_symbols_cmds 8168 1.1 riastrad save_ifs="$IFS"; IFS='~' 8169 1.1 riastrad for cmd1 in $cmds; do 8170 1.1 riastrad IFS="$save_ifs" 8171 1.1 riastrad # Take the normal branch if the nm_file_list_spec branch 8172 1.1 riastrad # doesn't work or if tool conversion is not needed. 8173 1.1 riastrad case $nm_file_list_spec~$to_tool_file_cmd in 8174 1.1 riastrad *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 8175 1.1 riastrad try_normal_branch=yes 8176 1.1 riastrad eval cmd=\"$cmd1\" 8177 1.1 riastrad func_len " $cmd" 8178 1.1 riastrad len=$func_len_result 8179 1.1 riastrad ;; 8180 1.1 riastrad *) 8181 1.1 riastrad try_normal_branch=no 8182 1.1 riastrad ;; 8183 1.1 riastrad esac 8184 1.1 riastrad if test "$try_normal_branch" = yes \ 8185 1.1 riastrad && { test "$len" -lt "$max_cmd_len" \ 8186 1.1 riastrad || test "$max_cmd_len" -le -1; } 8187 1.1 riastrad then 8188 1.1 riastrad func_show_eval "$cmd" 'exit $?' 8189 1.1 riastrad skipped_export=false 8190 1.1 riastrad elif test -n "$nm_file_list_spec"; then 8191 1.1 riastrad func_basename "$output" 8192 1.1 riastrad output_la=$func_basename_result 8193 1.1 riastrad save_libobjs=$libobjs 8194 1.1 riastrad save_output=$output 8195 1.1 riastrad output=${output_objdir}/${output_la}.nm 8196 1.1 riastrad func_to_tool_file "$output" 8197 1.1 riastrad libobjs=$nm_file_list_spec$func_to_tool_file_result 8198 1.1 riastrad func_append delfiles " $output" 8199 1.1 riastrad func_verbose "creating $NM input file list: $output" 8200 1.1 riastrad for obj in $save_libobjs; do 8201 1.1 riastrad func_to_tool_file "$obj" 8202 1.1 riastrad $ECHO "$func_to_tool_file_result" 8203 1.1 riastrad done > "$output" 8204 1.1 riastrad eval cmd=\"$cmd1\" 8205 1.1 riastrad func_show_eval "$cmd" 'exit $?' 8206 1.1 riastrad output=$save_output 8207 1.1 riastrad libobjs=$save_libobjs 8208 1.1 riastrad skipped_export=false 8209 1.1 riastrad else 8210 1.1 riastrad # The command line is too long to execute in one step. 8211 1.1 riastrad func_verbose "using reloadable object file for export list..." 8212 1.1 riastrad skipped_export=: 8213 1.1 riastrad # Break out early, otherwise skipped_export may be 8214 1.1 riastrad # set to false by a later but shorter cmd. 8215 1.1 riastrad break 8216 1.1 riastrad fi 8217 1.1 riastrad done 8218 1.1 riastrad IFS="$save_ifs" 8219 1.1 riastrad if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 8220 1.1 riastrad func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8221 1.1 riastrad func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8222 1.1 riastrad fi 8223 1.1 riastrad fi 8224 1.1 riastrad fi 8225 1.1 riastrad 8226 1.1 riastrad if test -n "$export_symbols" && test -n "$include_expsyms"; then 8227 1.1 riastrad tmp_export_symbols="$export_symbols" 8228 1.1 riastrad test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8229 1.1 riastrad $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8230 1.1 riastrad fi 8231 1.1 riastrad 8232 1.1 riastrad if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 8233 1.1 riastrad # The given exports_symbols file has to be filtered, so filter it. 8234 1.1 riastrad func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8235 1.1 riastrad # FIXME: $output_objdir/$libname.filter potentially contains lots of 8236 1.1 riastrad # 's' commands which not all seds can handle. GNU sed should be fine 8237 1.1 riastrad # though. Also, the filter scales superlinearly with the number of 8238 1.1 riastrad # global variables. join(1) would be nice here, but unfortunately 8239 1.1 riastrad # isn't a blessed tool. 8240 1.1 riastrad $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8241 1.1 riastrad func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8242 1.1 riastrad export_symbols=$output_objdir/$libname.def 8243 1.1 riastrad $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8244 1.1 riastrad fi 8245 1.1 riastrad 8246 1.1 riastrad tmp_deplibs= 8247 1.1 riastrad for test_deplib in $deplibs; do 8248 1.1 riastrad case " $convenience " in 8249 1.1 riastrad *" $test_deplib "*) ;; 8250 1.1 riastrad *) 8251 1.1 riastrad func_append tmp_deplibs " $test_deplib" 8252 1.1 riastrad ;; 8253 1.1 riastrad esac 8254 1.1 riastrad done 8255 1.1 riastrad deplibs="$tmp_deplibs" 8256 1.1 riastrad 8257 1.1 riastrad if test -n "$convenience"; then 8258 1.1 riastrad if test -n "$whole_archive_flag_spec" && 8259 1.1 riastrad test "$compiler_needs_object" = yes && 8260 1.1 riastrad test -z "$libobjs"; then 8261 1.1 riastrad # extract the archives, so we have objects to list. 8262 1.1 riastrad # TODO: could optimize this to just extract one archive. 8263 1.1 riastrad whole_archive_flag_spec= 8264 1.1 riastrad fi 8265 1.1 riastrad if test -n "$whole_archive_flag_spec"; then 8266 1.1 riastrad save_libobjs=$libobjs 8267 1.1 riastrad eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8268 1.1 riastrad test "X$libobjs" = "X " && libobjs= 8269 1.1 riastrad else 8270 1.1 riastrad gentop="$output_objdir/${outputname}x" 8271 1.1 riastrad func_append generated " $gentop" 8272 1.1 riastrad 8273 1.1 riastrad func_extract_archives $gentop $convenience 8274 1.1 riastrad func_append libobjs " $func_extract_archives_result" 8275 1.1 riastrad test "X$libobjs" = "X " && libobjs= 8276 1.1 riastrad fi 8277 1.1 riastrad fi 8278 1.1 riastrad 8279 1.1 riastrad if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 8280 1.1 riastrad eval flag=\"$thread_safe_flag_spec\" 8281 1.1 riastrad func_append linker_flags " $flag" 8282 1.1 riastrad fi 8283 1.1 riastrad 8284 1.1 riastrad # Make a backup of the uninstalled library when relinking 8285 1.1 riastrad if test "$opt_mode" = relink; then 8286 1.1 riastrad $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 8287 1.1 riastrad fi 8288 1.1 riastrad 8289 1.1 riastrad # Do each of the archive commands. 8290 1.1 riastrad if test "$module" = yes && test -n "$module_cmds" ; then 8291 1.1 riastrad if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8292 1.1 riastrad eval test_cmds=\"$module_expsym_cmds\" 8293 1.1 riastrad cmds=$module_expsym_cmds 8294 1.1 riastrad else 8295 1.1 riastrad eval test_cmds=\"$module_cmds\" 8296 1.1 riastrad cmds=$module_cmds 8297 1.1 riastrad fi 8298 1.1 riastrad else 8299 1.1 riastrad if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8300 1.1 riastrad eval test_cmds=\"$archive_expsym_cmds\" 8301 1.1 riastrad cmds=$archive_expsym_cmds 8302 1.1 riastrad else 8303 1.1 riastrad eval test_cmds=\"$archive_cmds\" 8304 1.1 riastrad cmds=$archive_cmds 8305 1.1 riastrad fi 8306 1.1 riastrad fi 8307 1.1 riastrad 8308 1.1 riastrad if test "X$skipped_export" != "X:" && 8309 1.1 riastrad func_len " $test_cmds" && 8310 1.1 riastrad len=$func_len_result && 8311 1.1 riastrad test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 8312 1.1 riastrad : 8313 1.1 riastrad else 8314 1.1 riastrad # The command line is too long to link in one step, link piecewise 8315 1.1 riastrad # or, if using GNU ld and skipped_export is not :, use a linker 8316 1.1 riastrad # script. 8317 1.1 riastrad 8318 1.1 riastrad # Save the value of $output and $libobjs because we want to 8319 1.1 riastrad # use them later. If we have whole_archive_flag_spec, we 8320 1.1 riastrad # want to use save_libobjs as it was before 8321 1.1 riastrad # whole_archive_flag_spec was expanded, because we can't 8322 1.1 riastrad # assume the linker understands whole_archive_flag_spec. 8323 1.1 riastrad # This may have to be revisited, in case too many 8324 1.1 riastrad # convenience libraries get linked in and end up exceeding 8325 1.1 riastrad # the spec. 8326 1.1 riastrad if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 8327 1.1 riastrad save_libobjs=$libobjs 8328 1.1 riastrad fi 8329 1.1 riastrad save_output=$output 8330 1.1 riastrad func_basename "$output" 8331 1.1 riastrad output_la=$func_basename_result 8332 1.1 riastrad 8333 1.1 riastrad # Clear the reloadable object creation command queue and 8334 1.1 riastrad # initialize k to one. 8335 1.1 riastrad test_cmds= 8336 1.1 riastrad concat_cmds= 8337 1.1 riastrad objlist= 8338 1.1 riastrad last_robj= 8339 1.1 riastrad k=1 8340 1.1 riastrad 8341 1.1 riastrad if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 8342 1.1 riastrad output=${output_objdir}/${output_la}.lnkscript 8343 1.1 riastrad func_verbose "creating GNU ld script: $output" 8344 1.1 riastrad echo 'INPUT (' > $output 8345 1.1 riastrad for obj in $save_libobjs 8346 1.1 riastrad do 8347 1.1 riastrad func_to_tool_file "$obj" 8348 1.1 riastrad $ECHO "$func_to_tool_file_result" >> $output 8349 1.1 riastrad done 8350 1.1 riastrad echo ')' >> $output 8351 1.1 riastrad func_append delfiles " $output" 8352 1.1 riastrad func_to_tool_file "$output" 8353 1.1 riastrad output=$func_to_tool_file_result 8354 1.1 riastrad elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 8355 1.1 riastrad output=${output_objdir}/${output_la}.lnk 8356 1.1 riastrad func_verbose "creating linker input file list: $output" 8357 1.1 riastrad : > $output 8358 1.1 riastrad set x $save_libobjs 8359 1.1 riastrad shift 8360 1.1 riastrad firstobj= 8361 1.1 riastrad if test "$compiler_needs_object" = yes; then 8362 1.1 riastrad firstobj="$1 " 8363 1.1 riastrad shift 8364 1.1 riastrad fi 8365 1.1 riastrad for obj 8366 1.1 riastrad do 8367 1.1 riastrad func_to_tool_file "$obj" 8368 1.1 riastrad $ECHO "$func_to_tool_file_result" >> $output 8369 1.1 riastrad done 8370 1.1 riastrad func_append delfiles " $output" 8371 1.1 riastrad func_to_tool_file "$output" 8372 1.1 riastrad output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 8373 1.1 riastrad else 8374 1.1 riastrad if test -n "$save_libobjs"; then 8375 1.1 riastrad func_verbose "creating reloadable object files..." 8376 1.1 riastrad output=$output_objdir/$output_la-${k}.$objext 8377 1.1 riastrad eval test_cmds=\"$reload_cmds\" 8378 1.1 riastrad func_len " $test_cmds" 8379 1.1 riastrad len0=$func_len_result 8380 1.1 riastrad len=$len0 8381 1.1 riastrad 8382 1.1 riastrad # Loop over the list of objects to be linked. 8383 1.1 riastrad for obj in $save_libobjs 8384 1.1 riastrad do 8385 1.1 riastrad func_len " $obj" 8386 1.1 riastrad func_arith $len + $func_len_result 8387 1.1 riastrad len=$func_arith_result 8388 1.1 riastrad if test "X$objlist" = X || 8389 1.1 riastrad test "$len" -lt "$max_cmd_len"; then 8390 1.1 riastrad func_append objlist " $obj" 8391 1.1 riastrad else 8392 1.1 riastrad # The command $test_cmds is almost too long, add a 8393 1.1 riastrad # command to the queue. 8394 1.1 riastrad if test "$k" -eq 1 ; then 8395 1.1 riastrad # The first file doesn't have a previous command to add. 8396 1.1 riastrad reload_objs=$objlist 8397 1.1 riastrad eval concat_cmds=\"$reload_cmds\" 8398 1.1 riastrad else 8399 1.1 riastrad # All subsequent reloadable object files will link in 8400 1.1 riastrad # the last one created. 8401 1.1 riastrad reload_objs="$objlist $last_robj" 8402 1.1 riastrad eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 8403 1.1 riastrad fi 8404 1.1 riastrad last_robj=$output_objdir/$output_la-${k}.$objext 8405 1.1 riastrad func_arith $k + 1 8406 1.1 riastrad k=$func_arith_result 8407 1.1 riastrad output=$output_objdir/$output_la-${k}.$objext 8408 1.1 riastrad objlist=" $obj" 8409 1.1 riastrad func_len " $last_robj" 8410 1.1 riastrad func_arith $len0 + $func_len_result 8411 1.1 riastrad len=$func_arith_result 8412 1.1 riastrad fi 8413 1.1 riastrad done 8414 1.1 riastrad # Handle the remaining objects by creating one last 8415 1.1 riastrad # reloadable object file. All subsequent reloadable object 8416 1.1 riastrad # files will link in the last one created. 8417 1.1 riastrad test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8418 1.1 riastrad reload_objs="$objlist $last_robj" 8419 1.1 riastrad eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 8420 1.1 riastrad if test -n "$last_robj"; then 8421 1.1 riastrad eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 8422 1.1 riastrad fi 8423 1.1 riastrad func_append delfiles " $output" 8424 1.1 riastrad 8425 1.1 riastrad else 8426 1.1 riastrad output= 8427 1.1 riastrad fi 8428 1.1 riastrad 8429 1.1 riastrad if ${skipped_export-false}; then 8430 1.1 riastrad func_verbose "generating symbol list for \`$libname.la'" 8431 1.1 riastrad export_symbols="$output_objdir/$libname.exp" 8432 1.1 riastrad $opt_dry_run || $RM $export_symbols 8433 1.1 riastrad libobjs=$output 8434 1.1 riastrad # Append the command to create the export file. 8435 1.1 riastrad test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8436 1.1 riastrad eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 8437 1.1 riastrad if test -n "$last_robj"; then 8438 1.1 riastrad eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 8439 1.1 riastrad fi 8440 1.1 riastrad fi 8441 1.1 riastrad 8442 1.1 riastrad test -n "$save_libobjs" && 8443 1.1 riastrad func_verbose "creating a temporary reloadable object file: $output" 8444 1.1 riastrad 8445 1.1 riastrad # Loop through the commands generated above and execute them. 8446 1.1 riastrad save_ifs="$IFS"; IFS='~' 8447 1.1 riastrad for cmd in $concat_cmds; do 8448 1.1 riastrad IFS="$save_ifs" 8449 1.1 riastrad $opt_silent || { 8450 1.1 riastrad func_quote_for_expand "$cmd" 8451 1.1 riastrad eval "func_echo $func_quote_for_expand_result" 8452 1.1 riastrad } 8453 1.1 riastrad $opt_dry_run || eval "$cmd" || { 8454 1.1 riastrad lt_exit=$? 8455 1.1 riastrad 8456 1.1 riastrad # Restore the uninstalled library and exit 8457 1.1 riastrad if test "$opt_mode" = relink; then 8458 1.1 riastrad ( cd "$output_objdir" && \ 8459 1.1 riastrad $RM "${realname}T" && \ 8460 1.1 riastrad $MV "${realname}U" "$realname" ) 8461 1.1 riastrad fi 8462 1.1 riastrad 8463 1.1 riastrad exit $lt_exit 8464 1.1 riastrad } 8465 1.1 riastrad done 8466 1.1 riastrad IFS="$save_ifs" 8467 1.1 riastrad 8468 1.1 riastrad if test -n "$export_symbols_regex" && ${skipped_export-false}; then 8469 1.1 riastrad func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8470 1.1 riastrad func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8471 1.1 riastrad fi 8472 1.1 riastrad fi 8473 1.1 riastrad 8474 1.1 riastrad if ${skipped_export-false}; then 8475 1.1 riastrad if test -n "$export_symbols" && test -n "$include_expsyms"; then 8476 1.1 riastrad tmp_export_symbols="$export_symbols" 8477 1.1 riastrad test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8478 1.1 riastrad $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8479 1.1 riastrad fi 8480 1.1 riastrad 8481 1.1 riastrad if test -n "$orig_export_symbols"; then 8482 1.1 riastrad # The given exports_symbols file has to be filtered, so filter it. 8483 1.1 riastrad func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8484 1.1 riastrad # FIXME: $output_objdir/$libname.filter potentially contains lots of 8485 1.1 riastrad # 's' commands which not all seds can handle. GNU sed should be fine 8486 1.1 riastrad # though. Also, the filter scales superlinearly with the number of 8487 1.1 riastrad # global variables. join(1) would be nice here, but unfortunately 8488 1.1 riastrad # isn't a blessed tool. 8489 1.1 riastrad $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8490 1.1 riastrad func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8491 1.1 riastrad export_symbols=$output_objdir/$libname.def 8492 1.1 riastrad $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8493 1.1 riastrad fi 8494 1.1 riastrad fi 8495 1.1 riastrad 8496 1.1 riastrad libobjs=$output 8497 1.1 riastrad # Restore the value of output. 8498 1.1 riastrad output=$save_output 8499 1.1 riastrad 8500 1.1 riastrad if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 8501 1.1 riastrad eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8502 1.1 riastrad test "X$libobjs" = "X " && libobjs= 8503 1.1 riastrad fi 8504 1.1 riastrad # Expand the library linking commands again to reset the 8505 1.1 riastrad # value of $libobjs for piecewise linking. 8506 1.1 riastrad 8507 1.1 riastrad # Do each of the archive commands. 8508 1.1 riastrad if test "$module" = yes && test -n "$module_cmds" ; then 8509 1.1 riastrad if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8510 1.1 riastrad cmds=$module_expsym_cmds 8511 1.1 riastrad else 8512 1.1 riastrad cmds=$module_cmds 8513 1.1 riastrad fi 8514 1.1 riastrad else 8515 1.1 riastrad if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8516 1.1 riastrad cmds=$archive_expsym_cmds 8517 1.1 riastrad else 8518 1.1 riastrad cmds=$archive_cmds 8519 1.1 riastrad fi 8520 1.1 riastrad fi 8521 1.1 riastrad fi 8522 1.1 riastrad 8523 1.1 riastrad if test -n "$delfiles"; then 8524 1.1 riastrad # Append the command to remove temporary files to $cmds. 8525 1.1 riastrad eval cmds=\"\$cmds~\$RM $delfiles\" 8526 1.1 riastrad fi 8527 1.1 riastrad 8528 1.1 riastrad # Add any objects from preloaded convenience libraries 8529 1.1 riastrad if test -n "$dlprefiles"; then 8530 1.1 riastrad gentop="$output_objdir/${outputname}x" 8531 1.1 riastrad func_append generated " $gentop" 8532 1.1 riastrad 8533 1.1 riastrad func_extract_archives $gentop $dlprefiles 8534 1.1 riastrad func_append libobjs " $func_extract_archives_result" 8535 1.1 riastrad test "X$libobjs" = "X " && libobjs= 8536 1.1 riastrad fi 8537 1.1 riastrad 8538 1.1 riastrad save_ifs="$IFS"; IFS='~' 8539 1.1 riastrad for cmd in $cmds; do 8540 1.1 riastrad IFS="$save_ifs" 8541 1.1 riastrad eval cmd=\"$cmd\" 8542 1.1 riastrad $opt_silent || { 8543 1.1 riastrad func_quote_for_expand "$cmd" 8544 1.1 riastrad eval "func_echo $func_quote_for_expand_result" 8545 1.1 riastrad } 8546 1.1 riastrad $opt_dry_run || eval "$cmd" || { 8547 1.1 riastrad lt_exit=$? 8548 1.1 riastrad 8549 1.1 riastrad # Restore the uninstalled library and exit 8550 1.1 riastrad if test "$opt_mode" = relink; then 8551 1.1 riastrad ( cd "$output_objdir" && \ 8552 1.1 riastrad $RM "${realname}T" && \ 8553 1.1 riastrad $MV "${realname}U" "$realname" ) 8554 1.1 riastrad fi 8555 1.1 riastrad 8556 1.1 riastrad exit $lt_exit 8557 1.1 riastrad } 8558 1.1 riastrad done 8559 1.1 riastrad IFS="$save_ifs" 8560 1.1 riastrad 8561 1.1 riastrad # Restore the uninstalled library and exit 8562 1.1 riastrad if test "$opt_mode" = relink; then 8563 1.1 riastrad $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 8564 1.1 riastrad 8565 1.1 riastrad if test -n "$convenience"; then 8566 1.1 riastrad if test -z "$whole_archive_flag_spec"; then 8567 1.1 riastrad func_show_eval '${RM}r "$gentop"' 8568 1.1 riastrad fi 8569 1.1 riastrad fi 8570 1.1 riastrad 8571 1.1 riastrad exit $EXIT_SUCCESS 8572 1.1 riastrad fi 8573 1.1 riastrad 8574 1.1 riastrad # Create links to the real library. 8575 1.1 riastrad for linkname in $linknames; do 8576 1.1 riastrad if test "$realname" != "$linkname"; then 8577 1.1 riastrad func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 8578 1.1 riastrad fi 8579 1.1 riastrad done 8580 1.1 riastrad 8581 1.1 riastrad # If -module or -export-dynamic was specified, set the dlname. 8582 1.1 riastrad if test "$module" = yes || test "$export_dynamic" = yes; then 8583 1.1 riastrad # On all known operating systems, these are identical. 8584 1.1 riastrad dlname="$soname" 8585 1.1 riastrad fi 8586 1.1 riastrad fi 8587 1.1 riastrad ;; 8588 1.1 riastrad 8589 1.1 riastrad obj) 8590 1.1 riastrad if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 8591 1.1 riastrad func_warning "\`-dlopen' is ignored for objects" 8592 1.1 riastrad fi 8593 1.1 riastrad 8594 1.1 riastrad case " $deplibs" in 8595 1.1 riastrad *\ -l* | *\ -L*) 8596 1.1 riastrad func_warning "\`-l' and \`-L' are ignored for objects" ;; 8597 1.1 riastrad esac 8598 1.1 riastrad 8599 1.1 riastrad test -n "$rpath" && \ 8600 1.1 riastrad func_warning "\`-rpath' is ignored for objects" 8601 1.1 riastrad 8602 1.1 riastrad test -n "$xrpath" && \ 8603 1.1 riastrad func_warning "\`-R' is ignored for objects" 8604 1.1 riastrad 8605 1.1 riastrad test -n "$vinfo" && \ 8606 1.1 riastrad func_warning "\`-version-info' is ignored for objects" 8607 1.1 riastrad 8608 1.1 riastrad test -n "$release" && \ 8609 1.1 riastrad func_warning "\`-release' is ignored for objects" 8610 1.1 riastrad 8611 1.1 riastrad case $output in 8612 1.1 riastrad *.lo) 8613 1.1 riastrad test -n "$objs$old_deplibs" && \ 8614 1.1 riastrad func_fatal_error "cannot build library object \`$output' from non-libtool objects" 8615 1.1 riastrad 8616 1.1 riastrad libobj=$output 8617 1.1 riastrad func_lo2o "$libobj" 8618 1.1 riastrad obj=$func_lo2o_result 8619 1.1 riastrad ;; 8620 1.1 riastrad *) 8621 1.1 riastrad libobj= 8622 1.1 riastrad obj="$output" 8623 1.1 riastrad ;; 8624 1.1 riastrad esac 8625 1.1 riastrad 8626 1.1 riastrad # Delete the old objects. 8627 1.1 riastrad $opt_dry_run || $RM $obj $libobj 8628 1.1 riastrad 8629 1.1 riastrad # Objects from convenience libraries. This assumes 8630 1.1 riastrad # single-version convenience libraries. Whenever we create 8631 1.1 riastrad # different ones for PIC/non-PIC, this we'll have to duplicate 8632 1.1 riastrad # the extraction. 8633 1.1 riastrad reload_conv_objs= 8634 1.1 riastrad gentop= 8635 1.1 riastrad # reload_cmds runs $LD directly, so let us get rid of 8636 1.1 riastrad # -Wl from whole_archive_flag_spec and hope we can get by with 8637 1.1 riastrad # turning comma into space.. 8638 1.1 riastrad wl= 8639 1.1 riastrad 8640 1.1 riastrad if test -n "$convenience"; then 8641 1.1 riastrad if test -n "$whole_archive_flag_spec"; then 8642 1.1 riastrad eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 8643 1.1 riastrad reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 8644 1.1 riastrad else 8645 1.1 riastrad gentop="$output_objdir/${obj}x" 8646 1.1 riastrad func_append generated " $gentop" 8647 1.1 riastrad 8648 1.1 riastrad func_extract_archives $gentop $convenience 8649 1.1 riastrad reload_conv_objs="$reload_objs $func_extract_archives_result" 8650 1.1 riastrad fi 8651 1.1 riastrad fi 8652 1.1 riastrad 8653 1.1 riastrad # If we're not building shared, we need to use non_pic_objs 8654 1.1 riastrad test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 8655 1.1 riastrad 8656 1.1 riastrad # Create the old-style object. 8657 1.1 riastrad reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 8658 1.1 riastrad 8659 1.1 riastrad output="$obj" 8660 1.1 riastrad func_execute_cmds "$reload_cmds" 'exit $?' 8661 1.1 riastrad 8662 1.1 riastrad # Exit if we aren't doing a library object file. 8663 1.1 riastrad if test -z "$libobj"; then 8664 1.1 riastrad if test -n "$gentop"; then 8665 1.1 riastrad func_show_eval '${RM}r "$gentop"' 8666 1.1 riastrad fi 8667 1.1 riastrad 8668 1.1 riastrad exit $EXIT_SUCCESS 8669 1.1 riastrad fi 8670 1.1 riastrad 8671 1.1 riastrad if test "$build_libtool_libs" != yes; then 8672 1.1 riastrad if test -n "$gentop"; then 8673 1.1 riastrad func_show_eval '${RM}r "$gentop"' 8674 1.1 riastrad fi 8675 1.1 riastrad 8676 1.1 riastrad # Create an invalid libtool object if no PIC, so that we don't 8677 1.1 riastrad # accidentally link it into a program. 8678 1.1 riastrad # $show "echo timestamp > $libobj" 8679 1.1 riastrad # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 8680 1.1 riastrad exit $EXIT_SUCCESS 8681 1.1 riastrad fi 8682 1.1 riastrad 8683 1.1 riastrad if test -n "$pic_flag" || test "$pic_mode" != default; then 8684 1.1 riastrad # Only do commands if we really have different PIC objects. 8685 1.1 riastrad reload_objs="$libobjs $reload_conv_objs" 8686 1.1 riastrad output="$libobj" 8687 1.1 riastrad func_execute_cmds "$reload_cmds" 'exit $?' 8688 1.1 riastrad fi 8689 1.1 riastrad 8690 1.1 riastrad if test -n "$gentop"; then 8691 1.1 riastrad func_show_eval '${RM}r "$gentop"' 8692 1.1 riastrad fi 8693 1.1 riastrad 8694 1.1 riastrad exit $EXIT_SUCCESS 8695 1.1 riastrad ;; 8696 1.1 riastrad 8697 1.1 riastrad prog) 8698 1.1 riastrad case $host in 8699 1.1 riastrad *cygwin*) func_stripname '' '.exe' "$output" 8700 1.1 riastrad output=$func_stripname_result.exe;; 8701 1.1 riastrad esac 8702 1.1 riastrad test -n "$vinfo" && \ 8703 1.1 riastrad func_warning "\`-version-info' is ignored for programs" 8704 1.1 riastrad 8705 1.1 riastrad test -n "$release" && \ 8706 1.1 riastrad func_warning "\`-release' is ignored for programs" 8707 1.1 riastrad 8708 1.1 riastrad test "$preload" = yes \ 8709 1.1 riastrad && test "$dlopen_support" = unknown \ 8710 1.1 riastrad && test "$dlopen_self" = unknown \ 8711 1.1 riastrad && test "$dlopen_self_static" = unknown && \ 8712 1.1 riastrad func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 8713 1.1 riastrad 8714 1.1 riastrad case $host in 8715 1.1 riastrad *-*-rhapsody* | *-*-darwin1.[012]) 8716 1.1 riastrad # On Rhapsody replace the C library is the System framework 8717 1.1 riastrad compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 8718 1.1 riastrad finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 8719 1.1 riastrad ;; 8720 1.1 riastrad esac 8721 1.1 riastrad 8722 1.1 riastrad case $host in 8723 1.1 riastrad *-*-darwin*) 8724 1.1 riastrad # Don't allow lazy linking, it breaks C++ global constructors 8725 1.1 riastrad # But is supposedly fixed on 10.4 or later (yay!). 8726 1.1 riastrad if test "$tagname" = CXX ; then 8727 1.1 riastrad case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 8728 1.1 riastrad 10.[0123]) 8729 1.1 riastrad func_append compile_command " ${wl}-bind_at_load" 8730 1.1 riastrad func_append finalize_command " ${wl}-bind_at_load" 8731 1.1 riastrad ;; 8732 1.1 riastrad esac 8733 1.1 riastrad fi 8734 1.1 riastrad # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8735 1.1 riastrad compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8736 1.1 riastrad finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8737 1.1 riastrad ;; 8738 1.1 riastrad esac 8739 1.1 riastrad 8740 1.1 riastrad 8741 1.1 riastrad # move library search paths that coincide with paths to not yet 8742 1.1 riastrad # installed libraries to the beginning of the library search list 8743 1.1 riastrad new_libs= 8744 1.1 riastrad for path in $notinst_path; do 8745 1.1 riastrad case " $new_libs " in 8746 1.1 riastrad *" -L$path/$objdir "*) ;; 8747 1.1 riastrad *) 8748 1.1 riastrad case " $compile_deplibs " in 8749 1.1 riastrad *" -L$path/$objdir "*) 8750 1.1 riastrad func_append new_libs " -L$path/$objdir" ;; 8751 1.1 riastrad esac 8752 1.1 riastrad ;; 8753 1.1 riastrad esac 8754 1.1 riastrad done 8755 1.1 riastrad for deplib in $compile_deplibs; do 8756 1.1 riastrad case $deplib in 8757 1.1 riastrad -L*) 8758 1.1 riastrad case " $new_libs " in 8759 1.1 riastrad *" $deplib "*) ;; 8760 1.1 riastrad *) func_append new_libs " $deplib" ;; 8761 1.1 riastrad esac 8762 1.1 riastrad ;; 8763 1.1 riastrad *) func_append new_libs " $deplib" ;; 8764 1.1 riastrad esac 8765 1.1 riastrad done 8766 1.1 riastrad compile_deplibs="$new_libs" 8767 1.1 riastrad 8768 1.1 riastrad 8769 1.1 riastrad func_append compile_command " $compile_deplibs" 8770 1.1 riastrad func_append finalize_command " $finalize_deplibs" 8771 1.1 riastrad 8772 1.1 riastrad if test -n "$rpath$xrpath"; then 8773 1.1 riastrad # If the user specified any rpath flags, then add them. 8774 1.1 riastrad for libdir in $rpath $xrpath; do 8775 1.1 riastrad # This is the magic to use -rpath. 8776 1.1 riastrad case "$finalize_rpath " in 8777 1.1 riastrad *" $libdir "*) ;; 8778 1.1 riastrad *) func_append finalize_rpath " $libdir" ;; 8779 1.1 riastrad esac 8780 1.1 riastrad done 8781 1.1 riastrad fi 8782 1.1 riastrad 8783 1.1 riastrad # Now hardcode the library paths 8784 1.1 riastrad rpath= 8785 1.1 riastrad hardcode_libdirs= 8786 1.1 riastrad for libdir in $compile_rpath $finalize_rpath; do 8787 1.1 riastrad if test -n "$hardcode_libdir_flag_spec"; then 8788 1.1 riastrad if test -n "$hardcode_libdir_separator"; then 8789 1.1 riastrad if test -z "$hardcode_libdirs"; then 8790 1.1 riastrad hardcode_libdirs="$libdir" 8791 1.1 riastrad else 8792 1.1 riastrad # Just accumulate the unique libdirs. 8793 1.1 riastrad case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8794 1.1 riastrad *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8795 1.1 riastrad ;; 8796 1.1 riastrad *) 8797 1.1 riastrad func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8798 1.1 riastrad ;; 8799 1.1 riastrad esac 8800 1.1 riastrad fi 8801 1.1 riastrad else 8802 1.1 riastrad eval flag=\"$hardcode_libdir_flag_spec\" 8803 1.1 riastrad func_append rpath " $flag" 8804 1.1 riastrad fi 8805 1.1 riastrad elif test -n "$runpath_var"; then 8806 1.1 riastrad case "$perm_rpath " in 8807 1.1 riastrad *" $libdir "*) ;; 8808 1.1 riastrad *) func_append perm_rpath " $libdir" ;; 8809 1.1 riastrad esac 8810 1.1 riastrad fi 8811 1.1 riastrad case $host in 8812 1.1 riastrad *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 8813 1.1 riastrad testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 8814 1.1 riastrad case :$dllsearchpath: in 8815 1.1 riastrad *":$libdir:"*) ;; 8816 1.1 riastrad ::) dllsearchpath=$libdir;; 8817 1.1 riastrad *) func_append dllsearchpath ":$libdir";; 8818 1.1 riastrad esac 8819 1.1 riastrad case :$dllsearchpath: in 8820 1.1 riastrad *":$testbindir:"*) ;; 8821 1.1 riastrad ::) dllsearchpath=$testbindir;; 8822 1.1 riastrad *) func_append dllsearchpath ":$testbindir";; 8823 1.1 riastrad esac 8824 1.1 riastrad ;; 8825 1.1 riastrad esac 8826 1.1 riastrad done 8827 1.1 riastrad # Substitute the hardcoded libdirs into the rpath. 8828 1.1 riastrad if test -n "$hardcode_libdir_separator" && 8829 1.1 riastrad test -n "$hardcode_libdirs"; then 8830 1.1 riastrad libdir="$hardcode_libdirs" 8831 1.1 riastrad eval rpath=\" $hardcode_libdir_flag_spec\" 8832 1.1 riastrad fi 8833 1.1 riastrad compile_rpath="$rpath" 8834 1.1 riastrad 8835 1.1 riastrad rpath= 8836 1.1 riastrad hardcode_libdirs= 8837 1.1 riastrad for libdir in $finalize_rpath; do 8838 1.1 riastrad if test -n "$hardcode_libdir_flag_spec"; then 8839 1.1 riastrad if test -n "$hardcode_libdir_separator"; then 8840 1.1 riastrad if test -z "$hardcode_libdirs"; then 8841 1.1 riastrad hardcode_libdirs="$libdir" 8842 1.1 riastrad else 8843 1.1 riastrad # Just accumulate the unique libdirs. 8844 1.1 riastrad case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8845 1.1 riastrad *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8846 1.1 riastrad ;; 8847 1.1 riastrad *) 8848 1.1 riastrad func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8849 1.1 riastrad ;; 8850 1.1 riastrad esac 8851 1.1 riastrad fi 8852 1.1 riastrad else 8853 1.1 riastrad eval flag=\"$hardcode_libdir_flag_spec\" 8854 1.1 riastrad func_append rpath " $flag" 8855 1.1 riastrad fi 8856 1.1 riastrad elif test -n "$runpath_var"; then 8857 1.1 riastrad case "$finalize_perm_rpath " in 8858 1.1 riastrad *" $libdir "*) ;; 8859 1.1 riastrad *) func_append finalize_perm_rpath " $libdir" ;; 8860 1.1 riastrad esac 8861 1.1 riastrad fi 8862 1.1 riastrad done 8863 1.1 riastrad # Substitute the hardcoded libdirs into the rpath. 8864 1.1 riastrad if test -n "$hardcode_libdir_separator" && 8865 1.1 riastrad test -n "$hardcode_libdirs"; then 8866 1.1 riastrad libdir="$hardcode_libdirs" 8867 1.1 riastrad eval rpath=\" $hardcode_libdir_flag_spec\" 8868 1.1 riastrad fi 8869 1.1 riastrad finalize_rpath="$rpath" 8870 1.1 riastrad 8871 1.1 riastrad if test -n "$libobjs" && test "$build_old_libs" = yes; then 8872 1.1 riastrad # Transform all the library objects into standard objects. 8873 1.1 riastrad compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8874 1.1 riastrad finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8875 1.1 riastrad fi 8876 1.1 riastrad 8877 1.1 riastrad func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 8878 1.1 riastrad 8879 1.1 riastrad # template prelinking step 8880 1.1 riastrad if test -n "$prelink_cmds"; then 8881 1.1 riastrad func_execute_cmds "$prelink_cmds" 'exit $?' 8882 1.1 riastrad fi 8883 1.1 riastrad 8884 1.1 riastrad wrappers_required=yes 8885 1.1 riastrad case $host in 8886 1.1 riastrad *cegcc* | *mingw32ce*) 8887 1.1 riastrad # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 8888 1.1 riastrad wrappers_required=no 8889 1.1 riastrad ;; 8890 1.1 riastrad *cygwin* | *mingw* ) 8891 1.1 riastrad if test "$build_libtool_libs" != yes; then 8892 1.1 riastrad wrappers_required=no 8893 1.1 riastrad fi 8894 1.1 riastrad ;; 8895 1.1 riastrad *) 8896 1.1 riastrad if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 8897 1.1 riastrad wrappers_required=no 8898 1.1 riastrad fi 8899 1.1 riastrad ;; 8900 1.1 riastrad esac 8901 1.1 riastrad if test "$wrappers_required" = no; then 8902 1.1 riastrad # Replace the output file specification. 8903 1.1 riastrad compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8904 1.1 riastrad link_command="$compile_command$compile_rpath" 8905 1.1 riastrad 8906 1.1 riastrad # We have no uninstalled library dependencies, so finalize right now. 8907 1.1 riastrad exit_status=0 8908 1.1 riastrad func_show_eval "$link_command" 'exit_status=$?' 8909 1.1 riastrad 8910 1.1 riastrad if test -n "$postlink_cmds"; then 8911 1.1 riastrad func_to_tool_file "$output" 8912 1.1 riastrad postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8913 1.1 riastrad func_execute_cmds "$postlink_cmds" 'exit $?' 8914 1.1 riastrad fi 8915 1.1 riastrad 8916 1.1 riastrad # Delete the generated files. 8917 1.1 riastrad if test -f "$output_objdir/${outputname}S.${objext}"; then 8918 1.1 riastrad func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 8919 1.1 riastrad fi 8920 1.1 riastrad 8921 1.1 riastrad exit $exit_status 8922 1.1 riastrad fi 8923 1.1 riastrad 8924 1.1 riastrad if test -n "$compile_shlibpath$finalize_shlibpath"; then 8925 1.1 riastrad compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 8926 1.1 riastrad fi 8927 1.1 riastrad if test -n "$finalize_shlibpath"; then 8928 1.1 riastrad finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 8929 1.1 riastrad fi 8930 1.1 riastrad 8931 1.1 riastrad compile_var= 8932 1.1 riastrad finalize_var= 8933 1.1 riastrad if test -n "$runpath_var"; then 8934 1.1 riastrad if test -n "$perm_rpath"; then 8935 1.1 riastrad # We should set the runpath_var. 8936 1.1 riastrad rpath= 8937 1.1 riastrad for dir in $perm_rpath; do 8938 1.1 riastrad func_append rpath "$dir:" 8939 1.1 riastrad done 8940 1.1 riastrad compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 8941 1.1 riastrad fi 8942 1.1 riastrad if test -n "$finalize_perm_rpath"; then 8943 1.1 riastrad # We should set the runpath_var. 8944 1.1 riastrad rpath= 8945 1.1 riastrad for dir in $finalize_perm_rpath; do 8946 1.1 riastrad func_append rpath "$dir:" 8947 1.1 riastrad done 8948 1.1 riastrad finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 8949 1.1 riastrad fi 8950 1.1 riastrad fi 8951 1.1 riastrad 8952 1.1 riastrad if test "$no_install" = yes; then 8953 1.1 riastrad # We don't need to create a wrapper script. 8954 1.1 riastrad link_command="$compile_var$compile_command$compile_rpath" 8955 1.1 riastrad # Replace the output file specification. 8956 1.1 riastrad link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8957 1.1 riastrad # Delete the old output file. 8958 1.1 riastrad $opt_dry_run || $RM $output 8959 1.1 riastrad # Link the executable and exit 8960 1.1 riastrad func_show_eval "$link_command" 'exit $?' 8961 1.1 riastrad 8962 1.1 riastrad if test -n "$postlink_cmds"; then 8963 1.1 riastrad func_to_tool_file "$output" 8964 1.1 riastrad postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8965 1.1 riastrad func_execute_cmds "$postlink_cmds" 'exit $?' 8966 1.1 riastrad fi 8967 1.1 riastrad 8968 1.1 riastrad exit $EXIT_SUCCESS 8969 1.1 riastrad fi 8970 1.1 riastrad 8971 1.1 riastrad if test "$hardcode_action" = relink; then 8972 1.1 riastrad # Fast installation is not supported 8973 1.1 riastrad link_command="$compile_var$compile_command$compile_rpath" 8974 1.1 riastrad relink_command="$finalize_var$finalize_command$finalize_rpath" 8975 1.1 riastrad 8976 1.1 riastrad func_warning "this platform does not like uninstalled shared libraries" 8977 1.1 riastrad func_warning "\`$output' will be relinked during installation" 8978 1.1 riastrad else 8979 1.1 riastrad if test "$fast_install" != no; then 8980 1.1 riastrad link_command="$finalize_var$compile_command$finalize_rpath" 8981 1.1 riastrad if test "$fast_install" = yes; then 8982 1.1 riastrad relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 8983 1.1 riastrad else 8984 1.1 riastrad # fast_install is set to needless 8985 1.1 riastrad relink_command= 8986 1.1 riastrad fi 8987 1.1 riastrad else 8988 1.1 riastrad link_command="$compile_var$compile_command$compile_rpath" 8989 1.1 riastrad relink_command="$finalize_var$finalize_command$finalize_rpath" 8990 1.1 riastrad fi 8991 1.1 riastrad fi 8992 1.1 riastrad 8993 1.1 riastrad # Replace the output file specification. 8994 1.1 riastrad link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 8995 1.1 riastrad 8996 1.1 riastrad # Delete the old output files. 8997 1.1 riastrad $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 8998 1.1 riastrad 8999 1.1 riastrad func_show_eval "$link_command" 'exit $?' 9000 1.1 riastrad 9001 1.1 riastrad if test -n "$postlink_cmds"; then 9002 1.1 riastrad func_to_tool_file "$output_objdir/$outputname" 9003 1.1 riastrad postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 9004 1.1 riastrad func_execute_cmds "$postlink_cmds" 'exit $?' 9005 1.1 riastrad fi 9006 1.1 riastrad 9007 1.1 riastrad # Now create the wrapper script. 9008 1.1 riastrad func_verbose "creating $output" 9009 1.1 riastrad 9010 1.1 riastrad # Quote the relink command for shipping. 9011 1.1 riastrad if test -n "$relink_command"; then 9012 1.1 riastrad # Preserve any variables that may affect compiler behavior 9013 1.1 riastrad for var in $variables_saved_for_relink; do 9014 1.1 riastrad if eval test -z \"\${$var+set}\"; then 9015 1.1 riastrad relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9016 1.1 riastrad elif eval var_value=\$$var; test -z "$var_value"; then 9017 1.1 riastrad relink_command="$var=; export $var; $relink_command" 9018 1.1 riastrad else 9019 1.1 riastrad func_quote_for_eval "$var_value" 9020 1.1 riastrad relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9021 1.1 riastrad fi 9022 1.1 riastrad done 9023 1.1 riastrad relink_command="(cd `pwd`; $relink_command)" 9024 1.1 riastrad relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9025 1.1 riastrad fi 9026 1.1 riastrad 9027 1.1 riastrad # Only actually do things if not in dry run mode. 9028 1.1 riastrad $opt_dry_run || { 9029 1.1 riastrad # win32 will think the script is a binary if it has 9030 1.1 riastrad # a .exe suffix, so we strip it off here. 9031 1.1 riastrad case $output in 9032 1.1 riastrad *.exe) func_stripname '' '.exe' "$output" 9033 1.1 riastrad output=$func_stripname_result ;; 9034 1.1 riastrad esac 9035 1.1 riastrad # test for cygwin because mv fails w/o .exe extensions 9036 1.1 riastrad case $host in 9037 1.1 riastrad *cygwin*) 9038 1.1 riastrad exeext=.exe 9039 1.1 riastrad func_stripname '' '.exe' "$outputname" 9040 1.1 riastrad outputname=$func_stripname_result ;; 9041 1.1 riastrad *) exeext= ;; 9042 1.1 riastrad esac 9043 1.1 riastrad case $host in 9044 1.1 riastrad *cygwin* | *mingw* ) 9045 1.1 riastrad func_dirname_and_basename "$output" "" "." 9046 1.1 riastrad output_name=$func_basename_result 9047 1.1 riastrad output_path=$func_dirname_result 9048 1.1 riastrad cwrappersource="$output_path/$objdir/lt-$output_name.c" 9049 1.1 riastrad cwrapper="$output_path/$output_name.exe" 9050 1.1 riastrad $RM $cwrappersource $cwrapper 9051 1.1 riastrad trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 9052 1.1 riastrad 9053 1.1 riastrad func_emit_cwrapperexe_src > $cwrappersource 9054 1.1 riastrad 9055 1.1 riastrad # The wrapper executable is built using the $host compiler, 9056 1.1 riastrad # because it contains $host paths and files. If cross- 9057 1.1 riastrad # compiling, it, like the target executable, must be 9058 1.1 riastrad # executed on the $host or under an emulation environment. 9059 1.1 riastrad $opt_dry_run || { 9060 1.1 riastrad $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 9061 1.1 riastrad $STRIP $cwrapper 9062 1.1 riastrad } 9063 1.1 riastrad 9064 1.1 riastrad # Now, create the wrapper script for func_source use: 9065 1.1 riastrad func_ltwrapper_scriptname $cwrapper 9066 1.1 riastrad $RM $func_ltwrapper_scriptname_result 9067 1.1 riastrad trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 9068 1.1 riastrad $opt_dry_run || { 9069 1.1 riastrad # note: this script will not be executed, so do not chmod. 9070 1.1 riastrad if test "x$build" = "x$host" ; then 9071 1.1 riastrad $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 9072 1.1 riastrad else 9073 1.1 riastrad func_emit_wrapper no > $func_ltwrapper_scriptname_result 9074 1.1 riastrad fi 9075 1.1 riastrad } 9076 1.1 riastrad ;; 9077 1.1 riastrad * ) 9078 1.1 riastrad $RM $output 9079 1.1 riastrad trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 9080 1.1 riastrad 9081 1.1 riastrad func_emit_wrapper no > $output 9082 1.1 riastrad chmod +x $output 9083 1.1 riastrad ;; 9084 1.1 riastrad esac 9085 1.1 riastrad } 9086 1.1 riastrad exit $EXIT_SUCCESS 9087 1.1 riastrad ;; 9088 1.1 riastrad esac 9089 1.1 riastrad 9090 1.1 riastrad # See if we need to build an old-fashioned archive. 9091 1.1 riastrad for oldlib in $oldlibs; do 9092 1.1 riastrad 9093 1.1 riastrad if test "$build_libtool_libs" = convenience; then 9094 1.1 riastrad oldobjs="$libobjs_save $symfileobj" 9095 1.1 riastrad addlibs="$convenience" 9096 1.1 riastrad build_libtool_libs=no 9097 1.1 riastrad else 9098 1.1 riastrad if test "$build_libtool_libs" = module; then 9099 1.1 riastrad oldobjs="$libobjs_save" 9100 1.1 riastrad build_libtool_libs=no 9101 1.1 riastrad else 9102 1.1 riastrad oldobjs="$old_deplibs $non_pic_objects" 9103 1.1 riastrad if test "$preload" = yes && test -f "$symfileobj"; then 9104 1.1 riastrad func_append oldobjs " $symfileobj" 9105 1.1 riastrad fi 9106 1.1 riastrad fi 9107 1.1 riastrad addlibs="$old_convenience" 9108 1.1 riastrad fi 9109 1.1 riastrad 9110 1.1 riastrad if test -n "$addlibs"; then 9111 1.1 riastrad gentop="$output_objdir/${outputname}x" 9112 1.1 riastrad func_append generated " $gentop" 9113 1.1 riastrad 9114 1.1 riastrad func_extract_archives $gentop $addlibs 9115 1.1 riastrad func_append oldobjs " $func_extract_archives_result" 9116 1.1 riastrad fi 9117 1.1 riastrad 9118 1.1 riastrad # Do each command in the archive commands. 9119 1.1 riastrad if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 9120 1.1 riastrad cmds=$old_archive_from_new_cmds 9121 1.1 riastrad else 9122 1.1 riastrad 9123 1.1 riastrad # Add any objects from preloaded convenience libraries 9124 1.1 riastrad if test -n "$dlprefiles"; then 9125 1.1 riastrad gentop="$output_objdir/${outputname}x" 9126 1.1 riastrad func_append generated " $gentop" 9127 1.1 riastrad 9128 1.1 riastrad func_extract_archives $gentop $dlprefiles 9129 1.1 riastrad func_append oldobjs " $func_extract_archives_result" 9130 1.1 riastrad fi 9131 1.1 riastrad 9132 1.1 riastrad # POSIX demands no paths to be encoded in archives. We have 9133 1.1 riastrad # to avoid creating archives with duplicate basenames if we 9134 1.1 riastrad # might have to extract them afterwards, e.g., when creating a 9135 1.1 riastrad # static archive out of a convenience library, or when linking 9136 1.1 riastrad # the entirety of a libtool archive into another (currently 9137 1.1 riastrad # not supported by libtool). 9138 1.1 riastrad if (for obj in $oldobjs 9139 1.1 riastrad do 9140 1.1 riastrad func_basename "$obj" 9141 1.1 riastrad $ECHO "$func_basename_result" 9142 1.1 riastrad done | sort | sort -uc >/dev/null 2>&1); then 9143 1.1 riastrad : 9144 1.1 riastrad else 9145 1.1 riastrad echo "copying selected object files to avoid basename conflicts..." 9146 1.1 riastrad gentop="$output_objdir/${outputname}x" 9147 1.1 riastrad func_append generated " $gentop" 9148 1.1 riastrad func_mkdir_p "$gentop" 9149 1.1 riastrad save_oldobjs=$oldobjs 9150 1.1 riastrad oldobjs= 9151 1.1 riastrad counter=1 9152 1.1 riastrad for obj in $save_oldobjs 9153 1.1 riastrad do 9154 1.1 riastrad func_basename "$obj" 9155 1.1 riastrad objbase="$func_basename_result" 9156 1.1 riastrad case " $oldobjs " in 9157 1.1 riastrad " ") oldobjs=$obj ;; 9158 1.1 riastrad *[\ /]"$objbase "*) 9159 1.1 riastrad while :; do 9160 1.1 riastrad # Make sure we don't pick an alternate name that also 9161 1.1 riastrad # overlaps. 9162 1.1 riastrad newobj=lt$counter-$objbase 9163 1.1 riastrad func_arith $counter + 1 9164 1.1 riastrad counter=$func_arith_result 9165 1.1 riastrad case " $oldobjs " in 9166 1.1 riastrad *[\ /]"$newobj "*) ;; 9167 1.1 riastrad *) if test ! -f "$gentop/$newobj"; then break; fi ;; 9168 1.1 riastrad esac 9169 1.1 riastrad done 9170 1.1 riastrad func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 9171 1.1 riastrad func_append oldobjs " $gentop/$newobj" 9172 1.1 riastrad ;; 9173 1.1 riastrad *) func_append oldobjs " $obj" ;; 9174 1.1 riastrad esac 9175 1.1 riastrad done 9176 1.1 riastrad fi 9177 1.1 riastrad func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 9178 1.1 riastrad tool_oldlib=$func_to_tool_file_result 9179 1.1 riastrad eval cmds=\"$old_archive_cmds\" 9180 1.1 riastrad 9181 1.1 riastrad func_len " $cmds" 9182 1.1 riastrad len=$func_len_result 9183 1.1 riastrad if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 9184 1.1 riastrad cmds=$old_archive_cmds 9185 1.1 riastrad elif test -n "$archiver_list_spec"; then 9186 1.1 riastrad func_verbose "using command file archive linking..." 9187 1.1 riastrad for obj in $oldobjs 9188 1.1 riastrad do 9189 1.1 riastrad func_to_tool_file "$obj" 9190 1.1 riastrad $ECHO "$func_to_tool_file_result" 9191 1.1 riastrad done > $output_objdir/$libname.libcmd 9192 1.1 riastrad func_to_tool_file "$output_objdir/$libname.libcmd" 9193 1.1 riastrad oldobjs=" $archiver_list_spec$func_to_tool_file_result" 9194 1.1 riastrad cmds=$old_archive_cmds 9195 1.1 riastrad else 9196 1.1 riastrad # the command line is too long to link in one step, link in parts 9197 1.1 riastrad func_verbose "using piecewise archive linking..." 9198 1.1 riastrad save_RANLIB=$RANLIB 9199 1.1 riastrad RANLIB=: 9200 1.1 riastrad objlist= 9201 1.1 riastrad concat_cmds= 9202 1.1 riastrad save_oldobjs=$oldobjs 9203 1.1 riastrad oldobjs= 9204 1.1 riastrad # Is there a better way of finding the last object in the list? 9205 1.1 riastrad for obj in $save_oldobjs 9206 1.1 riastrad do 9207 1.1 riastrad last_oldobj=$obj 9208 1.1 riastrad done 9209 1.1 riastrad eval test_cmds=\"$old_archive_cmds\" 9210 1.1 riastrad func_len " $test_cmds" 9211 1.1 riastrad len0=$func_len_result 9212 1.1 riastrad len=$len0 9213 1.1 riastrad for obj in $save_oldobjs 9214 1.1 riastrad do 9215 1.1 riastrad func_len " $obj" 9216 1.1 riastrad func_arith $len + $func_len_result 9217 1.1 riastrad len=$func_arith_result 9218 1.1 riastrad func_append objlist " $obj" 9219 1.1 riastrad if test "$len" -lt "$max_cmd_len"; then 9220 1.1 riastrad : 9221 1.1 riastrad else 9222 1.1 riastrad # the above command should be used before it gets too long 9223 1.1 riastrad oldobjs=$objlist 9224 1.1 riastrad if test "$obj" = "$last_oldobj" ; then 9225 1.1 riastrad RANLIB=$save_RANLIB 9226 1.1 riastrad fi 9227 1.1 riastrad test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 9228 1.1 riastrad eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 9229 1.1 riastrad objlist= 9230 1.1 riastrad len=$len0 9231 1.1 riastrad fi 9232 1.1 riastrad done 9233 1.1 riastrad RANLIB=$save_RANLIB 9234 1.1 riastrad oldobjs=$objlist 9235 1.1 riastrad if test "X$oldobjs" = "X" ; then 9236 1.1 riastrad eval cmds=\"\$concat_cmds\" 9237 1.1 riastrad else 9238 1.1 riastrad eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 9239 1.1 riastrad fi 9240 1.1 riastrad fi 9241 1.1 riastrad fi 9242 1.1 riastrad func_execute_cmds "$cmds" 'exit $?' 9243 1.1 riastrad done 9244 1.1 riastrad 9245 1.1 riastrad test -n "$generated" && \ 9246 1.1 riastrad func_show_eval "${RM}r$generated" 9247 1.1 riastrad 9248 1.1 riastrad # Now create the libtool archive. 9249 1.1 riastrad case $output in 9250 1.1 riastrad *.la) 9251 1.1 riastrad old_library= 9252 1.1 riastrad test "$build_old_libs" = yes && old_library="$libname.$libext" 9253 1.1 riastrad func_verbose "creating $output" 9254 1.1 riastrad 9255 1.1 riastrad # Preserve any variables that may affect compiler behavior 9256 1.1 riastrad for var in $variables_saved_for_relink; do 9257 1.1 riastrad if eval test -z \"\${$var+set}\"; then 9258 1.1 riastrad relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9259 1.1 riastrad elif eval var_value=\$$var; test -z "$var_value"; then 9260 1.1 riastrad relink_command="$var=; export $var; $relink_command" 9261 1.1 riastrad else 9262 1.1 riastrad func_quote_for_eval "$var_value" 9263 1.1 riastrad relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9264 1.1 riastrad fi 9265 1.1 riastrad done 9266 1.1 riastrad # Quote the link command for shipping. 9267 1.1 riastrad relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 9268 1.1 riastrad relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9269 1.1 riastrad if test "$hardcode_automatic" = yes ; then 9270 1.1 riastrad relink_command= 9271 1.1 riastrad fi 9272 1.1 riastrad 9273 1.1 riastrad # Only create the output if not a dry run. 9274 1.1 riastrad $opt_dry_run || { 9275 1.1 riastrad for installed in no yes; do 9276 1.1 riastrad if test "$installed" = yes; then 9277 1.1 riastrad if test -z "$install_libdir"; then 9278 1.1 riastrad break 9279 1.1 riastrad fi 9280 1.1 riastrad output="$output_objdir/$outputname"i 9281 1.1 riastrad # Replace all uninstalled libtool libraries with the installed ones 9282 1.1 riastrad newdependency_libs= 9283 1.1 riastrad for deplib in $dependency_libs; do 9284 1.1 riastrad case $deplib in 9285 1.1 riastrad *.la) 9286 1.1 riastrad func_basename "$deplib" 9287 1.1 riastrad name="$func_basename_result" 9288 1.1 riastrad func_resolve_sysroot "$deplib" 9289 1.1 riastrad eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 9290 1.1 riastrad test -z "$libdir" && \ 9291 1.1 riastrad func_fatal_error "\`$deplib' is not a valid libtool archive" 9292 1.1 riastrad func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 9293 1.1 riastrad ;; 9294 1.1 riastrad -L*) 9295 1.1 riastrad func_stripname -L '' "$deplib" 9296 1.1 riastrad func_replace_sysroot "$func_stripname_result" 9297 1.1 riastrad func_append newdependency_libs " -L$func_replace_sysroot_result" 9298 1.1 riastrad ;; 9299 1.1 riastrad -R*) 9300 1.1 riastrad func_stripname -R '' "$deplib" 9301 1.1 riastrad func_replace_sysroot "$func_stripname_result" 9302 1.1 riastrad func_append newdependency_libs " -R$func_replace_sysroot_result" 9303 1.1 riastrad ;; 9304 1.1 riastrad *) func_append newdependency_libs " $deplib" ;; 9305 1.1 riastrad esac 9306 1.1 riastrad done 9307 1.1 riastrad dependency_libs="$newdependency_libs" 9308 1.1 riastrad newdlfiles= 9309 1.1 riastrad 9310 1.1 riastrad for lib in $dlfiles; do 9311 1.1 riastrad case $lib in 9312 1.1 riastrad *.la) 9313 1.1 riastrad func_basename "$lib" 9314 1.1 riastrad name="$func_basename_result" 9315 1.1 riastrad eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9316 1.1 riastrad test -z "$libdir" && \ 9317 1.1 riastrad func_fatal_error "\`$lib' is not a valid libtool archive" 9318 1.1 riastrad func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 9319 1.1 riastrad ;; 9320 1.1 riastrad *) func_append newdlfiles " $lib" ;; 9321 1.1 riastrad esac 9322 1.1 riastrad done 9323 1.1 riastrad dlfiles="$newdlfiles" 9324 1.1 riastrad newdlprefiles= 9325 1.1 riastrad for lib in $dlprefiles; do 9326 1.1 riastrad case $lib in 9327 1.1 riastrad *.la) 9328 1.1 riastrad # Only pass preopened files to the pseudo-archive (for 9329 1.1 riastrad # eventual linking with the app. that links it) if we 9330 1.1 riastrad # didn't already link the preopened objects directly into 9331 1.1 riastrad # the library: 9332 1.1 riastrad func_basename "$lib" 9333 1.1 riastrad name="$func_basename_result" 9334 1.1 riastrad eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9335 1.1 riastrad test -z "$libdir" && \ 9336 1.1 riastrad func_fatal_error "\`$lib' is not a valid libtool archive" 9337 1.1 riastrad func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 9338 1.1 riastrad ;; 9339 1.1 riastrad esac 9340 1.1 riastrad done 9341 1.1 riastrad dlprefiles="$newdlprefiles" 9342 1.1 riastrad else 9343 1.1 riastrad newdlfiles= 9344 1.1 riastrad for lib in $dlfiles; do 9345 1.1 riastrad case $lib in 9346 1.1 riastrad [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9347 1.1 riastrad *) abs=`pwd`"/$lib" ;; 9348 1.1 riastrad esac 9349 1.1 riastrad func_append newdlfiles " $abs" 9350 1.1 riastrad done 9351 1.1 riastrad dlfiles="$newdlfiles" 9352 1.1 riastrad newdlprefiles= 9353 1.1 riastrad for lib in $dlprefiles; do 9354 1.1 riastrad case $lib in 9355 1.1 riastrad [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9356 1.1 riastrad *) abs=`pwd`"/$lib" ;; 9357 1.1 riastrad esac 9358 1.1 riastrad func_append newdlprefiles " $abs" 9359 1.1 riastrad done 9360 1.1 riastrad dlprefiles="$newdlprefiles" 9361 1.1 riastrad fi 9362 1.1 riastrad $RM $output 9363 1.1 riastrad # place dlname in correct position for cygwin 9364 1.1 riastrad # In fact, it would be nice if we could use this code for all target 9365 1.1 riastrad # systems that can't hard-code library paths into their executables 9366 1.1 riastrad # and that have no shared library path variable independent of PATH, 9367 1.1 riastrad # but it turns out we can't easily determine that from inspecting 9368 1.1 riastrad # libtool variables, so we have to hard-code the OSs to which it 9369 1.1 riastrad # applies here; at the moment, that means platforms that use the PE 9370 1.1 riastrad # object format with DLL files. See the long comment at the top of 9371 1.1 riastrad # tests/bindir.at for full details. 9372 1.1 riastrad tdlname=$dlname 9373 1.1 riastrad case $host,$output,$installed,$module,$dlname in 9374 1.1 riastrad *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 9375 1.1 riastrad # If a -bindir argument was supplied, place the dll there. 9376 1.1 riastrad if test "x$bindir" != x ; 9377 1.1 riastrad then 9378 1.1 riastrad func_relative_path "$install_libdir" "$bindir" 9379 1.1 riastrad tdlname=$func_relative_path_result$dlname 9380 1.1 riastrad else 9381 1.1 riastrad # Otherwise fall back on heuristic. 9382 1.1 riastrad tdlname=../bin/$dlname 9383 1.1 riastrad fi 9384 1.1 riastrad ;; 9385 1.1 riastrad esac 9386 1.1 riastrad $ECHO > $output "\ 9387 1.1 riastrad # $outputname - a libtool library file 9388 1.1 riastrad # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 9389 1.1 riastrad # 9390 1.1 riastrad # Please DO NOT delete this file! 9391 1.1 riastrad # It is necessary for linking the library. 9392 1.1 riastrad 9393 1.1 riastrad # The name that we can dlopen(3). 9394 1.1 riastrad dlname='$tdlname' 9395 1.1 riastrad 9396 1.1 riastrad # Names of this library. 9397 1.1 riastrad library_names='$library_names' 9398 1.1 riastrad 9399 1.1 riastrad # The name of the static archive. 9400 1.1 riastrad old_library='$old_library' 9401 1.1 riastrad 9402 1.1 riastrad # Linker flags that can not go in dependency_libs. 9403 1.1 riastrad inherited_linker_flags='$new_inherited_linker_flags' 9404 1.1 riastrad 9405 1.1 riastrad # Libraries that this one depends upon. 9406 1.1 riastrad dependency_libs='$dependency_libs' 9407 1.1 riastrad 9408 1.1 riastrad # Names of additional weak libraries provided by this library 9409 1.1 riastrad weak_library_names='$weak_libs' 9410 1.1 riastrad 9411 1.1 riastrad # Version information for $libname. 9412 1.1 riastrad current=$current 9413 1.1 riastrad age=$age 9414 1.1 riastrad revision=$revision 9415 1.1 riastrad 9416 1.1 riastrad # Is this an already installed library? 9417 1.1 riastrad installed=$installed 9418 1.1 riastrad 9419 1.1 riastrad # Should we warn about portability when linking against -modules? 9420 1.1 riastrad shouldnotlink=$module 9421 1.1 riastrad 9422 1.1 riastrad # Files to dlopen/dlpreopen 9423 1.1 riastrad dlopen='$dlfiles' 9424 1.1 riastrad dlpreopen='$dlprefiles' 9425 1.1 riastrad 9426 1.1 riastrad # Directory that this library needs to be installed in: 9427 1.1 riastrad libdir='$install_libdir'" 9428 1.1 riastrad if test "$installed" = no && test "$need_relink" = yes; then 9429 1.1 riastrad $ECHO >> $output "\ 9430 1.1 riastrad relink_command=\"$relink_command\"" 9431 1.1 riastrad fi 9432 1.1 riastrad done 9433 1.1 riastrad } 9434 1.1 riastrad 9435 1.1 riastrad # Do a symbolic link so that the libtool archive can be found in 9436 1.1 riastrad # LD_LIBRARY_PATH before the program is installed. 9437 1.1 riastrad func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 9438 1.1 riastrad ;; 9439 1.1 riastrad esac 9440 1.1 riastrad exit $EXIT_SUCCESS 9441 1.1 riastrad } 9442 1.1 riastrad 9443 1.1 riastrad { test "$opt_mode" = link || test "$opt_mode" = relink; } && 9444 1.1 riastrad func_mode_link ${1+"$@"} 9445 1.1 riastrad 9446 1.1 riastrad 9447 1.1 riastrad # func_mode_uninstall arg... 9448 1.1 riastrad func_mode_uninstall () 9449 1.1 riastrad { 9450 1.1 riastrad $opt_debug 9451 1.1 riastrad RM="$nonopt" 9452 1.1 riastrad files= 9453 1.1 riastrad rmforce= 9454 1.1 riastrad exit_status=0 9455 1.1 riastrad 9456 1.1 riastrad # This variable tells wrapper scripts just to set variables rather 9457 1.1 riastrad # than running their programs. 9458 1.1 riastrad libtool_install_magic="$magic" 9459 1.1 riastrad 9460 1.1 riastrad for arg 9461 1.1 riastrad do 9462 1.1 riastrad case $arg in 9463 1.1 riastrad -f) func_append RM " $arg"; rmforce=yes ;; 9464 1.1 riastrad -*) func_append RM " $arg" ;; 9465 1.1 riastrad *) func_append files " $arg" ;; 9466 1.1 riastrad esac 9467 1.1 riastrad done 9468 1.1 riastrad 9469 1.1 riastrad test -z "$RM" && \ 9470 1.1 riastrad func_fatal_help "you must specify an RM program" 9471 1.1 riastrad 9472 1.1 riastrad rmdirs= 9473 1.1 riastrad 9474 1.1 riastrad for file in $files; do 9475 1.1 riastrad func_dirname "$file" "" "." 9476 1.1 riastrad dir="$func_dirname_result" 9477 1.1 riastrad if test "X$dir" = X.; then 9478 1.1 riastrad odir="$objdir" 9479 1.1 riastrad else 9480 1.1 riastrad odir="$dir/$objdir" 9481 1.1 riastrad fi 9482 1.1 riastrad func_basename "$file" 9483 1.1 riastrad name="$func_basename_result" 9484 1.1 riastrad test "$opt_mode" = uninstall && odir="$dir" 9485 1.1 riastrad 9486 1.1 riastrad # Remember odir for removal later, being careful to avoid duplicates 9487 1.1 riastrad if test "$opt_mode" = clean; then 9488 1.1 riastrad case " $rmdirs " in 9489 1.1 riastrad *" $odir "*) ;; 9490 1.1 riastrad *) func_append rmdirs " $odir" ;; 9491 1.1 riastrad esac 9492 1.1 riastrad fi 9493 1.1 riastrad 9494 1.1 riastrad # Don't error if the file doesn't exist and rm -f was used. 9495 1.1 riastrad if { test -L "$file"; } >/dev/null 2>&1 || 9496 1.1 riastrad { test -h "$file"; } >/dev/null 2>&1 || 9497 1.1 riastrad test -f "$file"; then 9498 1.1 riastrad : 9499 1.1 riastrad elif test -d "$file"; then 9500 1.1 riastrad exit_status=1 9501 1.1 riastrad continue 9502 1.1 riastrad elif test "$rmforce" = yes; then 9503 1.1 riastrad continue 9504 1.1 riastrad fi 9505 1.1 riastrad 9506 1.1 riastrad rmfiles="$file" 9507 1.1 riastrad 9508 1.1 riastrad case $name in 9509 1.1 riastrad *.la) 9510 1.1 riastrad # Possibly a libtool archive, so verify it. 9511 1.1 riastrad if func_lalib_p "$file"; then 9512 1.1 riastrad func_source $dir/$name 9513 1.1 riastrad 9514 1.1 riastrad # Delete the libtool libraries and symlinks. 9515 1.1 riastrad for n in $library_names; do 9516 1.1 riastrad func_append rmfiles " $odir/$n" 9517 1.1 riastrad done 9518 1.1 riastrad test -n "$old_library" && func_append rmfiles " $odir/$old_library" 9519 1.1 riastrad 9520 1.1 riastrad case "$opt_mode" in 9521 1.1 riastrad clean) 9522 1.1 riastrad case " $library_names " in 9523 1.1 riastrad *" $dlname "*) ;; 9524 1.1 riastrad *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 9525 1.1 riastrad esac 9526 1.1 riastrad test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 9527 1.1 riastrad ;; 9528 1.1 riastrad uninstall) 9529 1.1 riastrad if test -n "$library_names"; then 9530 1.1 riastrad # Do each command in the postuninstall commands. 9531 1.1 riastrad func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9532 1.1 riastrad fi 9533 1.1 riastrad 9534 1.1 riastrad if test -n "$old_library"; then 9535 1.1 riastrad # Do each command in the old_postuninstall commands. 9536 1.1 riastrad func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9537 1.1 riastrad fi 9538 1.1 riastrad # FIXME: should reinstall the best remaining shared library. 9539 1.1 riastrad ;; 9540 1.1 riastrad esac 9541 1.1 riastrad fi 9542 1.1 riastrad ;; 9543 1.1 riastrad 9544 1.1 riastrad *.lo) 9545 1.1 riastrad # Possibly a libtool object, so verify it. 9546 1.1 riastrad if func_lalib_p "$file"; then 9547 1.1 riastrad 9548 1.1 riastrad # Read the .lo file 9549 1.1 riastrad func_source $dir/$name 9550 1.1 riastrad 9551 1.1 riastrad # Add PIC object to the list of files to remove. 9552 1.1 riastrad if test -n "$pic_object" && 9553 1.1 riastrad test "$pic_object" != none; then 9554 1.1 riastrad func_append rmfiles " $dir/$pic_object" 9555 1.1 riastrad fi 9556 1.1 riastrad 9557 1.1 riastrad # Add non-PIC object to the list of files to remove. 9558 1.1 riastrad if test -n "$non_pic_object" && 9559 1.1 riastrad test "$non_pic_object" != none; then 9560 1.1 riastrad func_append rmfiles " $dir/$non_pic_object" 9561 1.1 riastrad fi 9562 1.1 riastrad fi 9563 1.1 riastrad ;; 9564 1.1 riastrad 9565 1.1 riastrad *) 9566 1.1 riastrad if test "$opt_mode" = clean ; then 9567 1.1 riastrad noexename=$name 9568 1.1 riastrad case $file in 9569 1.1 riastrad *.exe) 9570 1.1 riastrad func_stripname '' '.exe' "$file" 9571 1.1 riastrad file=$func_stripname_result 9572 1.1 riastrad func_stripname '' '.exe' "$name" 9573 1.1 riastrad noexename=$func_stripname_result 9574 1.1 riastrad # $file with .exe has already been added to rmfiles, 9575 1.1 riastrad # add $file without .exe 9576 1.1 riastrad func_append rmfiles " $file" 9577 1.1 riastrad ;; 9578 1.1 riastrad esac 9579 1.1 riastrad # Do a test to see if this is a libtool program. 9580 1.1 riastrad if func_ltwrapper_p "$file"; then 9581 1.1 riastrad if func_ltwrapper_executable_p "$file"; then 9582 1.1 riastrad func_ltwrapper_scriptname "$file" 9583 1.1 riastrad relink_command= 9584 1.1 riastrad func_source $func_ltwrapper_scriptname_result 9585 1.1 riastrad func_append rmfiles " $func_ltwrapper_scriptname_result" 9586 1.1 riastrad else 9587 1.1 riastrad relink_command= 9588 1.1 riastrad func_source $dir/$noexename 9589 1.1 riastrad fi 9590 1.1 riastrad 9591 1.1 riastrad # note $name still contains .exe if it was in $file originally 9592 1.1 riastrad # as does the version of $file that was added into $rmfiles 9593 1.1 riastrad func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 9594 1.1 riastrad if test "$fast_install" = yes && test -n "$relink_command"; then 9595 1.1 riastrad func_append rmfiles " $odir/lt-$name" 9596 1.1 riastrad fi 9597 1.1 riastrad if test "X$noexename" != "X$name" ; then 9598 1.1 riastrad func_append rmfiles " $odir/lt-${noexename}.c" 9599 1.1 riastrad fi 9600 1.1 riastrad fi 9601 1.1 riastrad fi 9602 1.1 riastrad ;; 9603 1.1 riastrad esac 9604 1.1 riastrad func_show_eval "$RM $rmfiles" 'exit_status=1' 9605 1.1 riastrad done 9606 1.1 riastrad 9607 1.1 riastrad # Try to remove the ${objdir}s in the directories where we deleted files 9608 1.1 riastrad for dir in $rmdirs; do 9609 1.1 riastrad if test -d "$dir"; then 9610 1.1 riastrad func_show_eval "rmdir $dir >/dev/null 2>&1" 9611 1.1 riastrad fi 9612 1.1 riastrad done 9613 1.1 riastrad 9614 1.1 riastrad exit $exit_status 9615 1.1 riastrad } 9616 1.1 riastrad 9617 1.1 riastrad { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 9618 1.1 riastrad func_mode_uninstall ${1+"$@"} 9619 1.1 riastrad 9620 1.1 riastrad test -z "$opt_mode" && { 9621 1.1 riastrad help="$generic_help" 9622 1.1 riastrad func_fatal_help "you must specify a MODE" 9623 1.1 riastrad } 9624 1.1 riastrad 9625 1.1 riastrad test -z "$exec_cmd" && \ 9626 1.1 riastrad func_fatal_help "invalid operation mode \`$opt_mode'" 9627 1.1 riastrad 9628 1.1 riastrad if test -n "$exec_cmd"; then 9629 1.1 riastrad eval exec "$exec_cmd" 9630 1.1 riastrad exit $EXIT_FAILURE 9631 1.1 riastrad fi 9632 1.1 riastrad 9633 1.1 riastrad exit $exit_status 9634 1.1 riastrad 9635 1.1 riastrad 9636 1.1 riastrad # The TAGs below are defined such that we never get into a situation 9637 1.1 riastrad # in which we disable both kinds of libraries. Given conflicting 9638 1.1 riastrad # choices, we go for a static library, that is the most portable, 9639 1.1 riastrad # since we can't tell whether shared libraries were disabled because 9640 1.1 riastrad # the user asked for that or because the platform doesn't support 9641 1.1 riastrad # them. This is particularly important on AIX, because we don't 9642 1.1 riastrad # support having both static and shared libraries enabled at the same 9643 1.1 riastrad # time on that platform, so we default to a shared-only configuration. 9644 1.1 riastrad # If a disable-shared tag is given, we'll fallback to a static-only 9645 1.1 riastrad # configuration. But we'll never go from static-only to shared-only. 9646 1.1 riastrad 9647 1.1 riastrad # ### BEGIN LIBTOOL TAG CONFIG: disable-shared 9648 1.1 riastrad build_libtool_libs=no 9649 1.1 riastrad build_old_libs=yes 9650 1.1 riastrad # ### END LIBTOOL TAG CONFIG: disable-shared 9651 1.1 riastrad 9652 1.1 riastrad # ### BEGIN LIBTOOL TAG CONFIG: disable-static 9653 1.1 riastrad build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 9654 1.1 riastrad # ### END LIBTOOL TAG CONFIG: disable-static 9655 1.1 riastrad 9656 1.1 riastrad # Local Variables: 9657 1.1 riastrad # mode:shell-script 9658 1.1 riastrad # sh-indentation:2 9659 1.1 riastrad # End: 9660 1.1 riastrad # vi:sw=2 9661 1.1 riastrad 9662