ltmain.sh revision 1.1 1 1.1 lukem # ltmain.sh - Provide generalized library-building support services.
2 1.1 lukem # NOTE: Changing this file will not affect anything until you rerun configure.
3 1.1 lukem #
4 1.1 lukem # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
5 1.1 lukem # 2007, 2008 Free Software Foundation, Inc.
6 1.1 lukem # Originally by Gordon Matzigkeit <gord (at] gnu.ai.mit.edu>, 1996
7 1.1 lukem #
8 1.1 lukem # This program is free software; you can redistribute it and/or modify
9 1.1 lukem # it under the terms of the GNU General Public License as published by
10 1.1 lukem # the Free Software Foundation; either version 2 of the License, or
11 1.1 lukem # (at your option) any later version.
12 1.1 lukem #
13 1.1 lukem # This program is distributed in the hope that it will be useful, but
14 1.1 lukem # WITHOUT ANY WARRANTY; without even the implied warranty of
15 1.1 lukem # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 1.1 lukem # General Public License for more details.
17 1.1 lukem #
18 1.1 lukem # You should have received a copy of the GNU General Public License
19 1.1 lukem # along with this program; if not, write to the Free Software
20 1.1 lukem # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 1.1 lukem #
22 1.1 lukem # As a special exception to the GNU General Public License, if you
23 1.1 lukem # distribute this file as part of a program that contains a
24 1.1 lukem # configuration script generated by Autoconf, you may include it under
25 1.1 lukem # the same distribution terms that you use for the rest of that program.
26 1.1 lukem
27 1.1 lukem basename="s,^.*/,,g"
28 1.1 lukem
29 1.1 lukem # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
30 1.1 lukem # is ksh but when the shell is invoked as "sh" and the current value of
31 1.1 lukem # the _XPG environment variable is not equal to 1 (one), the special
32 1.1 lukem # positional parameter $0, within a function call, is the name of the
33 1.1 lukem # function.
34 1.1 lukem progpath="$0"
35 1.1 lukem
36 1.1 lukem # The name of this program:
37 1.1 lukem progname=`echo "$progpath" | $SED $basename`
38 1.1 lukem modename="$progname"
39 1.1 lukem
40 1.1 lukem # Global variables:
41 1.1 lukem EXIT_SUCCESS=0
42 1.1 lukem EXIT_FAILURE=1
43 1.1 lukem
44 1.1 lukem PROGRAM=ltmain.sh
45 1.1 lukem PACKAGE=libtool
46 1.1 lukem VERSION=1.5.26
47 1.1 lukem TIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)"
48 1.1 lukem
49 1.1 lukem # Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
50 1.1 lukem if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
51 1.1 lukem emulate sh
52 1.1 lukem NULLCMD=:
53 1.1 lukem # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
54 1.1 lukem # is contrary to our usage. Disable this feature.
55 1.1 lukem alias -g '${1+"$@"}'='"$@"'
56 1.1 lukem setopt NO_GLOB_SUBST
57 1.1 lukem else
58 1.1 lukem case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
59 1.1 lukem fi
60 1.1 lukem BIN_SH=xpg4; export BIN_SH # for Tru64
61 1.1 lukem DUALCASE=1; export DUALCASE # for MKS sh
62 1.1 lukem
63 1.1 lukem # Check that we have a working $echo.
64 1.1 lukem if test "X$1" = X--no-reexec; then
65 1.1 lukem # Discard the --no-reexec flag, and continue.
66 1.1 lukem shift
67 1.1 lukem elif test "X$1" = X--fallback-echo; then
68 1.1 lukem # Avoid inline document here, it may be left over
69 1.1 lukem :
70 1.1 lukem elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
71 1.1 lukem # Yippee, $echo works!
72 1.1 lukem :
73 1.1 lukem else
74 1.1 lukem # Restart under the correct shell, and then maybe $echo will work.
75 1.1 lukem exec $SHELL "$progpath" --no-reexec ${1+"$@"}
76 1.1 lukem fi
77 1.1 lukem
78 1.1 lukem if test "X$1" = X--fallback-echo; then
79 1.1 lukem # used as fallback echo
80 1.1 lukem shift
81 1.1 lukem cat <<EOF
82 1.1 lukem $*
83 1.1 lukem EOF
84 1.1 lukem exit $EXIT_SUCCESS
85 1.1 lukem fi
86 1.1 lukem
87 1.1 lukem default_mode=
88 1.1 lukem help="Try \`$progname --help' for more information."
89 1.1 lukem magic="%%%MAGIC variable%%%"
90 1.1 lukem mkdir="mkdir"
91 1.1 lukem mv="mv -f"
92 1.1 lukem rm="rm -f"
93 1.1 lukem
94 1.1 lukem # Sed substitution that helps us do robust quoting. It backslashifies
95 1.1 lukem # metacharacters that are still active within double-quoted strings.
96 1.1 lukem Xsed="${SED}"' -e 1s/^X//'
97 1.1 lukem sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
98 1.1 lukem # test EBCDIC or ASCII
99 1.1 lukem case `echo X|tr X '\101'` in
100 1.1 lukem A) # ASCII based system
101 1.1 lukem # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
102 1.1 lukem SP2NL='tr \040 \012'
103 1.1 lukem NL2SP='tr \015\012 \040\040'
104 1.1 lukem ;;
105 1.1 lukem *) # EBCDIC based system
106 1.1 lukem SP2NL='tr \100 \n'
107 1.1 lukem NL2SP='tr \r\n \100\100'
108 1.1 lukem ;;
109 1.1 lukem esac
110 1.1 lukem
111 1.1 lukem # NLS nuisances.
112 1.1 lukem # Only set LANG and LC_ALL to C if already set.
113 1.1 lukem # These must not be set unconditionally because not all systems understand
114 1.1 lukem # e.g. LANG=C (notably SCO).
115 1.1 lukem # We save the old values to restore during execute mode.
116 1.1 lukem lt_env=
117 1.1 lukem for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
118 1.1 lukem do
119 1.1 lukem eval "if test \"\${$lt_var+set}\" = set; then
120 1.1 lukem save_$lt_var=\$$lt_var
121 1.1 lukem lt_env=\"$lt_var=\$$lt_var \$lt_env\"
122 1.1 lukem $lt_var=C
123 1.1 lukem export $lt_var
124 1.1 lukem fi"
125 1.1 lukem done
126 1.1 lukem
127 1.1 lukem if test -n "$lt_env"; then
128 1.1 lukem lt_env="env $lt_env"
129 1.1 lukem fi
130 1.1 lukem
131 1.1 lukem # Make sure IFS has a sensible default
132 1.1 lukem lt_nl='
133 1.1 lukem '
134 1.1 lukem IFS=" $lt_nl"
135 1.1 lukem
136 1.1 lukem if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
137 1.1 lukem $echo "$modename: not configured to build any kind of library" 1>&2
138 1.1 lukem $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
139 1.1 lukem exit $EXIT_FAILURE
140 1.1 lukem fi
141 1.1 lukem
142 1.1 lukem # Global variables.
143 1.1 lukem mode=$default_mode
144 1.1 lukem nonopt=
145 1.1 lukem prev=
146 1.1 lukem prevopt=
147 1.1 lukem run=
148 1.1 lukem show="$echo"
149 1.1 lukem show_help=
150 1.1 lukem execute_dlfiles=
151 1.1 lukem duplicate_deps=no
152 1.1 lukem preserve_args=
153 1.1 lukem lo2o="s/\\.lo\$/.${objext}/"
154 1.1 lukem o2lo="s/\\.${objext}\$/.lo/"
155 1.1 lukem extracted_archives=
156 1.1 lukem extracted_serial=0
157 1.1 lukem
158 1.1 lukem #####################################
159 1.1 lukem # Shell function definitions:
160 1.1 lukem # This seems to be the best place for them
161 1.1 lukem
162 1.1 lukem # func_mktempdir [string]
163 1.1 lukem # Make a temporary directory that won't clash with other running
164 1.1 lukem # libtool processes, and avoids race conditions if possible. If
165 1.1 lukem # given, STRING is the basename for that directory.
166 1.1 lukem func_mktempdir ()
167 1.1 lukem {
168 1.1 lukem my_template="${TMPDIR-/tmp}/${1-$progname}"
169 1.1 lukem
170 1.1 lukem if test "$run" = ":"; then
171 1.1 lukem # Return a directory name, but don't create it in dry-run mode
172 1.1 lukem my_tmpdir="${my_template}-$$"
173 1.1 lukem else
174 1.1 lukem
175 1.1 lukem # If mktemp works, use that first and foremost
176 1.1 lukem my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
177 1.1 lukem
178 1.1 lukem if test ! -d "$my_tmpdir"; then
179 1.1 lukem # Failing that, at least try and use $RANDOM to avoid a race
180 1.1 lukem my_tmpdir="${my_template}-${RANDOM-0}$$"
181 1.1 lukem
182 1.1 lukem save_mktempdir_umask=`umask`
183 1.1 lukem umask 0077
184 1.1 lukem $mkdir "$my_tmpdir"
185 1.1 lukem umask $save_mktempdir_umask
186 1.1 lukem fi
187 1.1 lukem
188 1.1 lukem # If we're not in dry-run mode, bomb out on failure
189 1.1 lukem test -d "$my_tmpdir" || {
190 1.1 lukem $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
191 1.1 lukem exit $EXIT_FAILURE
192 1.1 lukem }
193 1.1 lukem fi
194 1.1 lukem
195 1.1 lukem $echo "X$my_tmpdir" | $Xsed
196 1.1 lukem }
197 1.1 lukem
198 1.1 lukem
199 1.1 lukem # func_win32_libid arg
200 1.1 lukem # return the library type of file 'arg'
201 1.1 lukem #
202 1.1 lukem # Need a lot of goo to handle *both* DLLs and import libs
203 1.1 lukem # Has to be a shell function in order to 'eat' the argument
204 1.1 lukem # that is supplied when $file_magic_command is called.
205 1.1 lukem func_win32_libid ()
206 1.1 lukem {
207 1.1 lukem win32_libid_type="unknown"
208 1.1 lukem win32_fileres=`file -L $1 2>/dev/null`
209 1.1 lukem case $win32_fileres in
210 1.1 lukem *ar\ archive\ import\ library*) # definitely import
211 1.1 lukem win32_libid_type="x86 archive import"
212 1.1 lukem ;;
213 1.1 lukem *ar\ archive*) # could be an import, or static
214 1.1 lukem if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
215 1.1 lukem $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
216 1.1 lukem win32_nmres=`eval $NM -f posix -A $1 | \
217 1.1 lukem $SED -n -e '1,100{
218 1.1 lukem / I /{
219 1.1 lukem s,.*,import,
220 1.1 lukem p
221 1.1 lukem q
222 1.1 lukem }
223 1.1 lukem }'`
224 1.1 lukem case $win32_nmres in
225 1.1 lukem import*) win32_libid_type="x86 archive import";;
226 1.1 lukem *) win32_libid_type="x86 archive static";;
227 1.1 lukem esac
228 1.1 lukem fi
229 1.1 lukem ;;
230 1.1 lukem *DLL*)
231 1.1 lukem win32_libid_type="x86 DLL"
232 1.1 lukem ;;
233 1.1 lukem *executable*) # but shell scripts are "executable" too...
234 1.1 lukem case $win32_fileres in
235 1.1 lukem *MS\ Windows\ PE\ Intel*)
236 1.1 lukem win32_libid_type="x86 DLL"
237 1.1 lukem ;;
238 1.1 lukem esac
239 1.1 lukem ;;
240 1.1 lukem esac
241 1.1 lukem $echo $win32_libid_type
242 1.1 lukem }
243 1.1 lukem
244 1.1 lukem
245 1.1 lukem # func_infer_tag arg
246 1.1 lukem # Infer tagged configuration to use if any are available and
247 1.1 lukem # if one wasn't chosen via the "--tag" command line option.
248 1.1 lukem # Only attempt this if the compiler in the base compile
249 1.1 lukem # command doesn't match the default compiler.
250 1.1 lukem # arg is usually of the form 'gcc ...'
251 1.1 lukem func_infer_tag ()
252 1.1 lukem {
253 1.1 lukem # Set the commonly-used compilers for some tags.
254 1.1 lukem tag_compilers_CC="*cc *xlc"
255 1.1 lukem tag_compilers_CXX="*++ *CC"
256 1.1 lukem tag_compilers_F77="*77 *fort"
257 1.1 lukem base_compiler=`set -- "$@"; $echo $1`
258 1.1 lukem # If $tagname still isn't set, then try to infer if the default
259 1.1 lukem # "CC" tag applies by matching up the base compile command to some
260 1.1 lukem # compilers commonly used for the "CC" tag.
261 1.1 lukem if test -z "$tagname"; then
262 1.1 lukem z=CC
263 1.1 lukem eval "tag_compilers=\$tag_compilers_${z}"
264 1.1 lukem if test -n "$tag_compilers"; then
265 1.1 lukem for zp in $tag_compilers; do
266 1.1 lukem case $base_compiler in
267 1.1 lukem $zp)
268 1.1 lukem # The compiler in the base compile command matches
269 1.1 lukem # one of the common compilers for the current tag.
270 1.1 lukem # Assume this is the tagged configuration we want.
271 1.1 lukem tagname=$z
272 1.1 lukem break
273 1.1 lukem ;;
274 1.1 lukem esac
275 1.1 lukem done
276 1.1 lukem fi
277 1.1 lukem fi
278 1.1 lukem if test -n "$available_tags" && test -z "$tagname"; then
279 1.1 lukem CC_quoted=
280 1.1 lukem for arg in $CC; do
281 1.1 lukem case $arg in
282 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
283 1.1 lukem arg="\"$arg\""
284 1.1 lukem ;;
285 1.1 lukem esac
286 1.1 lukem CC_quoted="$CC_quoted $arg"
287 1.1 lukem done
288 1.1 lukem case $@ in
289 1.1 lukem # Blanks in the command may have been stripped by the calling shell,
290 1.1 lukem # but not from the CC environment variable when configure was run.
291 1.1 lukem " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
292 1.1 lukem # Blanks at the start of $base_compile will cause this to fail
293 1.1 lukem # if we don't check for them as well.
294 1.1 lukem *)
295 1.1 lukem for z in $available_tags; do
296 1.1 lukem if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
297 1.1 lukem # Evaluate the configuration.
298 1.1 lukem eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
299 1.1 lukem CC_quoted=
300 1.1 lukem for arg in $CC; do
301 1.1 lukem # Double-quote args containing other shell metacharacters.
302 1.1 lukem case $arg in
303 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
304 1.1 lukem arg="\"$arg\""
305 1.1 lukem ;;
306 1.1 lukem esac
307 1.1 lukem CC_quoted="$CC_quoted $arg"
308 1.1 lukem done
309 1.1 lukem case "$@ " in
310 1.1 lukem " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
311 1.1 lukem # The compiler in the base compile command matches
312 1.1 lukem # the one in the tagged configuration.
313 1.1 lukem # Assume this is the tagged configuration we want.
314 1.1 lukem tagname=$z
315 1.1 lukem break
316 1.1 lukem ;;
317 1.1 lukem esac
318 1.1 lukem # If $tagname still isn't set, then try to infer it by
319 1.1 lukem # matching up the base compile command to some compilers
320 1.1 lukem # commonly used for certain tags.
321 1.1 lukem base_compiler=`set -- "$@"; $echo $1`
322 1.1 lukem eval "tag_compilers=\$tag_compilers_${z}"
323 1.1 lukem if test -n "$tag_compilers"; then
324 1.1 lukem for zp in $tag_compilers; do
325 1.1 lukem case $base_compiler in
326 1.1 lukem $zp)
327 1.1 lukem # The compiler in the base compile command matches
328 1.1 lukem # one of the common compilers for the current tag.
329 1.1 lukem # Assume this is the tagged configuration we want.
330 1.1 lukem tagname=$z
331 1.1 lukem break
332 1.1 lukem ;;
333 1.1 lukem esac
334 1.1 lukem done
335 1.1 lukem if test -n "$tagname"; then
336 1.1 lukem break
337 1.1 lukem fi
338 1.1 lukem fi
339 1.1 lukem fi
340 1.1 lukem done
341 1.1 lukem # If $tagname still isn't set, then no tagged configuration
342 1.1 lukem # was found and let the user know that the "--tag" command
343 1.1 lukem # line option must be used.
344 1.1 lukem if test -z "$tagname"; then
345 1.1 lukem $echo "$modename: unable to infer tagged configuration"
346 1.1 lukem $echo "$modename: specify a tag with \`--tag'" 1>&2
347 1.1 lukem exit $EXIT_FAILURE
348 1.1 lukem # else
349 1.1 lukem # $echo "$modename: using $tagname tagged configuration"
350 1.1 lukem fi
351 1.1 lukem ;;
352 1.1 lukem esac
353 1.1 lukem fi
354 1.1 lukem }
355 1.1 lukem
356 1.1 lukem
357 1.1 lukem # func_extract_an_archive dir oldlib
358 1.1 lukem func_extract_an_archive ()
359 1.1 lukem {
360 1.1 lukem f_ex_an_ar_dir="$1"; shift
361 1.1 lukem f_ex_an_ar_oldlib="$1"
362 1.1 lukem
363 1.1 lukem $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
364 1.1 lukem $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
365 1.1 lukem if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
366 1.1 lukem :
367 1.1 lukem else
368 1.1 lukem $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
369 1.1 lukem exit $EXIT_FAILURE
370 1.1 lukem fi
371 1.1 lukem }
372 1.1 lukem
373 1.1 lukem # func_extract_archives gentop oldlib ...
374 1.1 lukem func_extract_archives ()
375 1.1 lukem {
376 1.1 lukem my_gentop="$1"; shift
377 1.1 lukem my_oldlibs=${1+"$@"}
378 1.1 lukem my_oldobjs=""
379 1.1 lukem my_xlib=""
380 1.1 lukem my_xabs=""
381 1.1 lukem my_xdir=""
382 1.1 lukem my_status=""
383 1.1 lukem
384 1.1 lukem $show "${rm}r $my_gentop"
385 1.1 lukem $run ${rm}r "$my_gentop"
386 1.1 lukem $show "$mkdir $my_gentop"
387 1.1 lukem $run $mkdir "$my_gentop"
388 1.1 lukem my_status=$?
389 1.1 lukem if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
390 1.1 lukem exit $my_status
391 1.1 lukem fi
392 1.1 lukem
393 1.1 lukem for my_xlib in $my_oldlibs; do
394 1.1 lukem # Extract the objects.
395 1.1 lukem case $my_xlib in
396 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
397 1.1 lukem *) my_xabs=`pwd`"/$my_xlib" ;;
398 1.1 lukem esac
399 1.1 lukem my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
400 1.1 lukem my_xlib_u=$my_xlib
401 1.1 lukem while :; do
402 1.1 lukem case " $extracted_archives " in
403 1.1 lukem *" $my_xlib_u "*)
404 1.1 lukem extracted_serial=`expr $extracted_serial + 1`
405 1.1 lukem my_xlib_u=lt$extracted_serial-$my_xlib ;;
406 1.1 lukem *) break ;;
407 1.1 lukem esac
408 1.1 lukem done
409 1.1 lukem extracted_archives="$extracted_archives $my_xlib_u"
410 1.1 lukem my_xdir="$my_gentop/$my_xlib_u"
411 1.1 lukem
412 1.1 lukem $show "${rm}r $my_xdir"
413 1.1 lukem $run ${rm}r "$my_xdir"
414 1.1 lukem $show "$mkdir $my_xdir"
415 1.1 lukem $run $mkdir "$my_xdir"
416 1.1 lukem exit_status=$?
417 1.1 lukem if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
418 1.1 lukem exit $exit_status
419 1.1 lukem fi
420 1.1 lukem case $host in
421 1.1 lukem *-darwin*)
422 1.1 lukem $show "Extracting $my_xabs"
423 1.1 lukem # Do not bother doing anything if just a dry run
424 1.1 lukem if test -z "$run"; then
425 1.1 lukem darwin_orig_dir=`pwd`
426 1.1 lukem cd $my_xdir || exit $?
427 1.1 lukem darwin_archive=$my_xabs
428 1.1 lukem darwin_curdir=`pwd`
429 1.1 lukem darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
430 1.1 lukem darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
431 1.1 lukem if test -n "$darwin_arches"; then
432 1.1 lukem darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
433 1.1 lukem darwin_arch=
434 1.1 lukem $show "$darwin_base_archive has multiple architectures $darwin_arches"
435 1.1 lukem for darwin_arch in $darwin_arches ; do
436 1.1 lukem mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
437 1.1 lukem lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
438 1.1 lukem cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
439 1.1 lukem func_extract_an_archive "`pwd`" "${darwin_base_archive}"
440 1.1 lukem cd "$darwin_curdir"
441 1.1 lukem $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
442 1.1 lukem done # $darwin_arches
443 1.1 lukem ## Okay now we have a bunch of thin objects, gotta fatten them up :)
444 1.1 lukem darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
445 1.1 lukem darwin_file=
446 1.1 lukem darwin_files=
447 1.1 lukem for darwin_file in $darwin_filelist; do
448 1.1 lukem darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
449 1.1 lukem lipo -create -output "$darwin_file" $darwin_files
450 1.1 lukem done # $darwin_filelist
451 1.1 lukem ${rm}r unfat-$$
452 1.1 lukem cd "$darwin_orig_dir"
453 1.1 lukem else
454 1.1 lukem cd "$darwin_orig_dir"
455 1.1 lukem func_extract_an_archive "$my_xdir" "$my_xabs"
456 1.1 lukem fi # $darwin_arches
457 1.1 lukem fi # $run
458 1.1 lukem ;;
459 1.1 lukem *)
460 1.1 lukem func_extract_an_archive "$my_xdir" "$my_xabs"
461 1.1 lukem ;;
462 1.1 lukem esac
463 1.1 lukem my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
464 1.1 lukem done
465 1.1 lukem func_extract_archives_result="$my_oldobjs"
466 1.1 lukem }
467 1.1 lukem # End of Shell function definitions
468 1.1 lukem #####################################
469 1.1 lukem
470 1.1 lukem # Darwin sucks
471 1.1 lukem eval std_shrext=\"$shrext_cmds\"
472 1.1 lukem
473 1.1 lukem disable_libs=no
474 1.1 lukem
475 1.1 lukem # Parse our command line options once, thoroughly.
476 1.1 lukem while test "$#" -gt 0
477 1.1 lukem do
478 1.1 lukem arg="$1"
479 1.1 lukem shift
480 1.1 lukem
481 1.1 lukem case $arg in
482 1.1 lukem -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
483 1.1 lukem *) optarg= ;;
484 1.1 lukem esac
485 1.1 lukem
486 1.1 lukem # If the previous option needs an argument, assign it.
487 1.1 lukem if test -n "$prev"; then
488 1.1 lukem case $prev in
489 1.1 lukem execute_dlfiles)
490 1.1 lukem execute_dlfiles="$execute_dlfiles $arg"
491 1.1 lukem ;;
492 1.1 lukem tag)
493 1.1 lukem tagname="$arg"
494 1.1 lukem preserve_args="${preserve_args}=$arg"
495 1.1 lukem
496 1.1 lukem # Check whether tagname contains only valid characters
497 1.1 lukem case $tagname in
498 1.1 lukem *[!-_A-Za-z0-9,/]*)
499 1.1 lukem $echo "$progname: invalid tag name: $tagname" 1>&2
500 1.1 lukem exit $EXIT_FAILURE
501 1.1 lukem ;;
502 1.1 lukem esac
503 1.1 lukem
504 1.1 lukem case $tagname in
505 1.1 lukem CC)
506 1.1 lukem # Don't test for the "default" C tag, as we know, it's there, but
507 1.1 lukem # not specially marked.
508 1.1 lukem ;;
509 1.1 lukem *)
510 1.1 lukem if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
511 1.1 lukem taglist="$taglist $tagname"
512 1.1 lukem # Evaluate the configuration.
513 1.1 lukem eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
514 1.1 lukem else
515 1.1 lukem $echo "$progname: ignoring unknown tag $tagname" 1>&2
516 1.1 lukem fi
517 1.1 lukem ;;
518 1.1 lukem esac
519 1.1 lukem ;;
520 1.1 lukem *)
521 1.1 lukem eval "$prev=\$arg"
522 1.1 lukem ;;
523 1.1 lukem esac
524 1.1 lukem
525 1.1 lukem prev=
526 1.1 lukem prevopt=
527 1.1 lukem continue
528 1.1 lukem fi
529 1.1 lukem
530 1.1 lukem # Have we seen a non-optional argument yet?
531 1.1 lukem case $arg in
532 1.1 lukem --help)
533 1.1 lukem show_help=yes
534 1.1 lukem ;;
535 1.1 lukem
536 1.1 lukem --version)
537 1.1 lukem echo "\
538 1.1 lukem $PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
539 1.1 lukem
540 1.1 lukem Copyright (C) 2008 Free Software Foundation, Inc.
541 1.1 lukem This is free software; see the source for copying conditions. There is NO
542 1.1 lukem warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
543 1.1 lukem exit $?
544 1.1 lukem ;;
545 1.1 lukem
546 1.1 lukem --config)
547 1.1 lukem ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
548 1.1 lukem # Now print the configurations for the tags.
549 1.1 lukem for tagname in $taglist; do
550 1.1 lukem ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
551 1.1 lukem done
552 1.1 lukem exit $?
553 1.1 lukem ;;
554 1.1 lukem
555 1.1 lukem --debug)
556 1.1 lukem $echo "$progname: enabling shell trace mode"
557 1.1 lukem set -x
558 1.1 lukem preserve_args="$preserve_args $arg"
559 1.1 lukem ;;
560 1.1 lukem
561 1.1 lukem --dry-run | -n)
562 1.1 lukem run=:
563 1.1 lukem ;;
564 1.1 lukem
565 1.1 lukem --features)
566 1.1 lukem $echo "host: $host"
567 1.1 lukem if test "$build_libtool_libs" = yes; then
568 1.1 lukem $echo "enable shared libraries"
569 1.1 lukem else
570 1.1 lukem $echo "disable shared libraries"
571 1.1 lukem fi
572 1.1 lukem if test "$build_old_libs" = yes; then
573 1.1 lukem $echo "enable static libraries"
574 1.1 lukem else
575 1.1 lukem $echo "disable static libraries"
576 1.1 lukem fi
577 1.1 lukem exit $?
578 1.1 lukem ;;
579 1.1 lukem
580 1.1 lukem --finish) mode="finish" ;;
581 1.1 lukem
582 1.1 lukem --mode) prevopt="--mode" prev=mode ;;
583 1.1 lukem --mode=*) mode="$optarg" ;;
584 1.1 lukem
585 1.1 lukem --preserve-dup-deps) duplicate_deps="yes" ;;
586 1.1 lukem
587 1.1 lukem --quiet | --silent)
588 1.1 lukem show=:
589 1.1 lukem preserve_args="$preserve_args $arg"
590 1.1 lukem ;;
591 1.1 lukem
592 1.1 lukem --tag)
593 1.1 lukem prevopt="--tag"
594 1.1 lukem prev=tag
595 1.1 lukem preserve_args="$preserve_args --tag"
596 1.1 lukem ;;
597 1.1 lukem --tag=*)
598 1.1 lukem set tag "$optarg" ${1+"$@"}
599 1.1 lukem shift
600 1.1 lukem prev=tag
601 1.1 lukem preserve_args="$preserve_args --tag"
602 1.1 lukem ;;
603 1.1 lukem
604 1.1 lukem -dlopen)
605 1.1 lukem prevopt="-dlopen"
606 1.1 lukem prev=execute_dlfiles
607 1.1 lukem ;;
608 1.1 lukem
609 1.1 lukem -*)
610 1.1 lukem $echo "$modename: unrecognized option \`$arg'" 1>&2
611 1.1 lukem $echo "$help" 1>&2
612 1.1 lukem exit $EXIT_FAILURE
613 1.1 lukem ;;
614 1.1 lukem
615 1.1 lukem *)
616 1.1 lukem nonopt="$arg"
617 1.1 lukem break
618 1.1 lukem ;;
619 1.1 lukem esac
620 1.1 lukem done
621 1.1 lukem
622 1.1 lukem if test -n "$prevopt"; then
623 1.1 lukem $echo "$modename: option \`$prevopt' requires an argument" 1>&2
624 1.1 lukem $echo "$help" 1>&2
625 1.1 lukem exit $EXIT_FAILURE
626 1.1 lukem fi
627 1.1 lukem
628 1.1 lukem case $disable_libs in
629 1.1 lukem no)
630 1.1 lukem ;;
631 1.1 lukem shared)
632 1.1 lukem build_libtool_libs=no
633 1.1 lukem build_old_libs=yes
634 1.1 lukem ;;
635 1.1 lukem static)
636 1.1 lukem build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
637 1.1 lukem ;;
638 1.1 lukem esac
639 1.1 lukem
640 1.1 lukem # If this variable is set in any of the actions, the command in it
641 1.1 lukem # will be execed at the end. This prevents here-documents from being
642 1.1 lukem # left over by shells.
643 1.1 lukem exec_cmd=
644 1.1 lukem
645 1.1 lukem if test -z "$show_help"; then
646 1.1 lukem
647 1.1 lukem # Infer the operation mode.
648 1.1 lukem if test -z "$mode"; then
649 1.1 lukem $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
650 1.1 lukem $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
651 1.1 lukem case $nonopt in
652 1.1 lukem *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc* | *CC)
653 1.1 lukem mode=link
654 1.1 lukem for arg
655 1.1 lukem do
656 1.1 lukem case $arg in
657 1.1 lukem -c)
658 1.1 lukem mode=compile
659 1.1 lukem break
660 1.1 lukem ;;
661 1.1 lukem esac
662 1.1 lukem done
663 1.1 lukem ;;
664 1.1 lukem *db | *dbx | *strace | *truss)
665 1.1 lukem mode=execute
666 1.1 lukem ;;
667 1.1 lukem *install*|cp|mv)
668 1.1 lukem mode=install
669 1.1 lukem ;;
670 1.1 lukem *rm)
671 1.1 lukem mode=uninstall
672 1.1 lukem ;;
673 1.1 lukem *)
674 1.1 lukem # If we have no mode, but dlfiles were specified, then do execute mode.
675 1.1 lukem test -n "$execute_dlfiles" && mode=execute
676 1.1 lukem
677 1.1 lukem # Just use the default operation mode.
678 1.1 lukem if test -z "$mode"; then
679 1.1 lukem if test -n "$nonopt"; then
680 1.1 lukem $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
681 1.1 lukem else
682 1.1 lukem $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
683 1.1 lukem fi
684 1.1 lukem fi
685 1.1 lukem ;;
686 1.1 lukem esac
687 1.1 lukem fi
688 1.1 lukem
689 1.1 lukem # Only execute mode is allowed to have -dlopen flags.
690 1.1 lukem if test -n "$execute_dlfiles" && test "$mode" != execute; then
691 1.1 lukem $echo "$modename: unrecognized option \`-dlopen'" 1>&2
692 1.1 lukem $echo "$help" 1>&2
693 1.1 lukem exit $EXIT_FAILURE
694 1.1 lukem fi
695 1.1 lukem
696 1.1 lukem # Change the help message to a mode-specific one.
697 1.1 lukem generic_help="$help"
698 1.1 lukem help="Try \`$modename --help --mode=$mode' for more information."
699 1.1 lukem
700 1.1 lukem # These modes are in order of execution frequency so that they run quickly.
701 1.1 lukem case $mode in
702 1.1 lukem # libtool compile mode
703 1.1 lukem compile)
704 1.1 lukem modename="$modename: compile"
705 1.1 lukem # Get the compilation command and the source file.
706 1.1 lukem base_compile=
707 1.1 lukem srcfile="$nonopt" # always keep a non-empty value in "srcfile"
708 1.1 lukem suppress_opt=yes
709 1.1 lukem suppress_output=
710 1.1 lukem arg_mode=normal
711 1.1 lukem libobj=
712 1.1 lukem later=
713 1.1 lukem
714 1.1 lukem for arg
715 1.1 lukem do
716 1.1 lukem case $arg_mode in
717 1.1 lukem arg )
718 1.1 lukem # do not "continue". Instead, add this to base_compile
719 1.1 lukem lastarg="$arg"
720 1.1 lukem arg_mode=normal
721 1.1 lukem ;;
722 1.1 lukem
723 1.1 lukem target )
724 1.1 lukem libobj="$arg"
725 1.1 lukem arg_mode=normal
726 1.1 lukem continue
727 1.1 lukem ;;
728 1.1 lukem
729 1.1 lukem normal )
730 1.1 lukem # Accept any command-line options.
731 1.1 lukem case $arg in
732 1.1 lukem -o)
733 1.1 lukem if test -n "$libobj" ; then
734 1.1 lukem $echo "$modename: you cannot specify \`-o' more than once" 1>&2
735 1.1 lukem exit $EXIT_FAILURE
736 1.1 lukem fi
737 1.1 lukem arg_mode=target
738 1.1 lukem continue
739 1.1 lukem ;;
740 1.1 lukem
741 1.1 lukem -static | -prefer-pic | -prefer-non-pic)
742 1.1 lukem later="$later $arg"
743 1.1 lukem continue
744 1.1 lukem ;;
745 1.1 lukem
746 1.1 lukem -no-suppress)
747 1.1 lukem suppress_opt=no
748 1.1 lukem continue
749 1.1 lukem ;;
750 1.1 lukem
751 1.1 lukem -Xcompiler)
752 1.1 lukem arg_mode=arg # the next one goes into the "base_compile" arg list
753 1.1 lukem continue # The current "srcfile" will either be retained or
754 1.1 lukem ;; # replaced later. I would guess that would be a bug.
755 1.1 lukem
756 1.1 lukem -Wc,*)
757 1.1 lukem args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
758 1.1 lukem lastarg=
759 1.1 lukem save_ifs="$IFS"; IFS=','
760 1.1 lukem for arg in $args; do
761 1.1 lukem IFS="$save_ifs"
762 1.1 lukem
763 1.1 lukem # Double-quote args containing other shell metacharacters.
764 1.1 lukem # Many Bourne shells cannot handle close brackets correctly
765 1.1 lukem # in scan sets, so we specify it separately.
766 1.1 lukem case $arg in
767 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
768 1.1 lukem arg="\"$arg\""
769 1.1 lukem ;;
770 1.1 lukem esac
771 1.1 lukem lastarg="$lastarg $arg"
772 1.1 lukem done
773 1.1 lukem IFS="$save_ifs"
774 1.1 lukem lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
775 1.1 lukem
776 1.1 lukem # Add the arguments to base_compile.
777 1.1 lukem base_compile="$base_compile $lastarg"
778 1.1 lukem continue
779 1.1 lukem ;;
780 1.1 lukem
781 1.1 lukem * )
782 1.1 lukem # Accept the current argument as the source file.
783 1.1 lukem # The previous "srcfile" becomes the current argument.
784 1.1 lukem #
785 1.1 lukem lastarg="$srcfile"
786 1.1 lukem srcfile="$arg"
787 1.1 lukem ;;
788 1.1 lukem esac # case $arg
789 1.1 lukem ;;
790 1.1 lukem esac # case $arg_mode
791 1.1 lukem
792 1.1 lukem # Aesthetically quote the previous argument.
793 1.1 lukem lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
794 1.1 lukem
795 1.1 lukem case $lastarg in
796 1.1 lukem # Double-quote args containing other shell metacharacters.
797 1.1 lukem # Many Bourne shells cannot handle close brackets correctly
798 1.1 lukem # in scan sets, and some SunOS ksh mistreat backslash-escaping
799 1.1 lukem # in scan sets (worked around with variable expansion),
800 1.1 lukem # and furthermore cannot handle '|' '&' '(' ')' in scan sets
801 1.1 lukem # at all, so we specify them separately.
802 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
803 1.1 lukem lastarg="\"$lastarg\""
804 1.1 lukem ;;
805 1.1 lukem esac
806 1.1 lukem
807 1.1 lukem base_compile="$base_compile $lastarg"
808 1.1 lukem done # for arg
809 1.1 lukem
810 1.1 lukem case $arg_mode in
811 1.1 lukem arg)
812 1.1 lukem $echo "$modename: you must specify an argument for -Xcompile"
813 1.1 lukem exit $EXIT_FAILURE
814 1.1 lukem ;;
815 1.1 lukem target)
816 1.1 lukem $echo "$modename: you must specify a target with \`-o'" 1>&2
817 1.1 lukem exit $EXIT_FAILURE
818 1.1 lukem ;;
819 1.1 lukem *)
820 1.1 lukem # Get the name of the library object.
821 1.1 lukem [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
822 1.1 lukem ;;
823 1.1 lukem esac
824 1.1 lukem
825 1.1 lukem # Recognize several different file suffixes.
826 1.1 lukem # If the user specifies -o file.o, it is replaced with file.lo
827 1.1 lukem xform='[cCFSifmso]'
828 1.1 lukem case $libobj in
829 1.1 lukem *.ada) xform=ada ;;
830 1.1 lukem *.adb) xform=adb ;;
831 1.1 lukem *.ads) xform=ads ;;
832 1.1 lukem *.asm) xform=asm ;;
833 1.1 lukem *.c++) xform=c++ ;;
834 1.1 lukem *.cc) xform=cc ;;
835 1.1 lukem *.ii) xform=ii ;;
836 1.1 lukem *.class) xform=class ;;
837 1.1 lukem *.cpp) xform=cpp ;;
838 1.1 lukem *.cxx) xform=cxx ;;
839 1.1 lukem *.[fF][09]?) xform=[fF][09]. ;;
840 1.1 lukem *.for) xform=for ;;
841 1.1 lukem *.java) xform=java ;;
842 1.1 lukem *.obj) xform=obj ;;
843 1.1 lukem *.sx) xform=sx ;;
844 1.1 lukem esac
845 1.1 lukem
846 1.1 lukem libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
847 1.1 lukem
848 1.1 lukem case $libobj in
849 1.1 lukem *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
850 1.1 lukem *)
851 1.1 lukem $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
852 1.1 lukem exit $EXIT_FAILURE
853 1.1 lukem ;;
854 1.1 lukem esac
855 1.1 lukem
856 1.1 lukem func_infer_tag $base_compile
857 1.1 lukem
858 1.1 lukem for arg in $later; do
859 1.1 lukem case $arg in
860 1.1 lukem -static)
861 1.1 lukem build_old_libs=yes
862 1.1 lukem continue
863 1.1 lukem ;;
864 1.1 lukem
865 1.1 lukem -prefer-pic)
866 1.1 lukem pic_mode=yes
867 1.1 lukem continue
868 1.1 lukem ;;
869 1.1 lukem
870 1.1 lukem -prefer-non-pic)
871 1.1 lukem pic_mode=no
872 1.1 lukem continue
873 1.1 lukem ;;
874 1.1 lukem esac
875 1.1 lukem done
876 1.1 lukem
877 1.1 lukem qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
878 1.1 lukem case $qlibobj in
879 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
880 1.1 lukem qlibobj="\"$qlibobj\"" ;;
881 1.1 lukem esac
882 1.1 lukem test "X$libobj" != "X$qlibobj" \
883 1.1 lukem && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
884 1.1 lukem && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
885 1.1 lukem objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
886 1.1 lukem xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
887 1.1 lukem if test "X$xdir" = "X$obj"; then
888 1.1 lukem xdir=
889 1.1 lukem else
890 1.1 lukem xdir=$xdir/
891 1.1 lukem fi
892 1.1 lukem lobj=${xdir}$objdir/$objname
893 1.1 lukem
894 1.1 lukem if test -z "$base_compile"; then
895 1.1 lukem $echo "$modename: you must specify a compilation command" 1>&2
896 1.1 lukem $echo "$help" 1>&2
897 1.1 lukem exit $EXIT_FAILURE
898 1.1 lukem fi
899 1.1 lukem
900 1.1 lukem # Delete any leftover library objects.
901 1.1 lukem if test "$build_old_libs" = yes; then
902 1.1 lukem removelist="$obj $lobj $libobj ${libobj}T"
903 1.1 lukem else
904 1.1 lukem removelist="$lobj $libobj ${libobj}T"
905 1.1 lukem fi
906 1.1 lukem
907 1.1 lukem $run $rm $removelist
908 1.1 lukem trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
909 1.1 lukem
910 1.1 lukem # On Cygwin there's no "real" PIC flag so we must build both object types
911 1.1 lukem case $host_os in
912 1.1 lukem cygwin* | mingw* | pw32* | os2*)
913 1.1 lukem pic_mode=default
914 1.1 lukem ;;
915 1.1 lukem esac
916 1.1 lukem if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
917 1.1 lukem # non-PIC code in shared libraries is not supported
918 1.1 lukem pic_mode=default
919 1.1 lukem fi
920 1.1 lukem
921 1.1 lukem # Calculate the filename of the output object if compiler does
922 1.1 lukem # not support -o with -c
923 1.1 lukem if test "$compiler_c_o" = no; then
924 1.1 lukem output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
925 1.1 lukem lockfile="$output_obj.lock"
926 1.1 lukem removelist="$removelist $output_obj $lockfile"
927 1.1 lukem trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
928 1.1 lukem else
929 1.1 lukem output_obj=
930 1.1 lukem need_locks=no
931 1.1 lukem lockfile=
932 1.1 lukem fi
933 1.1 lukem
934 1.1 lukem # Lock this critical section if it is needed
935 1.1 lukem # We use this script file to make the link, it avoids creating a new file
936 1.1 lukem if test "$need_locks" = yes; then
937 1.1 lukem until $run ln "$progpath" "$lockfile" 2>/dev/null; do
938 1.1 lukem $show "Waiting for $lockfile to be removed"
939 1.1 lukem sleep 2
940 1.1 lukem done
941 1.1 lukem elif test "$need_locks" = warn; then
942 1.1 lukem if test -f "$lockfile"; then
943 1.1 lukem $echo "\
944 1.1 lukem *** ERROR, $lockfile exists and contains:
945 1.1 lukem `cat $lockfile 2>/dev/null`
946 1.1 lukem
947 1.1 lukem This indicates that another process is trying to use the same
948 1.1 lukem temporary object file, and libtool could not work around it because
949 1.1 lukem your compiler does not support \`-c' and \`-o' together. If you
950 1.1 lukem repeat this compilation, it may succeed, by chance, but you had better
951 1.1 lukem avoid parallel builds (make -j) in this platform, or get a better
952 1.1 lukem compiler."
953 1.1 lukem
954 1.1 lukem $run $rm $removelist
955 1.1 lukem exit $EXIT_FAILURE
956 1.1 lukem fi
957 1.1 lukem $echo "$srcfile" > "$lockfile"
958 1.1 lukem fi
959 1.1 lukem
960 1.1 lukem if test -n "$fix_srcfile_path"; then
961 1.1 lukem eval srcfile=\"$fix_srcfile_path\"
962 1.1 lukem fi
963 1.1 lukem qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
964 1.1 lukem case $qsrcfile in
965 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
966 1.1 lukem qsrcfile="\"$qsrcfile\"" ;;
967 1.1 lukem esac
968 1.1 lukem
969 1.1 lukem $run $rm "$libobj" "${libobj}T"
970 1.1 lukem
971 1.1 lukem # Create a libtool object file (analogous to a ".la" file),
972 1.1 lukem # but don't create it if we're doing a dry run.
973 1.1 lukem test -z "$run" && cat > ${libobj}T <<EOF
974 1.1 lukem # $libobj - a libtool object file
975 1.1 lukem # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
976 1.1 lukem #
977 1.1 lukem # Please DO NOT delete this file!
978 1.1 lukem # It is necessary for linking the library.
979 1.1 lukem
980 1.1 lukem # Name of the PIC object.
981 1.1 lukem EOF
982 1.1 lukem
983 1.1 lukem # Only build a PIC object if we are building libtool libraries.
984 1.1 lukem if test "$build_libtool_libs" = yes; then
985 1.1 lukem # Without this assignment, base_compile gets emptied.
986 1.1 lukem fbsd_hideous_sh_bug=$base_compile
987 1.1 lukem
988 1.1 lukem if test "$pic_mode" != no; then
989 1.1 lukem command="$base_compile $qsrcfile $pic_flag"
990 1.1 lukem else
991 1.1 lukem # Don't build PIC code
992 1.1 lukem command="$base_compile $qsrcfile"
993 1.1 lukem fi
994 1.1 lukem
995 1.1 lukem if test ! -d "${xdir}$objdir"; then
996 1.1 lukem $show "$mkdir ${xdir}$objdir"
997 1.1 lukem $run $mkdir ${xdir}$objdir
998 1.1 lukem exit_status=$?
999 1.1 lukem if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
1000 1.1 lukem exit $exit_status
1001 1.1 lukem fi
1002 1.1 lukem fi
1003 1.1 lukem
1004 1.1 lukem if test -z "$output_obj"; then
1005 1.1 lukem # Place PIC objects in $objdir
1006 1.1 lukem command="$command -o $lobj"
1007 1.1 lukem fi
1008 1.1 lukem
1009 1.1 lukem $run $rm "$lobj" "$output_obj"
1010 1.1 lukem
1011 1.1 lukem $show "$command"
1012 1.1 lukem if $run eval $lt_env "$command"; then :
1013 1.1 lukem else
1014 1.1 lukem test -n "$output_obj" && $run $rm $removelist
1015 1.1 lukem exit $EXIT_FAILURE
1016 1.1 lukem fi
1017 1.1 lukem
1018 1.1 lukem if test "$need_locks" = warn &&
1019 1.1 lukem test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1020 1.1 lukem $echo "\
1021 1.1 lukem *** ERROR, $lockfile contains:
1022 1.1 lukem `cat $lockfile 2>/dev/null`
1023 1.1 lukem
1024 1.1 lukem but it should contain:
1025 1.1 lukem $srcfile
1026 1.1 lukem
1027 1.1 lukem This indicates that another process is trying to use the same
1028 1.1 lukem temporary object file, and libtool could not work around it because
1029 1.1 lukem your compiler does not support \`-c' and \`-o' together. If you
1030 1.1 lukem repeat this compilation, it may succeed, by chance, but you had better
1031 1.1 lukem avoid parallel builds (make -j) in this platform, or get a better
1032 1.1 lukem compiler."
1033 1.1 lukem
1034 1.1 lukem $run $rm $removelist
1035 1.1 lukem exit $EXIT_FAILURE
1036 1.1 lukem fi
1037 1.1 lukem
1038 1.1 lukem # Just move the object if needed, then go on to compile the next one
1039 1.1 lukem if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1040 1.1 lukem $show "$mv $output_obj $lobj"
1041 1.1 lukem if $run $mv $output_obj $lobj; then :
1042 1.1 lukem else
1043 1.1 lukem error=$?
1044 1.1 lukem $run $rm $removelist
1045 1.1 lukem exit $error
1046 1.1 lukem fi
1047 1.1 lukem fi
1048 1.1 lukem
1049 1.1 lukem # Append the name of the PIC object to the libtool object file.
1050 1.1 lukem test -z "$run" && cat >> ${libobj}T <<EOF
1051 1.1 lukem pic_object='$objdir/$objname'
1052 1.1 lukem
1053 1.1 lukem EOF
1054 1.1 lukem
1055 1.1 lukem # Allow error messages only from the first compilation.
1056 1.1 lukem if test "$suppress_opt" = yes; then
1057 1.1 lukem suppress_output=' >/dev/null 2>&1'
1058 1.1 lukem fi
1059 1.1 lukem else
1060 1.1 lukem # No PIC object so indicate it doesn't exist in the libtool
1061 1.1 lukem # object file.
1062 1.1 lukem test -z "$run" && cat >> ${libobj}T <<EOF
1063 1.1 lukem pic_object=none
1064 1.1 lukem
1065 1.1 lukem EOF
1066 1.1 lukem fi
1067 1.1 lukem
1068 1.1 lukem # Only build a position-dependent object if we build old libraries.
1069 1.1 lukem if test "$build_old_libs" = yes; then
1070 1.1 lukem if test "$pic_mode" != yes; then
1071 1.1 lukem # Don't build PIC code
1072 1.1 lukem command="$base_compile $qsrcfile"
1073 1.1 lukem else
1074 1.1 lukem command="$base_compile $qsrcfile $pic_flag"
1075 1.1 lukem fi
1076 1.1 lukem if test "$compiler_c_o" = yes; then
1077 1.1 lukem command="$command -o $obj"
1078 1.1 lukem fi
1079 1.1 lukem
1080 1.1 lukem # Suppress compiler output if we already did a PIC compilation.
1081 1.1 lukem command="$command$suppress_output"
1082 1.1 lukem $run $rm "$obj" "$output_obj"
1083 1.1 lukem $show "$command"
1084 1.1 lukem if $run eval $lt_env "$command"; then :
1085 1.1 lukem else
1086 1.1 lukem $run $rm $removelist
1087 1.1 lukem exit $EXIT_FAILURE
1088 1.1 lukem fi
1089 1.1 lukem
1090 1.1 lukem if test "$need_locks" = warn &&
1091 1.1 lukem test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1092 1.1 lukem $echo "\
1093 1.1 lukem *** ERROR, $lockfile contains:
1094 1.1 lukem `cat $lockfile 2>/dev/null`
1095 1.1 lukem
1096 1.1 lukem but it should contain:
1097 1.1 lukem $srcfile
1098 1.1 lukem
1099 1.1 lukem This indicates that another process is trying to use the same
1100 1.1 lukem temporary object file, and libtool could not work around it because
1101 1.1 lukem your compiler does not support \`-c' and \`-o' together. If you
1102 1.1 lukem repeat this compilation, it may succeed, by chance, but you had better
1103 1.1 lukem avoid parallel builds (make -j) in this platform, or get a better
1104 1.1 lukem compiler."
1105 1.1 lukem
1106 1.1 lukem $run $rm $removelist
1107 1.1 lukem exit $EXIT_FAILURE
1108 1.1 lukem fi
1109 1.1 lukem
1110 1.1 lukem # Just move the object if needed
1111 1.1 lukem if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1112 1.1 lukem $show "$mv $output_obj $obj"
1113 1.1 lukem if $run $mv $output_obj $obj; then :
1114 1.1 lukem else
1115 1.1 lukem error=$?
1116 1.1 lukem $run $rm $removelist
1117 1.1 lukem exit $error
1118 1.1 lukem fi
1119 1.1 lukem fi
1120 1.1 lukem
1121 1.1 lukem # Append the name of the non-PIC object the libtool object file.
1122 1.1 lukem # Only append if the libtool object file exists.
1123 1.1 lukem test -z "$run" && cat >> ${libobj}T <<EOF
1124 1.1 lukem # Name of the non-PIC object.
1125 1.1 lukem non_pic_object='$objname'
1126 1.1 lukem
1127 1.1 lukem EOF
1128 1.1 lukem else
1129 1.1 lukem # Append the name of the non-PIC object the libtool object file.
1130 1.1 lukem # Only append if the libtool object file exists.
1131 1.1 lukem test -z "$run" && cat >> ${libobj}T <<EOF
1132 1.1 lukem # Name of the non-PIC object.
1133 1.1 lukem non_pic_object=none
1134 1.1 lukem
1135 1.1 lukem EOF
1136 1.1 lukem fi
1137 1.1 lukem
1138 1.1 lukem $run $mv "${libobj}T" "${libobj}"
1139 1.1 lukem
1140 1.1 lukem # Unlock the critical section if it was locked
1141 1.1 lukem if test "$need_locks" != no; then
1142 1.1 lukem $run $rm "$lockfile"
1143 1.1 lukem fi
1144 1.1 lukem
1145 1.1 lukem exit $EXIT_SUCCESS
1146 1.1 lukem ;;
1147 1.1 lukem
1148 1.1 lukem # libtool link mode
1149 1.1 lukem link | relink)
1150 1.1 lukem modename="$modename: link"
1151 1.1 lukem case $host in
1152 1.1 lukem *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1153 1.1 lukem # It is impossible to link a dll without this setting, and
1154 1.1 lukem # we shouldn't force the makefile maintainer to figure out
1155 1.1 lukem # which system we are compiling for in order to pass an extra
1156 1.1 lukem # flag for every libtool invocation.
1157 1.1 lukem # allow_undefined=no
1158 1.1 lukem
1159 1.1 lukem # FIXME: Unfortunately, there are problems with the above when trying
1160 1.1 lukem # to make a dll which has undefined symbols, in which case not
1161 1.1 lukem # even a static library is built. For now, we need to specify
1162 1.1 lukem # -no-undefined on the libtool link line when we can be certain
1163 1.1 lukem # that all symbols are satisfied, otherwise we get a static library.
1164 1.1 lukem allow_undefined=yes
1165 1.1 lukem ;;
1166 1.1 lukem *)
1167 1.1 lukem allow_undefined=yes
1168 1.1 lukem ;;
1169 1.1 lukem esac
1170 1.1 lukem libtool_args="$nonopt"
1171 1.1 lukem base_compile="$nonopt $@"
1172 1.1 lukem compile_command="$nonopt"
1173 1.1 lukem finalize_command="$nonopt"
1174 1.1 lukem
1175 1.1 lukem compile_rpath=
1176 1.1 lukem finalize_rpath=
1177 1.1 lukem compile_shlibpath=
1178 1.1 lukem finalize_shlibpath=
1179 1.1 lukem convenience=
1180 1.1 lukem old_convenience=
1181 1.1 lukem deplibs=
1182 1.1 lukem old_deplibs=
1183 1.1 lukem compiler_flags=
1184 1.1 lukem linker_flags=
1185 1.1 lukem dllsearchpath=
1186 1.1 lukem lib_search_path=`pwd`
1187 1.1 lukem inst_prefix_dir=
1188 1.1 lukem
1189 1.1 lukem avoid_version=no
1190 1.1 lukem dlfiles=
1191 1.1 lukem dlprefiles=
1192 1.1 lukem dlself=no
1193 1.1 lukem export_dynamic=no
1194 1.1 lukem export_symbols=
1195 1.1 lukem export_symbols_regex=
1196 1.1 lukem generated=
1197 1.1 lukem libobjs=
1198 1.1 lukem ltlibs=
1199 1.1 lukem module=no
1200 1.1 lukem no_install=no
1201 1.1 lukem objs=
1202 1.1 lukem non_pic_objects=
1203 1.1 lukem notinst_path= # paths that contain not-installed libtool libraries
1204 1.1 lukem precious_files_regex=
1205 1.1 lukem prefer_static_libs=no
1206 1.1 lukem preload=no
1207 1.1 lukem prev=
1208 1.1 lukem prevarg=
1209 1.1 lukem release=
1210 1.1 lukem rpath=
1211 1.1 lukem xrpath=
1212 1.1 lukem perm_rpath=
1213 1.1 lukem temp_rpath=
1214 1.1 lukem thread_safe=no
1215 1.1 lukem vinfo=
1216 1.1 lukem vinfo_number=no
1217 1.1 lukem single_module="${wl}-single_module"
1218 1.1 lukem
1219 1.1 lukem func_infer_tag $base_compile
1220 1.1 lukem
1221 1.1 lukem # We need to know -static, to get the right output filenames.
1222 1.1 lukem for arg
1223 1.1 lukem do
1224 1.1 lukem case $arg in
1225 1.1 lukem -all-static | -static | -static-libtool-libs)
1226 1.1 lukem case $arg in
1227 1.1 lukem -all-static)
1228 1.1 lukem if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
1229 1.1 lukem $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
1230 1.1 lukem fi
1231 1.1 lukem if test -n "$link_static_flag"; then
1232 1.1 lukem dlopen_self=$dlopen_self_static
1233 1.1 lukem fi
1234 1.1 lukem prefer_static_libs=yes
1235 1.1 lukem ;;
1236 1.1 lukem -static)
1237 1.1 lukem if test -z "$pic_flag" && test -n "$link_static_flag"; then
1238 1.1 lukem dlopen_self=$dlopen_self_static
1239 1.1 lukem fi
1240 1.1 lukem prefer_static_libs=built
1241 1.1 lukem ;;
1242 1.1 lukem -static-libtool-libs)
1243 1.1 lukem if test -z "$pic_flag" && test -n "$link_static_flag"; then
1244 1.1 lukem dlopen_self=$dlopen_self_static
1245 1.1 lukem fi
1246 1.1 lukem prefer_static_libs=yes
1247 1.1 lukem ;;
1248 1.1 lukem esac
1249 1.1 lukem build_libtool_libs=no
1250 1.1 lukem build_old_libs=yes
1251 1.1 lukem break
1252 1.1 lukem ;;
1253 1.1 lukem esac
1254 1.1 lukem done
1255 1.1 lukem
1256 1.1 lukem # See if our shared archives depend on static archives.
1257 1.1 lukem test -n "$old_archive_from_new_cmds" && build_old_libs=yes
1258 1.1 lukem
1259 1.1 lukem # Go through the arguments, transforming them on the way.
1260 1.1 lukem while test "$#" -gt 0; do
1261 1.1 lukem arg="$1"
1262 1.1 lukem shift
1263 1.1 lukem case $arg in
1264 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1265 1.1 lukem qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
1266 1.1 lukem ;;
1267 1.1 lukem *) qarg=$arg ;;
1268 1.1 lukem esac
1269 1.1 lukem libtool_args="$libtool_args $qarg"
1270 1.1 lukem
1271 1.1 lukem # If the previous option needs an argument, assign it.
1272 1.1 lukem if test -n "$prev"; then
1273 1.1 lukem case $prev in
1274 1.1 lukem output)
1275 1.1 lukem compile_command="$compile_command @OUTPUT@"
1276 1.1 lukem finalize_command="$finalize_command @OUTPUT@"
1277 1.1 lukem ;;
1278 1.1 lukem esac
1279 1.1 lukem
1280 1.1 lukem case $prev in
1281 1.1 lukem dlfiles|dlprefiles)
1282 1.1 lukem if test "$preload" = no; then
1283 1.1 lukem # Add the symbol object into the linking commands.
1284 1.1 lukem compile_command="$compile_command @SYMFILE@"
1285 1.1 lukem finalize_command="$finalize_command @SYMFILE@"
1286 1.1 lukem preload=yes
1287 1.1 lukem fi
1288 1.1 lukem case $arg in
1289 1.1 lukem *.la | *.lo) ;; # We handle these cases below.
1290 1.1 lukem force)
1291 1.1 lukem if test "$dlself" = no; then
1292 1.1 lukem dlself=needless
1293 1.1 lukem export_dynamic=yes
1294 1.1 lukem fi
1295 1.1 lukem prev=
1296 1.1 lukem continue
1297 1.1 lukem ;;
1298 1.1 lukem self)
1299 1.1 lukem if test "$prev" = dlprefiles; then
1300 1.1 lukem dlself=yes
1301 1.1 lukem elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1302 1.1 lukem dlself=yes
1303 1.1 lukem else
1304 1.1 lukem dlself=needless
1305 1.1 lukem export_dynamic=yes
1306 1.1 lukem fi
1307 1.1 lukem prev=
1308 1.1 lukem continue
1309 1.1 lukem ;;
1310 1.1 lukem *)
1311 1.1 lukem if test "$prev" = dlfiles; then
1312 1.1 lukem dlfiles="$dlfiles $arg"
1313 1.1 lukem else
1314 1.1 lukem dlprefiles="$dlprefiles $arg"
1315 1.1 lukem fi
1316 1.1 lukem prev=
1317 1.1 lukem continue
1318 1.1 lukem ;;
1319 1.1 lukem esac
1320 1.1 lukem ;;
1321 1.1 lukem expsyms)
1322 1.1 lukem export_symbols="$arg"
1323 1.1 lukem if test ! -f "$arg"; then
1324 1.1 lukem $echo "$modename: symbol file \`$arg' does not exist"
1325 1.1 lukem exit $EXIT_FAILURE
1326 1.1 lukem fi
1327 1.1 lukem prev=
1328 1.1 lukem continue
1329 1.1 lukem ;;
1330 1.1 lukem expsyms_regex)
1331 1.1 lukem export_symbols_regex="$arg"
1332 1.1 lukem prev=
1333 1.1 lukem continue
1334 1.1 lukem ;;
1335 1.1 lukem inst_prefix)
1336 1.1 lukem inst_prefix_dir="$arg"
1337 1.1 lukem prev=
1338 1.1 lukem continue
1339 1.1 lukem ;;
1340 1.1 lukem precious_regex)
1341 1.1 lukem precious_files_regex="$arg"
1342 1.1 lukem prev=
1343 1.1 lukem continue
1344 1.1 lukem ;;
1345 1.1 lukem release)
1346 1.1 lukem release="-$arg"
1347 1.1 lukem prev=
1348 1.1 lukem continue
1349 1.1 lukem ;;
1350 1.1 lukem objectlist)
1351 1.1 lukem if test -f "$arg"; then
1352 1.1 lukem save_arg=$arg
1353 1.1 lukem moreargs=
1354 1.1 lukem for fil in `cat $save_arg`
1355 1.1 lukem do
1356 1.1 lukem # moreargs="$moreargs $fil"
1357 1.1 lukem arg=$fil
1358 1.1 lukem # A libtool-controlled object.
1359 1.1 lukem
1360 1.1 lukem # Check to see that this really is a libtool object.
1361 1.1 lukem if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1362 1.1 lukem pic_object=
1363 1.1 lukem non_pic_object=
1364 1.1 lukem
1365 1.1 lukem # Read the .lo file
1366 1.1 lukem # If there is no directory component, then add one.
1367 1.1 lukem case $arg in
1368 1.1 lukem */* | *\\*) . $arg ;;
1369 1.1 lukem *) . ./$arg ;;
1370 1.1 lukem esac
1371 1.1 lukem
1372 1.1 lukem if test -z "$pic_object" || \
1373 1.1 lukem test -z "$non_pic_object" ||
1374 1.1 lukem test "$pic_object" = none && \
1375 1.1 lukem test "$non_pic_object" = none; then
1376 1.1 lukem $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1377 1.1 lukem exit $EXIT_FAILURE
1378 1.1 lukem fi
1379 1.1 lukem
1380 1.1 lukem # Extract subdirectory from the argument.
1381 1.1 lukem xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1382 1.1 lukem if test "X$xdir" = "X$arg"; then
1383 1.1 lukem xdir=
1384 1.1 lukem else
1385 1.1 lukem xdir="$xdir/"
1386 1.1 lukem fi
1387 1.1 lukem
1388 1.1 lukem if test "$pic_object" != none; then
1389 1.1 lukem # Prepend the subdirectory the object is found in.
1390 1.1 lukem pic_object="$xdir$pic_object"
1391 1.1 lukem
1392 1.1 lukem if test "$prev" = dlfiles; then
1393 1.1 lukem if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1394 1.1 lukem dlfiles="$dlfiles $pic_object"
1395 1.1 lukem prev=
1396 1.1 lukem continue
1397 1.1 lukem else
1398 1.1 lukem # If libtool objects are unsupported, then we need to preload.
1399 1.1 lukem prev=dlprefiles
1400 1.1 lukem fi
1401 1.1 lukem fi
1402 1.1 lukem
1403 1.1 lukem # CHECK ME: I think I busted this. -Ossama
1404 1.1 lukem if test "$prev" = dlprefiles; then
1405 1.1 lukem # Preload the old-style object.
1406 1.1 lukem dlprefiles="$dlprefiles $pic_object"
1407 1.1 lukem prev=
1408 1.1 lukem fi
1409 1.1 lukem
1410 1.1 lukem # A PIC object.
1411 1.1 lukem libobjs="$libobjs $pic_object"
1412 1.1 lukem arg="$pic_object"
1413 1.1 lukem fi
1414 1.1 lukem
1415 1.1 lukem # Non-PIC object.
1416 1.1 lukem if test "$non_pic_object" != none; then
1417 1.1 lukem # Prepend the subdirectory the object is found in.
1418 1.1 lukem non_pic_object="$xdir$non_pic_object"
1419 1.1 lukem
1420 1.1 lukem # A standard non-PIC object
1421 1.1 lukem non_pic_objects="$non_pic_objects $non_pic_object"
1422 1.1 lukem if test -z "$pic_object" || test "$pic_object" = none ; then
1423 1.1 lukem arg="$non_pic_object"
1424 1.1 lukem fi
1425 1.1 lukem else
1426 1.1 lukem # If the PIC object exists, use it instead.
1427 1.1 lukem # $xdir was prepended to $pic_object above.
1428 1.1 lukem non_pic_object="$pic_object"
1429 1.1 lukem non_pic_objects="$non_pic_objects $non_pic_object"
1430 1.1 lukem fi
1431 1.1 lukem else
1432 1.1 lukem # Only an error if not doing a dry-run.
1433 1.1 lukem if test -z "$run"; then
1434 1.1 lukem $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1435 1.1 lukem exit $EXIT_FAILURE
1436 1.1 lukem else
1437 1.1 lukem # Dry-run case.
1438 1.1 lukem
1439 1.1 lukem # Extract subdirectory from the argument.
1440 1.1 lukem xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1441 1.1 lukem if test "X$xdir" = "X$arg"; then
1442 1.1 lukem xdir=
1443 1.1 lukem else
1444 1.1 lukem xdir="$xdir/"
1445 1.1 lukem fi
1446 1.1 lukem
1447 1.1 lukem pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1448 1.1 lukem non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1449 1.1 lukem libobjs="$libobjs $pic_object"
1450 1.1 lukem non_pic_objects="$non_pic_objects $non_pic_object"
1451 1.1 lukem fi
1452 1.1 lukem fi
1453 1.1 lukem done
1454 1.1 lukem else
1455 1.1 lukem $echo "$modename: link input file \`$save_arg' does not exist"
1456 1.1 lukem exit $EXIT_FAILURE
1457 1.1 lukem fi
1458 1.1 lukem arg=$save_arg
1459 1.1 lukem prev=
1460 1.1 lukem continue
1461 1.1 lukem ;;
1462 1.1 lukem rpath | xrpath)
1463 1.1 lukem # We need an absolute path.
1464 1.1 lukem case $arg in
1465 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*) ;;
1466 1.1 lukem *)
1467 1.1 lukem $echo "$modename: only absolute run-paths are allowed" 1>&2
1468 1.1 lukem exit $EXIT_FAILURE
1469 1.1 lukem ;;
1470 1.1 lukem esac
1471 1.1 lukem # Canonicalise the pathname
1472 1.1 lukem tmp=""
1473 1.1 lukem while test "$arg" != "$tmp"
1474 1.1 lukem do
1475 1.1 lukem tmp=$arg
1476 1.1 lukem arg=`$echo "X$arg" | $Xsed -e 's%[^/.][^/.]*/\.\.%%g' -e 's%/\./%/%g' -e 's%//*%/%g' -e 's%/$%%g'`
1477 1.1 lukem done
1478 1.1 lukem if test "$prev" = rpath; then
1479 1.1 lukem case "$rpath " in
1480 1.1 lukem *" $arg "*) ;;
1481 1.1 lukem *) rpath="$rpath $arg" ;;
1482 1.1 lukem esac
1483 1.1 lukem else
1484 1.1 lukem case "$xrpath " in
1485 1.1 lukem *" $arg "*) ;;
1486 1.1 lukem *) xrpath="$xrpath $arg" ;;
1487 1.1 lukem esac
1488 1.1 lukem fi
1489 1.1 lukem prev=
1490 1.1 lukem continue
1491 1.1 lukem ;;
1492 1.1 lukem xcompiler)
1493 1.1 lukem compiler_flags="$compiler_flags $qarg"
1494 1.1 lukem prev=
1495 1.1 lukem compile_command="$compile_command $qarg"
1496 1.1 lukem finalize_command="$finalize_command $qarg"
1497 1.1 lukem continue
1498 1.1 lukem ;;
1499 1.1 lukem xlinker)
1500 1.1 lukem linker_flags="$linker_flags $qarg"
1501 1.1 lukem compiler_flags="$compiler_flags $wl$qarg"
1502 1.1 lukem prev=
1503 1.1 lukem compile_command="$compile_command $wl$qarg"
1504 1.1 lukem finalize_command="$finalize_command $wl$qarg"
1505 1.1 lukem continue
1506 1.1 lukem ;;
1507 1.1 lukem xcclinker)
1508 1.1 lukem linker_flags="$linker_flags $qarg"
1509 1.1 lukem compiler_flags="$compiler_flags $qarg"
1510 1.1 lukem prev=
1511 1.1 lukem compile_command="$compile_command $qarg"
1512 1.1 lukem finalize_command="$finalize_command $qarg"
1513 1.1 lukem continue
1514 1.1 lukem ;;
1515 1.1 lukem shrext)
1516 1.1 lukem shrext_cmds="$arg"
1517 1.1 lukem prev=
1518 1.1 lukem continue
1519 1.1 lukem ;;
1520 1.1 lukem darwin_framework|darwin_framework_skip)
1521 1.1 lukem test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
1522 1.1 lukem compile_command="$compile_command $arg"
1523 1.1 lukem finalize_command="$finalize_command $arg"
1524 1.1 lukem prev=
1525 1.1 lukem continue
1526 1.1 lukem ;;
1527 1.1 lukem *)
1528 1.1 lukem eval "$prev=\"\$arg\""
1529 1.1 lukem prev=
1530 1.1 lukem continue
1531 1.1 lukem ;;
1532 1.1 lukem esac
1533 1.1 lukem fi # test -n "$prev"
1534 1.1 lukem
1535 1.1 lukem prevarg="$arg"
1536 1.1 lukem
1537 1.1 lukem case $arg in
1538 1.1 lukem -all-static)
1539 1.1 lukem if test -n "$link_static_flag"; then
1540 1.1 lukem compile_command="$compile_command $link_static_flag"
1541 1.1 lukem finalize_command="$finalize_command $link_static_flag"
1542 1.1 lukem fi
1543 1.1 lukem continue
1544 1.1 lukem ;;
1545 1.1 lukem
1546 1.1 lukem -allow-undefined)
1547 1.1 lukem # FIXME: remove this flag sometime in the future.
1548 1.1 lukem $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1549 1.1 lukem continue
1550 1.1 lukem ;;
1551 1.1 lukem
1552 1.1 lukem -avoid-version)
1553 1.1 lukem avoid_version=yes
1554 1.1 lukem continue
1555 1.1 lukem ;;
1556 1.1 lukem
1557 1.1 lukem -dlopen)
1558 1.1 lukem prev=dlfiles
1559 1.1 lukem continue
1560 1.1 lukem ;;
1561 1.1 lukem
1562 1.1 lukem -dlpreopen)
1563 1.1 lukem prev=dlprefiles
1564 1.1 lukem continue
1565 1.1 lukem ;;
1566 1.1 lukem
1567 1.1 lukem -export-dynamic)
1568 1.1 lukem export_dynamic=yes
1569 1.1 lukem continue
1570 1.1 lukem ;;
1571 1.1 lukem
1572 1.1 lukem -export-symbols | -export-symbols-regex)
1573 1.1 lukem if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1574 1.1 lukem $echo "$modename: more than one -exported-symbols argument is not allowed"
1575 1.1 lukem exit $EXIT_FAILURE
1576 1.1 lukem fi
1577 1.1 lukem if test "X$arg" = "X-export-symbols"; then
1578 1.1 lukem prev=expsyms
1579 1.1 lukem else
1580 1.1 lukem prev=expsyms_regex
1581 1.1 lukem fi
1582 1.1 lukem continue
1583 1.1 lukem ;;
1584 1.1 lukem
1585 1.1 lukem -framework|-arch|-isysroot)
1586 1.1 lukem case " $CC " in
1587 1.1 lukem *" ${arg} ${1} "* | *" ${arg} ${1} "*)
1588 1.1 lukem prev=darwin_framework_skip ;;
1589 1.1 lukem *) compiler_flags="$compiler_flags $arg"
1590 1.1 lukem prev=darwin_framework ;;
1591 1.1 lukem esac
1592 1.1 lukem compile_command="$compile_command $arg"
1593 1.1 lukem finalize_command="$finalize_command $arg"
1594 1.1 lukem continue
1595 1.1 lukem ;;
1596 1.1 lukem
1597 1.1 lukem -inst-prefix-dir)
1598 1.1 lukem prev=inst_prefix
1599 1.1 lukem continue
1600 1.1 lukem ;;
1601 1.1 lukem
1602 1.1 lukem # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1603 1.1 lukem # so, if we see these flags be careful not to treat them like -L
1604 1.1 lukem -L[A-Z][A-Z]*:*)
1605 1.1 lukem case $with_gcc/$host in
1606 1.1 lukem no/*-*-irix* | /*-*-irix*)
1607 1.1 lukem compile_command="$compile_command $arg"
1608 1.1 lukem finalize_command="$finalize_command $arg"
1609 1.1 lukem ;;
1610 1.1 lukem esac
1611 1.1 lukem continue
1612 1.1 lukem ;;
1613 1.1 lukem
1614 1.1 lukem -L*)
1615 1.1 lukem dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1616 1.1 lukem # We need an absolute path.
1617 1.1 lukem case $dir in
1618 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*) ;;
1619 1.1 lukem *)
1620 1.1 lukem absdir=`cd "$dir" && pwd`
1621 1.1 lukem if test -z "$absdir"; then
1622 1.1 lukem $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1623 1.1 lukem absdir="$dir"
1624 1.1 lukem notinst_path="$notinst_path $dir"
1625 1.1 lukem fi
1626 1.1 lukem dir="$absdir"
1627 1.1 lukem ;;
1628 1.1 lukem esac
1629 1.1 lukem case "$deplibs " in
1630 1.1 lukem *" -L$dir "*) ;;
1631 1.1 lukem *)
1632 1.1 lukem deplibs="$deplibs -L$dir"
1633 1.1 lukem lib_search_path="$lib_search_path $dir"
1634 1.1 lukem ;;
1635 1.1 lukem esac
1636 1.1 lukem case $host in
1637 1.1 lukem *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1638 1.1 lukem testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
1639 1.1 lukem case :$dllsearchpath: in
1640 1.1 lukem *":$dir:"*) ;;
1641 1.1 lukem *) dllsearchpath="$dllsearchpath:$dir";;
1642 1.1 lukem esac
1643 1.1 lukem case :$dllsearchpath: in
1644 1.1 lukem *":$testbindir:"*) ;;
1645 1.1 lukem *) dllsearchpath="$dllsearchpath:$testbindir";;
1646 1.1 lukem esac
1647 1.1 lukem ;;
1648 1.1 lukem esac
1649 1.1 lukem continue
1650 1.1 lukem ;;
1651 1.1 lukem
1652 1.1 lukem -l*)
1653 1.1 lukem if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1654 1.1 lukem case $host in
1655 1.1 lukem *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
1656 1.1 lukem # These systems don't actually have a C or math library (as such)
1657 1.1 lukem continue
1658 1.1 lukem ;;
1659 1.1 lukem *-*-os2*)
1660 1.1 lukem # These systems don't actually have a C library (as such)
1661 1.1 lukem test "X$arg" = "X-lc" && continue
1662 1.1 lukem ;;
1663 1.1 lukem *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1664 1.1 lukem # Do not include libc due to us having libc/libc_r.
1665 1.1 lukem test "X$arg" = "X-lc" && continue
1666 1.1 lukem ;;
1667 1.1 lukem *-*-rhapsody* | *-*-darwin1.[012])
1668 1.1 lukem # Rhapsody C and math libraries are in the System framework
1669 1.1 lukem deplibs="$deplibs -framework System"
1670 1.1 lukem continue
1671 1.1 lukem ;;
1672 1.1 lukem *-*-sco3.2v5* | *-*-sco5v6*)
1673 1.1 lukem # Causes problems with __ctype
1674 1.1 lukem test "X$arg" = "X-lc" && continue
1675 1.1 lukem ;;
1676 1.1 lukem *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
1677 1.1 lukem # Compiler inserts libc in the correct place for threads to work
1678 1.1 lukem test "X$arg" = "X-lc" && continue
1679 1.1 lukem ;;
1680 1.1 lukem esac
1681 1.1 lukem elif test "X$arg" = "X-lc_r"; then
1682 1.1 lukem case $host in
1683 1.1 lukem *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1684 1.1 lukem # Do not include libc_r directly, use -pthread flag.
1685 1.1 lukem continue
1686 1.1 lukem ;;
1687 1.1 lukem esac
1688 1.1 lukem fi
1689 1.1 lukem deplibs="$deplibs $arg"
1690 1.1 lukem continue
1691 1.1 lukem ;;
1692 1.1 lukem
1693 1.1 lukem # Tru64 UNIX uses -model [arg] to determine the layout of C++
1694 1.1 lukem # classes, name mangling, and exception handling.
1695 1.1 lukem -model)
1696 1.1 lukem compile_command="$compile_command $arg"
1697 1.1 lukem compiler_flags="$compiler_flags $arg"
1698 1.1 lukem finalize_command="$finalize_command $arg"
1699 1.1 lukem prev=xcompiler
1700 1.1 lukem continue
1701 1.1 lukem ;;
1702 1.1 lukem
1703 1.1 lukem -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
1704 1.1 lukem compiler_flags="$compiler_flags $arg"
1705 1.1 lukem compile_command="$compile_command $arg"
1706 1.1 lukem finalize_command="$finalize_command $arg"
1707 1.1 lukem case $host:$arg in
1708 1.1 lukem *-*-dragonfly*:-pthread)
1709 1.1 lukem # pkgsrc hack to use -pthread in .la file for final linking
1710 1.1 lukem deplibs="$deplibs $arg"
1711 1.1 lukem ;;
1712 1.1 lukem esac
1713 1.1 lukem continue
1714 1.1 lukem ;;
1715 1.1 lukem
1716 1.1 lukem -multi_module)
1717 1.1 lukem single_module="${wl}-multi_module"
1718 1.1 lukem continue
1719 1.1 lukem ;;
1720 1.1 lukem
1721 1.1 lukem -module)
1722 1.1 lukem module=yes
1723 1.1 lukem continue
1724 1.1 lukem ;;
1725 1.1 lukem
1726 1.1 lukem # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
1727 1.1 lukem # -r[0-9][0-9]* specifies the processor on the SGI compiler
1728 1.1 lukem # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
1729 1.1 lukem # +DA*, +DD* enable 64-bit mode on the HP compiler
1730 1.1 lukem # -q* pass through compiler args for the IBM compiler
1731 1.1 lukem # -m* pass through architecture-specific compiler args for GCC
1732 1.1 lukem # -m*, -t[45]*, -txscale* pass through architecture-specific
1733 1.1 lukem # compiler args for GCC
1734 1.1 lukem # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
1735 1.1 lukem # -F/path gives path to uninstalled frameworks, gcc on darwin
1736 1.1 lukem # @file GCC response files
1737 1.1 lukem -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
1738 1.1 lukem -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
1739 1.1 lukem
1740 1.1 lukem # Unknown arguments in both finalize_command and compile_command need
1741 1.1 lukem # to be aesthetically quoted because they are evaled later.
1742 1.1 lukem arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1743 1.1 lukem case $arg in
1744 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1745 1.1 lukem arg="\"$arg\""
1746 1.1 lukem ;;
1747 1.1 lukem esac
1748 1.1 lukem compile_command="$compile_command $arg"
1749 1.1 lukem finalize_command="$finalize_command $arg"
1750 1.1 lukem compiler_flags="$compiler_flags $arg"
1751 1.1 lukem continue
1752 1.1 lukem ;;
1753 1.1 lukem
1754 1.1 lukem -shrext)
1755 1.1 lukem prev=shrext
1756 1.1 lukem continue
1757 1.1 lukem ;;
1758 1.1 lukem
1759 1.1 lukem -no-fast-install)
1760 1.1 lukem fast_install=no
1761 1.1 lukem continue
1762 1.1 lukem ;;
1763 1.1 lukem
1764 1.1 lukem -no-install)
1765 1.1 lukem case $host in
1766 1.1 lukem *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
1767 1.1 lukem # The PATH hackery in wrapper scripts is required on Windows
1768 1.1 lukem # and Darwin in order for the loader to find any dlls it needs.
1769 1.1 lukem $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1770 1.1 lukem $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1771 1.1 lukem fast_install=no
1772 1.1 lukem ;;
1773 1.1 lukem *) no_install=yes ;;
1774 1.1 lukem esac
1775 1.1 lukem continue
1776 1.1 lukem ;;
1777 1.1 lukem
1778 1.1 lukem -no-undefined)
1779 1.1 lukem allow_undefined=no
1780 1.1 lukem continue
1781 1.1 lukem ;;
1782 1.1 lukem
1783 1.1 lukem -objectlist)
1784 1.1 lukem prev=objectlist
1785 1.1 lukem continue
1786 1.1 lukem ;;
1787 1.1 lukem
1788 1.1 lukem -o) prev=output ;;
1789 1.1 lukem
1790 1.1 lukem -precious-files-regex)
1791 1.1 lukem prev=precious_regex
1792 1.1 lukem continue
1793 1.1 lukem ;;
1794 1.1 lukem
1795 1.1 lukem -release)
1796 1.1 lukem prev=release
1797 1.1 lukem continue
1798 1.1 lukem ;;
1799 1.1 lukem
1800 1.1 lukem -rpath)
1801 1.1 lukem prev=rpath
1802 1.1 lukem continue
1803 1.1 lukem ;;
1804 1.1 lukem
1805 1.1 lukem -R)
1806 1.1 lukem prev=xrpath
1807 1.1 lukem continue
1808 1.1 lukem ;;
1809 1.1 lukem
1810 1.1 lukem -R*)
1811 1.1 lukem dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1812 1.1 lukem # We need an absolute path.
1813 1.1 lukem case $dir in
1814 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*) ;;
1815 1.1 lukem *)
1816 1.1 lukem $echo "$modename: only absolute run-paths are allowed" 1>&2
1817 1.1 lukem exit $EXIT_FAILURE
1818 1.1 lukem ;;
1819 1.1 lukem esac
1820 1.1 lukem case "$xrpath " in
1821 1.1 lukem *" $dir "*) ;;
1822 1.1 lukem *) xrpath="$xrpath $dir" ;;
1823 1.1 lukem esac
1824 1.1 lukem continue
1825 1.1 lukem ;;
1826 1.1 lukem
1827 1.1 lukem -static | -static-libtool-libs)
1828 1.1 lukem # The effects of -static are defined in a previous loop.
1829 1.1 lukem # We used to do the same as -all-static on platforms that
1830 1.1 lukem # didn't have a PIC flag, but the assumption that the effects
1831 1.1 lukem # would be equivalent was wrong. It would break on at least
1832 1.1 lukem # Digital Unix and AIX.
1833 1.1 lukem continue
1834 1.1 lukem ;;
1835 1.1 lukem
1836 1.1 lukem -thread-safe)
1837 1.1 lukem thread_safe=yes
1838 1.1 lukem continue
1839 1.1 lukem ;;
1840 1.1 lukem
1841 1.1 lukem -version-info)
1842 1.1 lukem prev=vinfo
1843 1.1 lukem continue
1844 1.1 lukem ;;
1845 1.1 lukem -version-number)
1846 1.1 lukem prev=vinfo
1847 1.1 lukem vinfo_number=yes
1848 1.1 lukem continue
1849 1.1 lukem ;;
1850 1.1 lukem
1851 1.1 lukem -Wc,*)
1852 1.1 lukem args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1853 1.1 lukem arg=
1854 1.1 lukem save_ifs="$IFS"; IFS=','
1855 1.1 lukem for flag in $args; do
1856 1.1 lukem IFS="$save_ifs"
1857 1.1 lukem case $flag in
1858 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1859 1.1 lukem flag="\"$flag\""
1860 1.1 lukem ;;
1861 1.1 lukem esac
1862 1.1 lukem arg="$arg $wl$flag"
1863 1.1 lukem compiler_flags="$compiler_flags $flag"
1864 1.1 lukem done
1865 1.1 lukem IFS="$save_ifs"
1866 1.1 lukem arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1867 1.1 lukem ;;
1868 1.1 lukem
1869 1.1 lukem -Wl,*)
1870 1.1 lukem args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1871 1.1 lukem arg=
1872 1.1 lukem save_ifs="$IFS"; IFS=','
1873 1.1 lukem for flag in $args; do
1874 1.1 lukem IFS="$save_ifs"
1875 1.1 lukem case $flag in
1876 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1877 1.1 lukem flag="\"$flag\""
1878 1.1 lukem ;;
1879 1.1 lukem esac
1880 1.1 lukem arg="$arg $wl$flag"
1881 1.1 lukem compiler_flags="$compiler_flags $wl$flag"
1882 1.1 lukem linker_flags="$linker_flags $flag"
1883 1.1 lukem done
1884 1.1 lukem IFS="$save_ifs"
1885 1.1 lukem arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1886 1.1 lukem ;;
1887 1.1 lukem
1888 1.1 lukem -Xcompiler)
1889 1.1 lukem prev=xcompiler
1890 1.1 lukem continue
1891 1.1 lukem ;;
1892 1.1 lukem
1893 1.1 lukem -Xlinker)
1894 1.1 lukem prev=xlinker
1895 1.1 lukem continue
1896 1.1 lukem ;;
1897 1.1 lukem
1898 1.1 lukem -XCClinker)
1899 1.1 lukem prev=xcclinker
1900 1.1 lukem continue
1901 1.1 lukem ;;
1902 1.1 lukem
1903 1.1 lukem # Some other compiler flag.
1904 1.1 lukem -* | +*)
1905 1.1 lukem # Unknown arguments in both finalize_command and compile_command need
1906 1.1 lukem # to be aesthetically quoted because they are evaled later.
1907 1.1 lukem arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1908 1.1 lukem case $arg in
1909 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1910 1.1 lukem arg="\"$arg\""
1911 1.1 lukem ;;
1912 1.1 lukem esac
1913 1.1 lukem ;;
1914 1.1 lukem
1915 1.1 lukem *.$objext)
1916 1.1 lukem # A standard object.
1917 1.1 lukem objs="$objs $arg"
1918 1.1 lukem ;;
1919 1.1 lukem
1920 1.1 lukem *.lo)
1921 1.1 lukem # A libtool-controlled object.
1922 1.1 lukem
1923 1.1 lukem # Check to see that this really is a libtool object.
1924 1.1 lukem if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1925 1.1 lukem pic_object=
1926 1.1 lukem non_pic_object=
1927 1.1 lukem
1928 1.1 lukem # Read the .lo file
1929 1.1 lukem # If there is no directory component, then add one.
1930 1.1 lukem case $arg in
1931 1.1 lukem */* | *\\*) . $arg ;;
1932 1.1 lukem *) . ./$arg ;;
1933 1.1 lukem esac
1934 1.1 lukem
1935 1.1 lukem if test -z "$pic_object" || \
1936 1.1 lukem test -z "$non_pic_object" ||
1937 1.1 lukem test "$pic_object" = none && \
1938 1.1 lukem test "$non_pic_object" = none; then
1939 1.1 lukem $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1940 1.1 lukem exit $EXIT_FAILURE
1941 1.1 lukem fi
1942 1.1 lukem
1943 1.1 lukem # Extract subdirectory from the argument.
1944 1.1 lukem xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1945 1.1 lukem if test "X$xdir" = "X$arg"; then
1946 1.1 lukem xdir=
1947 1.1 lukem else
1948 1.1 lukem xdir="$xdir/"
1949 1.1 lukem fi
1950 1.1 lukem
1951 1.1 lukem if test "$pic_object" != none; then
1952 1.1 lukem # Prepend the subdirectory the object is found in.
1953 1.1 lukem pic_object="$xdir$pic_object"
1954 1.1 lukem
1955 1.1 lukem if test "$prev" = dlfiles; then
1956 1.1 lukem if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1957 1.1 lukem dlfiles="$dlfiles $pic_object"
1958 1.1 lukem prev=
1959 1.1 lukem continue
1960 1.1 lukem else
1961 1.1 lukem # If libtool objects are unsupported, then we need to preload.
1962 1.1 lukem prev=dlprefiles
1963 1.1 lukem fi
1964 1.1 lukem fi
1965 1.1 lukem
1966 1.1 lukem # CHECK ME: I think I busted this. -Ossama
1967 1.1 lukem if test "$prev" = dlprefiles; then
1968 1.1 lukem # Preload the old-style object.
1969 1.1 lukem dlprefiles="$dlprefiles $pic_object"
1970 1.1 lukem prev=
1971 1.1 lukem fi
1972 1.1 lukem
1973 1.1 lukem # A PIC object.
1974 1.1 lukem libobjs="$libobjs $pic_object"
1975 1.1 lukem arg="$pic_object"
1976 1.1 lukem fi
1977 1.1 lukem
1978 1.1 lukem # Non-PIC object.
1979 1.1 lukem if test "$non_pic_object" != none; then
1980 1.1 lukem # Prepend the subdirectory the object is found in.
1981 1.1 lukem non_pic_object="$xdir$non_pic_object"
1982 1.1 lukem
1983 1.1 lukem # A standard non-PIC object
1984 1.1 lukem non_pic_objects="$non_pic_objects $non_pic_object"
1985 1.1 lukem if test -z "$pic_object" || test "$pic_object" = none ; then
1986 1.1 lukem arg="$non_pic_object"
1987 1.1 lukem fi
1988 1.1 lukem else
1989 1.1 lukem # If the PIC object exists, use it instead.
1990 1.1 lukem # $xdir was prepended to $pic_object above.
1991 1.1 lukem non_pic_object="$pic_object"
1992 1.1 lukem non_pic_objects="$non_pic_objects $non_pic_object"
1993 1.1 lukem fi
1994 1.1 lukem else
1995 1.1 lukem # Only an error if not doing a dry-run.
1996 1.1 lukem if test -z "$run"; then
1997 1.1 lukem $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1998 1.1 lukem exit $EXIT_FAILURE
1999 1.1 lukem else
2000 1.1 lukem # Dry-run case.
2001 1.1 lukem
2002 1.1 lukem # Extract subdirectory from the argument.
2003 1.1 lukem xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
2004 1.1 lukem if test "X$xdir" = "X$arg"; then
2005 1.1 lukem xdir=
2006 1.1 lukem else
2007 1.1 lukem xdir="$xdir/"
2008 1.1 lukem fi
2009 1.1 lukem
2010 1.1 lukem pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
2011 1.1 lukem non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
2012 1.1 lukem libobjs="$libobjs $pic_object"
2013 1.1 lukem non_pic_objects="$non_pic_objects $non_pic_object"
2014 1.1 lukem fi
2015 1.1 lukem fi
2016 1.1 lukem ;;
2017 1.1 lukem
2018 1.1 lukem *.$libext)
2019 1.1 lukem # An archive.
2020 1.1 lukem deplibs="$deplibs $arg"
2021 1.1 lukem old_deplibs="$old_deplibs $arg"
2022 1.1 lukem continue
2023 1.1 lukem ;;
2024 1.1 lukem
2025 1.1 lukem *.la)
2026 1.1 lukem # A libtool-controlled library.
2027 1.1 lukem
2028 1.1 lukem if test "$prev" = dlfiles; then
2029 1.1 lukem # This library was specified with -dlopen.
2030 1.1 lukem dlfiles="$dlfiles $arg"
2031 1.1 lukem prev=
2032 1.1 lukem elif test "$prev" = dlprefiles; then
2033 1.1 lukem # The library was specified with -dlpreopen.
2034 1.1 lukem dlprefiles="$dlprefiles $arg"
2035 1.1 lukem prev=
2036 1.1 lukem else
2037 1.1 lukem deplibs="$deplibs $arg"
2038 1.1 lukem fi
2039 1.1 lukem continue
2040 1.1 lukem ;;
2041 1.1 lukem
2042 1.1 lukem # Some other compiler argument.
2043 1.1 lukem *)
2044 1.1 lukem # Unknown arguments in both finalize_command and compile_command need
2045 1.1 lukem # to be aesthetically quoted because they are evaled later.
2046 1.1 lukem arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
2047 1.1 lukem case $arg in
2048 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
2049 1.1 lukem arg="\"$arg\""
2050 1.1 lukem ;;
2051 1.1 lukem esac
2052 1.1 lukem ;;
2053 1.1 lukem esac # arg
2054 1.1 lukem
2055 1.1 lukem # Now actually substitute the argument into the commands.
2056 1.1 lukem if test -n "$arg"; then
2057 1.1 lukem compile_command="$compile_command $arg"
2058 1.1 lukem finalize_command="$finalize_command $arg"
2059 1.1 lukem fi
2060 1.1 lukem done # argument parsing loop
2061 1.1 lukem
2062 1.1 lukem if test -n "$prev"; then
2063 1.1 lukem $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
2064 1.1 lukem $echo "$help" 1>&2
2065 1.1 lukem exit $EXIT_FAILURE
2066 1.1 lukem fi
2067 1.1 lukem
2068 1.1 lukem if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
2069 1.1 lukem eval arg=\"$export_dynamic_flag_spec\"
2070 1.1 lukem compile_command="$compile_command $arg"
2071 1.1 lukem finalize_command="$finalize_command $arg"
2072 1.1 lukem fi
2073 1.1 lukem
2074 1.1 lukem oldlibs=
2075 1.1 lukem # calculate the name of the file, without its directory
2076 1.1 lukem outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
2077 1.1 lukem libobjs_save="$libobjs"
2078 1.1 lukem
2079 1.1 lukem if test -n "$shlibpath_var"; then
2080 1.1 lukem # get the directories listed in $shlibpath_var
2081 1.1 lukem eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
2082 1.1 lukem else
2083 1.1 lukem shlib_search_path=
2084 1.1 lukem fi
2085 1.1 lukem eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
2086 1.1 lukem eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
2087 1.1 lukem
2088 1.1 lukem output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2089 1.1 lukem if test "X$output_objdir" = "X$output"; then
2090 1.1 lukem output_objdir="$objdir"
2091 1.1 lukem else
2092 1.1 lukem output_objdir="$output_objdir/$objdir"
2093 1.1 lukem fi
2094 1.1 lukem # Create the object directory.
2095 1.1 lukem if test ! -d "$output_objdir"; then
2096 1.1 lukem $show "$mkdir $output_objdir"
2097 1.1 lukem $run $mkdir $output_objdir
2098 1.1 lukem exit_status=$?
2099 1.1 lukem if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
2100 1.1 lukem exit $exit_status
2101 1.1 lukem fi
2102 1.1 lukem fi
2103 1.1 lukem
2104 1.1 lukem # Determine the type of output
2105 1.1 lukem case $output in
2106 1.1 lukem "")
2107 1.1 lukem $echo "$modename: you must specify an output file" 1>&2
2108 1.1 lukem $echo "$help" 1>&2
2109 1.1 lukem exit $EXIT_FAILURE
2110 1.1 lukem ;;
2111 1.1 lukem *.$libext) linkmode=oldlib ;;
2112 1.1 lukem *.lo | *.$objext) linkmode=obj ;;
2113 1.1 lukem *.la) linkmode=lib ;;
2114 1.1 lukem *) linkmode=prog ;; # Anything else should be a program.
2115 1.1 lukem esac
2116 1.1 lukem
2117 1.1 lukem case $host in
2118 1.1 lukem *cygwin* | *mingw* | *pw32*)
2119 1.1 lukem # don't eliminate duplications in $postdeps and $predeps
2120 1.1 lukem duplicate_compiler_generated_deps=yes
2121 1.1 lukem ;;
2122 1.1 lukem *)
2123 1.1 lukem duplicate_compiler_generated_deps=$duplicate_deps
2124 1.1 lukem ;;
2125 1.1 lukem esac
2126 1.1 lukem specialdeplibs=
2127 1.1 lukem
2128 1.1 lukem libs=
2129 1.1 lukem # Find all interdependent deplibs by searching for libraries
2130 1.1 lukem # that are linked more than once (e.g. -la -lb -la)
2131 1.1 lukem for deplib in $deplibs; do
2132 1.1 lukem if test "X$duplicate_deps" = "Xyes" ; then
2133 1.1 lukem case "$libs " in
2134 1.1 lukem *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2135 1.1 lukem esac
2136 1.1 lukem fi
2137 1.1 lukem libs="$libs $deplib"
2138 1.1 lukem done
2139 1.1 lukem
2140 1.1 lukem if test "$linkmode" = lib; then
2141 1.1 lukem libs="$predeps $libs $compiler_lib_search_path $postdeps"
2142 1.1 lukem
2143 1.1 lukem # Compute libraries that are listed more than once in $predeps
2144 1.1 lukem # $postdeps and mark them as special (i.e., whose duplicates are
2145 1.1 lukem # not to be eliminated).
2146 1.1 lukem pre_post_deps=
2147 1.1 lukem if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
2148 1.1 lukem for pre_post_dep in $predeps $postdeps; do
2149 1.1 lukem case "$pre_post_deps " in
2150 1.1 lukem *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
2151 1.1 lukem esac
2152 1.1 lukem pre_post_deps="$pre_post_deps $pre_post_dep"
2153 1.1 lukem done
2154 1.1 lukem fi
2155 1.1 lukem pre_post_deps=
2156 1.1 lukem fi
2157 1.1 lukem
2158 1.1 lukem deplibs=
2159 1.1 lukem newdependency_libs=
2160 1.1 lukem newlib_search_path=
2161 1.1 lukem need_relink=no # whether we're linking any uninstalled libtool libraries
2162 1.1 lukem notinst_deplibs= # not-installed libtool libraries
2163 1.1 lukem case $linkmode in
2164 1.1 lukem lib)
2165 1.1 lukem passes="conv link"
2166 1.1 lukem for file in $dlfiles $dlprefiles; do
2167 1.1 lukem case $file in
2168 1.1 lukem *.la) ;;
2169 1.1 lukem *)
2170 1.1 lukem $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
2171 1.1 lukem exit $EXIT_FAILURE
2172 1.1 lukem ;;
2173 1.1 lukem esac
2174 1.1 lukem done
2175 1.1 lukem ;;
2176 1.1 lukem prog)
2177 1.1 lukem compile_deplibs=
2178 1.1 lukem finalize_deplibs=
2179 1.1 lukem alldeplibs=no
2180 1.1 lukem newdlfiles=
2181 1.1 lukem newdlprefiles=
2182 1.1 lukem passes="conv scan dlopen dlpreopen link"
2183 1.1 lukem ;;
2184 1.1 lukem *) passes="conv"
2185 1.1 lukem ;;
2186 1.1 lukem esac
2187 1.1 lukem for pass in $passes; do
2188 1.1 lukem if test "$linkmode,$pass" = "lib,link" ||
2189 1.1 lukem test "$linkmode,$pass" = "prog,scan"; then
2190 1.1 lukem libs="$deplibs"
2191 1.1 lukem deplibs=
2192 1.1 lukem fi
2193 1.1 lukem if test "$linkmode" = prog; then
2194 1.1 lukem case $pass in
2195 1.1 lukem dlopen) libs="$dlfiles" ;;
2196 1.1 lukem dlpreopen) libs="$dlprefiles" ;;
2197 1.1 lukem link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
2198 1.1 lukem esac
2199 1.1 lukem fi
2200 1.1 lukem if test "$pass" = dlopen; then
2201 1.1 lukem # Collect dlpreopened libraries
2202 1.1 lukem save_deplibs="$deplibs"
2203 1.1 lukem deplibs=
2204 1.1 lukem fi
2205 1.1 lukem for deplib in $libs; do
2206 1.1 lukem lib=
2207 1.1 lukem found=no
2208 1.1 lukem case $deplib in
2209 1.1 lukem -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
2210 1.1 lukem if test "$linkmode,$pass" = "prog,link"; then
2211 1.1 lukem compile_deplibs="$deplib $compile_deplibs"
2212 1.1 lukem finalize_deplibs="$deplib $finalize_deplibs"
2213 1.1 lukem else
2214 1.1 lukem compiler_flags="$compiler_flags $deplib"
2215 1.1 lukem fi
2216 1.1 lukem case $host:$deplib in
2217 1.1 lukem *-*-dragonfly*:-pthread)
2218 1.1 lukem # pkgsrc hack to use -pthread in .la file for final linking
2219 1.1 lukem case $linkmode in
2220 1.1 lukem lib)
2221 1.1 lukem deplibs="$deplib $deplibs"
2222 1.1 lukem test "$pass" = conv && continue
2223 1.1 lukem newdependency_libs="$deplib $newdependency_libs"
2224 1.1 lukem ;;
2225 1.1 lukem prog)
2226 1.1 lukem if test "$pass" = conv; then
2227 1.1 lukem deplibs="$deplib $deplibs"
2228 1.1 lukem continue
2229 1.1 lukem fi
2230 1.1 lukem if test "$pass" = scan; then
2231 1.1 lukem deplibs="$deplib $deplibs"
2232 1.1 lukem else
2233 1.1 lukem compile_deplibs="$deplib $compile_deplibs"
2234 1.1 lukem finalize_deplibs="$deplib $finalize_deplibs"
2235 1.1 lukem fi
2236 1.1 lukem ;;
2237 1.1 lukem esac
2238 1.1 lukem ;;
2239 1.1 lukem esac
2240 1.1 lukem continue
2241 1.1 lukem ;;
2242 1.1 lukem -l*)
2243 1.1 lukem if test "$linkmode" != lib && test "$linkmode" != prog; then
2244 1.1 lukem $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
2245 1.1 lukem continue
2246 1.1 lukem fi
2247 1.1 lukem name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
2248 1.1 lukem if test "$linkmode" = lib; then
2249 1.1 lukem searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
2250 1.1 lukem else
2251 1.1 lukem searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
2252 1.1 lukem fi
2253 1.1 lukem for searchdir in $searchdirs; do
2254 1.1 lukem for search_ext in .la $std_shrext .so .a; do
2255 1.1 lukem # Search the libtool library
2256 1.1 lukem lib="$searchdir/lib${name}${search_ext}"
2257 1.1 lukem if test -f "$lib"; then
2258 1.1 lukem if test "$search_ext" = ".la"; then
2259 1.1 lukem found=yes
2260 1.1 lukem else
2261 1.1 lukem found=no
2262 1.1 lukem fi
2263 1.1 lukem break 2
2264 1.1 lukem fi
2265 1.1 lukem done
2266 1.1 lukem done
2267 1.1 lukem if test "$found" != yes; then
2268 1.1 lukem # deplib doesn't seem to be a libtool library
2269 1.1 lukem if test "$linkmode,$pass" = "prog,link"; then
2270 1.1 lukem compile_deplibs="$deplib $compile_deplibs"
2271 1.1 lukem finalize_deplibs="$deplib $finalize_deplibs"
2272 1.1 lukem else
2273 1.1 lukem deplibs="$deplib $deplibs"
2274 1.1 lukem test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2275 1.1 lukem fi
2276 1.1 lukem continue
2277 1.1 lukem else # deplib is a libtool library
2278 1.1 lukem # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
2279 1.1 lukem # We need to do some special things here, and not later.
2280 1.1 lukem if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
2281 1.1 lukem case " $predeps $postdeps " in
2282 1.1 lukem *" $deplib "*)
2283 1.1 lukem if (${SED} -e '2q' $lib |
2284 1.1 lukem grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
2285 1.1 lukem library_names=
2286 1.1 lukem old_library=
2287 1.1 lukem case $lib in
2288 1.1 lukem */* | *\\*) . $lib ;;
2289 1.1 lukem *) . ./$lib ;;
2290 1.1 lukem esac
2291 1.1 lukem for l in $old_library $library_names; do
2292 1.1 lukem ll="$l"
2293 1.1 lukem done
2294 1.1 lukem if test "X$ll" = "X$old_library" ; then # only static version available
2295 1.1 lukem found=no
2296 1.1 lukem ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2297 1.1 lukem test "X$ladir" = "X$lib" && ladir="."
2298 1.1 lukem lib=$ladir/$old_library
2299 1.1 lukem if test "$linkmode,$pass" = "prog,link"; then
2300 1.1 lukem compile_deplibs="$deplib $compile_deplibs"
2301 1.1 lukem finalize_deplibs="$deplib $finalize_deplibs"
2302 1.1 lukem else
2303 1.1 lukem deplibs="$deplib $deplibs"
2304 1.1 lukem test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2305 1.1 lukem fi
2306 1.1 lukem continue
2307 1.1 lukem fi
2308 1.1 lukem fi
2309 1.1 lukem ;;
2310 1.1 lukem *) ;;
2311 1.1 lukem esac
2312 1.1 lukem fi
2313 1.1 lukem fi
2314 1.1 lukem ;; # -l
2315 1.1 lukem -L*)
2316 1.1 lukem case $linkmode in
2317 1.1 lukem lib)
2318 1.1 lukem deplibs="$deplib $deplibs"
2319 1.1 lukem test "$pass" = conv && continue
2320 1.1 lukem newdependency_libs="$deplib $newdependency_libs"
2321 1.1 lukem newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2322 1.1 lukem ;;
2323 1.1 lukem prog)
2324 1.1 lukem if test "$pass" = conv; then
2325 1.1 lukem deplibs="$deplib $deplibs"
2326 1.1 lukem continue
2327 1.1 lukem fi
2328 1.1 lukem if test "$pass" = scan; then
2329 1.1 lukem deplibs="$deplib $deplibs"
2330 1.1 lukem else
2331 1.1 lukem compile_deplibs="$deplib $compile_deplibs"
2332 1.1 lukem finalize_deplibs="$deplib $finalize_deplibs"
2333 1.1 lukem fi
2334 1.1 lukem newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2335 1.1 lukem ;;
2336 1.1 lukem *)
2337 1.1 lukem $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
2338 1.1 lukem ;;
2339 1.1 lukem esac # linkmode
2340 1.1 lukem continue
2341 1.1 lukem ;; # -L
2342 1.1 lukem -R*)
2343 1.1 lukem if test "$pass" = link; then
2344 1.1 lukem dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
2345 1.1 lukem # Make sure the xrpath contains only unique directories.
2346 1.1 lukem case "$xrpath " in
2347 1.1 lukem *" $dir "*) ;;
2348 1.1 lukem *) xrpath="$xrpath $dir" ;;
2349 1.1 lukem esac
2350 1.1 lukem fi
2351 1.1 lukem deplibs="$deplib $deplibs"
2352 1.1 lukem continue
2353 1.1 lukem ;;
2354 1.1 lukem *.la) lib="$deplib" ;;
2355 1.1 lukem *.$libext)
2356 1.1 lukem if test "$pass" = conv; then
2357 1.1 lukem deplibs="$deplib $deplibs"
2358 1.1 lukem continue
2359 1.1 lukem fi
2360 1.1 lukem case $linkmode in
2361 1.1 lukem lib)
2362 1.1 lukem valid_a_lib=no
2363 1.1 lukem case $deplibs_check_method in
2364 1.1 lukem match_pattern*)
2365 1.1 lukem set dummy $deplibs_check_method
2366 1.1 lukem match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2367 1.1 lukem if eval $echo \"$deplib\" 2>/dev/null \
2368 1.1 lukem | $SED 10q \
2369 1.1 lukem | $EGREP "$match_pattern_regex" > /dev/null; then
2370 1.1 lukem valid_a_lib=yes
2371 1.1 lukem fi
2372 1.1 lukem ;;
2373 1.1 lukem pass_all)
2374 1.1 lukem valid_a_lib=yes
2375 1.1 lukem ;;
2376 1.1 lukem esac
2377 1.1 lukem if test "$valid_a_lib" != yes; then
2378 1.1 lukem $echo
2379 1.1 lukem $echo "*** Warning: Trying to link with static lib archive $deplib."
2380 1.1 lukem $echo "*** I have the capability to make that library automatically link in when"
2381 1.1 lukem $echo "*** you link to this library. But I can only do this if you have a"
2382 1.1 lukem $echo "*** shared version of the library, which you do not appear to have"
2383 1.1 lukem $echo "*** because the file extensions .$libext of this argument makes me believe"
2384 1.1 lukem $echo "*** that it is just a static archive that I should not used here."
2385 1.1 lukem else
2386 1.1 lukem $echo
2387 1.1 lukem $echo "*** Warning: Linking the shared library $output against the"
2388 1.1 lukem $echo "*** static library $deplib is not portable!"
2389 1.1 lukem deplibs="$deplib $deplibs"
2390 1.1 lukem fi
2391 1.1 lukem continue
2392 1.1 lukem ;;
2393 1.1 lukem prog)
2394 1.1 lukem if test "$pass" != link; then
2395 1.1 lukem deplibs="$deplib $deplibs"
2396 1.1 lukem else
2397 1.1 lukem compile_deplibs="$deplib $compile_deplibs"
2398 1.1 lukem finalize_deplibs="$deplib $finalize_deplibs"
2399 1.1 lukem fi
2400 1.1 lukem continue
2401 1.1 lukem ;;
2402 1.1 lukem esac # linkmode
2403 1.1 lukem ;; # *.$libext
2404 1.1 lukem *.lo | *.$objext)
2405 1.1 lukem if test "$pass" = conv; then
2406 1.1 lukem deplibs="$deplib $deplibs"
2407 1.1 lukem elif test "$linkmode" = prog; then
2408 1.1 lukem if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2409 1.1 lukem # If there is no dlopen support or we're linking statically,
2410 1.1 lukem # we need to preload.
2411 1.1 lukem newdlprefiles="$newdlprefiles $deplib"
2412 1.1 lukem compile_deplibs="$deplib $compile_deplibs"
2413 1.1 lukem finalize_deplibs="$deplib $finalize_deplibs"
2414 1.1 lukem else
2415 1.1 lukem newdlfiles="$newdlfiles $deplib"
2416 1.1 lukem fi
2417 1.1 lukem fi
2418 1.1 lukem continue
2419 1.1 lukem ;;
2420 1.1 lukem %DEPLIBS%)
2421 1.1 lukem alldeplibs=yes
2422 1.1 lukem continue
2423 1.1 lukem ;;
2424 1.1 lukem esac # case $deplib
2425 1.1 lukem if test "$found" = yes || test -f "$lib"; then :
2426 1.1 lukem else
2427 1.1 lukem $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
2428 1.1 lukem exit $EXIT_FAILURE
2429 1.1 lukem fi
2430 1.1 lukem
2431 1.1 lukem # Check to see that this really is a libtool archive.
2432 1.1 lukem if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
2433 1.1 lukem else
2434 1.1 lukem $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2435 1.1 lukem exit $EXIT_FAILURE
2436 1.1 lukem fi
2437 1.1 lukem
2438 1.1 lukem ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2439 1.1 lukem test "X$ladir" = "X$lib" && ladir="."
2440 1.1 lukem
2441 1.1 lukem dlname=
2442 1.1 lukem dlopen=
2443 1.1 lukem dlpreopen=
2444 1.1 lukem libdir=
2445 1.1 lukem library_names=
2446 1.1 lukem old_library=
2447 1.1 lukem # If the library was installed with an old release of libtool,
2448 1.1 lukem # it will not redefine variables installed, or shouldnotlink
2449 1.1 lukem installed=yes
2450 1.1 lukem shouldnotlink=no
2451 1.1 lukem avoidtemprpath=
2452 1.1 lukem
2453 1.1 lukem
2454 1.1 lukem # Read the .la file
2455 1.1 lukem case $lib in
2456 1.1 lukem */* | *\\*) . $lib ;;
2457 1.1 lukem *) . ./$lib ;;
2458 1.1 lukem esac
2459 1.1 lukem
2460 1.1 lukem if test "$linkmode,$pass" = "lib,link" ||
2461 1.1 lukem test "$linkmode,$pass" = "prog,scan" ||
2462 1.1 lukem { test "$linkmode" != prog && test "$linkmode" != lib; }; then
2463 1.1 lukem test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
2464 1.1 lukem test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
2465 1.1 lukem fi
2466 1.1 lukem
2467 1.1 lukem if test "$pass" = conv; then
2468 1.1 lukem # Only check for convenience libraries
2469 1.1 lukem deplibs="$lib $deplibs"
2470 1.1 lukem if test -z "$libdir"; then
2471 1.1 lukem if test -z "$old_library"; then
2472 1.1 lukem $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2473 1.1 lukem exit $EXIT_FAILURE
2474 1.1 lukem fi
2475 1.1 lukem # It is a libtool convenience library, so add in its objects.
2476 1.1 lukem convenience="$convenience $ladir/$objdir/$old_library"
2477 1.1 lukem old_convenience="$old_convenience $ladir/$objdir/$old_library"
2478 1.1 lukem tmp_libs=
2479 1.1 lukem for deplib in $dependency_libs; do
2480 1.1 lukem deplibs="$deplib $deplibs"
2481 1.1 lukem if test "X$duplicate_deps" = "Xyes" ; then
2482 1.1 lukem case "$tmp_libs " in
2483 1.1 lukem *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2484 1.1 lukem esac
2485 1.1 lukem fi
2486 1.1 lukem tmp_libs="$tmp_libs $deplib"
2487 1.1 lukem done
2488 1.1 lukem elif test "$linkmode" != prog && test "$linkmode" != lib; then
2489 1.1 lukem $echo "$modename: \`$lib' is not a convenience library" 1>&2
2490 1.1 lukem exit $EXIT_FAILURE
2491 1.1 lukem fi
2492 1.1 lukem continue
2493 1.1 lukem fi # $pass = conv
2494 1.1 lukem
2495 1.1 lukem
2496 1.1 lukem # Get the name of the library we link against.
2497 1.1 lukem linklib=
2498 1.1 lukem for l in $old_library $library_names; do
2499 1.1 lukem linklib="$l"
2500 1.1 lukem done
2501 1.1 lukem if test -z "$linklib"; then
2502 1.1 lukem $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2503 1.1 lukem exit $EXIT_FAILURE
2504 1.1 lukem fi
2505 1.1 lukem
2506 1.1 lukem # This library was specified with -dlopen.
2507 1.1 lukem if test "$pass" = dlopen; then
2508 1.1 lukem if test -z "$libdir"; then
2509 1.1 lukem $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
2510 1.1 lukem exit $EXIT_FAILURE
2511 1.1 lukem fi
2512 1.1 lukem if test -z "$dlname" ||
2513 1.1 lukem test "$dlopen_support" != yes ||
2514 1.1 lukem test "$build_libtool_libs" = no; then
2515 1.1 lukem # If there is no dlname, no dlopen support or we're linking
2516 1.1 lukem # statically, we need to preload. We also need to preload any
2517 1.1 lukem # dependent libraries so libltdl's deplib preloader doesn't
2518 1.1 lukem # bomb out in the load deplibs phase.
2519 1.1 lukem dlprefiles="$dlprefiles $lib $dependency_libs"
2520 1.1 lukem else
2521 1.1 lukem newdlfiles="$newdlfiles $lib"
2522 1.1 lukem fi
2523 1.1 lukem continue
2524 1.1 lukem fi # $pass = dlopen
2525 1.1 lukem
2526 1.1 lukem # We need an absolute path.
2527 1.1 lukem case $ladir in
2528 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
2529 1.1 lukem *)
2530 1.1 lukem abs_ladir=`cd "$ladir" && pwd`
2531 1.1 lukem if test -z "$abs_ladir"; then
2532 1.1 lukem $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
2533 1.1 lukem $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
2534 1.1 lukem abs_ladir="$ladir"
2535 1.1 lukem fi
2536 1.1 lukem ;;
2537 1.1 lukem esac
2538 1.1 lukem laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
2539 1.1 lukem
2540 1.1 lukem # Find the relevant object directory and library name.
2541 1.1 lukem if test "X$installed" = Xyes; then
2542 1.1 lukem if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2543 1.1 lukem $echo "$modename: warning: library \`$lib' was moved." 1>&2
2544 1.1 lukem dir="$ladir"
2545 1.1 lukem absdir="$abs_ladir"
2546 1.1 lukem libdir="$abs_ladir"
2547 1.1 lukem else
2548 1.1 lukem dir="$libdir"
2549 1.1 lukem absdir="$libdir"
2550 1.1 lukem fi
2551 1.1 lukem test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
2552 1.1 lukem else
2553 1.1 lukem if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2554 1.1 lukem dir="$ladir"
2555 1.1 lukem absdir="$abs_ladir"
2556 1.1 lukem # Remove this search path later
2557 1.1 lukem notinst_path="$notinst_path $abs_ladir"
2558 1.1 lukem else
2559 1.1 lukem dir="$ladir/$objdir"
2560 1.1 lukem absdir="$abs_ladir/$objdir"
2561 1.1 lukem # Remove this search path later
2562 1.1 lukem notinst_path="$notinst_path $abs_ladir"
2563 1.1 lukem fi
2564 1.1 lukem fi # $installed = yes
2565 1.1 lukem name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2566 1.1 lukem
2567 1.1 lukem # This library was specified with -dlpreopen.
2568 1.1 lukem if test "$pass" = dlpreopen; then
2569 1.1 lukem if test -z "$libdir"; then
2570 1.1 lukem $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
2571 1.1 lukem exit $EXIT_FAILURE
2572 1.1 lukem fi
2573 1.1 lukem # Prefer using a static library (so that no silly _DYNAMIC symbols
2574 1.1 lukem # are required to link).
2575 1.1 lukem if test -n "$old_library"; then
2576 1.1 lukem newdlprefiles="$newdlprefiles $dir/$old_library"
2577 1.1 lukem # Otherwise, use the dlname, so that lt_dlopen finds it.
2578 1.1 lukem elif test -n "$dlname"; then
2579 1.1 lukem newdlprefiles="$newdlprefiles $dir/$dlname"
2580 1.1 lukem else
2581 1.1 lukem newdlprefiles="$newdlprefiles $dir/$linklib"
2582 1.1 lukem fi
2583 1.1 lukem fi # $pass = dlpreopen
2584 1.1 lukem
2585 1.1 lukem if test -z "$libdir"; then
2586 1.1 lukem # Link the convenience library
2587 1.1 lukem if test "$linkmode" = lib; then
2588 1.1 lukem deplibs="$dir/$old_library $deplibs"
2589 1.1 lukem elif test "$linkmode,$pass" = "prog,link"; then
2590 1.1 lukem compile_deplibs="$dir/$old_library $compile_deplibs"
2591 1.1 lukem finalize_deplibs="$dir/$old_library $finalize_deplibs"
2592 1.1 lukem else
2593 1.1 lukem deplibs="$lib $deplibs" # used for prog,scan pass
2594 1.1 lukem fi
2595 1.1 lukem continue
2596 1.1 lukem fi
2597 1.1 lukem
2598 1.1 lukem
2599 1.1 lukem if test "$linkmode" = prog && test "$pass" != link; then
2600 1.1 lukem newlib_search_path="$newlib_search_path $ladir"
2601 1.1 lukem deplibs="$lib $deplibs"
2602 1.1 lukem
2603 1.1 lukem linkalldeplibs=no
2604 1.1 lukem if test "$link_all_deplibs" != no || test -z "$library_names" ||
2605 1.1 lukem test "$build_libtool_libs" = no; then
2606 1.1 lukem linkalldeplibs=yes
2607 1.1 lukem fi
2608 1.1 lukem
2609 1.1 lukem tmp_libs=
2610 1.1 lukem for deplib in $dependency_libs; do
2611 1.1 lukem case $deplib in
2612 1.1 lukem -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2613 1.1 lukem esac
2614 1.1 lukem # Need to link against all dependency_libs?
2615 1.1 lukem if test "$linkalldeplibs" = yes; then
2616 1.1 lukem deplibs="$deplib $deplibs"
2617 1.1 lukem else
2618 1.1 lukem # Need to hardcode shared library paths
2619 1.1 lukem # or/and link against static libraries
2620 1.1 lukem newdependency_libs="$deplib $newdependency_libs"
2621 1.1 lukem fi
2622 1.1 lukem if test "X$duplicate_deps" = "Xyes" ; then
2623 1.1 lukem case "$tmp_libs " in
2624 1.1 lukem *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2625 1.1 lukem esac
2626 1.1 lukem fi
2627 1.1 lukem tmp_libs="$tmp_libs $deplib"
2628 1.1 lukem done # for deplib
2629 1.1 lukem continue
2630 1.1 lukem fi # $linkmode = prog...
2631 1.1 lukem
2632 1.1 lukem if test "$linkmode,$pass" = "prog,link"; then
2633 1.1 lukem if test -n "$library_names" &&
2634 1.1 lukem { { test "$prefer_static_libs" = no ||
2635 1.1 lukem test "$prefer_static_libs,$installed" = "built,yes"; } ||
2636 1.1 lukem test -z "$old_library"; }; then
2637 1.1 lukem # We need to hardcode the library path
2638 1.1 lukem if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
2639 1.1 lukem # Make sure the rpath contains only unique directories.
2640 1.1 lukem case "$temp_rpath " in
2641 1.1 lukem *" $dir "*) ;;
2642 1.1 lukem *" $absdir "*) ;;
2643 1.1 lukem *) temp_rpath="$temp_rpath $absdir" ;;
2644 1.1 lukem esac
2645 1.1 lukem fi
2646 1.1 lukem
2647 1.1 lukem # Hardcode the library path.
2648 1.1 lukem # Skip directories that are in the system default run-time
2649 1.1 lukem # search path.
2650 1.1 lukem case " $sys_lib_dlsearch_path " in
2651 1.1 lukem *" $absdir "*) ;;
2652 1.1 lukem *)
2653 1.1 lukem case "$compile_rpath " in
2654 1.1 lukem *" $absdir "*) ;;
2655 1.1 lukem *) compile_rpath="$compile_rpath $absdir"
2656 1.1 lukem esac
2657 1.1 lukem ;;
2658 1.1 lukem esac
2659 1.1 lukem case " $sys_lib_dlsearch_path " in
2660 1.1 lukem *" $libdir "*) ;;
2661 1.1 lukem *)
2662 1.1 lukem case "$finalize_rpath " in
2663 1.1 lukem *" $libdir "*) ;;
2664 1.1 lukem *) finalize_rpath="$finalize_rpath $libdir"
2665 1.1 lukem esac
2666 1.1 lukem ;;
2667 1.1 lukem esac
2668 1.1 lukem fi # $linkmode,$pass = prog,link...
2669 1.1 lukem
2670 1.1 lukem if test "$alldeplibs" = yes &&
2671 1.1 lukem { test "$deplibs_check_method" = pass_all ||
2672 1.1 lukem { test "$build_libtool_libs" = yes &&
2673 1.1 lukem test -n "$library_names"; }; }; then
2674 1.1 lukem # We only need to search for static libraries
2675 1.1 lukem continue
2676 1.1 lukem fi
2677 1.1 lukem fi
2678 1.1 lukem
2679 1.1 lukem link_static=no # Whether the deplib will be linked statically
2680 1.1 lukem use_static_libs=$prefer_static_libs
2681 1.1 lukem if test "$use_static_libs" = built && test "$installed" = yes ; then
2682 1.1 lukem use_static_libs=no
2683 1.1 lukem fi
2684 1.1 lukem if test -n "$library_names" &&
2685 1.1 lukem { test "$use_static_libs" = no || test -z "$old_library"; }; then
2686 1.1 lukem if test "$installed" = no; then
2687 1.1 lukem notinst_deplibs="$notinst_deplibs $lib"
2688 1.1 lukem need_relink=yes
2689 1.1 lukem fi
2690 1.1 lukem # This is a shared library
2691 1.1 lukem
2692 1.1 lukem # Warn about portability, can't link against -module's on
2693 1.1 lukem # some systems (darwin)
2694 1.1 lukem if test "$shouldnotlink" = yes && test "$pass" = link ; then
2695 1.1 lukem $echo
2696 1.1 lukem if test "$linkmode" = prog; then
2697 1.1 lukem $echo "*** Warning: Linking the executable $output against the loadable module"
2698 1.1 lukem else
2699 1.1 lukem $echo "*** Warning: Linking the shared library $output against the loadable module"
2700 1.1 lukem fi
2701 1.1 lukem $echo "*** $linklib is not portable!"
2702 1.1 lukem fi
2703 1.1 lukem if test "$linkmode" = lib &&
2704 1.1 lukem test "$hardcode_into_libs" = yes; then
2705 1.1 lukem # Hardcode the library path.
2706 1.1 lukem # Skip directories that are in the system default run-time
2707 1.1 lukem # search path.
2708 1.1 lukem case " $sys_lib_dlsearch_path " in
2709 1.1 lukem *" $absdir "*) ;;
2710 1.1 lukem *)
2711 1.1 lukem case "$compile_rpath " in
2712 1.1 lukem *" $absdir "*) ;;
2713 1.1 lukem *) compile_rpath="$compile_rpath $absdir"
2714 1.1 lukem esac
2715 1.1 lukem ;;
2716 1.1 lukem esac
2717 1.1 lukem case " $sys_lib_dlsearch_path " in
2718 1.1 lukem *" $libdir "*) ;;
2719 1.1 lukem *)
2720 1.1 lukem case "$finalize_rpath " in
2721 1.1 lukem *" $libdir "*) ;;
2722 1.1 lukem *) finalize_rpath="$finalize_rpath $libdir"
2723 1.1 lukem esac
2724 1.1 lukem ;;
2725 1.1 lukem esac
2726 1.1 lukem fi
2727 1.1 lukem
2728 1.1 lukem if test -n "$old_archive_from_expsyms_cmds"; then
2729 1.1 lukem # figure out the soname
2730 1.1 lukem set dummy $library_names
2731 1.1 lukem realname="$2"
2732 1.1 lukem shift; shift
2733 1.1 lukem libname=`eval \\$echo \"$libname_spec\"`
2734 1.1 lukem # use dlname if we got it. it's perfectly good, no?
2735 1.1 lukem if test -n "$dlname"; then
2736 1.1 lukem soname="$dlname"
2737 1.1 lukem elif test -n "$soname_spec"; then
2738 1.1 lukem # bleh windows
2739 1.1 lukem case $host in
2740 1.1 lukem *cygwin* | mingw*)
2741 1.1 lukem major=`expr $current - $age`
2742 1.1 lukem versuffix="-$major"
2743 1.1 lukem ;;
2744 1.1 lukem esac
2745 1.1 lukem eval soname=\"$soname_spec\"
2746 1.1 lukem else
2747 1.1 lukem soname="$realname"
2748 1.1 lukem fi
2749 1.1 lukem
2750 1.1 lukem # Make a new name for the extract_expsyms_cmds to use
2751 1.1 lukem soroot="$soname"
2752 1.1 lukem soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
2753 1.1 lukem newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
2754 1.1 lukem
2755 1.1 lukem # If the library has no export list, then create one now
2756 1.1 lukem if test -f "$output_objdir/$soname-def"; then :
2757 1.1 lukem else
2758 1.1 lukem $show "extracting exported symbol list from \`$soname'"
2759 1.1 lukem save_ifs="$IFS"; IFS='~'
2760 1.1 lukem cmds=$extract_expsyms_cmds
2761 1.1 lukem for cmd in $cmds; do
2762 1.1 lukem IFS="$save_ifs"
2763 1.1 lukem eval cmd=\"$cmd\"
2764 1.1 lukem $show "$cmd"
2765 1.1 lukem $run eval "$cmd" || exit $?
2766 1.1 lukem done
2767 1.1 lukem IFS="$save_ifs"
2768 1.1 lukem fi
2769 1.1 lukem
2770 1.1 lukem # Create $newlib
2771 1.1 lukem if test -f "$output_objdir/$newlib"; then :; else
2772 1.1 lukem $show "generating import library for \`$soname'"
2773 1.1 lukem save_ifs="$IFS"; IFS='~'
2774 1.1 lukem cmds=$old_archive_from_expsyms_cmds
2775 1.1 lukem for cmd in $cmds; do
2776 1.1 lukem IFS="$save_ifs"
2777 1.1 lukem eval cmd=\"$cmd\"
2778 1.1 lukem $show "$cmd"
2779 1.1 lukem $run eval "$cmd" || exit $?
2780 1.1 lukem done
2781 1.1 lukem IFS="$save_ifs"
2782 1.1 lukem fi
2783 1.1 lukem # make sure the library variables are pointing to the new library
2784 1.1 lukem dir=$output_objdir
2785 1.1 lukem linklib=$newlib
2786 1.1 lukem fi # test -n "$old_archive_from_expsyms_cmds"
2787 1.1 lukem
2788 1.1 lukem if test "$linkmode" = prog || test "$mode" != relink; then
2789 1.1 lukem add_shlibpath=
2790 1.1 lukem add_dir=
2791 1.1 lukem add=
2792 1.1 lukem lib_linked=yes
2793 1.1 lukem case $hardcode_action in
2794 1.1 lukem immediate | unsupported)
2795 1.1 lukem if test "$hardcode_direct" = no; then
2796 1.1 lukem add="$dir/$linklib"
2797 1.1 lukem case $host in
2798 1.1 lukem *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
2799 1.1 lukem *-*-sysv4*uw2*) add_dir="-L$dir" ;;
2800 1.1 lukem *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
2801 1.1 lukem *-*-unixware7*) add_dir="-L$dir" ;;
2802 1.1 lukem *-*-darwin* )
2803 1.1 lukem # if the lib is a module then we can not link against
2804 1.1 lukem # it, someone is ignoring the new warnings I added
2805 1.1 lukem if /usr/bin/file -L $add 2> /dev/null |
2806 1.1 lukem $EGREP ": [^:]* bundle" >/dev/null ; then
2807 1.1 lukem $echo "** Warning, lib $linklib is a module, not a shared library"
2808 1.1 lukem if test -z "$old_library" ; then
2809 1.1 lukem $echo
2810 1.1 lukem $echo "** And there doesn't seem to be a static archive available"
2811 1.1 lukem $echo "** The link will probably fail, sorry"
2812 1.1 lukem else
2813 1.1 lukem add="$dir/$old_library"
2814 1.1 lukem fi
2815 1.1 lukem fi
2816 1.1 lukem esac
2817 1.1 lukem elif test "$hardcode_minus_L" = no; then
2818 1.1 lukem case $host in
2819 1.1 lukem *-*-sunos*) add_shlibpath="$dir" ;;
2820 1.1 lukem esac
2821 1.1 lukem add_dir="-L$dir"
2822 1.1 lukem add="-l$name"
2823 1.1 lukem elif test "$hardcode_shlibpath_var" = no; then
2824 1.1 lukem add_shlibpath="$dir"
2825 1.1 lukem add="-l$name"
2826 1.1 lukem else
2827 1.1 lukem lib_linked=no
2828 1.1 lukem fi
2829 1.1 lukem ;;
2830 1.1 lukem relink)
2831 1.1 lukem if test "$hardcode_direct" = yes; then
2832 1.1 lukem add="$dir/$linklib"
2833 1.1 lukem elif test "$hardcode_minus_L" = yes; then
2834 1.1 lukem add_dir="-L$dir"
2835 1.1 lukem # Try looking first in the location we're being installed to.
2836 1.1 lukem if test -n "$inst_prefix_dir"; then
2837 1.1 lukem case $libdir in
2838 1.1 lukem [\\/]*)
2839 1.1 lukem add_dir="$add_dir -L$inst_prefix_dir$libdir"
2840 1.1 lukem ;;
2841 1.1 lukem esac
2842 1.1 lukem fi
2843 1.1 lukem add="-l$name"
2844 1.1 lukem elif test "$hardcode_shlibpath_var" = yes; then
2845 1.1 lukem add_shlibpath="$dir"
2846 1.1 lukem add="-l$name"
2847 1.1 lukem else
2848 1.1 lukem lib_linked=no
2849 1.1 lukem fi
2850 1.1 lukem ;;
2851 1.1 lukem *) lib_linked=no ;;
2852 1.1 lukem esac
2853 1.1 lukem
2854 1.1 lukem if test "$lib_linked" != yes; then
2855 1.1 lukem $echo "$modename: configuration error: unsupported hardcode properties"
2856 1.1 lukem exit $EXIT_FAILURE
2857 1.1 lukem fi
2858 1.1 lukem
2859 1.1 lukem if test -n "$add_shlibpath"; then
2860 1.1 lukem case :$compile_shlibpath: in
2861 1.1 lukem *":$add_shlibpath:"*) ;;
2862 1.1 lukem *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2863 1.1 lukem esac
2864 1.1 lukem fi
2865 1.1 lukem if test "$linkmode" = prog; then
2866 1.1 lukem test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2867 1.1 lukem test -n "$add" && compile_deplibs="$add $compile_deplibs"
2868 1.1 lukem else
2869 1.1 lukem test -n "$add_dir" && deplibs="$add_dir $deplibs"
2870 1.1 lukem test -n "$add" && deplibs="$add $deplibs"
2871 1.1 lukem if test "$hardcode_direct" != yes && \
2872 1.1 lukem test "$hardcode_minus_L" != yes && \
2873 1.1 lukem test "$hardcode_shlibpath_var" = yes; then
2874 1.1 lukem case :$finalize_shlibpath: in
2875 1.1 lukem *":$libdir:"*) ;;
2876 1.1 lukem *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2877 1.1 lukem esac
2878 1.1 lukem fi
2879 1.1 lukem fi
2880 1.1 lukem fi
2881 1.1 lukem
2882 1.1 lukem if test "$linkmode" = prog || test "$mode" = relink; then
2883 1.1 lukem add_shlibpath=
2884 1.1 lukem add_dir=
2885 1.1 lukem add=
2886 1.1 lukem # Finalize command for both is simple: just hardcode it.
2887 1.1 lukem if test "$hardcode_direct" = yes; then
2888 1.1 lukem add="$libdir/$linklib"
2889 1.1 lukem elif test "$hardcode_minus_L" = yes; then
2890 1.1 lukem add_dir="-L$libdir"
2891 1.1 lukem add="-l$name"
2892 1.1 lukem elif test "$hardcode_shlibpath_var" = yes; then
2893 1.1 lukem case :$finalize_shlibpath: in
2894 1.1 lukem *":$libdir:"*) ;;
2895 1.1 lukem *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2896 1.1 lukem esac
2897 1.1 lukem add="-l$name"
2898 1.1 lukem elif test "$hardcode_automatic" = yes; then
2899 1.1 lukem if test -n "$inst_prefix_dir" &&
2900 1.1 lukem test -f "$inst_prefix_dir$libdir/$linklib" ; then
2901 1.1 lukem add="$inst_prefix_dir$libdir/$linklib"
2902 1.1 lukem else
2903 1.1 lukem add="$libdir/$linklib"
2904 1.1 lukem fi
2905 1.1 lukem else
2906 1.1 lukem # We cannot seem to hardcode it, guess we'll fake it.
2907 1.1 lukem add_dir="-L$libdir"
2908 1.1 lukem # Try looking first in the location we're being installed to.
2909 1.1 lukem if test -n "$inst_prefix_dir"; then
2910 1.1 lukem case $libdir in
2911 1.1 lukem [\\/]*)
2912 1.1 lukem add_dir="$add_dir -L$inst_prefix_dir$libdir"
2913 1.1 lukem ;;
2914 1.1 lukem esac
2915 1.1 lukem fi
2916 1.1 lukem add="-l$name"
2917 1.1 lukem fi
2918 1.1 lukem
2919 1.1 lukem if test "$linkmode" = prog; then
2920 1.1 lukem test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2921 1.1 lukem test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2922 1.1 lukem else
2923 1.1 lukem test -n "$add_dir" && deplibs="$add_dir $deplibs"
2924 1.1 lukem test -n "$add" && deplibs="$add $deplibs"
2925 1.1 lukem fi
2926 1.1 lukem fi
2927 1.1 lukem elif test "$linkmode" = prog; then
2928 1.1 lukem # Here we assume that one of hardcode_direct or hardcode_minus_L
2929 1.1 lukem # is not unsupported. This is valid on all known static and
2930 1.1 lukem # shared platforms.
2931 1.1 lukem if test "$hardcode_direct" != unsupported; then
2932 1.1 lukem test -n "$old_library" && linklib="$old_library"
2933 1.1 lukem compile_deplibs="$dir/$linklib $compile_deplibs"
2934 1.1 lukem finalize_deplibs="$dir/$linklib $finalize_deplibs"
2935 1.1 lukem else
2936 1.1 lukem compile_deplibs="-l$name -L$dir $compile_deplibs"
2937 1.1 lukem finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2938 1.1 lukem fi
2939 1.1 lukem elif test "$build_libtool_libs" = yes; then
2940 1.1 lukem # Not a shared library
2941 1.1 lukem if test "$deplibs_check_method" != pass_all; then
2942 1.1 lukem # We're trying link a shared library against a static one
2943 1.1 lukem # but the system doesn't support it.
2944 1.1 lukem
2945 1.1 lukem # Just print a warning and add the library to dependency_libs so
2946 1.1 lukem # that the program can be linked against the static library.
2947 1.1 lukem $echo
2948 1.1 lukem $echo "*** Warning: This system can not link to static lib archive $lib."
2949 1.1 lukem $echo "*** I have the capability to make that library automatically link in when"
2950 1.1 lukem $echo "*** you link to this library. But I can only do this if you have a"
2951 1.1 lukem $echo "*** shared version of the library, which you do not appear to have."
2952 1.1 lukem if test "$module" = yes; then
2953 1.1 lukem $echo "*** But as you try to build a module library, libtool will still create "
2954 1.1 lukem $echo "*** a static module, that should work as long as the dlopening application"
2955 1.1 lukem $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2956 1.1 lukem if test -z "$global_symbol_pipe"; then
2957 1.1 lukem $echo
2958 1.1 lukem $echo "*** However, this would only work if libtool was able to extract symbol"
2959 1.1 lukem $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2960 1.1 lukem $echo "*** not find such a program. So, this module is probably useless."
2961 1.1 lukem $echo "*** \`nm' from GNU binutils and a full rebuild may help."
2962 1.1 lukem fi
2963 1.1 lukem if test "$build_old_libs" = no; then
2964 1.1 lukem build_libtool_libs=module
2965 1.1 lukem build_old_libs=yes
2966 1.1 lukem else
2967 1.1 lukem build_libtool_libs=no
2968 1.1 lukem fi
2969 1.1 lukem fi
2970 1.1 lukem else
2971 1.1 lukem deplibs="$dir/$old_library $deplibs"
2972 1.1 lukem link_static=yes
2973 1.1 lukem fi
2974 1.1 lukem fi # link shared/static library?
2975 1.1 lukem
2976 1.1 lukem if test "$linkmode" = lib; then
2977 1.1 lukem if test -n "$dependency_libs" &&
2978 1.1 lukem { test "$hardcode_into_libs" != yes ||
2979 1.1 lukem test "$build_old_libs" = yes ||
2980 1.1 lukem test "$link_static" = yes; }; then
2981 1.1 lukem # Extract -R from dependency_libs
2982 1.1 lukem temp_deplibs=
2983 1.1 lukem for libdir in $dependency_libs; do
2984 1.1 lukem case $libdir in
2985 1.1 lukem -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2986 1.1 lukem case " $xrpath " in
2987 1.1 lukem *" $temp_xrpath "*) ;;
2988 1.1 lukem *) xrpath="$xrpath $temp_xrpath";;
2989 1.1 lukem esac;;
2990 1.1 lukem *) temp_deplibs="$temp_deplibs $libdir";;
2991 1.1 lukem esac
2992 1.1 lukem done
2993 1.1 lukem dependency_libs="$temp_deplibs"
2994 1.1 lukem fi
2995 1.1 lukem
2996 1.1 lukem newlib_search_path="$newlib_search_path $absdir"
2997 1.1 lukem # Link against this library
2998 1.1 lukem test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2999 1.1 lukem # ... and its dependency_libs
3000 1.1 lukem tmp_libs=
3001 1.1 lukem for deplib in $dependency_libs; do
3002 1.1 lukem newdependency_libs="$deplib $newdependency_libs"
3003 1.1 lukem if test "X$duplicate_deps" = "Xyes" ; then
3004 1.1 lukem case "$tmp_libs " in
3005 1.1 lukem *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
3006 1.1 lukem esac
3007 1.1 lukem fi
3008 1.1 lukem tmp_libs="$tmp_libs $deplib"
3009 1.1 lukem done
3010 1.1 lukem
3011 1.1 lukem if test "$link_all_deplibs" != no; then
3012 1.1 lukem # Add the search paths of all dependency libraries
3013 1.1 lukem for deplib in $dependency_libs; do
3014 1.1 lukem case $deplib in
3015 1.1 lukem -L*) path="$deplib" ;;
3016 1.1 lukem *.la)
3017 1.1 lukem dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
3018 1.1 lukem test "X$dir" = "X$deplib" && dir="."
3019 1.1 lukem # We need an absolute path.
3020 1.1 lukem case $dir in
3021 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
3022 1.1 lukem *)
3023 1.1 lukem absdir=`cd "$dir" && pwd`
3024 1.1 lukem if test -z "$absdir"; then
3025 1.1 lukem $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
3026 1.1 lukem absdir="$dir"
3027 1.1 lukem fi
3028 1.1 lukem ;;
3029 1.1 lukem esac
3030 1.1 lukem if grep "^installed=no" $deplib > /dev/null; then
3031 1.1 lukem path="$absdir/$objdir"
3032 1.1 lukem else
3033 1.1 lukem eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
3034 1.1 lukem if test -z "$libdir"; then
3035 1.1 lukem $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
3036 1.1 lukem exit $EXIT_FAILURE
3037 1.1 lukem fi
3038 1.1 lukem if test "$absdir" != "$libdir"; then
3039 1.1 lukem $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
3040 1.1 lukem fi
3041 1.1 lukem path="$absdir"
3042 1.1 lukem fi
3043 1.1 lukem depdepl=
3044 1.1 lukem case $host in
3045 1.1 lukem *-*-darwin*)
3046 1.1 lukem # we do not want to link against static libs,
3047 1.1 lukem # but need to link against shared
3048 1.1 lukem eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
3049 1.1 lukem eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
3050 1.1 lukem if test -n "$deplibrary_names" ; then
3051 1.1 lukem for tmp in $deplibrary_names ; do
3052 1.1 lukem depdepl=$tmp
3053 1.1 lukem done
3054 1.1 lukem if test -f "$deplibdir/$depdepl" ; then
3055 1.1 lukem depdepl="$deplibdir/$depdepl"
3056 1.1 lukem elif test -f "$path/$depdepl" ; then
3057 1.1 lukem depdepl="$path/$depdepl"
3058 1.1 lukem else
3059 1.1 lukem # Can't find it, oh well...
3060 1.1 lukem depdepl=
3061 1.1 lukem fi
3062 1.1 lukem # do not add paths which are already there
3063 1.1 lukem case " $newlib_search_path " in
3064 1.1 lukem *" $path "*) ;;
3065 1.1 lukem *) newlib_search_path="$newlib_search_path $path";;
3066 1.1 lukem esac
3067 1.1 lukem fi
3068 1.1 lukem path=""
3069 1.1 lukem ;;
3070 1.1 lukem *)
3071 1.1 lukem path="-L$path"
3072 1.1 lukem ;;
3073 1.1 lukem esac
3074 1.1 lukem ;;
3075 1.1 lukem -l*)
3076 1.1 lukem case $host in
3077 1.1 lukem *-*-darwin*)
3078 1.1 lukem # Again, we only want to link against shared libraries
3079 1.1 lukem eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
3080 1.1 lukem for tmp in $newlib_search_path ; do
3081 1.1 lukem if test -f "$tmp/lib$tmp_libs.dylib" ; then
3082 1.1 lukem eval depdepl="$tmp/lib$tmp_libs.dylib"
3083 1.1 lukem break
3084 1.1 lukem fi
3085 1.1 lukem done
3086 1.1 lukem path=""
3087 1.1 lukem ;;
3088 1.1 lukem *) continue ;;
3089 1.1 lukem esac
3090 1.1 lukem ;;
3091 1.1 lukem *) continue ;;
3092 1.1 lukem esac
3093 1.1 lukem case " $deplibs " in
3094 1.1 lukem *" $path "*) ;;
3095 1.1 lukem *) deplibs="$path $deplibs" ;;
3096 1.1 lukem esac
3097 1.1 lukem case " $deplibs " in
3098 1.1 lukem *" $depdepl "*) ;;
3099 1.1 lukem *) deplibs="$depdepl $deplibs" ;;
3100 1.1 lukem esac
3101 1.1 lukem done
3102 1.1 lukem fi # link_all_deplibs != no
3103 1.1 lukem fi # linkmode = lib
3104 1.1 lukem done # for deplib in $libs
3105 1.1 lukem dependency_libs="$newdependency_libs"
3106 1.1 lukem if test "$pass" = dlpreopen; then
3107 1.1 lukem # Link the dlpreopened libraries before other libraries
3108 1.1 lukem for deplib in $save_deplibs; do
3109 1.1 lukem deplibs="$deplib $deplibs"
3110 1.1 lukem done
3111 1.1 lukem fi
3112 1.1 lukem if test "$pass" != dlopen; then
3113 1.1 lukem if test "$pass" != conv; then
3114 1.1 lukem # Make sure lib_search_path contains only unique directories.
3115 1.1 lukem lib_search_path=
3116 1.1 lukem for dir in $newlib_search_path; do
3117 1.1 lukem case "$lib_search_path " in
3118 1.1 lukem *" $dir "*) ;;
3119 1.1 lukem *) lib_search_path="$lib_search_path $dir" ;;
3120 1.1 lukem esac
3121 1.1 lukem done
3122 1.1 lukem newlib_search_path=
3123 1.1 lukem fi
3124 1.1 lukem
3125 1.1 lukem if test "$linkmode,$pass" != "prog,link"; then
3126 1.1 lukem vars="deplibs"
3127 1.1 lukem else
3128 1.1 lukem vars="compile_deplibs finalize_deplibs"
3129 1.1 lukem fi
3130 1.1 lukem for var in $vars dependency_libs; do
3131 1.1 lukem # Add libraries to $var in reverse order
3132 1.1 lukem eval tmp_libs=\"\$$var\"
3133 1.1 lukem new_libs=
3134 1.1 lukem for deplib in $tmp_libs; do
3135 1.1 lukem # FIXME: Pedantically, this is the right thing to do, so
3136 1.1 lukem # that some nasty dependency loop isn't accidentally
3137 1.1 lukem # broken:
3138 1.1 lukem #new_libs="$deplib $new_libs"
3139 1.1 lukem # Pragmatically, this seems to cause very few problems in
3140 1.1 lukem # practice:
3141 1.1 lukem case $deplib in
3142 1.1 lukem -L*) new_libs="$deplib $new_libs" ;;
3143 1.1 lukem -R*) ;;
3144 1.1 lukem *)
3145 1.1 lukem # And here is the reason: when a library appears more
3146 1.1 lukem # than once as an explicit dependence of a library, or
3147 1.1 lukem # is implicitly linked in more than once by the
3148 1.1 lukem # compiler, it is considered special, and multiple
3149 1.1 lukem # occurrences thereof are not removed. Compare this
3150 1.1 lukem # with having the same library being listed as a
3151 1.1 lukem # dependency of multiple other libraries: in this case,
3152 1.1 lukem # we know (pedantically, we assume) the library does not
3153 1.1 lukem # need to be listed more than once, so we keep only the
3154 1.1 lukem # last copy. This is not always right, but it is rare
3155 1.1 lukem # enough that we require users that really mean to play
3156 1.1 lukem # such unportable linking tricks to link the library
3157 1.1 lukem # using -Wl,-lname, so that libtool does not consider it
3158 1.1 lukem # for duplicate removal.
3159 1.1 lukem case " $specialdeplibs " in
3160 1.1 lukem *" $deplib "*) new_libs="$deplib $new_libs" ;;
3161 1.1 lukem *)
3162 1.1 lukem case " $new_libs " in
3163 1.1 lukem *" $deplib "*) ;;
3164 1.1 lukem *) new_libs="$deplib $new_libs" ;;
3165 1.1 lukem esac
3166 1.1 lukem ;;
3167 1.1 lukem esac
3168 1.1 lukem ;;
3169 1.1 lukem esac
3170 1.1 lukem done
3171 1.1 lukem tmp_libs=
3172 1.1 lukem for deplib in $new_libs; do
3173 1.1 lukem case $deplib in
3174 1.1 lukem -L*)
3175 1.1 lukem case " $tmp_libs " in
3176 1.1 lukem *" $deplib "*) ;;
3177 1.1 lukem *) tmp_libs="$tmp_libs $deplib" ;;
3178 1.1 lukem esac
3179 1.1 lukem ;;
3180 1.1 lukem *) tmp_libs="$tmp_libs $deplib" ;;
3181 1.1 lukem esac
3182 1.1 lukem done
3183 1.1 lukem eval $var=\"$tmp_libs\"
3184 1.1 lukem done # for var
3185 1.1 lukem fi
3186 1.1 lukem # Last step: remove runtime libs from dependency_libs
3187 1.1 lukem # (they stay in deplibs)
3188 1.1 lukem tmp_libs=
3189 1.1 lukem for i in $dependency_libs ; do
3190 1.1 lukem case " $predeps $postdeps $compiler_lib_search_path " in
3191 1.1 lukem *" $i "*)
3192 1.1 lukem i=""
3193 1.1 lukem ;;
3194 1.1 lukem esac
3195 1.1 lukem if test -n "$i" ; then
3196 1.1 lukem tmp_libs="$tmp_libs $i"
3197 1.1 lukem fi
3198 1.1 lukem done
3199 1.1 lukem dependency_libs=$tmp_libs
3200 1.1 lukem done # for pass
3201 1.1 lukem if test "$linkmode" = prog; then
3202 1.1 lukem dlfiles="$newdlfiles"
3203 1.1 lukem dlprefiles="$newdlprefiles"
3204 1.1 lukem fi
3205 1.1 lukem
3206 1.1 lukem case $linkmode in
3207 1.1 lukem oldlib)
3208 1.1 lukem case " $deplibs" in
3209 1.1 lukem *\ -l* | *\ -L*)
3210 1.1 lukem $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;;
3211 1.1 lukem esac
3212 1.1 lukem
3213 1.1 lukem if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3214 1.1 lukem $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
3215 1.1 lukem fi
3216 1.1 lukem
3217 1.1 lukem if test -n "$rpath"; then
3218 1.1 lukem $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
3219 1.1 lukem fi
3220 1.1 lukem
3221 1.1 lukem if test -n "$xrpath"; then
3222 1.1 lukem $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
3223 1.1 lukem fi
3224 1.1 lukem
3225 1.1 lukem if test -n "$vinfo"; then
3226 1.1 lukem $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
3227 1.1 lukem fi
3228 1.1 lukem
3229 1.1 lukem if test -n "$release"; then
3230 1.1 lukem $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
3231 1.1 lukem fi
3232 1.1 lukem
3233 1.1 lukem if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
3234 1.1 lukem $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
3235 1.1 lukem fi
3236 1.1 lukem
3237 1.1 lukem # Now set the variables for building old libraries.
3238 1.1 lukem build_libtool_libs=no
3239 1.1 lukem oldlibs="$output"
3240 1.1 lukem objs="$objs$old_deplibs"
3241 1.1 lukem ;;
3242 1.1 lukem
3243 1.1 lukem lib)
3244 1.1 lukem # Make sure we only generate libraries of the form `libNAME.la'.
3245 1.1 lukem case $outputname in
3246 1.1 lukem lib*)
3247 1.1 lukem name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
3248 1.1 lukem eval shared_ext=\"$shrext_cmds\"
3249 1.1 lukem eval libname=\"$libname_spec\"
3250 1.1 lukem ;;
3251 1.1 lukem *)
3252 1.1 lukem if test "$module" = no; then
3253 1.1 lukem $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
3254 1.1 lukem $echo "$help" 1>&2
3255 1.1 lukem exit $EXIT_FAILURE
3256 1.1 lukem fi
3257 1.1 lukem if test "$need_lib_prefix" != no; then
3258 1.1 lukem # Add the "lib" prefix for modules if required
3259 1.1 lukem name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3260 1.1 lukem eval shared_ext=\"$shrext_cmds\"
3261 1.1 lukem eval libname=\"$libname_spec\"
3262 1.1 lukem else
3263 1.1 lukem libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3264 1.1 lukem fi
3265 1.1 lukem ;;
3266 1.1 lukem esac
3267 1.1 lukem
3268 1.1 lukem if test -n "$objs"; then
3269 1.1 lukem if test "$deplibs_check_method" != pass_all; then
3270 1.1 lukem $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
3271 1.1 lukem exit $EXIT_FAILURE
3272 1.1 lukem else
3273 1.1 lukem $echo
3274 1.1 lukem $echo "*** Warning: Linking the shared library $output against the non-libtool"
3275 1.1 lukem $echo "*** objects $objs is not portable!"
3276 1.1 lukem libobjs="$libobjs $objs"
3277 1.1 lukem fi
3278 1.1 lukem fi
3279 1.1 lukem
3280 1.1 lukem if test "$dlself" != no; then
3281 1.1 lukem $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
3282 1.1 lukem fi
3283 1.1 lukem
3284 1.1 lukem set dummy $rpath
3285 1.1 lukem if test "$#" -gt 2; then
3286 1.1 lukem $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
3287 1.1 lukem fi
3288 1.1 lukem install_libdir="$2"
3289 1.1 lukem
3290 1.1 lukem oldlibs=
3291 1.1 lukem if test -z "$rpath"; then
3292 1.1 lukem if test "$build_libtool_libs" = yes; then
3293 1.1 lukem # Building a libtool convenience library.
3294 1.1 lukem # Some compilers have problems with a `.al' extension so
3295 1.1 lukem # convenience libraries should have the same extension an
3296 1.1 lukem # archive normally would.
3297 1.1 lukem oldlibs="$output_objdir/$libname.$libext $oldlibs"
3298 1.1 lukem build_libtool_libs=convenience
3299 1.1 lukem build_old_libs=yes
3300 1.1 lukem fi
3301 1.1 lukem
3302 1.1 lukem if test -n "$vinfo"; then
3303 1.1 lukem $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
3304 1.1 lukem fi
3305 1.1 lukem
3306 1.1 lukem if test -n "$release"; then
3307 1.1 lukem $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
3308 1.1 lukem fi
3309 1.1 lukem else
3310 1.1 lukem
3311 1.1 lukem # Parse the version information argument.
3312 1.1 lukem save_ifs="$IFS"; IFS=':'
3313 1.1 lukem set dummy $vinfo 0 0 0
3314 1.1 lukem IFS="$save_ifs"
3315 1.1 lukem
3316 1.1 lukem if test -n "$8"; then
3317 1.1 lukem $echo "$modename: too many parameters to \`-version-info'" 1>&2
3318 1.1 lukem $echo "$help" 1>&2
3319 1.1 lukem exit $EXIT_FAILURE
3320 1.1 lukem fi
3321 1.1 lukem
3322 1.1 lukem # convert absolute version numbers to libtool ages
3323 1.1 lukem # this retains compatibility with .la files and attempts
3324 1.1 lukem # to make the code below a bit more comprehensible
3325 1.1 lukem
3326 1.1 lukem case $vinfo_number in
3327 1.1 lukem yes)
3328 1.1 lukem number_major="$2"
3329 1.1 lukem number_minor="$3"
3330 1.1 lukem number_revision="$4"
3331 1.1 lukem #
3332 1.1 lukem # There are really only two kinds -- those that
3333 1.1 lukem # use the current revision as the major version
3334 1.1 lukem # and those that subtract age and use age as
3335 1.1 lukem # a minor version. But, then there is irix
3336 1.1 lukem # which has an extra 1 added just for fun
3337 1.1 lukem #
3338 1.1 lukem case $version_type in
3339 1.1 lukem darwin|linux|osf|windows|none)
3340 1.1 lukem current=`expr $number_major + $number_minor`
3341 1.1 lukem age="$number_minor"
3342 1.1 lukem revision="$number_revision"
3343 1.1 lukem ;;
3344 1.1 lukem freebsd-aout|freebsd-elf|sunos)
3345 1.1 lukem current="$number_major"
3346 1.1 lukem revision="$number_minor"
3347 1.1 lukem age="0"
3348 1.1 lukem ;;
3349 1.1 lukem irix|nonstopux)
3350 1.1 lukem current=`expr $number_major + $number_minor`
3351 1.1 lukem age="$number_minor"
3352 1.1 lukem revision="$number_minor"
3353 1.1 lukem lt_irix_increment=no
3354 1.1 lukem ;;
3355 1.1 lukem esac
3356 1.1 lukem ;;
3357 1.1 lukem no)
3358 1.1 lukem current="$2"
3359 1.1 lukem revision="$3"
3360 1.1 lukem age="$4"
3361 1.1 lukem ;;
3362 1.1 lukem esac
3363 1.1 lukem
3364 1.1 lukem # Check that each of the things are valid numbers.
3365 1.1 lukem case $current in
3366 1.1 lukem 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]) ;;
3367 1.1 lukem *)
3368 1.1 lukem $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
3369 1.1 lukem $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3370 1.1 lukem exit $EXIT_FAILURE
3371 1.1 lukem ;;
3372 1.1 lukem esac
3373 1.1 lukem
3374 1.1 lukem case $revision in
3375 1.1 lukem 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]) ;;
3376 1.1 lukem *)
3377 1.1 lukem $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
3378 1.1 lukem $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3379 1.1 lukem exit $EXIT_FAILURE
3380 1.1 lukem ;;
3381 1.1 lukem esac
3382 1.1 lukem
3383 1.1 lukem case $age in
3384 1.1 lukem 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]) ;;
3385 1.1 lukem *)
3386 1.1 lukem $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
3387 1.1 lukem $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3388 1.1 lukem exit $EXIT_FAILURE
3389 1.1 lukem ;;
3390 1.1 lukem esac
3391 1.1 lukem
3392 1.1 lukem if test "$age" -gt "$current"; then
3393 1.1 lukem $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
3394 1.1 lukem $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3395 1.1 lukem exit $EXIT_FAILURE
3396 1.1 lukem fi
3397 1.1 lukem
3398 1.1 lukem # Calculate the version variables.
3399 1.1 lukem major=
3400 1.1 lukem versuffix=
3401 1.1 lukem versuffix2=
3402 1.1 lukem verstring=
3403 1.1 lukem case $version_type in
3404 1.1 lukem none) ;;
3405 1.1 lukem
3406 1.1 lukem darwin)
3407 1.1 lukem # Like Linux, but with the current version available in
3408 1.1 lukem # verstring for coding it into the library header
3409 1.1 lukem major=.`expr $current - $age`
3410 1.1 lukem versuffix="$major.$age.$revision"
3411 1.1 lukem # Darwin ld doesn't like 0 for these options...
3412 1.1 lukem minor_current=`expr $current + 1`
3413 1.1 lukem xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
3414 1.1 lukem verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
3415 1.1 lukem ;;
3416 1.1 lukem
3417 1.1 lukem freebsd-aout)
3418 1.1 lukem major=".$current"
3419 1.1 lukem versuffix=".$current.$revision";
3420 1.1 lukem ;;
3421 1.1 lukem
3422 1.1 lukem freebsd-elf)
3423 1.1 lukem major=".$current"
3424 1.1 lukem versuffix=".$current";
3425 1.1 lukem ;;
3426 1.1 lukem
3427 1.1 lukem irix | nonstopux)
3428 1.1 lukem if test "X$lt_irix_increment" = "Xno"; then
3429 1.1 lukem major=`expr $current - $age`
3430 1.1 lukem else
3431 1.1 lukem major=`expr $current - $age + 1`
3432 1.1 lukem fi
3433 1.1 lukem case $version_type in
3434 1.1 lukem nonstopux) verstring_prefix=nonstopux ;;
3435 1.1 lukem *) verstring_prefix=sgi ;;
3436 1.1 lukem esac
3437 1.1 lukem verstring="$verstring_prefix$major.$revision"
3438 1.1 lukem
3439 1.1 lukem # Add in all the interfaces that we are compatible with.
3440 1.1 lukem loop=$revision
3441 1.1 lukem while test "$loop" -ne 0; do
3442 1.1 lukem iface=`expr $revision - $loop`
3443 1.1 lukem loop=`expr $loop - 1`
3444 1.1 lukem verstring="$verstring_prefix$major.$iface:$verstring"
3445 1.1 lukem done
3446 1.1 lukem
3447 1.1 lukem # Before this point, $major must not contain `.'.
3448 1.1 lukem major=.$major
3449 1.1 lukem versuffix="$major.$revision"
3450 1.1 lukem ;;
3451 1.1 lukem
3452 1.1 lukem linux)
3453 1.1 lukem major=.`expr $current - $age`
3454 1.1 lukem versuffix="$major.$age.$revision"
3455 1.1 lukem versuffix2="$major.$age"
3456 1.1 lukem ;;
3457 1.1 lukem
3458 1.1 lukem osf)
3459 1.1 lukem major=.`expr $current - $age`
3460 1.1 lukem versuffix=".$current.$age.$revision"
3461 1.1 lukem verstring="$current.$age.$revision"
3462 1.1 lukem
3463 1.1 lukem # Add in all the interfaces that we are compatible with.
3464 1.1 lukem loop=$age
3465 1.1 lukem while test "$loop" -ne 0; do
3466 1.1 lukem iface=`expr $current - $loop`
3467 1.1 lukem loop=`expr $loop - 1`
3468 1.1 lukem verstring="$verstring:${iface}.0"
3469 1.1 lukem done
3470 1.1 lukem
3471 1.1 lukem # Make executables depend on our current version.
3472 1.1 lukem verstring="$verstring:${current}.0"
3473 1.1 lukem ;;
3474 1.1 lukem
3475 1.1 lukem sunos)
3476 1.1 lukem major=".$current"
3477 1.1 lukem versuffix=".$current.$revision"
3478 1.1 lukem ;;
3479 1.1 lukem
3480 1.1 lukem windows)
3481 1.1 lukem # Use '-' rather than '.', since we only want one
3482 1.1 lukem # extension on DOS 8.3 filesystems.
3483 1.1 lukem major=`expr $current - $age`
3484 1.1 lukem versuffix="-$major"
3485 1.1 lukem ;;
3486 1.1 lukem
3487 1.1 lukem *)
3488 1.1 lukem $echo "$modename: unknown library version type \`$version_type'" 1>&2
3489 1.1 lukem $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
3490 1.1 lukem exit $EXIT_FAILURE
3491 1.1 lukem ;;
3492 1.1 lukem esac
3493 1.1 lukem
3494 1.1 lukem # Clear the version info if we defaulted, and they specified a release.
3495 1.1 lukem if test -z "$vinfo" && test -n "$release"; then
3496 1.1 lukem major=
3497 1.1 lukem case $version_type in
3498 1.1 lukem darwin)
3499 1.1 lukem # we can't check for "0.0" in archive_cmds due to quoting
3500 1.1 lukem # problems, so we reset it completely
3501 1.1 lukem verstring=
3502 1.1 lukem ;;
3503 1.1 lukem *)
3504 1.1 lukem verstring="0.0"
3505 1.1 lukem ;;
3506 1.1 lukem esac
3507 1.1 lukem if test "$need_version" = no; then
3508 1.1 lukem versuffix=
3509 1.1 lukem else
3510 1.1 lukem versuffix=".0.0"
3511 1.1 lukem fi
3512 1.1 lukem fi
3513 1.1 lukem
3514 1.1 lukem # Remove version info from name if versioning should be avoided
3515 1.1 lukem if test "$avoid_version" = yes && test "$need_version" = no; then
3516 1.1 lukem major=
3517 1.1 lukem versuffix=
3518 1.1 lukem versuffix2=
3519 1.1 lukem verstring=""
3520 1.1 lukem fi
3521 1.1 lukem
3522 1.1 lukem # Check to see if the archive will have undefined symbols.
3523 1.1 lukem if test "$allow_undefined" = yes; then
3524 1.1 lukem if test "$allow_undefined_flag" = unsupported; then
3525 1.1 lukem $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
3526 1.1 lukem build_libtool_libs=no
3527 1.1 lukem build_old_libs=yes
3528 1.1 lukem fi
3529 1.1 lukem else
3530 1.1 lukem # Don't allow undefined symbols.
3531 1.1 lukem allow_undefined_flag="$no_undefined_flag"
3532 1.1 lukem fi
3533 1.1 lukem fi
3534 1.1 lukem
3535 1.1 lukem if test "$mode" != relink; then
3536 1.1 lukem # Remove our outputs, but don't remove object files since they
3537 1.1 lukem # may have been created when compiling PIC objects.
3538 1.1 lukem removelist=
3539 1.1 lukem tempremovelist=`$echo "$output_objdir/*"`
3540 1.1 lukem for p in $tempremovelist; do
3541 1.1 lukem case $p in
3542 1.1 lukem *.$objext)
3543 1.1 lukem ;;
3544 1.1 lukem $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
3545 1.1 lukem if test "X$precious_files_regex" != "X"; then
3546 1.1 lukem if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
3547 1.1 lukem then
3548 1.1 lukem continue
3549 1.1 lukem fi
3550 1.1 lukem fi
3551 1.1 lukem removelist="$removelist $p"
3552 1.1 lukem ;;
3553 1.1 lukem *) ;;
3554 1.1 lukem esac
3555 1.1 lukem done
3556 1.1 lukem if test -n "$removelist"; then
3557 1.1 lukem $show "${rm}r $removelist"
3558 1.1 lukem $run ${rm}r $removelist
3559 1.1 lukem fi
3560 1.1 lukem fi
3561 1.1 lukem
3562 1.1 lukem # Now set the variables for building old libraries.
3563 1.1 lukem if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
3564 1.1 lukem oldlibs="$oldlibs $output_objdir/$libname.$libext"
3565 1.1 lukem
3566 1.1 lukem # Transform .lo files to .o files.
3567 1.1 lukem oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
3568 1.1 lukem fi
3569 1.1 lukem
3570 1.1 lukem # Eliminate all temporary directories.
3571 1.1 lukem #for path in $notinst_path; do
3572 1.1 lukem # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
3573 1.1 lukem # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
3574 1.1 lukem # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
3575 1.1 lukem #done
3576 1.1 lukem
3577 1.1 lukem if test -n "$xrpath"; then
3578 1.1 lukem # If the user specified any rpath flags, then add them.
3579 1.1 lukem temp_xrpath=
3580 1.1 lukem for libdir in $xrpath; do
3581 1.1 lukem temp_xrpath="$temp_xrpath -R$libdir"
3582 1.1 lukem case "$finalize_rpath " in
3583 1.1 lukem *" $libdir "*) ;;
3584 1.1 lukem *) finalize_rpath="$finalize_rpath $libdir" ;;
3585 1.1 lukem esac
3586 1.1 lukem done
3587 1.1 lukem if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
3588 1.1 lukem dependency_libs="$temp_xrpath $dependency_libs"
3589 1.1 lukem fi
3590 1.1 lukem fi
3591 1.1 lukem
3592 1.1 lukem # Make sure dlfiles contains only unique files that won't be dlpreopened
3593 1.1 lukem old_dlfiles="$dlfiles"
3594 1.1 lukem dlfiles=
3595 1.1 lukem for lib in $old_dlfiles; do
3596 1.1 lukem case " $dlprefiles $dlfiles " in
3597 1.1 lukem *" $lib "*) ;;
3598 1.1 lukem *) dlfiles="$dlfiles $lib" ;;
3599 1.1 lukem esac
3600 1.1 lukem done
3601 1.1 lukem
3602 1.1 lukem # Make sure dlprefiles contains only unique files
3603 1.1 lukem old_dlprefiles="$dlprefiles"
3604 1.1 lukem dlprefiles=
3605 1.1 lukem for lib in $old_dlprefiles; do
3606 1.1 lukem case "$dlprefiles " in
3607 1.1 lukem *" $lib "*) ;;
3608 1.1 lukem *) dlprefiles="$dlprefiles $lib" ;;
3609 1.1 lukem esac
3610 1.1 lukem done
3611 1.1 lukem
3612 1.1 lukem if test "$build_libtool_libs" = yes; then
3613 1.1 lukem if test -n "$rpath"; then
3614 1.1 lukem case $host in
3615 1.1 lukem *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
3616 1.1 lukem # these systems don't actually have a c library (as such)!
3617 1.1 lukem ;;
3618 1.1 lukem *-*-rhapsody* | *-*-darwin1.[012])
3619 1.1 lukem # Rhapsody C library is in the System framework
3620 1.1 lukem deplibs="$deplibs -framework System"
3621 1.1 lukem ;;
3622 1.1 lukem *-*-netbsd*)
3623 1.1 lukem # Don't link with libc until the a.out ld.so is fixed.
3624 1.1 lukem ;;
3625 1.1 lukem *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
3626 1.1 lukem # Do not include libc due to us having libc/libc_r.
3627 1.1 lukem ;;
3628 1.1 lukem *-*-sco3.2v5* | *-*-sco5v6*)
3629 1.1 lukem # Causes problems with __ctype
3630 1.1 lukem ;;
3631 1.1 lukem *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
3632 1.1 lukem # Compiler inserts libc in the correct place for threads to work
3633 1.1 lukem ;;
3634 1.1 lukem *)
3635 1.1 lukem # Add libc to deplibs on all other systems if necessary.
3636 1.1 lukem if test "$build_libtool_need_lc" = "yes"; then
3637 1.1 lukem deplibs="$deplibs -lc"
3638 1.1 lukem fi
3639 1.1 lukem ;;
3640 1.1 lukem esac
3641 1.1 lukem fi
3642 1.1 lukem
3643 1.1 lukem # Transform deplibs into only deplibs that can be linked in shared.
3644 1.1 lukem name_save=$name
3645 1.1 lukem libname_save=$libname
3646 1.1 lukem release_save=$release
3647 1.1 lukem versuffix_save=$versuffix
3648 1.1 lukem major_save=$major
3649 1.1 lukem # I'm not sure if I'm treating the release correctly. I think
3650 1.1 lukem # release should show up in the -l (ie -lgmp5) so we don't want to
3651 1.1 lukem # add it in twice. Is that correct?
3652 1.1 lukem release=""
3653 1.1 lukem versuffix=""
3654 1.1 lukem major=""
3655 1.1 lukem newdeplibs=
3656 1.1 lukem droppeddeps=no
3657 1.1 lukem case $deplibs_check_method in
3658 1.1 lukem pass_all)
3659 1.1 lukem # Don't check for shared/static. Everything works.
3660 1.1 lukem # This might be a little naive. We might want to check
3661 1.1 lukem # whether the library exists or not. But this is on
3662 1.1 lukem # osf3 & osf4 and I'm not really sure... Just
3663 1.1 lukem # implementing what was already the behavior.
3664 1.1 lukem newdeplibs=$deplibs
3665 1.1 lukem ;;
3666 1.1 lukem test_compile)
3667 1.1 lukem # This code stresses the "libraries are programs" paradigm to its
3668 1.1 lukem # limits. Maybe even breaks it. We compile a program, linking it
3669 1.1 lukem # against the deplibs as a proxy for the library. Then we can check
3670 1.1 lukem # whether they linked in statically or dynamically with ldd.
3671 1.1 lukem $rm conftest.c
3672 1.1 lukem cat > conftest.c <<EOF
3673 1.1 lukem int main() { return 0; }
3674 1.1 lukem EOF
3675 1.1 lukem $rm conftest
3676 1.1 lukem if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
3677 1.1 lukem ldd_output=`ldd conftest`
3678 1.1 lukem for i in $deplibs; do
3679 1.1 lukem name=`expr $i : '-l\(.*\)'`
3680 1.1 lukem # If $name is empty we are operating on a -L argument.
3681 1.1 lukem if test "$name" != "" && test "$name" != "0"; then
3682 1.1 lukem if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3683 1.1 lukem case " $predeps $postdeps " in
3684 1.1 lukem *" $i "*)
3685 1.1 lukem newdeplibs="$newdeplibs $i"
3686 1.1 lukem i=""
3687 1.1 lukem ;;
3688 1.1 lukem esac
3689 1.1 lukem fi
3690 1.1 lukem if test -n "$i" ; then
3691 1.1 lukem libname=`eval \\$echo \"$libname_spec\"`
3692 1.1 lukem deplib_matches=`eval \\$echo \"$library_names_spec\"`
3693 1.1 lukem set dummy $deplib_matches
3694 1.1 lukem deplib_match=$2
3695 1.1 lukem if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3696 1.1 lukem newdeplibs="$newdeplibs $i"
3697 1.1 lukem else
3698 1.1 lukem droppeddeps=yes
3699 1.1 lukem $echo
3700 1.1 lukem $echo "*** Warning: dynamic linker does not accept needed library $i."
3701 1.1 lukem $echo "*** I have the capability to make that library automatically link in when"
3702 1.1 lukem $echo "*** you link to this library. But I can only do this if you have a"
3703 1.1 lukem $echo "*** shared version of the library, which I believe you do not have"
3704 1.1 lukem $echo "*** because a test_compile did reveal that the linker did not use it for"
3705 1.1 lukem $echo "*** its dynamic dependency list that programs get resolved with at runtime."
3706 1.1 lukem fi
3707 1.1 lukem fi
3708 1.1 lukem else
3709 1.1 lukem newdeplibs="$newdeplibs $i"
3710 1.1 lukem fi
3711 1.1 lukem done
3712 1.1 lukem else
3713 1.1 lukem # Error occurred in the first compile. Let's try to salvage
3714 1.1 lukem # the situation: Compile a separate program for each library.
3715 1.1 lukem for i in $deplibs; do
3716 1.1 lukem name=`expr $i : '-l\(.*\)'`
3717 1.1 lukem # If $name is empty we are operating on a -L argument.
3718 1.1 lukem if test "$name" != "" && test "$name" != "0"; then
3719 1.1 lukem $rm conftest
3720 1.1 lukem if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
3721 1.1 lukem ldd_output=`ldd conftest`
3722 1.1 lukem if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3723 1.1 lukem case " $predeps $postdeps " in
3724 1.1 lukem *" $i "*)
3725 1.1 lukem newdeplibs="$newdeplibs $i"
3726 1.1 lukem i=""
3727 1.1 lukem ;;
3728 1.1 lukem esac
3729 1.1 lukem fi
3730 1.1 lukem if test -n "$i" ; then
3731 1.1 lukem libname=`eval \\$echo \"$libname_spec\"`
3732 1.1 lukem deplib_matches=`eval \\$echo \"$library_names_spec\"`
3733 1.1 lukem set dummy $deplib_matches
3734 1.1 lukem deplib_match=$2
3735 1.1 lukem if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3736 1.1 lukem newdeplibs="$newdeplibs $i"
3737 1.1 lukem else
3738 1.1 lukem droppeddeps=yes
3739 1.1 lukem $echo
3740 1.1 lukem $echo "*** Warning: dynamic linker does not accept needed library $i."
3741 1.1 lukem $echo "*** I have the capability to make that library automatically link in when"
3742 1.1 lukem $echo "*** you link to this library. But I can only do this if you have a"
3743 1.1 lukem $echo "*** shared version of the library, which you do not appear to have"
3744 1.1 lukem $echo "*** because a test_compile did reveal that the linker did not use this one"
3745 1.1 lukem $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
3746 1.1 lukem fi
3747 1.1 lukem fi
3748 1.1 lukem else
3749 1.1 lukem droppeddeps=yes
3750 1.1 lukem $echo
3751 1.1 lukem $echo "*** Warning! Library $i is needed by this library but I was not able to"
3752 1.1 lukem $echo "*** make it link in! You will probably need to install it or some"
3753 1.1 lukem $echo "*** library that it depends on before this library will be fully"
3754 1.1 lukem $echo "*** functional. Installing it before continuing would be even better."
3755 1.1 lukem fi
3756 1.1 lukem else
3757 1.1 lukem newdeplibs="$newdeplibs $i"
3758 1.1 lukem fi
3759 1.1 lukem done
3760 1.1 lukem fi
3761 1.1 lukem ;;
3762 1.1 lukem file_magic*)
3763 1.1 lukem set dummy $deplibs_check_method
3764 1.1 lukem file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3765 1.1 lukem for a_deplib in $deplibs; do
3766 1.1 lukem name=`expr $a_deplib : '-l\(.*\)'`
3767 1.1 lukem # If $name is empty we are operating on a -L argument.
3768 1.1 lukem if test "$name" != "" && test "$name" != "0"; then
3769 1.1 lukem if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3770 1.1 lukem case " $predeps $postdeps " in
3771 1.1 lukem *" $a_deplib "*)
3772 1.1 lukem newdeplibs="$newdeplibs $a_deplib"
3773 1.1 lukem a_deplib=""
3774 1.1 lukem ;;
3775 1.1 lukem esac
3776 1.1 lukem fi
3777 1.1 lukem if test -n "$a_deplib" ; then
3778 1.1 lukem libname=`eval \\$echo \"$libname_spec\"`
3779 1.1 lukem for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3780 1.1 lukem potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3781 1.1 lukem for potent_lib in $potential_libs; do
3782 1.1 lukem # Follow soft links.
3783 1.1 lukem if ls -lLd "$potent_lib" 2>/dev/null \
3784 1.1 lukem | grep " -> " >/dev/null; then
3785 1.1 lukem continue
3786 1.1 lukem fi
3787 1.1 lukem # The statement above tries to avoid entering an
3788 1.1 lukem # endless loop below, in case of cyclic links.
3789 1.1 lukem # We might still enter an endless loop, since a link
3790 1.1 lukem # loop can be closed while we follow links,
3791 1.1 lukem # but so what?
3792 1.1 lukem potlib="$potent_lib"
3793 1.1 lukem while test -h "$potlib" 2>/dev/null; do
3794 1.1 lukem potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
3795 1.1 lukem case $potliblink in
3796 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
3797 1.1 lukem *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
3798 1.1 lukem esac
3799 1.1 lukem done
3800 1.1 lukem if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3801 1.1 lukem | ${SED} 10q \
3802 1.1 lukem | $EGREP "$file_magic_regex" > /dev/null; then
3803 1.1 lukem newdeplibs="$newdeplibs $a_deplib"
3804 1.1 lukem a_deplib=""
3805 1.1 lukem break 2
3806 1.1 lukem fi
3807 1.1 lukem done
3808 1.1 lukem done
3809 1.1 lukem fi
3810 1.1 lukem if test -n "$a_deplib" ; then
3811 1.1 lukem droppeddeps=yes
3812 1.1 lukem $echo
3813 1.1 lukem $echo "*** Warning: linker path does not have real file for library $a_deplib."
3814 1.1 lukem $echo "*** I have the capability to make that library automatically link in when"
3815 1.1 lukem $echo "*** you link to this library. But I can only do this if you have a"
3816 1.1 lukem $echo "*** shared version of the library, which you do not appear to have"
3817 1.1 lukem $echo "*** because I did check the linker path looking for a file starting"
3818 1.1 lukem if test -z "$potlib" ; then
3819 1.1 lukem $echo "*** with $libname but no candidates were found. (...for file magic test)"
3820 1.1 lukem else
3821 1.1 lukem $echo "*** with $libname and none of the candidates passed a file format test"
3822 1.1 lukem $echo "*** using a file magic. Last file checked: $potlib"
3823 1.1 lukem fi
3824 1.1 lukem fi
3825 1.1 lukem else
3826 1.1 lukem # Add a -L argument.
3827 1.1 lukem newdeplibs="$newdeplibs $a_deplib"
3828 1.1 lukem fi
3829 1.1 lukem done # Gone through all deplibs.
3830 1.1 lukem ;;
3831 1.1 lukem match_pattern*)
3832 1.1 lukem set dummy $deplibs_check_method
3833 1.1 lukem match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3834 1.1 lukem for a_deplib in $deplibs; do
3835 1.1 lukem name=`expr $a_deplib : '-l\(.*\)'`
3836 1.1 lukem # If $name is empty we are operating on a -L argument.
3837 1.1 lukem if test -n "$name" && test "$name" != "0"; then
3838 1.1 lukem if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3839 1.1 lukem case " $predeps $postdeps " in
3840 1.1 lukem *" $a_deplib "*)
3841 1.1 lukem newdeplibs="$newdeplibs $a_deplib"
3842 1.1 lukem a_deplib=""
3843 1.1 lukem ;;
3844 1.1 lukem esac
3845 1.1 lukem fi
3846 1.1 lukem if test -n "$a_deplib" ; then
3847 1.1 lukem libname=`eval \\$echo \"$libname_spec\"`
3848 1.1 lukem for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3849 1.1 lukem potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3850 1.1 lukem for potent_lib in $potential_libs; do
3851 1.1 lukem potlib="$potent_lib" # see symlink-check above in file_magic test
3852 1.1 lukem if eval $echo \"$potent_lib\" 2>/dev/null \
3853 1.1 lukem | ${SED} 10q \
3854 1.1 lukem | $EGREP "$match_pattern_regex" > /dev/null; then
3855 1.1 lukem newdeplibs="$newdeplibs $a_deplib"
3856 1.1 lukem a_deplib=""
3857 1.1 lukem break 2
3858 1.1 lukem fi
3859 1.1 lukem done
3860 1.1 lukem done
3861 1.1 lukem fi
3862 1.1 lukem if test -n "$a_deplib" ; then
3863 1.1 lukem droppeddeps=yes
3864 1.1 lukem $echo
3865 1.1 lukem $echo "*** Warning: linker path does not have real file for library $a_deplib."
3866 1.1 lukem $echo "*** I have the capability to make that library automatically link in when"
3867 1.1 lukem $echo "*** you link to this library. But I can only do this if you have a"
3868 1.1 lukem $echo "*** shared version of the library, which you do not appear to have"
3869 1.1 lukem $echo "*** because I did check the linker path looking for a file starting"
3870 1.1 lukem if test -z "$potlib" ; then
3871 1.1 lukem $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3872 1.1 lukem else
3873 1.1 lukem $echo "*** with $libname and none of the candidates passed a file format test"
3874 1.1 lukem $echo "*** using a regex pattern. Last file checked: $potlib"
3875 1.1 lukem fi
3876 1.1 lukem fi
3877 1.1 lukem else
3878 1.1 lukem # Add a -L argument.
3879 1.1 lukem newdeplibs="$newdeplibs $a_deplib"
3880 1.1 lukem fi
3881 1.1 lukem done # Gone through all deplibs.
3882 1.1 lukem ;;
3883 1.1 lukem none | unknown | *)
3884 1.1 lukem newdeplibs=""
3885 1.1 lukem tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3886 1.1 lukem -e 's/ -[LR][^ ]*//g'`
3887 1.1 lukem if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3888 1.1 lukem for i in $predeps $postdeps ; do
3889 1.1 lukem # can't use Xsed below, because $i might contain '/'
3890 1.1 lukem tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
3891 1.1 lukem done
3892 1.1 lukem fi
3893 1.1 lukem if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
3894 1.1 lukem | grep . >/dev/null; then
3895 1.1 lukem $echo
3896 1.1 lukem if test "X$deplibs_check_method" = "Xnone"; then
3897 1.1 lukem $echo "*** Warning: inter-library dependencies are not supported in this platform."
3898 1.1 lukem else
3899 1.1 lukem $echo "*** Warning: inter-library dependencies are not known to be supported."
3900 1.1 lukem fi
3901 1.1 lukem $echo "*** All declared inter-library dependencies are being dropped."
3902 1.1 lukem droppeddeps=yes
3903 1.1 lukem fi
3904 1.1 lukem ;;
3905 1.1 lukem esac
3906 1.1 lukem versuffix=$versuffix_save
3907 1.1 lukem major=$major_save
3908 1.1 lukem release=$release_save
3909 1.1 lukem libname=$libname_save
3910 1.1 lukem name=$name_save
3911 1.1 lukem
3912 1.1 lukem case $host in
3913 1.1 lukem *-*-rhapsody* | *-*-darwin1.[012])
3914 1.1 lukem # On Rhapsody replace the C library is the System framework
3915 1.1 lukem newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3916 1.1 lukem ;;
3917 1.1 lukem esac
3918 1.1 lukem
3919 1.1 lukem if test "$droppeddeps" = yes; then
3920 1.1 lukem if test "$module" = yes; then
3921 1.1 lukem $echo
3922 1.1 lukem $echo "*** Warning: libtool could not satisfy all declared inter-library"
3923 1.1 lukem $echo "*** dependencies of module $libname. Therefore, libtool will create"
3924 1.1 lukem $echo "*** a static module, that should work as long as the dlopening"
3925 1.1 lukem $echo "*** application is linked with the -dlopen flag."
3926 1.1 lukem if test -z "$global_symbol_pipe"; then
3927 1.1 lukem $echo
3928 1.1 lukem $echo "*** However, this would only work if libtool was able to extract symbol"
3929 1.1 lukem $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3930 1.1 lukem $echo "*** not find such a program. So, this module is probably useless."
3931 1.1 lukem $echo "*** \`nm' from GNU binutils and a full rebuild may help."
3932 1.1 lukem fi
3933 1.1 lukem if test "$build_old_libs" = no; then
3934 1.1 lukem oldlibs="$output_objdir/$libname.$libext"
3935 1.1 lukem build_libtool_libs=module
3936 1.1 lukem build_old_libs=yes
3937 1.1 lukem else
3938 1.1 lukem build_libtool_libs=no
3939 1.1 lukem fi
3940 1.1 lukem else
3941 1.1 lukem $echo "*** The inter-library dependencies that have been dropped here will be"
3942 1.1 lukem $echo "*** automatically added whenever a program is linked with this library"
3943 1.1 lukem $echo "*** or is declared to -dlopen it."
3944 1.1 lukem
3945 1.1 lukem if test "$allow_undefined" = no; then
3946 1.1 lukem $echo
3947 1.1 lukem $echo "*** Since this library must not contain undefined symbols,"
3948 1.1 lukem $echo "*** because either the platform does not support them or"
3949 1.1 lukem $echo "*** it was explicitly requested with -no-undefined,"
3950 1.1 lukem $echo "*** libtool will only create a static version of it."
3951 1.1 lukem if test "$build_old_libs" = no; then
3952 1.1 lukem oldlibs="$output_objdir/$libname.$libext"
3953 1.1 lukem build_libtool_libs=module
3954 1.1 lukem build_old_libs=yes
3955 1.1 lukem else
3956 1.1 lukem build_libtool_libs=no
3957 1.1 lukem fi
3958 1.1 lukem fi
3959 1.1 lukem fi
3960 1.1 lukem fi
3961 1.1 lukem # Done checking deplibs!
3962 1.1 lukem deplibs=$newdeplibs
3963 1.1 lukem fi
3964 1.1 lukem
3965 1.1 lukem
3966 1.1 lukem # move library search paths that coincide with paths to not yet
3967 1.1 lukem # installed libraries to the beginning of the library search list
3968 1.1 lukem new_libs=
3969 1.1 lukem for path in $notinst_path; do
3970 1.1 lukem case " $new_libs " in
3971 1.1 lukem *" -L$path/$objdir "*) ;;
3972 1.1 lukem *)
3973 1.1 lukem case " $deplibs " in
3974 1.1 lukem *" -L$path/$objdir "*)
3975 1.1 lukem new_libs="$new_libs -L$path/$objdir" ;;
3976 1.1 lukem esac
3977 1.1 lukem ;;
3978 1.1 lukem esac
3979 1.1 lukem done
3980 1.1 lukem for deplib in $deplibs; do
3981 1.1 lukem case $deplib in
3982 1.1 lukem -L*)
3983 1.1 lukem case " $new_libs " in
3984 1.1 lukem *" $deplib "*) ;;
3985 1.1 lukem *) new_libs="$new_libs $deplib" ;;
3986 1.1 lukem esac
3987 1.1 lukem ;;
3988 1.1 lukem *) new_libs="$new_libs $deplib" ;;
3989 1.1 lukem esac
3990 1.1 lukem done
3991 1.1 lukem deplibs="$new_libs"
3992 1.1 lukem
3993 1.1 lukem
3994 1.1 lukem # All the library-specific variables (install_libdir is set above).
3995 1.1 lukem library_names=
3996 1.1 lukem old_library=
3997 1.1 lukem dlname=
3998 1.1 lukem
3999 1.1 lukem # Test again, we may have decided not to build it any more
4000 1.1 lukem if test "$build_libtool_libs" = yes; then
4001 1.1 lukem if test "$hardcode_into_libs" = yes; then
4002 1.1 lukem # Hardcode the library paths
4003 1.1 lukem hardcode_libdirs=
4004 1.1 lukem dep_rpath=
4005 1.1 lukem rpath="$finalize_rpath"
4006 1.1 lukem test "$mode" != relink && rpath="$compile_rpath$rpath"
4007 1.1 lukem for libdir in $rpath; do
4008 1.1 lukem if test -n "$hardcode_libdir_flag_spec"; then
4009 1.1 lukem if test -n "$hardcode_libdir_separator"; then
4010 1.1 lukem if test -z "$hardcode_libdirs"; then
4011 1.1 lukem hardcode_libdirs="$libdir"
4012 1.1 lukem else
4013 1.1 lukem # Just accumulate the unique libdirs.
4014 1.1 lukem case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4015 1.1 lukem *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4016 1.1 lukem ;;
4017 1.1 lukem *)
4018 1.1 lukem hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4019 1.1 lukem ;;
4020 1.1 lukem esac
4021 1.1 lukem fi
4022 1.1 lukem else
4023 1.1 lukem eval flag=\"$hardcode_libdir_flag_spec\"
4024 1.1 lukem dep_rpath="$dep_rpath $flag"
4025 1.1 lukem fi
4026 1.1 lukem elif test -n "$runpath_var"; then
4027 1.1 lukem case "$perm_rpath " in
4028 1.1 lukem *" $libdir "*) ;;
4029 1.1 lukem *) perm_rpath="$perm_rpath $libdir" ;;
4030 1.1 lukem esac
4031 1.1 lukem fi
4032 1.1 lukem done
4033 1.1 lukem # Substitute the hardcoded libdirs into the rpath.
4034 1.1 lukem if test -n "$hardcode_libdir_separator" &&
4035 1.1 lukem test -n "$hardcode_libdirs"; then
4036 1.1 lukem libdir="$hardcode_libdirs"
4037 1.1 lukem if test -n "$hardcode_libdir_flag_spec_ld"; then
4038 1.1 lukem case $archive_cmds in
4039 1.1 lukem *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
4040 1.1 lukem *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
4041 1.1 lukem esac
4042 1.1 lukem else
4043 1.1 lukem eval dep_rpath=\"$hardcode_libdir_flag_spec\"
4044 1.1 lukem fi
4045 1.1 lukem fi
4046 1.1 lukem if test -n "$runpath_var" && test -n "$perm_rpath"; then
4047 1.1 lukem # We should set the runpath_var.
4048 1.1 lukem rpath=
4049 1.1 lukem for dir in $perm_rpath; do
4050 1.1 lukem rpath="$rpath$dir:"
4051 1.1 lukem done
4052 1.1 lukem eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
4053 1.1 lukem fi
4054 1.1 lukem test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
4055 1.1 lukem fi
4056 1.1 lukem
4057 1.1 lukem shlibpath="$finalize_shlibpath"
4058 1.1 lukem test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
4059 1.1 lukem if test -n "$shlibpath"; then
4060 1.1 lukem eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
4061 1.1 lukem fi
4062 1.1 lukem
4063 1.1 lukem # Get the real and link names of the library.
4064 1.1 lukem eval shared_ext=\"$shrext_cmds\"
4065 1.1 lukem eval library_names=\"$library_names_spec\"
4066 1.1 lukem set dummy $library_names
4067 1.1 lukem realname="$2"
4068 1.1 lukem shift; shift
4069 1.1 lukem
4070 1.1 lukem if test -n "$soname_spec"; then
4071 1.1 lukem eval soname=\"$soname_spec\"
4072 1.1 lukem else
4073 1.1 lukem soname="$realname"
4074 1.1 lukem fi
4075 1.1 lukem if test -z "$dlname"; then
4076 1.1 lukem dlname=$soname
4077 1.1 lukem fi
4078 1.1 lukem
4079 1.1 lukem lib="$output_objdir/$realname"
4080 1.1 lukem linknames=
4081 1.1 lukem for link
4082 1.1 lukem do
4083 1.1 lukem linknames="$linknames $link"
4084 1.1 lukem done
4085 1.1 lukem
4086 1.1 lukem # Use standard objects if they are pic
4087 1.1 lukem test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4088 1.1 lukem
4089 1.1 lukem # Prepare the list of exported symbols
4090 1.1 lukem if test -z "$export_symbols"; then
4091 1.1 lukem if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
4092 1.1 lukem $show "generating symbol list for \`$libname.la'"
4093 1.1 lukem export_symbols="$output_objdir/$libname.exp"
4094 1.1 lukem $run $rm $export_symbols
4095 1.1 lukem cmds=$export_symbols_cmds
4096 1.1 lukem save_ifs="$IFS"; IFS='~'
4097 1.1 lukem for cmd in $cmds; do
4098 1.1 lukem IFS="$save_ifs"
4099 1.1 lukem eval cmd=\"$cmd\"
4100 1.1 lukem if len=`expr "X$cmd" : ".*"` &&
4101 1.1 lukem test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4102 1.1 lukem $show "$cmd"
4103 1.1 lukem $run eval "$cmd" || exit $?
4104 1.1 lukem skipped_export=false
4105 1.1 lukem else
4106 1.1 lukem # The command line is too long to execute in one step.
4107 1.1 lukem $show "using reloadable object file for export list..."
4108 1.1 lukem skipped_export=:
4109 1.1 lukem # Break out early, otherwise skipped_export may be
4110 1.1 lukem # set to false by a later but shorter cmd.
4111 1.1 lukem break
4112 1.1 lukem fi
4113 1.1 lukem done
4114 1.1 lukem IFS="$save_ifs"
4115 1.1 lukem if test -n "$export_symbols_regex"; then
4116 1.1 lukem $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
4117 1.1 lukem $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
4118 1.1 lukem $show "$mv \"${export_symbols}T\" \"$export_symbols\""
4119 1.1 lukem $run eval '$mv "${export_symbols}T" "$export_symbols"'
4120 1.1 lukem fi
4121 1.1 lukem fi
4122 1.1 lukem fi
4123 1.1 lukem
4124 1.1 lukem if test -n "$export_symbols" && test -n "$include_expsyms"; then
4125 1.1 lukem $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
4126 1.1 lukem fi
4127 1.1 lukem
4128 1.1 lukem tmp_deplibs=
4129 1.1 lukem for test_deplib in $deplibs; do
4130 1.1 lukem case " $convenience " in
4131 1.1 lukem *" $test_deplib "*) ;;
4132 1.1 lukem *)
4133 1.1 lukem tmp_deplibs="$tmp_deplibs $test_deplib"
4134 1.1 lukem ;;
4135 1.1 lukem esac
4136 1.1 lukem done
4137 1.1 lukem deplibs="$tmp_deplibs"
4138 1.1 lukem
4139 1.1 lukem if test -n "$convenience"; then
4140 1.1 lukem if test -n "$whole_archive_flag_spec"; then
4141 1.1 lukem save_libobjs=$libobjs
4142 1.1 lukem eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4143 1.1 lukem else
4144 1.1 lukem gentop="$output_objdir/${outputname}x"
4145 1.1 lukem generated="$generated $gentop"
4146 1.1 lukem
4147 1.1 lukem func_extract_archives $gentop $convenience
4148 1.1 lukem libobjs="$libobjs $func_extract_archives_result"
4149 1.1 lukem fi
4150 1.1 lukem fi
4151 1.1 lukem
4152 1.1 lukem if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
4153 1.1 lukem eval flag=\"$thread_safe_flag_spec\"
4154 1.1 lukem linker_flags="$linker_flags $flag"
4155 1.1 lukem fi
4156 1.1 lukem
4157 1.1 lukem # Make a backup of the uninstalled library when relinking
4158 1.1 lukem if test "$mode" = relink; then
4159 1.1 lukem $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
4160 1.1 lukem fi
4161 1.1 lukem
4162 1.1 lukem # Do each of the archive commands.
4163 1.1 lukem if test "$module" = yes && test -n "$module_cmds" ; then
4164 1.1 lukem if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4165 1.1 lukem eval test_cmds=\"$module_expsym_cmds\"
4166 1.1 lukem cmds=$module_expsym_cmds
4167 1.1 lukem else
4168 1.1 lukem eval test_cmds=\"$module_cmds\"
4169 1.1 lukem cmds=$module_cmds
4170 1.1 lukem fi
4171 1.1 lukem else
4172 1.1 lukem if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4173 1.1 lukem eval test_cmds=\"$archive_expsym_cmds\"
4174 1.1 lukem cmds=$archive_expsym_cmds
4175 1.1 lukem else
4176 1.1 lukem eval test_cmds=\"$archive_cmds\"
4177 1.1 lukem cmds=$archive_cmds
4178 1.1 lukem fi
4179 1.1 lukem fi
4180 1.1 lukem
4181 1.1 lukem if test "X$skipped_export" != "X:" &&
4182 1.1 lukem len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4183 1.1 lukem test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4184 1.1 lukem :
4185 1.1 lukem else
4186 1.1 lukem # The command line is too long to link in one step, link piecewise.
4187 1.1 lukem $echo "creating reloadable object files..."
4188 1.1 lukem
4189 1.1 lukem # Save the value of $output and $libobjs because we want to
4190 1.1 lukem # use them later. If we have whole_archive_flag_spec, we
4191 1.1 lukem # want to use save_libobjs as it was before
4192 1.1 lukem # whole_archive_flag_spec was expanded, because we can't
4193 1.1 lukem # assume the linker understands whole_archive_flag_spec.
4194 1.1 lukem # This may have to be revisited, in case too many
4195 1.1 lukem # convenience libraries get linked in and end up exceeding
4196 1.1 lukem # the spec.
4197 1.1 lukem if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
4198 1.1 lukem save_libobjs=$libobjs
4199 1.1 lukem fi
4200 1.1 lukem save_output=$output
4201 1.1 lukem output_la=`$echo "X$output" | $Xsed -e "$basename"`
4202 1.1 lukem
4203 1.1 lukem # Clear the reloadable object creation command queue and
4204 1.1 lukem # initialize k to one.
4205 1.1 lukem test_cmds=
4206 1.1 lukem concat_cmds=
4207 1.1 lukem objlist=
4208 1.1 lukem delfiles=
4209 1.1 lukem last_robj=
4210 1.1 lukem k=1
4211 1.1 lukem output=$output_objdir/$output_la-${k}.$objext
4212 1.1 lukem # Loop over the list of objects to be linked.
4213 1.1 lukem for obj in $save_libobjs
4214 1.1 lukem do
4215 1.1 lukem eval test_cmds=\"$reload_cmds $objlist $last_robj\"
4216 1.1 lukem if test "X$objlist" = X ||
4217 1.1 lukem { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4218 1.1 lukem test "$len" -le "$max_cmd_len"; }; then
4219 1.1 lukem objlist="$objlist $obj"
4220 1.1 lukem else
4221 1.1 lukem # The command $test_cmds is almost too long, add a
4222 1.1 lukem # command to the queue.
4223 1.1 lukem if test "$k" -eq 1 ; then
4224 1.1 lukem # The first file doesn't have a previous command to add.
4225 1.1 lukem eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
4226 1.1 lukem else
4227 1.1 lukem # All subsequent reloadable object files will link in
4228 1.1 lukem # the last one created.
4229 1.1 lukem eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
4230 1.1 lukem fi
4231 1.1 lukem last_robj=$output_objdir/$output_la-${k}.$objext
4232 1.1 lukem k=`expr $k + 1`
4233 1.1 lukem output=$output_objdir/$output_la-${k}.$objext
4234 1.1 lukem objlist=$obj
4235 1.1 lukem len=1
4236 1.1 lukem fi
4237 1.1 lukem done
4238 1.1 lukem # Handle the remaining objects by creating one last
4239 1.1 lukem # reloadable object file. All subsequent reloadable object
4240 1.1 lukem # files will link in the last one created.
4241 1.1 lukem test -z "$concat_cmds" || concat_cmds=$concat_cmds~
4242 1.1 lukem eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
4243 1.1 lukem
4244 1.1 lukem if ${skipped_export-false}; then
4245 1.1 lukem $show "generating symbol list for \`$libname.la'"
4246 1.1 lukem export_symbols="$output_objdir/$libname.exp"
4247 1.1 lukem $run $rm $export_symbols
4248 1.1 lukem libobjs=$output
4249 1.1 lukem # Append the command to create the export file.
4250 1.1 lukem eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
4251 1.1 lukem fi
4252 1.1 lukem
4253 1.1 lukem # Set up a command to remove the reloadable object files
4254 1.1 lukem # after they are used.
4255 1.1 lukem i=0
4256 1.1 lukem while test "$i" -lt "$k"
4257 1.1 lukem do
4258 1.1 lukem i=`expr $i + 1`
4259 1.1 lukem delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
4260 1.1 lukem done
4261 1.1 lukem
4262 1.1 lukem $echo "creating a temporary reloadable object file: $output"
4263 1.1 lukem
4264 1.1 lukem # Loop through the commands generated above and execute them.
4265 1.1 lukem save_ifs="$IFS"; IFS='~'
4266 1.1 lukem for cmd in $concat_cmds; do
4267 1.1 lukem IFS="$save_ifs"
4268 1.1 lukem $show "$cmd"
4269 1.1 lukem $run eval "$cmd" || exit $?
4270 1.1 lukem done
4271 1.1 lukem IFS="$save_ifs"
4272 1.1 lukem
4273 1.1 lukem libobjs=$output
4274 1.1 lukem # Restore the value of output.
4275 1.1 lukem output=$save_output
4276 1.1 lukem
4277 1.1 lukem if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
4278 1.1 lukem eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4279 1.1 lukem fi
4280 1.1 lukem # Expand the library linking commands again to reset the
4281 1.1 lukem # value of $libobjs for piecewise linking.
4282 1.1 lukem
4283 1.1 lukem # Do each of the archive commands.
4284 1.1 lukem if test "$module" = yes && test -n "$module_cmds" ; then
4285 1.1 lukem if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4286 1.1 lukem cmds=$module_expsym_cmds
4287 1.1 lukem else
4288 1.1 lukem cmds=$module_cmds
4289 1.1 lukem fi
4290 1.1 lukem else
4291 1.1 lukem if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4292 1.1 lukem cmds=$archive_expsym_cmds
4293 1.1 lukem else
4294 1.1 lukem cmds=$archive_cmds
4295 1.1 lukem fi
4296 1.1 lukem fi
4297 1.1 lukem
4298 1.1 lukem # Append the command to remove the reloadable object files
4299 1.1 lukem # to the just-reset $cmds.
4300 1.1 lukem eval cmds=\"\$cmds~\$rm $delfiles\"
4301 1.1 lukem fi
4302 1.1 lukem save_ifs="$IFS"; IFS='~'
4303 1.1 lukem for cmd in $cmds; do
4304 1.1 lukem IFS="$save_ifs"
4305 1.1 lukem eval cmd=\"$cmd\"
4306 1.1 lukem $show "$cmd"
4307 1.1 lukem $run eval "$cmd" || {
4308 1.1 lukem lt_exit=$?
4309 1.1 lukem
4310 1.1 lukem # Restore the uninstalled library and exit
4311 1.1 lukem if test "$mode" = relink; then
4312 1.1 lukem $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
4313 1.1 lukem fi
4314 1.1 lukem
4315 1.1 lukem exit $lt_exit
4316 1.1 lukem }
4317 1.1 lukem done
4318 1.1 lukem IFS="$save_ifs"
4319 1.1 lukem
4320 1.1 lukem # Restore the uninstalled library and exit
4321 1.1 lukem if test "$mode" = relink; then
4322 1.1 lukem $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
4323 1.1 lukem
4324 1.1 lukem if test -n "$convenience"; then
4325 1.1 lukem if test -z "$whole_archive_flag_spec"; then
4326 1.1 lukem $show "${rm}r $gentop"
4327 1.1 lukem $run ${rm}r "$gentop"
4328 1.1 lukem fi
4329 1.1 lukem fi
4330 1.1 lukem
4331 1.1 lukem exit $EXIT_SUCCESS
4332 1.1 lukem fi
4333 1.1 lukem
4334 1.1 lukem # Create links to the real library.
4335 1.1 lukem for linkname in $linknames; do
4336 1.1 lukem if test "$realname" != "$linkname"; then
4337 1.1 lukem $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
4338 1.1 lukem $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
4339 1.1 lukem fi
4340 1.1 lukem done
4341 1.1 lukem
4342 1.1 lukem # If -module or -export-dynamic was specified, set the dlname.
4343 1.1 lukem if test "$module" = yes || test "$export_dynamic" = yes; then
4344 1.1 lukem # On all known operating systems, these are identical.
4345 1.1 lukem dlname="$soname"
4346 1.1 lukem fi
4347 1.1 lukem fi
4348 1.1 lukem ;;
4349 1.1 lukem
4350 1.1 lukem obj)
4351 1.1 lukem case " $deplibs" in
4352 1.1 lukem *\ -l* | *\ -L*)
4353 1.1 lukem $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;;
4354 1.1 lukem esac
4355 1.1 lukem
4356 1.1 lukem if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4357 1.1 lukem $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
4358 1.1 lukem fi
4359 1.1 lukem
4360 1.1 lukem if test -n "$rpath"; then
4361 1.1 lukem $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
4362 1.1 lukem fi
4363 1.1 lukem
4364 1.1 lukem if test -n "$xrpath"; then
4365 1.1 lukem $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
4366 1.1 lukem fi
4367 1.1 lukem
4368 1.1 lukem if test -n "$vinfo"; then
4369 1.1 lukem $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
4370 1.1 lukem fi
4371 1.1 lukem
4372 1.1 lukem if test -n "$release"; then
4373 1.1 lukem $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
4374 1.1 lukem fi
4375 1.1 lukem
4376 1.1 lukem case $output in
4377 1.1 lukem *.lo)
4378 1.1 lukem if test -n "$objs$old_deplibs"; then
4379 1.1 lukem $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
4380 1.1 lukem exit $EXIT_FAILURE
4381 1.1 lukem fi
4382 1.1 lukem libobj="$output"
4383 1.1 lukem obj=`$echo "X$output" | $Xsed -e "$lo2o"`
4384 1.1 lukem ;;
4385 1.1 lukem *)
4386 1.1 lukem libobj=
4387 1.1 lukem obj="$output"
4388 1.1 lukem ;;
4389 1.1 lukem esac
4390 1.1 lukem
4391 1.1 lukem # Delete the old objects.
4392 1.1 lukem $run $rm $obj $libobj
4393 1.1 lukem
4394 1.1 lukem # Objects from convenience libraries. This assumes
4395 1.1 lukem # single-version convenience libraries. Whenever we create
4396 1.1 lukem # different ones for PIC/non-PIC, this we'll have to duplicate
4397 1.1 lukem # the extraction.
4398 1.1 lukem reload_conv_objs=
4399 1.1 lukem gentop=
4400 1.1 lukem # reload_cmds runs $LD directly, so let us get rid of
4401 1.1 lukem # -Wl from whole_archive_flag_spec and hope we can get by with
4402 1.1 lukem # turning comma into space..
4403 1.1 lukem wl=
4404 1.1 lukem
4405 1.1 lukem if test -n "$convenience"; then
4406 1.1 lukem if test -n "$whole_archive_flag_spec"; then
4407 1.1 lukem eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
4408 1.1 lukem reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
4409 1.1 lukem else
4410 1.1 lukem gentop="$output_objdir/${obj}x"
4411 1.1 lukem generated="$generated $gentop"
4412 1.1 lukem
4413 1.1 lukem func_extract_archives $gentop $convenience
4414 1.1 lukem reload_conv_objs="$reload_objs $func_extract_archives_result"
4415 1.1 lukem fi
4416 1.1 lukem fi
4417 1.1 lukem
4418 1.1 lukem # Create the old-style object.
4419 1.1 lukem reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
4420 1.1 lukem
4421 1.1 lukem output="$obj"
4422 1.1 lukem cmds=$reload_cmds
4423 1.1 lukem save_ifs="$IFS"; IFS='~'
4424 1.1 lukem for cmd in $cmds; do
4425 1.1 lukem IFS="$save_ifs"
4426 1.1 lukem eval cmd=\"$cmd\"
4427 1.1 lukem $show "$cmd"
4428 1.1 lukem $run eval "$cmd" || exit $?
4429 1.1 lukem done
4430 1.1 lukem IFS="$save_ifs"
4431 1.1 lukem
4432 1.1 lukem # Exit if we aren't doing a library object file.
4433 1.1 lukem if test -z "$libobj"; then
4434 1.1 lukem if test -n "$gentop"; then
4435 1.1 lukem $show "${rm}r $gentop"
4436 1.1 lukem $run ${rm}r $gentop
4437 1.1 lukem fi
4438 1.1 lukem
4439 1.1 lukem exit $EXIT_SUCCESS
4440 1.1 lukem fi
4441 1.1 lukem
4442 1.1 lukem if test "$build_libtool_libs" != yes; then
4443 1.1 lukem if test -n "$gentop"; then
4444 1.1 lukem $show "${rm}r $gentop"
4445 1.1 lukem $run ${rm}r $gentop
4446 1.1 lukem fi
4447 1.1 lukem
4448 1.1 lukem # Create an invalid libtool object if no PIC, so that we don't
4449 1.1 lukem # accidentally link it into a program.
4450 1.1 lukem # $show "echo timestamp > $libobj"
4451 1.1 lukem # $run eval "echo timestamp > $libobj" || exit $?
4452 1.1 lukem exit $EXIT_SUCCESS
4453 1.1 lukem fi
4454 1.1 lukem
4455 1.1 lukem if test -n "$pic_flag" || test "$pic_mode" != default; then
4456 1.1 lukem # Only do commands if we really have different PIC objects.
4457 1.1 lukem reload_objs="$libobjs $reload_conv_objs"
4458 1.1 lukem output="$libobj"
4459 1.1 lukem cmds=$reload_cmds
4460 1.1 lukem save_ifs="$IFS"; IFS='~'
4461 1.1 lukem for cmd in $cmds; do
4462 1.1 lukem IFS="$save_ifs"
4463 1.1 lukem eval cmd=\"$cmd\"
4464 1.1 lukem $show "$cmd"
4465 1.1 lukem $run eval "$cmd" || exit $?
4466 1.1 lukem done
4467 1.1 lukem IFS="$save_ifs"
4468 1.1 lukem fi
4469 1.1 lukem
4470 1.1 lukem if test -n "$gentop"; then
4471 1.1 lukem $show "${rm}r $gentop"
4472 1.1 lukem $run ${rm}r $gentop
4473 1.1 lukem fi
4474 1.1 lukem
4475 1.1 lukem exit $EXIT_SUCCESS
4476 1.1 lukem ;;
4477 1.1 lukem
4478 1.1 lukem prog)
4479 1.1 lukem case $host in
4480 1.1 lukem *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
4481 1.1 lukem esac
4482 1.1 lukem if test -n "$vinfo"; then
4483 1.1 lukem $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
4484 1.1 lukem fi
4485 1.1 lukem
4486 1.1 lukem if test -n "$release"; then
4487 1.1 lukem $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
4488 1.1 lukem fi
4489 1.1 lukem
4490 1.1 lukem if test "$preload" = yes; then
4491 1.1 lukem if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
4492 1.1 lukem test "$dlopen_self_static" = unknown; then
4493 1.1 lukem $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
4494 1.1 lukem fi
4495 1.1 lukem fi
4496 1.1 lukem
4497 1.1 lukem case $host in
4498 1.1 lukem *-*-rhapsody* | *-*-darwin1.[012])
4499 1.1 lukem # On Rhapsody replace the C library is the System framework
4500 1.1 lukem compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4501 1.1 lukem finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4502 1.1 lukem ;;
4503 1.1 lukem esac
4504 1.1 lukem
4505 1.1 lukem case $host in
4506 1.1 lukem *darwin*)
4507 1.1 lukem # Don't allow lazy linking, it breaks C++ global constructors
4508 1.1 lukem if test "$tagname" = CXX ; then
4509 1.1 lukem compile_command="$compile_command ${wl}-bind_at_load"
4510 1.1 lukem finalize_command="$finalize_command ${wl}-bind_at_load"
4511 1.1 lukem fi
4512 1.1 lukem ;;
4513 1.1 lukem esac
4514 1.1 lukem
4515 1.1 lukem
4516 1.1 lukem # move library search paths that coincide with paths to not yet
4517 1.1 lukem # installed libraries to the beginning of the library search list
4518 1.1 lukem new_libs=
4519 1.1 lukem for path in $notinst_path; do
4520 1.1 lukem case " $new_libs " in
4521 1.1 lukem *" -L$path/$objdir "*) ;;
4522 1.1 lukem *)
4523 1.1 lukem case " $compile_deplibs " in
4524 1.1 lukem *" -L$path/$objdir "*)
4525 1.1 lukem new_libs="$new_libs -L$path/$objdir" ;;
4526 1.1 lukem esac
4527 1.1 lukem ;;
4528 1.1 lukem esac
4529 1.1 lukem done
4530 1.1 lukem for deplib in $compile_deplibs; do
4531 1.1 lukem case $deplib in
4532 1.1 lukem -L*)
4533 1.1 lukem case " $new_libs " in
4534 1.1 lukem *" $deplib "*) ;;
4535 1.1 lukem *) new_libs="$new_libs $deplib" ;;
4536 1.1 lukem esac
4537 1.1 lukem ;;
4538 1.1 lukem *) new_libs="$new_libs $deplib" ;;
4539 1.1 lukem esac
4540 1.1 lukem done
4541 1.1 lukem compile_deplibs="$new_libs"
4542 1.1 lukem
4543 1.1 lukem
4544 1.1 lukem compile_command="$compile_command $compile_deplibs"
4545 1.1 lukem finalize_command="$finalize_command $finalize_deplibs"
4546 1.1 lukem
4547 1.1 lukem if test -n "$rpath$xrpath"; then
4548 1.1 lukem # If the user specified any rpath flags, then add them.
4549 1.1 lukem for libdir in $rpath $xrpath; do
4550 1.1 lukem # This is the magic to use -rpath.
4551 1.1 lukem case "$finalize_rpath " in
4552 1.1 lukem *" $libdir "*) ;;
4553 1.1 lukem *) finalize_rpath="$finalize_rpath $libdir" ;;
4554 1.1 lukem esac
4555 1.1 lukem done
4556 1.1 lukem fi
4557 1.1 lukem
4558 1.1 lukem # Now hardcode the library paths
4559 1.1 lukem rpath=
4560 1.1 lukem hardcode_libdirs=
4561 1.1 lukem for libdir in $compile_rpath $finalize_rpath; do
4562 1.1 lukem if test -n "$hardcode_libdir_flag_spec"; then
4563 1.1 lukem if test -n "$hardcode_libdir_separator"; then
4564 1.1 lukem if test -z "$hardcode_libdirs"; then
4565 1.1 lukem hardcode_libdirs="$libdir"
4566 1.1 lukem else
4567 1.1 lukem # Just accumulate the unique libdirs.
4568 1.1 lukem case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4569 1.1 lukem *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4570 1.1 lukem ;;
4571 1.1 lukem *)
4572 1.1 lukem hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4573 1.1 lukem ;;
4574 1.1 lukem esac
4575 1.1 lukem fi
4576 1.1 lukem else
4577 1.1 lukem eval flag=\"$hardcode_libdir_flag_spec\"
4578 1.1 lukem rpath="$rpath $flag"
4579 1.1 lukem fi
4580 1.1 lukem elif test -n "$runpath_var"; then
4581 1.1 lukem case "$perm_rpath " in
4582 1.1 lukem *" $libdir "*) ;;
4583 1.1 lukem *) perm_rpath="$perm_rpath $libdir" ;;
4584 1.1 lukem esac
4585 1.1 lukem fi
4586 1.1 lukem case $host in
4587 1.1 lukem *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
4588 1.1 lukem testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
4589 1.1 lukem case :$dllsearchpath: in
4590 1.1 lukem *":$libdir:"*) ;;
4591 1.1 lukem *) dllsearchpath="$dllsearchpath:$libdir";;
4592 1.1 lukem esac
4593 1.1 lukem case :$dllsearchpath: in
4594 1.1 lukem *":$testbindir:"*) ;;
4595 1.1 lukem *) dllsearchpath="$dllsearchpath:$testbindir";;
4596 1.1 lukem esac
4597 1.1 lukem ;;
4598 1.1 lukem esac
4599 1.1 lukem done
4600 1.1 lukem # Substitute the hardcoded libdirs into the rpath.
4601 1.1 lukem if test -n "$hardcode_libdir_separator" &&
4602 1.1 lukem test -n "$hardcode_libdirs"; then
4603 1.1 lukem libdir="$hardcode_libdirs"
4604 1.1 lukem eval rpath=\" $hardcode_libdir_flag_spec\"
4605 1.1 lukem fi
4606 1.1 lukem compile_rpath="$rpath"
4607 1.1 lukem
4608 1.1 lukem rpath=
4609 1.1 lukem hardcode_libdirs=
4610 1.1 lukem for libdir in $finalize_rpath; do
4611 1.1 lukem if test -n "$hardcode_libdir_flag_spec"; then
4612 1.1 lukem if test -n "$hardcode_libdir_separator"; then
4613 1.1 lukem if test -z "$hardcode_libdirs"; then
4614 1.1 lukem hardcode_libdirs="$libdir"
4615 1.1 lukem else
4616 1.1 lukem # Just accumulate the unique libdirs.
4617 1.1 lukem case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4618 1.1 lukem *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4619 1.1 lukem ;;
4620 1.1 lukem *)
4621 1.1 lukem hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4622 1.1 lukem ;;
4623 1.1 lukem esac
4624 1.1 lukem fi
4625 1.1 lukem else
4626 1.1 lukem eval flag=\"$hardcode_libdir_flag_spec\"
4627 1.1 lukem rpath="$rpath $flag"
4628 1.1 lukem fi
4629 1.1 lukem elif test -n "$runpath_var"; then
4630 1.1 lukem case "$finalize_perm_rpath " in
4631 1.1 lukem *" $libdir "*) ;;
4632 1.1 lukem *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
4633 1.1 lukem esac
4634 1.1 lukem fi
4635 1.1 lukem done
4636 1.1 lukem # Substitute the hardcoded libdirs into the rpath.
4637 1.1 lukem if test -n "$hardcode_libdir_separator" &&
4638 1.1 lukem test -n "$hardcode_libdirs"; then
4639 1.1 lukem libdir="$hardcode_libdirs"
4640 1.1 lukem eval rpath=\" $hardcode_libdir_flag_spec\"
4641 1.1 lukem fi
4642 1.1 lukem finalize_rpath="$rpath"
4643 1.1 lukem
4644 1.1 lukem if test -n "$libobjs" && test "$build_old_libs" = yes; then
4645 1.1 lukem # Transform all the library objects into standard objects.
4646 1.1 lukem compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4647 1.1 lukem finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4648 1.1 lukem fi
4649 1.1 lukem
4650 1.1 lukem dlsyms=
4651 1.1 lukem if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4652 1.1 lukem if test -n "$NM" && test -n "$global_symbol_pipe"; then
4653 1.1 lukem dlsyms="${outputname}S.c"
4654 1.1 lukem else
4655 1.1 lukem $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
4656 1.1 lukem fi
4657 1.1 lukem fi
4658 1.1 lukem
4659 1.1 lukem if test -n "$dlsyms"; then
4660 1.1 lukem case $dlsyms in
4661 1.1 lukem "") ;;
4662 1.1 lukem *.c)
4663 1.1 lukem # Discover the nlist of each of the dlfiles.
4664 1.1 lukem nlist="$output_objdir/${outputname}.nm"
4665 1.1 lukem
4666 1.1 lukem $show "$rm $nlist ${nlist}S ${nlist}T"
4667 1.1 lukem $run $rm "$nlist" "${nlist}S" "${nlist}T"
4668 1.1 lukem
4669 1.1 lukem # Parse the name list into a source file.
4670 1.1 lukem $show "creating $output_objdir/$dlsyms"
4671 1.1 lukem
4672 1.1 lukem test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
4673 1.1 lukem /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
4674 1.1 lukem /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
4675 1.1 lukem
4676 1.1 lukem #ifdef __cplusplus
4677 1.1 lukem extern \"C\" {
4678 1.1 lukem #endif
4679 1.1 lukem
4680 1.1 lukem /* Prevent the only kind of declaration conflicts we can make. */
4681 1.1 lukem #define lt_preloaded_symbols some_other_symbol
4682 1.1 lukem
4683 1.1 lukem /* External symbol declarations for the compiler. */\
4684 1.1 lukem "
4685 1.1 lukem
4686 1.1 lukem if test "$dlself" = yes; then
4687 1.1 lukem $show "generating symbol list for \`$output'"
4688 1.1 lukem
4689 1.1 lukem test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
4690 1.1 lukem
4691 1.1 lukem # Add our own program objects to the symbol list.
4692 1.1 lukem progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4693 1.1 lukem for arg in $progfiles; do
4694 1.1 lukem $show "extracting global C symbols from \`$arg'"
4695 1.1 lukem $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4696 1.1 lukem done
4697 1.1 lukem
4698 1.1 lukem if test -n "$exclude_expsyms"; then
4699 1.1 lukem $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4700 1.1 lukem $run eval '$mv "$nlist"T "$nlist"'
4701 1.1 lukem fi
4702 1.1 lukem
4703 1.1 lukem if test -n "$export_symbols_regex"; then
4704 1.1 lukem $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4705 1.1 lukem $run eval '$mv "$nlist"T "$nlist"'
4706 1.1 lukem fi
4707 1.1 lukem
4708 1.1 lukem # Prepare the list of exported symbols
4709 1.1 lukem if test -z "$export_symbols"; then
4710 1.1 lukem export_symbols="$output_objdir/$outputname.exp"
4711 1.1 lukem $run $rm $export_symbols
4712 1.1 lukem $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4713 1.1 lukem case $host in
4714 1.1 lukem *cygwin* | *mingw* )
4715 1.1 lukem $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4716 1.1 lukem $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4717 1.1 lukem ;;
4718 1.1 lukem esac
4719 1.1 lukem else
4720 1.1 lukem $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4721 1.1 lukem $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4722 1.1 lukem $run eval 'mv "$nlist"T "$nlist"'
4723 1.1 lukem case $host in
4724 1.1 lukem *cygwin* | *mingw* )
4725 1.1 lukem $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4726 1.1 lukem $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4727 1.1 lukem ;;
4728 1.1 lukem esac
4729 1.1 lukem fi
4730 1.1 lukem fi
4731 1.1 lukem
4732 1.1 lukem for arg in $dlprefiles; do
4733 1.1 lukem $show "extracting global C symbols from \`$arg'"
4734 1.1 lukem name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
4735 1.1 lukem $run eval '$echo ": $name " >> "$nlist"'
4736 1.1 lukem $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4737 1.1 lukem done
4738 1.1 lukem
4739 1.1 lukem if test -z "$run"; then
4740 1.1 lukem # Make sure we have at least an empty file.
4741 1.1 lukem test -f "$nlist" || : > "$nlist"
4742 1.1 lukem
4743 1.1 lukem if test -n "$exclude_expsyms"; then
4744 1.1 lukem $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4745 1.1 lukem $mv "$nlist"T "$nlist"
4746 1.1 lukem fi
4747 1.1 lukem
4748 1.1 lukem # Try sorting and uniquifying the output.
4749 1.1 lukem if grep -v "^: " < "$nlist" |
4750 1.1 lukem if sort -k 3 </dev/null >/dev/null 2>&1; then
4751 1.1 lukem sort -k 3
4752 1.1 lukem else
4753 1.1 lukem sort +2
4754 1.1 lukem fi |
4755 1.1 lukem uniq > "$nlist"S; then
4756 1.1 lukem :
4757 1.1 lukem else
4758 1.1 lukem grep -v "^: " < "$nlist" > "$nlist"S
4759 1.1 lukem fi
4760 1.1 lukem
4761 1.1 lukem if test -f "$nlist"S; then
4762 1.1 lukem eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
4763 1.1 lukem else
4764 1.1 lukem $echo '/* NONE */' >> "$output_objdir/$dlsyms"
4765 1.1 lukem fi
4766 1.1 lukem
4767 1.1 lukem $echo >> "$output_objdir/$dlsyms" "\
4768 1.1 lukem
4769 1.1 lukem #undef lt_preloaded_symbols
4770 1.1 lukem
4771 1.1 lukem #if defined (__STDC__) && __STDC__
4772 1.1 lukem # define lt_ptr void *
4773 1.1 lukem #else
4774 1.1 lukem # define lt_ptr char *
4775 1.1 lukem # define const
4776 1.1 lukem #endif
4777 1.1 lukem
4778 1.1 lukem /* The mapping between symbol names and symbols. */
4779 1.1 lukem "
4780 1.1 lukem
4781 1.1 lukem case $host in
4782 1.1 lukem *cygwin* | *mingw* )
4783 1.1 lukem $echo >> "$output_objdir/$dlsyms" "\
4784 1.1 lukem /* DATA imports from DLLs on WIN32 can't be const, because
4785 1.1 lukem runtime relocations are performed -- see ld's documentation
4786 1.1 lukem on pseudo-relocs */
4787 1.1 lukem struct {
4788 1.1 lukem "
4789 1.1 lukem ;;
4790 1.1 lukem * )
4791 1.1 lukem $echo >> "$output_objdir/$dlsyms" "\
4792 1.1 lukem const struct {
4793 1.1 lukem "
4794 1.1 lukem ;;
4795 1.1 lukem esac
4796 1.1 lukem
4797 1.1 lukem
4798 1.1 lukem $echo >> "$output_objdir/$dlsyms" "\
4799 1.1 lukem const char *name;
4800 1.1 lukem lt_ptr address;
4801 1.1 lukem }
4802 1.1 lukem lt_preloaded_symbols[] =
4803 1.1 lukem {\
4804 1.1 lukem "
4805 1.1 lukem
4806 1.1 lukem eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
4807 1.1 lukem
4808 1.1 lukem $echo >> "$output_objdir/$dlsyms" "\
4809 1.1 lukem {0, (lt_ptr) 0}
4810 1.1 lukem };
4811 1.1 lukem
4812 1.1 lukem /* This works around a problem in FreeBSD linker */
4813 1.1 lukem #ifdef FREEBSD_WORKAROUND
4814 1.1 lukem static const void *lt_preloaded_setup() {
4815 1.1 lukem return lt_preloaded_symbols;
4816 1.1 lukem }
4817 1.1 lukem #endif
4818 1.1 lukem
4819 1.1 lukem #ifdef __cplusplus
4820 1.1 lukem }
4821 1.1 lukem #endif\
4822 1.1 lukem "
4823 1.1 lukem fi
4824 1.1 lukem
4825 1.1 lukem pic_flag_for_symtable=
4826 1.1 lukem case $host in
4827 1.1 lukem # compiling the symbol table file with pic_flag works around
4828 1.1 lukem # a FreeBSD bug that causes programs to crash when -lm is
4829 1.1 lukem # linked before any other PIC object. But we must not use
4830 1.1 lukem # pic_flag when linking with -static. The problem exists in
4831 1.1 lukem # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4832 1.1 lukem *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
4833 1.1 lukem case "$compile_command " in
4834 1.1 lukem *" -static "*) ;;
4835 1.1 lukem *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
4836 1.1 lukem esac;;
4837 1.1 lukem *-*-hpux*)
4838 1.1 lukem case "$compile_command " in
4839 1.1 lukem *" -static "*) ;;
4840 1.1 lukem *) pic_flag_for_symtable=" $pic_flag";;
4841 1.1 lukem esac
4842 1.1 lukem esac
4843 1.1 lukem
4844 1.1 lukem # Now compile the dynamic symbol file.
4845 1.1 lukem $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
4846 1.1 lukem $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
4847 1.1 lukem
4848 1.1 lukem # Clean up the generated files.
4849 1.1 lukem $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
4850 1.1 lukem $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
4851 1.1 lukem
4852 1.1 lukem # Transform the symbol file into the correct name.
4853 1.1 lukem case $host in
4854 1.1 lukem *cygwin* | *mingw* )
4855 1.1 lukem if test -f "$output_objdir/${outputname}.def" ; then
4856 1.1 lukem compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4857 1.1 lukem finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4858 1.1 lukem else
4859 1.1 lukem compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4860 1.1 lukem finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4861 1.1 lukem fi
4862 1.1 lukem ;;
4863 1.1 lukem * )
4864 1.1 lukem compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4865 1.1 lukem finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4866 1.1 lukem ;;
4867 1.1 lukem esac
4868 1.1 lukem ;;
4869 1.1 lukem *)
4870 1.1 lukem $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
4871 1.1 lukem exit $EXIT_FAILURE
4872 1.1 lukem ;;
4873 1.1 lukem esac
4874 1.1 lukem else
4875 1.1 lukem # We keep going just in case the user didn't refer to
4876 1.1 lukem # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
4877 1.1 lukem # really was required.
4878 1.1 lukem
4879 1.1 lukem # Nullify the symbol file.
4880 1.1 lukem compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4881 1.1 lukem finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4882 1.1 lukem fi
4883 1.1 lukem
4884 1.1 lukem if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
4885 1.1 lukem # Replace the output file specification.
4886 1.1 lukem compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
4887 1.1 lukem link_command="$compile_command$compile_rpath"
4888 1.1 lukem
4889 1.1 lukem # We have no uninstalled library dependencies, so finalize right now.
4890 1.1 lukem $show "$link_command"
4891 1.1 lukem $run eval "$link_command"
4892 1.1 lukem exit_status=$?
4893 1.1 lukem
4894 1.1 lukem # Delete the generated files.
4895 1.1 lukem if test -n "$dlsyms"; then
4896 1.1 lukem $show "$rm $output_objdir/${outputname}S.${objext}"
4897 1.1 lukem $run $rm "$output_objdir/${outputname}S.${objext}"
4898 1.1 lukem fi
4899 1.1 lukem
4900 1.1 lukem exit $exit_status
4901 1.1 lukem fi
4902 1.1 lukem
4903 1.1 lukem if test -n "$shlibpath_var"; then
4904 1.1 lukem # We should set the shlibpath_var
4905 1.1 lukem rpath=
4906 1.1 lukem for dir in $temp_rpath; do
4907 1.1 lukem case $dir in
4908 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*)
4909 1.1 lukem # Absolute path.
4910 1.1 lukem rpath="$rpath$dir:"
4911 1.1 lukem ;;
4912 1.1 lukem *)
4913 1.1 lukem # Relative path: add a thisdir entry.
4914 1.1 lukem rpath="$rpath\$thisdir/$dir:"
4915 1.1 lukem ;;
4916 1.1 lukem esac
4917 1.1 lukem done
4918 1.1 lukem temp_rpath="$rpath"
4919 1.1 lukem fi
4920 1.1 lukem
4921 1.1 lukem if test -n "$compile_shlibpath$finalize_shlibpath"; then
4922 1.1 lukem compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
4923 1.1 lukem fi
4924 1.1 lukem if test -n "$finalize_shlibpath"; then
4925 1.1 lukem finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
4926 1.1 lukem fi
4927 1.1 lukem
4928 1.1 lukem compile_var=
4929 1.1 lukem finalize_var=
4930 1.1 lukem if test -n "$runpath_var"; then
4931 1.1 lukem if test -n "$perm_rpath"; then
4932 1.1 lukem # We should set the runpath_var.
4933 1.1 lukem rpath=
4934 1.1 lukem for dir in $perm_rpath; do
4935 1.1 lukem rpath="$rpath$dir:"
4936 1.1 lukem done
4937 1.1 lukem compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
4938 1.1 lukem fi
4939 1.1 lukem if test -n "$finalize_perm_rpath"; then
4940 1.1 lukem # We should set the runpath_var.
4941 1.1 lukem rpath=
4942 1.1 lukem for dir in $finalize_perm_rpath; do
4943 1.1 lukem rpath="$rpath$dir:"
4944 1.1 lukem done
4945 1.1 lukem finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
4946 1.1 lukem fi
4947 1.1 lukem fi
4948 1.1 lukem
4949 1.1 lukem if test "$no_install" = yes; then
4950 1.1 lukem # We don't need to create a wrapper script.
4951 1.1 lukem link_command="$compile_var$compile_command$compile_rpath"
4952 1.1 lukem # Replace the output file specification.
4953 1.1 lukem link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4954 1.1 lukem # Delete the old output file.
4955 1.1 lukem $run $rm $output
4956 1.1 lukem # Link the executable and exit
4957 1.1 lukem $show "$link_command"
4958 1.1 lukem $run eval "$link_command" || exit $?
4959 1.1 lukem exit $EXIT_SUCCESS
4960 1.1 lukem fi
4961 1.1 lukem
4962 1.1 lukem if test "$hardcode_action" = relink; then
4963 1.1 lukem # Fast installation is not supported
4964 1.1 lukem link_command="$compile_var$compile_command$compile_rpath"
4965 1.1 lukem relink_command="$finalize_var$finalize_command$finalize_rpath"
4966 1.1 lukem
4967 1.1 lukem $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4968 1.1 lukem $echo "$modename: \`$output' will be relinked during installation" 1>&2
4969 1.1 lukem else
4970 1.1 lukem if test "$fast_install" != no; then
4971 1.1 lukem link_command="$finalize_var$compile_command$finalize_rpath"
4972 1.1 lukem if test "$fast_install" = yes; then
4973 1.1 lukem relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
4974 1.1 lukem else
4975 1.1 lukem # fast_install is set to needless
4976 1.1 lukem relink_command=
4977 1.1 lukem fi
4978 1.1 lukem else
4979 1.1 lukem link_command="$compile_var$compile_command$compile_rpath"
4980 1.1 lukem relink_command="$finalize_var$finalize_command$finalize_rpath"
4981 1.1 lukem fi
4982 1.1 lukem fi
4983 1.1 lukem
4984 1.1 lukem # Replace the output file specification.
4985 1.1 lukem link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
4986 1.1 lukem
4987 1.1 lukem # Delete the old output files.
4988 1.1 lukem $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
4989 1.1 lukem
4990 1.1 lukem $show "$link_command"
4991 1.1 lukem $run eval "$link_command" || exit $?
4992 1.1 lukem
4993 1.1 lukem # Now create the wrapper script.
4994 1.1 lukem $show "creating $output"
4995 1.1 lukem
4996 1.1 lukem # Quote the relink command for shipping.
4997 1.1 lukem if test -n "$relink_command"; then
4998 1.1 lukem # Preserve any variables that may affect compiler behavior
4999 1.1 lukem for var in $variables_saved_for_relink; do
5000 1.1 lukem if eval test -z \"\${$var+set}\"; then
5001 1.1 lukem relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5002 1.1 lukem elif eval var_value=\$$var; test -z "$var_value"; then
5003 1.1 lukem relink_command="$var=; export $var; $relink_command"
5004 1.1 lukem else
5005 1.1 lukem var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5006 1.1 lukem relink_command="$var=\"$var_value\"; export $var; $relink_command"
5007 1.1 lukem fi
5008 1.1 lukem done
5009 1.1 lukem relink_command="(cd `pwd`; $relink_command)"
5010 1.1 lukem relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
5011 1.1 lukem fi
5012 1.1 lukem
5013 1.1 lukem # Quote $echo for shipping.
5014 1.1 lukem if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
5015 1.1 lukem case $progpath in
5016 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
5017 1.1 lukem *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
5018 1.1 lukem esac
5019 1.1 lukem qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
5020 1.1 lukem else
5021 1.1 lukem qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
5022 1.1 lukem fi
5023 1.1 lukem
5024 1.1 lukem # Only actually do things if our run command is non-null.
5025 1.1 lukem if test -z "$run"; then
5026 1.1 lukem # win32 will think the script is a binary if it has
5027 1.1 lukem # a .exe suffix, so we strip it off here.
5028 1.1 lukem case $output in
5029 1.1 lukem *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
5030 1.1 lukem esac
5031 1.1 lukem # test for cygwin because mv fails w/o .exe extensions
5032 1.1 lukem case $host in
5033 1.1 lukem *cygwin*)
5034 1.1 lukem exeext=.exe
5035 1.1 lukem outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
5036 1.1 lukem *) exeext= ;;
5037 1.1 lukem esac
5038 1.1 lukem case $host in
5039 1.1 lukem *cygwin* | *mingw* )
5040 1.1 lukem output_name=`basename $output`
5041 1.1 lukem output_path=`dirname $output`
5042 1.1 lukem cwrappersource="$output_path/$objdir/lt-$output_name.c"
5043 1.1 lukem cwrapper="$output_path/$output_name.exe"
5044 1.1 lukem $rm $cwrappersource $cwrapper
5045 1.1 lukem trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
5046 1.1 lukem
5047 1.1 lukem cat > $cwrappersource <<EOF
5048 1.1 lukem
5049 1.1 lukem /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
5050 1.1 lukem Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5051 1.1 lukem
5052 1.1 lukem The $output program cannot be directly executed until all the libtool
5053 1.1 lukem libraries that it depends on are installed.
5054 1.1 lukem
5055 1.1 lukem This wrapper executable should never be moved out of the build directory.
5056 1.1 lukem If it is, it will not operate correctly.
5057 1.1 lukem
5058 1.1 lukem Currently, it simply execs the wrapper *script* "/bin/sh $output",
5059 1.1 lukem but could eventually absorb all of the scripts functionality and
5060 1.1 lukem exec $objdir/$outputname directly.
5061 1.1 lukem */
5062 1.1 lukem EOF
5063 1.1 lukem cat >> $cwrappersource<<"EOF"
5064 1.1 lukem #include <stdio.h>
5065 1.1 lukem #include <stdlib.h>
5066 1.1 lukem #include <unistd.h>
5067 1.1 lukem #include <malloc.h>
5068 1.1 lukem #include <stdarg.h>
5069 1.1 lukem #include <assert.h>
5070 1.1 lukem #include <string.h>
5071 1.1 lukem #include <ctype.h>
5072 1.1 lukem #include <sys/stat.h>
5073 1.1 lukem
5074 1.1 lukem #if defined(PATH_MAX)
5075 1.1 lukem # define LT_PATHMAX PATH_MAX
5076 1.1 lukem #elif defined(MAXPATHLEN)
5077 1.1 lukem # define LT_PATHMAX MAXPATHLEN
5078 1.1 lukem #else
5079 1.1 lukem # define LT_PATHMAX 1024
5080 1.1 lukem #endif
5081 1.1 lukem
5082 1.1 lukem #ifndef DIR_SEPARATOR
5083 1.1 lukem # define DIR_SEPARATOR '/'
5084 1.1 lukem # define PATH_SEPARATOR ':'
5085 1.1 lukem #endif
5086 1.1 lukem
5087 1.1 lukem #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
5088 1.1 lukem defined (__OS2__)
5089 1.1 lukem # define HAVE_DOS_BASED_FILE_SYSTEM
5090 1.1 lukem # ifndef DIR_SEPARATOR_2
5091 1.1 lukem # define DIR_SEPARATOR_2 '\\'
5092 1.1 lukem # endif
5093 1.1 lukem # ifndef PATH_SEPARATOR_2
5094 1.1 lukem # define PATH_SEPARATOR_2 ';'
5095 1.1 lukem # endif
5096 1.1 lukem #endif
5097 1.1 lukem
5098 1.1 lukem #ifndef DIR_SEPARATOR_2
5099 1.1 lukem # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
5100 1.1 lukem #else /* DIR_SEPARATOR_2 */
5101 1.1 lukem # define IS_DIR_SEPARATOR(ch) \
5102 1.1 lukem (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
5103 1.1 lukem #endif /* DIR_SEPARATOR_2 */
5104 1.1 lukem
5105 1.1 lukem #ifndef PATH_SEPARATOR_2
5106 1.1 lukem # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5107 1.1 lukem #else /* PATH_SEPARATOR_2 */
5108 1.1 lukem # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5109 1.1 lukem #endif /* PATH_SEPARATOR_2 */
5110 1.1 lukem
5111 1.1 lukem #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
5112 1.1 lukem #define XFREE(stale) do { \
5113 1.1 lukem if (stale) { free ((void *) stale); stale = 0; } \
5114 1.1 lukem } while (0)
5115 1.1 lukem
5116 1.1 lukem /* -DDEBUG is fairly common in CFLAGS. */
5117 1.1 lukem #undef DEBUG
5118 1.1 lukem #if defined DEBUGWRAPPER
5119 1.1 lukem # define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
5120 1.1 lukem #else
5121 1.1 lukem # define DEBUG(format, ...)
5122 1.1 lukem #endif
5123 1.1 lukem
5124 1.1 lukem const char *program_name = NULL;
5125 1.1 lukem
5126 1.1 lukem void * xmalloc (size_t num);
5127 1.1 lukem char * xstrdup (const char *string);
5128 1.1 lukem const char * base_name (const char *name);
5129 1.1 lukem char * find_executable(const char *wrapper);
5130 1.1 lukem int check_executable(const char *path);
5131 1.1 lukem char * strendzap(char *str, const char *pat);
5132 1.1 lukem void lt_fatal (const char *message, ...);
5133 1.1 lukem
5134 1.1 lukem int
5135 1.1 lukem main (int argc, char *argv[])
5136 1.1 lukem {
5137 1.1 lukem char **newargz;
5138 1.1 lukem int i;
5139 1.1 lukem
5140 1.1 lukem program_name = (char *) xstrdup (base_name (argv[0]));
5141 1.1 lukem DEBUG("(main) argv[0] : %s\n",argv[0]);
5142 1.1 lukem DEBUG("(main) program_name : %s\n",program_name);
5143 1.1 lukem newargz = XMALLOC(char *, argc+2);
5144 1.1 lukem EOF
5145 1.1 lukem
5146 1.1 lukem cat >> $cwrappersource <<EOF
5147 1.1 lukem newargz[0] = (char *) xstrdup("$SHELL");
5148 1.1 lukem EOF
5149 1.1 lukem
5150 1.1 lukem cat >> $cwrappersource <<"EOF"
5151 1.1 lukem newargz[1] = find_executable(argv[0]);
5152 1.1 lukem if (newargz[1] == NULL)
5153 1.1 lukem lt_fatal("Couldn't find %s", argv[0]);
5154 1.1 lukem DEBUG("(main) found exe at : %s\n",newargz[1]);
5155 1.1 lukem /* we know the script has the same name, without the .exe */
5156 1.1 lukem /* so make sure newargz[1] doesn't end in .exe */
5157 1.1 lukem strendzap(newargz[1],".exe");
5158 1.1 lukem for (i = 1; i < argc; i++)
5159 1.1 lukem newargz[i+1] = xstrdup(argv[i]);
5160 1.1 lukem newargz[argc+1] = NULL;
5161 1.1 lukem
5162 1.1 lukem for (i=0; i<argc+1; i++)
5163 1.1 lukem {
5164 1.1 lukem DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
5165 1.1 lukem ;
5166 1.1 lukem }
5167 1.1 lukem
5168 1.1 lukem EOF
5169 1.1 lukem
5170 1.1 lukem case $host_os in
5171 1.1 lukem mingw*)
5172 1.1 lukem cat >> $cwrappersource <<EOF
5173 1.1 lukem execv("$SHELL",(char const **)newargz);
5174 1.1 lukem EOF
5175 1.1 lukem ;;
5176 1.1 lukem *)
5177 1.1 lukem cat >> $cwrappersource <<EOF
5178 1.1 lukem execv("$SHELL",newargz);
5179 1.1 lukem EOF
5180 1.1 lukem ;;
5181 1.1 lukem esac
5182 1.1 lukem
5183 1.1 lukem cat >> $cwrappersource <<"EOF"
5184 1.1 lukem return 127;
5185 1.1 lukem }
5186 1.1 lukem
5187 1.1 lukem void *
5188 1.1 lukem xmalloc (size_t num)
5189 1.1 lukem {
5190 1.1 lukem void * p = (void *) malloc (num);
5191 1.1 lukem if (!p)
5192 1.1 lukem lt_fatal ("Memory exhausted");
5193 1.1 lukem
5194 1.1 lukem return p;
5195 1.1 lukem }
5196 1.1 lukem
5197 1.1 lukem char *
5198 1.1 lukem xstrdup (const char *string)
5199 1.1 lukem {
5200 1.1 lukem return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
5201 1.1 lukem ;
5202 1.1 lukem }
5203 1.1 lukem
5204 1.1 lukem const char *
5205 1.1 lukem base_name (const char *name)
5206 1.1 lukem {
5207 1.1 lukem const char *base;
5208 1.1 lukem
5209 1.1 lukem #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5210 1.1 lukem /* Skip over the disk name in MSDOS pathnames. */
5211 1.1 lukem if (isalpha ((unsigned char)name[0]) && name[1] == ':')
5212 1.1 lukem name += 2;
5213 1.1 lukem #endif
5214 1.1 lukem
5215 1.1 lukem for (base = name; *name; name++)
5216 1.1 lukem if (IS_DIR_SEPARATOR (*name))
5217 1.1 lukem base = name + 1;
5218 1.1 lukem return base;
5219 1.1 lukem }
5220 1.1 lukem
5221 1.1 lukem int
5222 1.1 lukem check_executable(const char * path)
5223 1.1 lukem {
5224 1.1 lukem struct stat st;
5225 1.1 lukem
5226 1.1 lukem DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
5227 1.1 lukem if ((!path) || (!*path))
5228 1.1 lukem return 0;
5229 1.1 lukem
5230 1.1 lukem if ((stat (path, &st) >= 0) &&
5231 1.1 lukem (
5232 1.1 lukem /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
5233 1.1 lukem #if defined (S_IXOTH)
5234 1.1 lukem ((st.st_mode & S_IXOTH) == S_IXOTH) ||
5235 1.1 lukem #endif
5236 1.1 lukem #if defined (S_IXGRP)
5237 1.1 lukem ((st.st_mode & S_IXGRP) == S_IXGRP) ||
5238 1.1 lukem #endif
5239 1.1 lukem ((st.st_mode & S_IXUSR) == S_IXUSR))
5240 1.1 lukem )
5241 1.1 lukem return 1;
5242 1.1 lukem else
5243 1.1 lukem return 0;
5244 1.1 lukem }
5245 1.1 lukem
5246 1.1 lukem /* Searches for the full path of the wrapper. Returns
5247 1.1 lukem newly allocated full path name if found, NULL otherwise */
5248 1.1 lukem char *
5249 1.1 lukem find_executable (const char* wrapper)
5250 1.1 lukem {
5251 1.1 lukem int has_slash = 0;
5252 1.1 lukem const char* p;
5253 1.1 lukem const char* p_next;
5254 1.1 lukem /* static buffer for getcwd */
5255 1.1 lukem char tmp[LT_PATHMAX + 1];
5256 1.1 lukem int tmp_len;
5257 1.1 lukem char* concat_name;
5258 1.1 lukem
5259 1.1 lukem DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
5260 1.1 lukem
5261 1.1 lukem if ((wrapper == NULL) || (*wrapper == '\0'))
5262 1.1 lukem return NULL;
5263 1.1 lukem
5264 1.1 lukem /* Absolute path? */
5265 1.1 lukem #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5266 1.1 lukem if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
5267 1.1 lukem {
5268 1.1 lukem concat_name = xstrdup (wrapper);
5269 1.1 lukem if (check_executable(concat_name))
5270 1.1 lukem return concat_name;
5271 1.1 lukem XFREE(concat_name);
5272 1.1 lukem }
5273 1.1 lukem else
5274 1.1 lukem {
5275 1.1 lukem #endif
5276 1.1 lukem if (IS_DIR_SEPARATOR (wrapper[0]))
5277 1.1 lukem {
5278 1.1 lukem concat_name = xstrdup (wrapper);
5279 1.1 lukem if (check_executable(concat_name))
5280 1.1 lukem return concat_name;
5281 1.1 lukem XFREE(concat_name);
5282 1.1 lukem }
5283 1.1 lukem #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5284 1.1 lukem }
5285 1.1 lukem #endif
5286 1.1 lukem
5287 1.1 lukem for (p = wrapper; *p; p++)
5288 1.1 lukem if (*p == '/')
5289 1.1 lukem {
5290 1.1 lukem has_slash = 1;
5291 1.1 lukem break;
5292 1.1 lukem }
5293 1.1 lukem if (!has_slash)
5294 1.1 lukem {
5295 1.1 lukem /* no slashes; search PATH */
5296 1.1 lukem const char* path = getenv ("PATH");
5297 1.1 lukem if (path != NULL)
5298 1.1 lukem {
5299 1.1 lukem for (p = path; *p; p = p_next)
5300 1.1 lukem {
5301 1.1 lukem const char* q;
5302 1.1 lukem size_t p_len;
5303 1.1 lukem for (q = p; *q; q++)
5304 1.1 lukem if (IS_PATH_SEPARATOR(*q))
5305 1.1 lukem break;
5306 1.1 lukem p_len = q - p;
5307 1.1 lukem p_next = (*q == '\0' ? q : q + 1);
5308 1.1 lukem if (p_len == 0)
5309 1.1 lukem {
5310 1.1 lukem /* empty path: current directory */
5311 1.1 lukem if (getcwd (tmp, LT_PATHMAX) == NULL)
5312 1.1 lukem lt_fatal ("getcwd failed");
5313 1.1 lukem tmp_len = strlen(tmp);
5314 1.1 lukem concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5315 1.1 lukem memcpy (concat_name, tmp, tmp_len);
5316 1.1 lukem concat_name[tmp_len] = '/';
5317 1.1 lukem strcpy (concat_name + tmp_len + 1, wrapper);
5318 1.1 lukem }
5319 1.1 lukem else
5320 1.1 lukem {
5321 1.1 lukem concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
5322 1.1 lukem memcpy (concat_name, p, p_len);
5323 1.1 lukem concat_name[p_len] = '/';
5324 1.1 lukem strcpy (concat_name + p_len + 1, wrapper);
5325 1.1 lukem }
5326 1.1 lukem if (check_executable(concat_name))
5327 1.1 lukem return concat_name;
5328 1.1 lukem XFREE(concat_name);
5329 1.1 lukem }
5330 1.1 lukem }
5331 1.1 lukem /* not found in PATH; assume curdir */
5332 1.1 lukem }
5333 1.1 lukem /* Relative path | not found in path: prepend cwd */
5334 1.1 lukem if (getcwd (tmp, LT_PATHMAX) == NULL)
5335 1.1 lukem lt_fatal ("getcwd failed");
5336 1.1 lukem tmp_len = strlen(tmp);
5337 1.1 lukem concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5338 1.1 lukem memcpy (concat_name, tmp, tmp_len);
5339 1.1 lukem concat_name[tmp_len] = '/';
5340 1.1 lukem strcpy (concat_name + tmp_len + 1, wrapper);
5341 1.1 lukem
5342 1.1 lukem if (check_executable(concat_name))
5343 1.1 lukem return concat_name;
5344 1.1 lukem XFREE(concat_name);
5345 1.1 lukem return NULL;
5346 1.1 lukem }
5347 1.1 lukem
5348 1.1 lukem char *
5349 1.1 lukem strendzap(char *str, const char *pat)
5350 1.1 lukem {
5351 1.1 lukem size_t len, patlen;
5352 1.1 lukem
5353 1.1 lukem assert(str != NULL);
5354 1.1 lukem assert(pat != NULL);
5355 1.1 lukem
5356 1.1 lukem len = strlen(str);
5357 1.1 lukem patlen = strlen(pat);
5358 1.1 lukem
5359 1.1 lukem if (patlen <= len)
5360 1.1 lukem {
5361 1.1 lukem str += len - patlen;
5362 1.1 lukem if (strcmp(str, pat) == 0)
5363 1.1 lukem *str = '\0';
5364 1.1 lukem }
5365 1.1 lukem return str;
5366 1.1 lukem }
5367 1.1 lukem
5368 1.1 lukem static void
5369 1.1 lukem lt_error_core (int exit_status, const char * mode,
5370 1.1 lukem const char * message, va_list ap)
5371 1.1 lukem {
5372 1.1 lukem fprintf (stderr, "%s: %s: ", program_name, mode);
5373 1.1 lukem vfprintf (stderr, message, ap);
5374 1.1 lukem fprintf (stderr, ".\n");
5375 1.1 lukem
5376 1.1 lukem if (exit_status >= 0)
5377 1.1 lukem exit (exit_status);
5378 1.1 lukem }
5379 1.1 lukem
5380 1.1 lukem void
5381 1.1 lukem lt_fatal (const char *message, ...)
5382 1.1 lukem {
5383 1.1 lukem va_list ap;
5384 1.1 lukem va_start (ap, message);
5385 1.1 lukem lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
5386 1.1 lukem va_end (ap);
5387 1.1 lukem }
5388 1.1 lukem EOF
5389 1.1 lukem # we should really use a build-platform specific compiler
5390 1.1 lukem # here, but OTOH, the wrappers (shell script and this C one)
5391 1.1 lukem # are only useful if you want to execute the "real" binary.
5392 1.1 lukem # Since the "real" binary is built for $host, then this
5393 1.1 lukem # wrapper might as well be built for $host, too.
5394 1.1 lukem $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
5395 1.1 lukem ;;
5396 1.1 lukem esac
5397 1.1 lukem $rm $output
5398 1.1 lukem trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
5399 1.1 lukem
5400 1.1 lukem $echo > $output "\
5401 1.1 lukem #! $SHELL
5402 1.1 lukem
5403 1.1 lukem # $output - temporary wrapper script for $objdir/$outputname
5404 1.1 lukem # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5405 1.1 lukem #
5406 1.1 lukem # The $output program cannot be directly executed until all the libtool
5407 1.1 lukem # libraries that it depends on are installed.
5408 1.1 lukem #
5409 1.1 lukem # This wrapper script should never be moved out of the build directory.
5410 1.1 lukem # If it is, it will not operate correctly.
5411 1.1 lukem
5412 1.1 lukem # Sed substitution that helps us do robust quoting. It backslashifies
5413 1.1 lukem # metacharacters that are still active within double-quoted strings.
5414 1.1 lukem Xsed='${SED} -e 1s/^X//'
5415 1.1 lukem sed_quote_subst='$sed_quote_subst'
5416 1.1 lukem
5417 1.1 lukem # Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
5418 1.1 lukem if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
5419 1.1 lukem emulate sh
5420 1.1 lukem NULLCMD=:
5421 1.1 lukem # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
5422 1.1 lukem # is contrary to our usage. Disable this feature.
5423 1.1 lukem alias -g '\${1+\"\$@\"}'='\"\$@\"'
5424 1.1 lukem setopt NO_GLOB_SUBST
5425 1.1 lukem else
5426 1.1 lukem case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
5427 1.1 lukem fi
5428 1.1 lukem BIN_SH=xpg4; export BIN_SH # for Tru64
5429 1.1 lukem DUALCASE=1; export DUALCASE # for MKS sh
5430 1.1 lukem
5431 1.1 lukem # The HP-UX ksh and POSIX shell print the target directory to stdout
5432 1.1 lukem # if CDPATH is set.
5433 1.1 lukem (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5434 1.1 lukem
5435 1.1 lukem relink_command=\"$relink_command\"
5436 1.1 lukem
5437 1.1 lukem # This environment variable determines our operation mode.
5438 1.1 lukem if test \"\$libtool_install_magic\" = \"$magic\"; then
5439 1.1 lukem # install mode needs the following variable:
5440 1.1 lukem notinst_deplibs='$notinst_deplibs'
5441 1.1 lukem else
5442 1.1 lukem # When we are sourced in execute mode, \$file and \$echo are already set.
5443 1.1 lukem if test \"\$libtool_execute_magic\" != \"$magic\"; then
5444 1.1 lukem echo=\"$qecho\"
5445 1.1 lukem file=\"\$0\"
5446 1.1 lukem # Make sure echo works.
5447 1.1 lukem if test \"X\$1\" = X--no-reexec; then
5448 1.1 lukem # Discard the --no-reexec flag, and continue.
5449 1.1 lukem shift
5450 1.1 lukem elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
5451 1.1 lukem # Yippee, \$echo works!
5452 1.1 lukem :
5453 1.1 lukem else
5454 1.1 lukem # Restart under the correct shell, and then maybe \$echo will work.
5455 1.1 lukem exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
5456 1.1 lukem fi
5457 1.1 lukem fi\
5458 1.1 lukem "
5459 1.1 lukem $echo >> $output "\
5460 1.1 lukem
5461 1.1 lukem # Find the directory that this script lives in.
5462 1.1 lukem thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
5463 1.1 lukem test \"x\$thisdir\" = \"x\$file\" && thisdir=.
5464 1.1 lukem
5465 1.1 lukem # Follow symbolic links until we get to the real thisdir.
5466 1.1 lukem file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
5467 1.1 lukem while test -n \"\$file\"; do
5468 1.1 lukem destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
5469 1.1 lukem
5470 1.1 lukem # If there was a directory component, then change thisdir.
5471 1.1 lukem if test \"x\$destdir\" != \"x\$file\"; then
5472 1.1 lukem case \"\$destdir\" in
5473 1.1 lukem [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5474 1.1 lukem *) thisdir=\"\$thisdir/\$destdir\" ;;
5475 1.1 lukem esac
5476 1.1 lukem fi
5477 1.1 lukem
5478 1.1 lukem file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
5479 1.1 lukem file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
5480 1.1 lukem done
5481 1.1 lukem
5482 1.1 lukem # Try to get the absolute directory name.
5483 1.1 lukem absdir=\`cd \"\$thisdir\" && pwd\`
5484 1.1 lukem test -n \"\$absdir\" && thisdir=\"\$absdir\"
5485 1.1 lukem "
5486 1.1 lukem
5487 1.1 lukem if test "$fast_install" = yes; then
5488 1.1 lukem $echo >> $output "\
5489 1.1 lukem program=lt-'$outputname'$exeext
5490 1.1 lukem progdir=\"\$thisdir/$objdir\"
5491 1.1 lukem
5492 1.1 lukem if test ! -f \"\$progdir/\$program\" || \\
5493 1.1 lukem { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
5494 1.1 lukem test \"X\$file\" != \"X\$progdir/\$program\"; }; then
5495 1.1 lukem
5496 1.1 lukem file=\"\$\$-\$program\"
5497 1.1 lukem
5498 1.1 lukem if test ! -d \"\$progdir\"; then
5499 1.1 lukem $mkdir \"\$progdir\"
5500 1.1 lukem else
5501 1.1 lukem $rm \"\$progdir/\$file\"
5502 1.1 lukem fi"
5503 1.1 lukem
5504 1.1 lukem $echo >> $output "\
5505 1.1 lukem
5506 1.1 lukem # relink executable if necessary
5507 1.1 lukem if test -n \"\$relink_command\"; then
5508 1.1 lukem if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5509 1.1 lukem else
5510 1.1 lukem $echo \"\$relink_command_output\" >&2
5511 1.1 lukem $rm \"\$progdir/\$file\"
5512 1.1 lukem exit $EXIT_FAILURE
5513 1.1 lukem fi
5514 1.1 lukem fi
5515 1.1 lukem
5516 1.1 lukem $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5517 1.1 lukem { $rm \"\$progdir/\$program\";
5518 1.1 lukem $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5519 1.1 lukem $rm \"\$progdir/\$file\"
5520 1.1 lukem fi"
5521 1.1 lukem else
5522 1.1 lukem $echo >> $output "\
5523 1.1 lukem program='$outputname'
5524 1.1 lukem progdir=\"\$thisdir/$objdir\"
5525 1.1 lukem "
5526 1.1 lukem fi
5527 1.1 lukem
5528 1.1 lukem $echo >> $output "\
5529 1.1 lukem
5530 1.1 lukem if test -f \"\$progdir/\$program\"; then"
5531 1.1 lukem
5532 1.1 lukem # Export our shlibpath_var if we have one.
5533 1.1 lukem if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5534 1.1 lukem $echo >> $output "\
5535 1.1 lukem # Add our own library path to $shlibpath_var
5536 1.1 lukem $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
5537 1.1 lukem
5538 1.1 lukem # Some systems cannot cope with colon-terminated $shlibpath_var
5539 1.1 lukem # The second colon is a workaround for a bug in BeOS R4 sed
5540 1.1 lukem $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
5541 1.1 lukem
5542 1.1 lukem export $shlibpath_var
5543 1.1 lukem "
5544 1.1 lukem fi
5545 1.1 lukem
5546 1.1 lukem # fixup the dll searchpath if we need to.
5547 1.1 lukem if test -n "$dllsearchpath"; then
5548 1.1 lukem $echo >> $output "\
5549 1.1 lukem # Add the dll search path components to the executable PATH
5550 1.1 lukem PATH=$dllsearchpath:\$PATH
5551 1.1 lukem "
5552 1.1 lukem fi
5553 1.1 lukem
5554 1.1 lukem $echo >> $output "\
5555 1.1 lukem if test \"\$libtool_execute_magic\" != \"$magic\"; then
5556 1.1 lukem # Run the actual program with our arguments.
5557 1.1 lukem "
5558 1.1 lukem case $host in
5559 1.1 lukem # Backslashes separate directories on plain windows
5560 1.1 lukem *-*-mingw | *-*-os2*)
5561 1.1 lukem $echo >> $output "\
5562 1.1 lukem exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5563 1.1 lukem "
5564 1.1 lukem ;;
5565 1.1 lukem
5566 1.1 lukem *)
5567 1.1 lukem $echo >> $output "\
5568 1.1 lukem exec \"\$progdir/\$program\" \${1+\"\$@\"}
5569 1.1 lukem "
5570 1.1 lukem ;;
5571 1.1 lukem esac
5572 1.1 lukem $echo >> $output "\
5573 1.1 lukem \$echo \"\$0: cannot exec \$program \$*\"
5574 1.1 lukem exit $EXIT_FAILURE
5575 1.1 lukem fi
5576 1.1 lukem else
5577 1.1 lukem # The program doesn't exist.
5578 1.1 lukem \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
5579 1.1 lukem \$echo \"This script is just a wrapper for \$program.\" 1>&2
5580 1.1 lukem $echo \"See the $PACKAGE documentation for more information.\" 1>&2
5581 1.1 lukem exit $EXIT_FAILURE
5582 1.1 lukem fi
5583 1.1 lukem fi\
5584 1.1 lukem "
5585 1.1 lukem chmod +x $output
5586 1.1 lukem fi
5587 1.1 lukem exit $EXIT_SUCCESS
5588 1.1 lukem ;;
5589 1.1 lukem esac
5590 1.1 lukem
5591 1.1 lukem # See if we need to build an old-fashioned archive.
5592 1.1 lukem for oldlib in $oldlibs; do
5593 1.1 lukem
5594 1.1 lukem if test "$build_libtool_libs" = convenience; then
5595 1.1 lukem oldobjs="$libobjs_save"
5596 1.1 lukem addlibs="$convenience"
5597 1.1 lukem build_libtool_libs=no
5598 1.1 lukem else
5599 1.1 lukem if test "$build_libtool_libs" = module; then
5600 1.1 lukem oldobjs="$libobjs_save"
5601 1.1 lukem build_libtool_libs=no
5602 1.1 lukem else
5603 1.1 lukem oldobjs="$old_deplibs $non_pic_objects"
5604 1.1 lukem fi
5605 1.1 lukem addlibs="$old_convenience"
5606 1.1 lukem fi
5607 1.1 lukem
5608 1.1 lukem if test -n "$addlibs"; then
5609 1.1 lukem gentop="$output_objdir/${outputname}x"
5610 1.1 lukem generated="$generated $gentop"
5611 1.1 lukem
5612 1.1 lukem func_extract_archives $gentop $addlibs
5613 1.1 lukem oldobjs="$oldobjs $func_extract_archives_result"
5614 1.1 lukem fi
5615 1.1 lukem
5616 1.1 lukem # Do each command in the archive commands.
5617 1.1 lukem if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
5618 1.1 lukem cmds=$old_archive_from_new_cmds
5619 1.1 lukem else
5620 1.1 lukem # POSIX demands no paths to be encoded in archives. We have
5621 1.1 lukem # to avoid creating archives with duplicate basenames if we
5622 1.1 lukem # might have to extract them afterwards, e.g., when creating a
5623 1.1 lukem # static archive out of a convenience library, or when linking
5624 1.1 lukem # the entirety of a libtool archive into another (currently
5625 1.1 lukem # not supported by libtool).
5626 1.1 lukem if (for obj in $oldobjs
5627 1.1 lukem do
5628 1.1 lukem $echo "X$obj" | $Xsed -e 's%^.*/%%'
5629 1.1 lukem done | sort | sort -uc >/dev/null 2>&1); then
5630 1.1 lukem :
5631 1.1 lukem else
5632 1.1 lukem $echo "copying selected object files to avoid basename conflicts..."
5633 1.1 lukem
5634 1.1 lukem if test -z "$gentop"; then
5635 1.1 lukem gentop="$output_objdir/${outputname}x"
5636 1.1 lukem generated="$generated $gentop"
5637 1.1 lukem
5638 1.1 lukem $show "${rm}r $gentop"
5639 1.1 lukem $run ${rm}r "$gentop"
5640 1.1 lukem $show "$mkdir $gentop"
5641 1.1 lukem $run $mkdir "$gentop"
5642 1.1 lukem exit_status=$?
5643 1.1 lukem if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
5644 1.1 lukem exit $exit_status
5645 1.1 lukem fi
5646 1.1 lukem fi
5647 1.1 lukem
5648 1.1 lukem save_oldobjs=$oldobjs
5649 1.1 lukem oldobjs=
5650 1.1 lukem counter=1
5651 1.1 lukem for obj in $save_oldobjs
5652 1.1 lukem do
5653 1.1 lukem objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
5654 1.1 lukem case " $oldobjs " in
5655 1.1 lukem " ") oldobjs=$obj ;;
5656 1.1 lukem *[\ /]"$objbase "*)
5657 1.1 lukem while :; do
5658 1.1 lukem # Make sure we don't pick an alternate name that also
5659 1.1 lukem # overlaps.
5660 1.1 lukem newobj=lt$counter-$objbase
5661 1.1 lukem counter=`expr $counter + 1`
5662 1.1 lukem case " $oldobjs " in
5663 1.1 lukem *[\ /]"$newobj "*) ;;
5664 1.1 lukem *) if test ! -f "$gentop/$newobj"; then break; fi ;;
5665 1.1 lukem esac
5666 1.1 lukem done
5667 1.1 lukem $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
5668 1.1 lukem $run ln "$obj" "$gentop/$newobj" ||
5669 1.1 lukem $run cp "$obj" "$gentop/$newobj"
5670 1.1 lukem oldobjs="$oldobjs $gentop/$newobj"
5671 1.1 lukem ;;
5672 1.1 lukem *) oldobjs="$oldobjs $obj" ;;
5673 1.1 lukem esac
5674 1.1 lukem done
5675 1.1 lukem fi
5676 1.1 lukem
5677 1.1 lukem eval cmds=\"$old_archive_cmds\"
5678 1.1 lukem
5679 1.1 lukem if len=`expr "X$cmds" : ".*"` &&
5680 1.1 lukem test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
5681 1.1 lukem cmds=$old_archive_cmds
5682 1.1 lukem else
5683 1.1 lukem # the command line is too long to link in one step, link in parts
5684 1.1 lukem $echo "using piecewise archive linking..."
5685 1.1 lukem save_RANLIB=$RANLIB
5686 1.1 lukem RANLIB=:
5687 1.1 lukem objlist=
5688 1.1 lukem concat_cmds=
5689 1.1 lukem save_oldobjs=$oldobjs
5690 1.1 lukem
5691 1.1 lukem # Is there a better way of finding the last object in the list?
5692 1.1 lukem for obj in $save_oldobjs
5693 1.1 lukem do
5694 1.1 lukem last_oldobj=$obj
5695 1.1 lukem done
5696 1.1 lukem for obj in $save_oldobjs
5697 1.1 lukem do
5698 1.1 lukem oldobjs="$objlist $obj"
5699 1.1 lukem objlist="$objlist $obj"
5700 1.1 lukem eval test_cmds=\"$old_archive_cmds\"
5701 1.1 lukem if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
5702 1.1 lukem test "$len" -le "$max_cmd_len"; then
5703 1.1 lukem :
5704 1.1 lukem else
5705 1.1 lukem # the above command should be used before it gets too long
5706 1.1 lukem oldobjs=$objlist
5707 1.1 lukem if test "$obj" = "$last_oldobj" ; then
5708 1.1 lukem RANLIB=$save_RANLIB
5709 1.1 lukem fi
5710 1.1 lukem test -z "$concat_cmds" || concat_cmds=$concat_cmds~
5711 1.1 lukem eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
5712 1.1 lukem objlist=
5713 1.1 lukem fi
5714 1.1 lukem done
5715 1.1 lukem RANLIB=$save_RANLIB
5716 1.1 lukem oldobjs=$objlist
5717 1.1 lukem if test "X$oldobjs" = "X" ; then
5718 1.1 lukem eval cmds=\"\$concat_cmds\"
5719 1.1 lukem else
5720 1.1 lukem eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
5721 1.1 lukem fi
5722 1.1 lukem fi
5723 1.1 lukem fi
5724 1.1 lukem save_ifs="$IFS"; IFS='~'
5725 1.1 lukem for cmd in $cmds; do
5726 1.1 lukem eval cmd=\"$cmd\"
5727 1.1 lukem IFS="$save_ifs"
5728 1.1 lukem $show "$cmd"
5729 1.1 lukem $run eval "$cmd" || exit $?
5730 1.1 lukem done
5731 1.1 lukem IFS="$save_ifs"
5732 1.1 lukem done
5733 1.1 lukem
5734 1.1 lukem if test -n "$generated"; then
5735 1.1 lukem $show "${rm}r$generated"
5736 1.1 lukem $run ${rm}r$generated
5737 1.1 lukem fi
5738 1.1 lukem
5739 1.1 lukem # Now create the libtool archive.
5740 1.1 lukem case $output in
5741 1.1 lukem *.la)
5742 1.1 lukem old_library=
5743 1.1 lukem test "$build_old_libs" = yes && old_library="$libname.$libext"
5744 1.1 lukem $show "creating $output"
5745 1.1 lukem
5746 1.1 lukem # Preserve any variables that may affect compiler behavior
5747 1.1 lukem for var in $variables_saved_for_relink; do
5748 1.1 lukem if eval test -z \"\${$var+set}\"; then
5749 1.1 lukem relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5750 1.1 lukem elif eval var_value=\$$var; test -z "$var_value"; then
5751 1.1 lukem relink_command="$var=; export $var; $relink_command"
5752 1.1 lukem else
5753 1.1 lukem var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5754 1.1 lukem relink_command="$var=\"$var_value\"; export $var; $relink_command"
5755 1.1 lukem fi
5756 1.1 lukem done
5757 1.1 lukem # Quote the link command for shipping.
5758 1.1 lukem relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
5759 1.1 lukem relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
5760 1.1 lukem if test "$hardcode_automatic" = yes ; then
5761 1.1 lukem relink_command=
5762 1.1 lukem fi
5763 1.1 lukem
5764 1.1 lukem
5765 1.1 lukem # Only create the output if not a dry run.
5766 1.1 lukem if test -z "$run"; then
5767 1.1 lukem for installed in no yes; do
5768 1.1 lukem if test "$installed" = yes; then
5769 1.1 lukem if test -z "$install_libdir"; then
5770 1.1 lukem break
5771 1.1 lukem fi
5772 1.1 lukem output="$output_objdir/$outputname"i
5773 1.1 lukem # Replace all uninstalled libtool libraries with the installed ones
5774 1.1 lukem newdependency_libs=
5775 1.1 lukem for deplib in $dependency_libs; do
5776 1.1 lukem case $deplib in
5777 1.1 lukem *.la)
5778 1.1 lukem name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
5779 1.1 lukem eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5780 1.1 lukem if test -z "$libdir"; then
5781 1.1 lukem $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
5782 1.1 lukem exit $EXIT_FAILURE
5783 1.1 lukem fi
5784 1.1 lukem newdependency_libs="$newdependency_libs $libdir/$name"
5785 1.1 lukem ;;
5786 1.1 lukem *) newdependency_libs="$newdependency_libs $deplib" ;;
5787 1.1 lukem esac
5788 1.1 lukem done
5789 1.1 lukem dependency_libs="$newdependency_libs"
5790 1.1 lukem newdlfiles=
5791 1.1 lukem for lib in $dlfiles; do
5792 1.1 lukem name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5793 1.1 lukem eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5794 1.1 lukem if test -z "$libdir"; then
5795 1.1 lukem $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5796 1.1 lukem exit $EXIT_FAILURE
5797 1.1 lukem fi
5798 1.1 lukem newdlfiles="$newdlfiles $libdir/$name"
5799 1.1 lukem done
5800 1.1 lukem dlfiles="$newdlfiles"
5801 1.1 lukem newdlprefiles=
5802 1.1 lukem for lib in $dlprefiles; do
5803 1.1 lukem name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5804 1.1 lukem eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5805 1.1 lukem if test -z "$libdir"; then
5806 1.1 lukem $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5807 1.1 lukem exit $EXIT_FAILURE
5808 1.1 lukem fi
5809 1.1 lukem newdlprefiles="$newdlprefiles $libdir/$name"
5810 1.1 lukem done
5811 1.1 lukem dlprefiles="$newdlprefiles"
5812 1.1 lukem else
5813 1.1 lukem newdlfiles=
5814 1.1 lukem for lib in $dlfiles; do
5815 1.1 lukem case $lib in
5816 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5817 1.1 lukem *) abs=`pwd`"/$lib" ;;
5818 1.1 lukem esac
5819 1.1 lukem newdlfiles="$newdlfiles $abs"
5820 1.1 lukem done
5821 1.1 lukem dlfiles="$newdlfiles"
5822 1.1 lukem newdlprefiles=
5823 1.1 lukem for lib in $dlprefiles; do
5824 1.1 lukem case $lib in
5825 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5826 1.1 lukem *) abs=`pwd`"/$lib" ;;
5827 1.1 lukem esac
5828 1.1 lukem newdlprefiles="$newdlprefiles $abs"
5829 1.1 lukem done
5830 1.1 lukem dlprefiles="$newdlprefiles"
5831 1.1 lukem fi
5832 1.1 lukem $rm $output
5833 1.1 lukem # place dlname in correct position for cygwin
5834 1.1 lukem tdlname=$dlname
5835 1.1 lukem case $host,$output,$installed,$module,$dlname in
5836 1.1 lukem *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
5837 1.1 lukem esac
5838 1.1 lukem $echo > $output "\
5839 1.1 lukem # $outputname - a libtool library file
5840 1.1 lukem # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5841 1.1 lukem #
5842 1.1 lukem # Please DO NOT delete this file!
5843 1.1 lukem # It is necessary for linking the library.
5844 1.1 lukem
5845 1.1 lukem # The name that we can dlopen(3).
5846 1.1 lukem dlname='$tdlname'
5847 1.1 lukem
5848 1.1 lukem # Names of this library.
5849 1.1 lukem library_names='$library_names'
5850 1.1 lukem
5851 1.1 lukem # The name of the static archive.
5852 1.1 lukem old_library='$old_library'
5853 1.1 lukem
5854 1.1 lukem # Libraries that this one depends upon.
5855 1.1 lukem dependency_libs='$dependency_libs'
5856 1.1 lukem
5857 1.1 lukem # Version information for $libname.
5858 1.1 lukem current=$current
5859 1.1 lukem age=$age
5860 1.1 lukem revision=$revision
5861 1.1 lukem
5862 1.1 lukem # Is this an already installed library?
5863 1.1 lukem installed=$installed
5864 1.1 lukem
5865 1.1 lukem # Should we warn about portability when linking against -modules?
5866 1.1 lukem shouldnotlink=$module
5867 1.1 lukem
5868 1.1 lukem # Files to dlopen/dlpreopen
5869 1.1 lukem dlopen='$dlfiles'
5870 1.1 lukem dlpreopen='$dlprefiles'
5871 1.1 lukem
5872 1.1 lukem # Directory that this library needs to be installed in:
5873 1.1 lukem libdir='$install_libdir'"
5874 1.1 lukem if test "$installed" = no && test "$need_relink" = yes; then
5875 1.1 lukem $echo >> $output "\
5876 1.1 lukem relink_command=\"$relink_command\""
5877 1.1 lukem fi
5878 1.1 lukem done
5879 1.1 lukem fi
5880 1.1 lukem
5881 1.1 lukem # Do a symbolic link so that the libtool archive can be found in
5882 1.1 lukem # LD_LIBRARY_PATH before the program is installed.
5883 1.1 lukem $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5884 1.1 lukem $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
5885 1.1 lukem ;;
5886 1.1 lukem esac
5887 1.1 lukem exit $EXIT_SUCCESS
5888 1.1 lukem ;;
5889 1.1 lukem
5890 1.1 lukem # libtool install mode
5891 1.1 lukem install)
5892 1.1 lukem modename="$modename: install"
5893 1.1 lukem
5894 1.1 lukem # There may be an optional sh(1) argument at the beginning of
5895 1.1 lukem # install_prog (especially on Windows NT).
5896 1.1 lukem if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5897 1.1 lukem # Allow the use of GNU shtool's install command.
5898 1.1 lukem $echo "X$nonopt" | grep shtool > /dev/null; then
5899 1.1 lukem # Aesthetically quote it.
5900 1.1 lukem arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5901 1.1 lukem case $arg in
5902 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5903 1.1 lukem arg="\"$arg\""
5904 1.1 lukem ;;
5905 1.1 lukem esac
5906 1.1 lukem install_prog="$arg "
5907 1.1 lukem arg="$1"
5908 1.1 lukem shift
5909 1.1 lukem else
5910 1.1 lukem install_prog=
5911 1.1 lukem arg=$nonopt
5912 1.1 lukem fi
5913 1.1 lukem
5914 1.1 lukem # The real first argument should be the name of the installation program.
5915 1.1 lukem # Aesthetically quote it.
5916 1.1 lukem arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5917 1.1 lukem case $arg in
5918 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5919 1.1 lukem arg="\"$arg\""
5920 1.1 lukem ;;
5921 1.1 lukem esac
5922 1.1 lukem install_prog="$install_prog$arg"
5923 1.1 lukem
5924 1.1 lukem # We need to accept at least all the BSD install flags.
5925 1.1 lukem dest=
5926 1.1 lukem files=
5927 1.1 lukem opts=
5928 1.1 lukem prev=
5929 1.1 lukem install_type=
5930 1.1 lukem isdir=no
5931 1.1 lukem stripme=
5932 1.1 lukem for arg
5933 1.1 lukem do
5934 1.1 lukem if test -n "$dest"; then
5935 1.1 lukem files="$files $dest"
5936 1.1 lukem dest=$arg
5937 1.1 lukem continue
5938 1.1 lukem fi
5939 1.1 lukem
5940 1.1 lukem case $arg in
5941 1.1 lukem -d) isdir=yes ;;
5942 1.1 lukem -f)
5943 1.1 lukem case " $install_prog " in
5944 1.1 lukem *[\\\ /]cp\ *) ;;
5945 1.1 lukem *) prev=$arg ;;
5946 1.1 lukem esac
5947 1.1 lukem ;;
5948 1.1 lukem -g | -m | -o) prev=$arg ;;
5949 1.1 lukem -s)
5950 1.1 lukem stripme=" -s"
5951 1.1 lukem continue
5952 1.1 lukem ;;
5953 1.1 lukem -*)
5954 1.1 lukem ;;
5955 1.1 lukem *)
5956 1.1 lukem # If the previous option needed an argument, then skip it.
5957 1.1 lukem if test -n "$prev"; then
5958 1.1 lukem prev=
5959 1.1 lukem else
5960 1.1 lukem dest=$arg
5961 1.1 lukem continue
5962 1.1 lukem fi
5963 1.1 lukem ;;
5964 1.1 lukem esac
5965 1.1 lukem
5966 1.1 lukem # Aesthetically quote the argument.
5967 1.1 lukem arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5968 1.1 lukem case $arg in
5969 1.1 lukem *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5970 1.1 lukem arg="\"$arg\""
5971 1.1 lukem ;;
5972 1.1 lukem esac
5973 1.1 lukem install_prog="$install_prog $arg"
5974 1.1 lukem done
5975 1.1 lukem
5976 1.1 lukem if test -z "$install_prog"; then
5977 1.1 lukem $echo "$modename: you must specify an install program" 1>&2
5978 1.1 lukem $echo "$help" 1>&2
5979 1.1 lukem exit $EXIT_FAILURE
5980 1.1 lukem fi
5981 1.1 lukem
5982 1.1 lukem if test -n "$prev"; then
5983 1.1 lukem $echo "$modename: the \`$prev' option requires an argument" 1>&2
5984 1.1 lukem $echo "$help" 1>&2
5985 1.1 lukem exit $EXIT_FAILURE
5986 1.1 lukem fi
5987 1.1 lukem
5988 1.1 lukem if test -z "$files"; then
5989 1.1 lukem if test -z "$dest"; then
5990 1.1 lukem $echo "$modename: no file or destination specified" 1>&2
5991 1.1 lukem else
5992 1.1 lukem $echo "$modename: you must specify a destination" 1>&2
5993 1.1 lukem fi
5994 1.1 lukem $echo "$help" 1>&2
5995 1.1 lukem exit $EXIT_FAILURE
5996 1.1 lukem fi
5997 1.1 lukem
5998 1.1 lukem # Canonicalise the pathname:
5999 1.1 lukem # - remove foo/../
6000 1.1 lukem # - replace //
6001 1.1 lukem # - remove /./
6002 1.1 lukem # - strip any trailing /
6003 1.1 lukem tmp=""
6004 1.1 lukem while test "$dest" != "$tmp"; do
6005 1.1 lukem tmp=$dest
6006 1.1 lukem dest=`$echo "X$dest" | $Xsed -e 's%[^/.][^/.]*/\.\.%%g' -e 's%/\./%/%g' -e 's%//*%/%g' -e 's%/$%%g'`
6007 1.1 lukem done
6008 1.1 lukem
6009 1.1 lukem # Check to see that the destination is a directory.
6010 1.1 lukem test -d "$dest" && isdir=yes
6011 1.1 lukem if test "$isdir" = yes; then
6012 1.1 lukem destdir="$dest"
6013 1.1 lukem destname=
6014 1.1 lukem else
6015 1.1 lukem destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
6016 1.1 lukem test "X$destdir" = "X$dest" && destdir=.
6017 1.1 lukem destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
6018 1.1 lukem
6019 1.1 lukem # Not a directory, so check to see that there is only one file specified.
6020 1.1 lukem set dummy $files
6021 1.1 lukem if test "$#" -gt 2; then
6022 1.1 lukem $echo "$modename: \`$dest' is not a directory" 1>&2
6023 1.1 lukem $echo "$help" 1>&2
6024 1.1 lukem exit $EXIT_FAILURE
6025 1.1 lukem fi
6026 1.1 lukem fi
6027 1.1 lukem case $destdir in
6028 1.1 lukem [\\/]* | [A-Za-z]:[\\/]*) ;;
6029 1.1 lukem *)
6030 1.1 lukem for file in $files; do
6031 1.1 lukem case $file in
6032 1.1 lukem *.lo) ;;
6033 1.1 lukem *)
6034 1.1 lukem $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
6035 1.1 lukem $echo "$help" 1>&2
6036 1.1 lukem exit $EXIT_FAILURE
6037 1.1 lukem ;;
6038 1.1 lukem esac
6039 1.1 lukem done
6040 1.1 lukem ;;
6041 1.1 lukem esac
6042 1.1 lukem
6043 1.1 lukem # This variable tells wrapper scripts just to set variables rather
6044 1.1 lukem # than running their programs.
6045 1.1 lukem libtool_install_magic="$magic"
6046 1.1 lukem
6047 1.1 lukem staticlibs=
6048 1.1 lukem future_libdirs=
6049 1.1 lukem current_libdirs=
6050 1.1 lukem for file in $files; do
6051 1.1 lukem
6052 1.1 lukem # Do each installation.
6053 1.1 lukem case $file in
6054 1.1 lukem *.$libext)
6055 1.1 lukem # Do the static libraries later.
6056 1.1 lukem staticlibs="$staticlibs $file"
6057 1.1 lukem ;;
6058 1.1 lukem
6059 1.1 lukem *.la)
6060 1.1 lukem # Check to see that this really is a libtool archive.
6061 1.1 lukem if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
6062 1.1 lukem else
6063 1.1 lukem $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
6064 1.1 lukem $echo "$help" 1>&2
6065 1.1 lukem exit $EXIT_FAILURE
6066 1.1 lukem fi
6067 1.1 lukem
6068 1.1 lukem library_names=
6069 1.1 lukem old_library=
6070 1.1 lukem relink_command=
6071 1.1 lukem # If there is no directory component, then add one.
6072 1.1 lukem case $file in
6073 1.1 lukem */* | *\\*) . $file ;;
6074 1.1 lukem *) . ./$file ;;
6075 1.1 lukem esac
6076 1.1 lukem
6077 1.1 lukem # Add the libdir to current_libdirs if it is the destination.
6078 1.1 lukem if test "X$destdir" = "X$libdir"; then
6079 1.1 lukem case "$current_libdirs " in
6080 1.1 lukem *" $libdir "*) ;;
6081 1.1 lukem *) current_libdirs="$current_libdirs $libdir" ;;
6082 1.1 lukem esac
6083 1.1 lukem else
6084 1.1 lukem # Note the libdir as a future libdir.
6085 1.1 lukem case "$future_libdirs " in
6086 1.1 lukem *" $libdir "*) ;;
6087 1.1 lukem *) future_libdirs="$future_libdirs $libdir" ;;
6088 1.1 lukem esac
6089 1.1 lukem fi
6090 1.1 lukem
6091 1.1 lukem dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
6092 1.1 lukem test "X$dir" = "X$file/" && dir=
6093 1.1 lukem dir="$dir$objdir"
6094 1.1 lukem
6095 1.1 lukem if test -n "$relink_command"; then
6096 1.1 lukem # Determine the prefix the user has applied to our future dir.
6097 1.1 lukem inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
6098 1.1 lukem
6099 1.1 lukem # Don't allow the user to place us outside of our expected
6100 1.1 lukem # location b/c this prevents finding dependent libraries that
6101 1.1 lukem # are installed to the same prefix.
6102 1.1 lukem # At present, this check doesn't affect windows .dll's that
6103 1.1 lukem # are installed into $libdir/../bin (currently, that works fine)
6104 1.1 lukem # but it's something to keep an eye on.
6105 1.1 lukem if test "$inst_prefix_dir" = "$destdir"; then
6106 1.1 lukem $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
6107 1.1 lukem exit $EXIT_FAILURE
6108 1.1 lukem fi
6109 1.1 lukem
6110 1.1 lukem if test -n "$inst_prefix_dir"; then
6111 1.1 lukem # Stick the inst_prefix_dir data into the link command.
6112 1.1 lukem relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
6113 1.1 lukem else
6114 1.1 lukem relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
6115 1.1 lukem fi
6116 1.1 lukem
6117 1.1 lukem $echo "$modename: warning: relinking \`$file'" 1>&2
6118 1.1 lukem $show "$relink_command"
6119 1.1 lukem if $run eval "$relink_command"; then :
6120 1.1 lukem else
6121 1.1 lukem $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6122 1.1 lukem exit $EXIT_FAILURE
6123 1.1 lukem fi
6124 1.1 lukem fi
6125 1.1 lukem
6126 1.1 lukem # See the names of the shared library.
6127 1.1 lukem set dummy $library_names
6128 1.1 lukem if test -n "$2"; then
6129 1.1 lukem realname="$2"
6130 1.1 lukem shift
6131 1.1 lukem shift
6132 1.1 lukem
6133 1.1 lukem srcname="$realname"
6134 1.1 lukem test -n "$relink_command" && srcname="$realname"T
6135 1.1 lukem
6136 1.1 lukem # Install the shared library and build the symlinks.
6137 1.1 lukem $show "$install_prog $dir/$srcname $destdir/$realname"
6138 1.1 lukem $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
6139 1.1 lukem if test -n "$stripme" && test -n "$striplib"; then
6140 1.1 lukem $show "$striplib $destdir/$realname"
6141 1.1 lukem $run eval "$striplib $destdir/$realname" || exit $?
6142 1.1 lukem fi
6143 1.1 lukem
6144 1.1 lukem if test "$#" -gt 0; then
6145 1.1 lukem # Delete the old symlinks, and create new ones.
6146 1.1 lukem # Try `ln -sf' first, because the `ln' binary might depend on
6147 1.1 lukem # the symlink we replace! Solaris /bin/ln does not understand -f,
6148 1.1 lukem # so we also need to try rm && ln -s.
6149 1.1 lukem for linkname
6150 1.1 lukem do
6151 1.1 lukem if test "$linkname" != "$realname"; then
6152 1.1 lukem $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6153 1.1 lukem $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6154 1.1 lukem fi
6155 1.1 lukem done
6156 1.1 lukem fi
6157 1.1 lukem
6158 1.1 lukem # Do each command in the postinstall commands.
6159 1.1 lukem lib="$destdir/$realname"
6160 1.1 lukem cmds=$postinstall_cmds
6161 1.1 lukem save_ifs="$IFS"; IFS='~'
6162 1.1 lukem for cmd in $cmds; do
6163 1.1 lukem IFS="$save_ifs"
6164 1.1 lukem eval cmd=\"$cmd\"
6165 1.1 lukem $show "$cmd"
6166 1.1 lukem $run eval "$cmd" || {
6167 1.1 lukem lt_exit=$?
6168 1.1 lukem
6169 1.1 lukem # Restore the uninstalled library and exit
6170 1.1 lukem if test "$mode" = relink; then
6171 1.1 lukem $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
6172 1.1 lukem fi
6173 1.1 lukem
6174 1.1 lukem exit $lt_exit
6175 1.1 lukem }
6176 1.1 lukem done
6177 1.1 lukem IFS="$save_ifs"
6178 1.1 lukem fi
6179 1.1 lukem
6180 1.1 lukem # Install the pseudo-library for information purposes.
6181 1.1 lukem name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6182 1.1 lukem instname="$dir/$name"i
6183 1.1 lukem $show "$install_prog $instname $destdir/$name"
6184 1.1 lukem $run eval "$install_prog $instname $destdir/$name" || exit $?
6185 1.1 lukem
6186 1.1 lukem # Maybe install the static library, too.
6187 1.1 lukem test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
6188 1.1 lukem ;;
6189 1.1 lukem
6190 1.1 lukem *.lo)
6191 1.1 lukem # Install (i.e. copy) a libtool object.
6192 1.1 lukem
6193 1.1 lukem # Figure out destination file name, if it wasn't already specified.
6194 1.1 lukem if test -n "$destname"; then
6195 1.1 lukem destfile="$destdir/$destname"
6196 1.1 lukem else
6197 1.1 lukem destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6198 1.1 lukem destfile="$destdir/$destfile"
6199 1.1 lukem fi
6200 1.1 lukem
6201 1.1 lukem # Deduce the name of the destination old-style object file.
6202 1.1 lukem case $destfile in
6203 1.1 lukem *.lo)
6204 1.1 lukem staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
6205 1.1 lukem ;;
6206 1.1 lukem *.$objext)
6207 1.1 lukem staticdest="$destfile"
6208 1.1 lukem destfile=
6209 1.1 lukem ;;
6210 1.1 lukem *)
6211 1.1 lukem $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
6212 1.1 lukem $echo "$help" 1>&2
6213 1.1 lukem exit $EXIT_FAILURE
6214 1.1 lukem ;;
6215 1.1 lukem esac
6216 1.1 lukem
6217 1.1 lukem # Install the libtool object if requested.
6218 1.1 lukem if test -n "$destfile"; then
6219 1.1 lukem $show "$install_prog $file $destfile"
6220 1.1 lukem $run eval "$install_prog $file $destfile" || exit $?
6221 1.1 lukem fi
6222 1.1 lukem
6223 1.1 lukem # Install the old object if enabled.
6224 1.1 lukem if test "$build_old_libs" = yes; then
6225 1.1 lukem # Deduce the name of the old-style object file.
6226 1.1 lukem staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
6227 1.1 lukem
6228 1.1 lukem $show "$install_prog $staticobj $staticdest"
6229 1.1 lukem $run eval "$install_prog \$staticobj \$staticdest" || exit $?
6230 1.1 lukem fi
6231 1.1 lukem exit $EXIT_SUCCESS
6232 1.1 lukem ;;
6233 1.1 lukem
6234 1.1 lukem *)
6235 1.1 lukem # Figure out destination file name, if it wasn't already specified.
6236 1.1 lukem if test -n "$destname"; then
6237 1.1 lukem destfile="$destdir/$destname"
6238 1.1 lukem else
6239 1.1 lukem destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6240 1.1 lukem destfile="$destdir/$destfile"
6241 1.1 lukem fi
6242 1.1 lukem
6243 1.1 lukem # If the file is missing, and there is a .exe on the end, strip it
6244 1.1 lukem # because it is most likely a libtool script we actually want to
6245 1.1 lukem # install
6246 1.1 lukem stripped_ext=""
6247 1.1 lukem case $file in
6248 1.1 lukem *.exe)
6249 1.1 lukem if test ! -f "$file"; then
6250 1.1 lukem file=`$echo $file|${SED} 's,.exe$,,'`
6251 1.1 lukem stripped_ext=".exe"
6252 1.1 lukem fi
6253 1.1 lukem ;;
6254 1.1 lukem esac
6255 1.1 lukem
6256 1.1 lukem # Do a test to see if this is really a libtool program.
6257 1.1 lukem case $host in
6258 1.1 lukem *cygwin*|*mingw*)
6259 1.1 lukem wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
6260 1.1 lukem ;;
6261 1.1 lukem *)
6262 1.1 lukem wrapper=$file
6263 1.1 lukem ;;
6264 1.1 lukem esac
6265 1.1 lukem if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
6266 1.1 lukem notinst_deplibs=
6267 1.1 lukem relink_command=
6268 1.1 lukem
6269 1.1 lukem # Note that it is not necessary on cygwin/mingw to append a dot to
6270 1.1 lukem # foo even if both foo and FILE.exe exist: automatic-append-.exe
6271 1.1 lukem # behavior happens only for exec(3), not for open(2)! Also, sourcing
6272 1.1 lukem # `FILE.' does not work on cygwin managed mounts.
6273 1.1 lukem #
6274 1.1 lukem # If there is no directory component, then add one.
6275 1.1 lukem case $wrapper in
6276 1.1 lukem */* | *\\*) . ${wrapper} ;;
6277 1.1 lukem *) . ./${wrapper} ;;
6278 1.1 lukem esac
6279 1.1 lukem
6280 1.1 lukem # Check the variables that should have been set.
6281 1.1 lukem if test -z "$notinst_deplibs"; then
6282 1.1 lukem $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
6283 1.1 lukem exit $EXIT_FAILURE
6284 1.1 lukem fi
6285 1.1 lukem
6286 1.1 lukem finalize=yes
6287 1.1 lukem for lib in $notinst_deplibs; do
6288 1.1 lukem # Check to see that each library is installed.
6289 1.1 lukem libdir=
6290 1.1 lukem if test -f "$lib"; then
6291 1.1 lukem # If there is no directory component, then add one.
6292 1.1 lukem case $lib in
6293 1.1 lukem */* | *\\*) . $lib ;;
6294 1.1 lukem *) . ./$lib ;;
6295 1.1 lukem esac
6296 1.1 lukem fi
6297 1.1 lukem libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
6298 1.1 lukem if test -n "$libdir" && test ! -f "$libfile"; then
6299 1.1 lukem $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
6300 1.1 lukem finalize=no
6301 1.1 lukem fi
6302 1.1 lukem done
6303 1.1 lukem
6304 1.1 lukem relink_command=
6305 1.1 lukem # Note that it is not necessary on cygwin/mingw to append a dot to
6306 1.1 lukem # foo even if both foo and FILE.exe exist: automatic-append-.exe
6307 1.1 lukem # behavior happens only for exec(3), not for open(2)! Also, sourcing
6308 1.1 lukem # `FILE.' does not work on cygwin managed mounts.
6309 1.1 lukem #
6310 1.1 lukem # If there is no directory component, then add one.
6311 1.1 lukem case $wrapper in
6312 1.1 lukem */* | *\\*) . ${wrapper} ;;
6313 1.1 lukem *) . ./${wrapper} ;;
6314 1.1 lukem esac
6315 1.1 lukem
6316 1.1 lukem outputname=
6317 1.1 lukem if test "$fast_install" = no && test -n "$relink_command"; then
6318 1.1 lukem if test "$finalize" = yes && test -z "$run"; then
6319 1.1 lukem tmpdir=`func_mktempdir`
6320 1.1 lukem file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
6321 1.1 lukem outputname="$tmpdir/$file"
6322 1.1 lukem # Replace the output file specification.
6323 1.1 lukem relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
6324 1.1 lukem
6325 1.1 lukem $show "$relink_command"
6326 1.1 lukem if $run eval "$relink_command"; then :
6327 1.1 lukem else
6328 1.1 lukem $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6329 1.1 lukem ${rm}r "$tmpdir"
6330 1.1 lukem continue
6331 1.1 lukem fi
6332 1.1 lukem file="$outputname"
6333 1.1 lukem else
6334 1.1 lukem $echo "$modename: warning: cannot relink \`$file'" 1>&2
6335 1.1 lukem fi
6336 1.1 lukem else
6337 1.1 lukem # Install the binary that we compiled earlier.
6338 1.1 lukem file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
6339 1.1 lukem fi
6340 1.1 lukem fi
6341 1.1 lukem
6342 1.1 lukem # remove .exe since cygwin /usr/bin/install will append another
6343 1.1 lukem # one anyway
6344 1.1 lukem case $install_prog,$host in
6345 1.1 lukem */usr/bin/install*,*cygwin*)
6346 1.1 lukem case $file:$destfile in
6347 1.1 lukem *.exe:*.exe)
6348 1.1 lukem # this is ok
6349 1.1 lukem ;;
6350 1.1 lukem *.exe:*)
6351 1.1 lukem destfile=$destfile.exe
6352 1.1 lukem ;;
6353 1.1 lukem *:*.exe)
6354 1.1 lukem destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
6355 1.1 lukem ;;
6356 1.1 lukem esac
6357 1.1 lukem ;;
6358 1.1 lukem esac
6359 1.1 lukem $show "$install_prog$stripme $file $destfile"
6360 1.1 lukem $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
6361 1.1 lukem test -n "$outputname" && ${rm}r "$tmpdir"
6362 1.1 lukem ;;
6363 1.1 lukem esac
6364 1.1 lukem done
6365 1.1 lukem
6366 1.1 lukem for file in $staticlibs; do
6367 1.1 lukem name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6368 1.1 lukem
6369 1.1 lukem # Set up the ranlib parameters.
6370 1.1 lukem oldlib="$destdir/$name"
6371 1.1 lukem
6372 1.1 lukem $show "$install_prog $file $oldlib"
6373 1.1 lukem $run eval "$install_prog \$file \$oldlib" || exit $?
6374 1.1 lukem
6375 1.1 lukem if test -n "$stripme" && test -n "$old_striplib"; then
6376 1.1 lukem $show "$old_striplib $oldlib"
6377 1.1 lukem $run eval "$old_striplib $oldlib" || exit $?
6378 1.1 lukem fi
6379 1.1 lukem
6380 1.1 lukem # Do each command in the postinstall commands.
6381 1.1 lukem cmds=$old_postinstall_cmds
6382 1.1 lukem save_ifs="$IFS"; IFS='~'
6383 1.1 lukem for cmd in $cmds; do
6384 1.1 lukem IFS="$save_ifs"
6385 1.1 lukem eval cmd=\"$cmd\"
6386 1.1 lukem $show "$cmd"
6387 1.1 lukem $run eval "$cmd" || exit $?
6388 1.1 lukem done
6389 1.1 lukem IFS="$save_ifs"
6390 1.1 lukem done
6391 1.1 lukem
6392 1.1 lukem if test -n "$future_libdirs"; then
6393 1.1 lukem $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
6394 1.1 lukem fi
6395 1.1 lukem
6396 1.1 lukem if test -n "$current_libdirs"; then
6397 1.1 lukem # Maybe just do a dry run.
6398 1.1 lukem test -n "$run" && current_libdirs=" -n$current_libdirs"
6399 1.1 lukem exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
6400 1.1 lukem else
6401 1.1 lukem exit $EXIT_SUCCESS
6402 1.1 lukem fi
6403 1.1 lukem ;;
6404 1.1 lukem
6405 1.1 lukem # libtool finish mode
6406 1.1 lukem finish)
6407 1.1 lukem modename="$modename: finish"
6408 1.1 lukem libdirs="$nonopt"
6409 1.1 lukem admincmds=
6410 1.1 lukem
6411 1.1 lukem if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
6412 1.1 lukem for dir
6413 1.1 lukem do
6414 1.1 lukem libdirs="$libdirs $dir"
6415 1.1 lukem done
6416 1.1 lukem
6417 1.1 lukem for libdir in $libdirs; do
6418 1.1 lukem if test -n "$finish_cmds"; then
6419 1.1 lukem # Do each command in the finish commands.
6420 1.1 lukem cmds=$finish_cmds
6421 1.1 lukem save_ifs="$IFS"; IFS='~'
6422 1.1 lukem for cmd in $cmds; do
6423 1.1 lukem IFS="$save_ifs"
6424 1.1 lukem eval cmd=\"$cmd\"
6425 1.1 lukem $show "$cmd"
6426 1.1 lukem $run eval "$cmd" || admincmds="$admincmds
6427 1.1 lukem $cmd"
6428 1.1 lukem done
6429 1.1 lukem IFS="$save_ifs"
6430 1.1 lukem fi
6431 1.1 lukem if test -n "$finish_eval"; then
6432 1.1 lukem # Do the single finish_eval.
6433 1.1 lukem eval cmds=\"$finish_eval\"
6434 1.1 lukem $run eval "$cmds" || admincmds="$admincmds
6435 1.1 lukem $cmds"
6436 1.1 lukem fi
6437 1.1 lukem done
6438 1.1 lukem fi
6439 1.1 lukem
6440 1.1 lukem # Exit here if they wanted silent mode.
6441 1.1 lukem test "$show" = : && exit $EXIT_SUCCESS
6442 1.1 lukem
6443 1.1 lukem $echo "X----------------------------------------------------------------------" | $Xsed
6444 1.1 lukem $echo "Libraries have been installed in:"
6445 1.1 lukem for libdir in $libdirs; do
6446 1.1 lukem $echo " $libdir"
6447 1.1 lukem done
6448 1.1 lukem $echo
6449 1.1 lukem $echo "If you ever happen to want to link against installed libraries"
6450 1.1 lukem $echo "in a given directory, LIBDIR, you must either use libtool, and"
6451 1.1 lukem $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
6452 1.1 lukem $echo "flag during linking and do at least one of the following:"
6453 1.1 lukem if test -n "$shlibpath_var"; then
6454 1.1 lukem $echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
6455 1.1 lukem $echo " during execution"
6456 1.1 lukem fi
6457 1.1 lukem if test -n "$runpath_var"; then
6458 1.1 lukem $echo " - add LIBDIR to the \`$runpath_var' environment variable"
6459 1.1 lukem $echo " during linking"
6460 1.1 lukem fi
6461 1.1 lukem if test -n "$hardcode_libdir_flag_spec"; then
6462 1.1 lukem libdir=LIBDIR
6463 1.1 lukem eval flag=\"$hardcode_libdir_flag_spec\"
6464 1.1 lukem
6465 1.1 lukem $echo " - use the \`$flag' linker flag"
6466 1.1 lukem fi
6467 1.1 lukem if test -n "$admincmds"; then
6468 1.1 lukem $echo " - have your system administrator run these commands:$admincmds"
6469 1.1 lukem fi
6470 1.1 lukem if test -f /etc/ld.so.conf; then
6471 1.1 lukem $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
6472 1.1 lukem fi
6473 1.1 lukem $echo
6474 1.1 lukem $echo "See any operating system documentation about shared libraries for"
6475 1.1 lukem $echo "more information, such as the ld(1) and ld.so(8) manual pages."
6476 1.1 lukem $echo "X----------------------------------------------------------------------" | $Xsed
6477 1.1 lukem exit $EXIT_SUCCESS
6478 1.1 lukem ;;
6479 1.1 lukem
6480 1.1 lukem # libtool execute mode
6481 1.1 lukem execute)
6482 1.1 lukem modename="$modename: execute"
6483 1.1 lukem
6484 1.1 lukem # The first argument is the command name.
6485 1.1 lukem cmd="$nonopt"
6486 1.1 lukem if test -z "$cmd"; then
6487 1.1 lukem $echo "$modename: you must specify a COMMAND" 1>&2
6488 1.1 lukem $echo "$help"
6489 1.1 lukem exit $EXIT_FAILURE
6490 1.1 lukem fi
6491 1.1 lukem
6492 1.1 lukem # Handle -dlopen flags immediately.
6493 1.1 lukem for file in $execute_dlfiles; do
6494 1.1 lukem if test ! -f "$file"; then
6495 1.1 lukem $echo "$modename: \`$file' is not a file" 1>&2
6496 1.1 lukem $echo "$help" 1>&2
6497 1.1 lukem exit $EXIT_FAILURE
6498 1.1 lukem fi
6499 1.1 lukem
6500 1.1 lukem dir=
6501 1.1 lukem case $file in
6502 1.1 lukem *.la)
6503 1.1 lukem # Check to see that this really is a libtool archive.
6504 1.1 lukem if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
6505 1.1 lukem else
6506 1.1 lukem $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
6507 1.1 lukem $echo "$help" 1>&2
6508 1.1 lukem exit $EXIT_FAILURE
6509 1.1 lukem fi
6510 1.1 lukem
6511 1.1 lukem # Read the libtool library.
6512 1.1 lukem dlname=
6513 1.1 lukem library_names=
6514 1.1 lukem
6515 1.1 lukem # If there is no directory component, then add one.
6516 1.1 lukem case $file in
6517 1.1 lukem */* | *\\*) . $file ;;
6518 1.1 lukem *) . ./$file ;;
6519 1.1 lukem esac
6520 1.1 lukem
6521 1.1 lukem # Skip this library if it cannot be dlopened.
6522 1.1 lukem if test -z "$dlname"; then
6523 1.1 lukem # Warn if it was a shared library.
6524 1.1 lukem test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
6525 1.1 lukem continue
6526 1.1 lukem fi
6527 1.1 lukem
6528 1.1 lukem dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6529 1.1 lukem test "X$dir" = "X$file" && dir=.
6530 1.1 lukem
6531 1.1 lukem if test -f "$dir/$objdir/$dlname"; then
6532 1.1 lukem dir="$dir/$objdir"
6533 1.1 lukem else
6534 1.1 lukem if test ! -f "$dir/$dlname"; then
6535 1.1 lukem $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
6536 1.1 lukem exit $EXIT_FAILURE
6537 1.1 lukem fi
6538 1.1 lukem fi
6539 1.1 lukem ;;
6540 1.1 lukem
6541 1.1 lukem *.lo)
6542 1.1 lukem # Just add the directory containing the .lo file.
6543 1.1 lukem dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6544 1.1 lukem test "X$dir" = "X$file" && dir=.
6545 1.1 lukem ;;
6546 1.1 lukem
6547 1.1 lukem *)
6548 1.1 lukem $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
6549 1.1 lukem continue
6550 1.1 lukem ;;
6551 1.1 lukem esac
6552 1.1 lukem
6553 1.1 lukem # Get the absolute pathname.
6554 1.1 lukem absdir=`cd "$dir" && pwd`
6555 1.1 lukem test -n "$absdir" && dir="$absdir"
6556 1.1 lukem
6557 1.1 lukem # Now add the directory to shlibpath_var.
6558 1.1 lukem if eval "test -z \"\$$shlibpath_var\""; then
6559 1.1 lukem eval "$shlibpath_var=\"\$dir\""
6560 1.1 lukem else
6561 1.1 lukem eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6562 1.1 lukem fi
6563 1.1 lukem done
6564 1.1 lukem
6565 1.1 lukem # This variable tells wrapper scripts just to set shlibpath_var
6566 1.1 lukem # rather than running their programs.
6567 1.1 lukem libtool_execute_magic="$magic"
6568 1.1 lukem
6569 1.1 lukem # Check if any of the arguments is a wrapper script.
6570 1.1 lukem args=
6571 1.1 lukem for file
6572 1.1 lukem do
6573 1.1 lukem case $file in
6574 1.1 lukem -*) ;;
6575 1.1 lukem *)
6576 1.1 lukem # Do a test to see if this is really a libtool program.
6577 1.1 lukem if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6578 1.1 lukem # If there is no directory component, then add one.
6579 1.1 lukem case $file in
6580 1.1 lukem */* | *\\*) . $file ;;
6581 1.1 lukem *) . ./$file ;;
6582 1.1 lukem esac
6583 1.1 lukem
6584 1.1 lukem # Transform arg to wrapped name.
6585 1.1 lukem file="$progdir/$program"
6586 1.1 lukem fi
6587 1.1 lukem ;;
6588 1.1 lukem esac
6589 1.1 lukem # Quote arguments (to preserve shell metacharacters).
6590 1.1 lukem file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
6591 1.1 lukem args="$args \"$file\""
6592 1.1 lukem done
6593 1.1 lukem
6594 1.1 lukem if test -z "$run"; then
6595 1.1 lukem if test -n "$shlibpath_var"; then
6596 1.1 lukem # Export the shlibpath_var.
6597 1.1 lukem eval "export $shlibpath_var"
6598 1.1 lukem fi
6599 1.1 lukem
6600 1.1 lukem # Restore saved environment variables
6601 1.1 lukem for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
6602 1.1 lukem do
6603 1.1 lukem eval "if test \"\${save_$lt_var+set}\" = set; then
6604 1.1 lukem $lt_var=\$save_$lt_var; export $lt_var
6605 1.1 lukem fi"
6606 1.1 lukem done
6607 1.1 lukem
6608 1.1 lukem # Now prepare to actually exec the command.
6609 1.1 lukem exec_cmd="\$cmd$args"
6610 1.1 lukem else
6611 1.1 lukem # Display what would be done.
6612 1.1 lukem if test -n "$shlibpath_var"; then
6613 1.1 lukem eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
6614 1.1 lukem $echo "export $shlibpath_var"
6615 1.1 lukem fi
6616 1.1 lukem $echo "$cmd$args"
6617 1.1 lukem exit $EXIT_SUCCESS
6618 1.1 lukem fi
6619 1.1 lukem ;;
6620 1.1 lukem
6621 1.1 lukem # libtool clean and uninstall mode
6622 1.1 lukem clean | uninstall)
6623 1.1 lukem modename="$modename: $mode"
6624 1.1 lukem rm="$nonopt"
6625 1.1 lukem files=
6626 1.1 lukem rmforce=
6627 1.1 lukem exit_status=0
6628 1.1 lukem
6629 1.1 lukem # This variable tells wrapper scripts just to set variables rather
6630 1.1 lukem # than running their programs.
6631 1.1 lukem libtool_install_magic="$magic"
6632 1.1 lukem
6633 1.1 lukem for arg
6634 1.1 lukem do
6635 1.1 lukem case $arg in
6636 1.1 lukem -f) rm="$rm $arg"; rmforce=yes ;;
6637 1.1 lukem -*) rm="$rm $arg" ;;
6638 1.1 lukem *) files="$files $arg" ;;
6639 1.1 lukem esac
6640 1.1 lukem done
6641 1.1 lukem
6642 1.1 lukem if test -z "$rm"; then
6643 1.1 lukem $echo "$modename: you must specify an RM program" 1>&2
6644 1.1 lukem $echo "$help" 1>&2
6645 1.1 lukem exit $EXIT_FAILURE
6646 1.1 lukem fi
6647 1.1 lukem
6648 1.1 lukem rmdirs=
6649 1.1 lukem
6650 1.1 lukem origobjdir="$objdir"
6651 1.1 lukem for file in $files; do
6652 1.1 lukem dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6653 1.1 lukem if test "X$dir" = "X$file"; then
6654 1.1 lukem dir=.
6655 1.1 lukem objdir="$origobjdir"
6656 1.1 lukem else
6657 1.1 lukem objdir="$dir/$origobjdir"
6658 1.1 lukem fi
6659 1.1 lukem name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6660 1.1 lukem test "$mode" = uninstall && objdir="$dir"
6661 1.1 lukem
6662 1.1 lukem # Remember objdir for removal later, being careful to avoid duplicates
6663 1.1 lukem if test "$mode" = clean; then
6664 1.1 lukem case " $rmdirs " in
6665 1.1 lukem *" $objdir "*) ;;
6666 1.1 lukem *) rmdirs="$rmdirs $objdir" ;;
6667 1.1 lukem esac
6668 1.1 lukem fi
6669 1.1 lukem
6670 1.1 lukem # Don't error if the file doesn't exist and rm -f was used.
6671 1.1 lukem if (test -L "$file") >/dev/null 2>&1 \
6672 1.1 lukem || (test -h "$file") >/dev/null 2>&1 \
6673 1.1 lukem || test -f "$file"; then
6674 1.1 lukem :
6675 1.1 lukem elif test -d "$file"; then
6676 1.1 lukem exit_status=1
6677 1.1 lukem continue
6678 1.1 lukem elif test "$rmforce" = yes; then
6679 1.1 lukem continue
6680 1.1 lukem fi
6681 1.1 lukem
6682 1.1 lukem rmfiles="$file"
6683 1.1 lukem
6684 1.1 lukem case $name in
6685 1.1 lukem *.la)
6686 1.1 lukem # Possibly a libtool archive, so verify it.
6687 1.1 lukem if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6688 1.1 lukem . $dir/$name
6689 1.1 lukem
6690 1.1 lukem # Delete the libtool libraries and symlinks.
6691 1.1 lukem for n in $library_names; do
6692 1.1 lukem rmfiles="$rmfiles $objdir/$n"
6693 1.1 lukem done
6694 1.1 lukem test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
6695 1.1 lukem
6696 1.1 lukem case "$mode" in
6697 1.1 lukem clean)
6698 1.1 lukem case " $library_names " in
6699 1.1 lukem # " " in the beginning catches empty $dlname
6700 1.1 lukem *" $dlname "*) ;;
6701 1.1 lukem *) rmfiles="$rmfiles $objdir/$dlname" ;;
6702 1.1 lukem esac
6703 1.1 lukem test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
6704 1.1 lukem ;;
6705 1.1 lukem uninstall)
6706 1.1 lukem if test -n "$library_names"; then
6707 1.1 lukem # Do each command in the postuninstall commands.
6708 1.1 lukem cmds=$postuninstall_cmds
6709 1.1 lukem save_ifs="$IFS"; IFS='~'
6710 1.1 lukem for cmd in $cmds; do
6711 1.1 lukem IFS="$save_ifs"
6712 1.1 lukem eval cmd=\"$cmd\"
6713 1.1 lukem $show "$cmd"
6714 1.1 lukem $run eval "$cmd"
6715 1.1 lukem if test "$?" -ne 0 && test "$rmforce" != yes; then
6716 1.1 lukem exit_status=1
6717 1.1 lukem fi
6718 1.1 lukem done
6719 1.1 lukem IFS="$save_ifs"
6720 1.1 lukem fi
6721 1.1 lukem
6722 1.1 lukem if test -n "$old_library"; then
6723 1.1 lukem # Do each command in the old_postuninstall commands.
6724 1.1 lukem cmds=$old_postuninstall_cmds
6725 1.1 lukem save_ifs="$IFS"; IFS='~'
6726 1.1 lukem for cmd in $cmds; do
6727 1.1 lukem IFS="$save_ifs"
6728 1.1 lukem eval cmd=\"$cmd\"
6729 1.1 lukem $show "$cmd"
6730 1.1 lukem $run eval "$cmd"
6731 1.1 lukem if test "$?" -ne 0 && test "$rmforce" != yes; then
6732 1.1 lukem exit_status=1
6733 1.1 lukem fi
6734 1.1 lukem done
6735 1.1 lukem IFS="$save_ifs"
6736 1.1 lukem fi
6737 1.1 lukem # FIXME: should reinstall the best remaining shared library.
6738 1.1 lukem ;;
6739 1.1 lukem esac
6740 1.1 lukem fi
6741 1.1 lukem ;;
6742 1.1 lukem
6743 1.1 lukem *.lo)
6744 1.1 lukem # Possibly a libtool object, so verify it.
6745 1.1 lukem if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6746 1.1 lukem
6747 1.1 lukem # Read the .lo file
6748 1.1 lukem . $dir/$name
6749 1.1 lukem
6750 1.1 lukem # Add PIC object to the list of files to remove.
6751 1.1 lukem if test -n "$pic_object" \
6752 1.1 lukem && test "$pic_object" != none; then
6753 1.1 lukem rmfiles="$rmfiles $dir/$pic_object"
6754 1.1 lukem fi
6755 1.1 lukem
6756 1.1 lukem # Add non-PIC object to the list of files to remove.
6757 1.1 lukem if test -n "$non_pic_object" \
6758 1.1 lukem && test "$non_pic_object" != none; then
6759 1.1 lukem rmfiles="$rmfiles $dir/$non_pic_object"
6760 1.1 lukem fi
6761 1.1 lukem fi
6762 1.1 lukem ;;
6763 1.1 lukem
6764 1.1 lukem *)
6765 1.1 lukem if test "$mode" = clean ; then
6766 1.1 lukem noexename=$name
6767 1.1 lukem case $file in
6768 1.1 lukem *.exe)
6769 1.1 lukem file=`$echo $file|${SED} 's,.exe$,,'`
6770 1.1 lukem noexename=`$echo $name|${SED} 's,.exe$,,'`
6771 1.1 lukem # $file with .exe has already been added to rmfiles,
6772 1.1 lukem # add $file without .exe
6773 1.1 lukem rmfiles="$rmfiles $file"
6774 1.1 lukem ;;
6775 1.1 lukem esac
6776 1.1 lukem # Do a test to see if this is a libtool program.
6777 1.1 lukem if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6778 1.1 lukem relink_command=
6779 1.1 lukem . $dir/$noexename
6780 1.1 lukem
6781 1.1 lukem # note $name still contains .exe if it was in $file originally
6782 1.1 lukem # as does the version of $file that was added into $rmfiles
6783 1.1 lukem rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
6784 1.1 lukem if test "$fast_install" = yes && test -n "$relink_command"; then
6785 1.1 lukem rmfiles="$rmfiles $objdir/lt-$name"
6786 1.1 lukem fi
6787 1.1 lukem if test "X$noexename" != "X$name" ; then
6788 1.1 lukem rmfiles="$rmfiles $objdir/lt-${noexename}.c"
6789 1.1 lukem fi
6790 1.1 lukem fi
6791 1.1 lukem fi
6792 1.1 lukem ;;
6793 1.1 lukem esac
6794 1.1 lukem $show "$rm $rmfiles"
6795 1.1 lukem $run $rm $rmfiles || exit_status=1
6796 1.1 lukem done
6797 1.1 lukem objdir="$origobjdir"
6798 1.1 lukem
6799 1.1 lukem # Try to remove the ${objdir}s in the directories where we deleted files
6800 1.1 lukem for dir in $rmdirs; do
6801 1.1 lukem if test -d "$dir"; then
6802 1.1 lukem $show "rmdir $dir"
6803 1.1 lukem $run rmdir $dir >/dev/null 2>&1
6804 1.1 lukem fi
6805 1.1 lukem done
6806 1.1 lukem
6807 1.1 lukem exit $exit_status
6808 1.1 lukem ;;
6809 1.1 lukem
6810 1.1 lukem "")
6811 1.1 lukem $echo "$modename: you must specify a MODE" 1>&2
6812 1.1 lukem $echo "$generic_help" 1>&2
6813 1.1 lukem exit $EXIT_FAILURE
6814 1.1 lukem ;;
6815 1.1 lukem esac
6816 1.1 lukem
6817 1.1 lukem if test -z "$exec_cmd"; then
6818 1.1 lukem $echo "$modename: invalid operation mode \`$mode'" 1>&2
6819 1.1 lukem $echo "$generic_help" 1>&2
6820 1.1 lukem exit $EXIT_FAILURE
6821 1.1 lukem fi
6822 1.1 lukem fi # test -z "$show_help"
6823 1.1 lukem
6824 1.1 lukem if test -n "$exec_cmd"; then
6825 1.1 lukem eval exec $exec_cmd
6826 1.1 lukem exit $EXIT_FAILURE
6827 1.1 lukem fi
6828 1.1 lukem
6829 1.1 lukem # We need to display help for each of the modes.
6830 1.1 lukem case $mode in
6831 1.1 lukem "") $echo \
6832 1.1 lukem "Usage: $modename [OPTION]... [MODE-ARG]...
6833 1.1 lukem
6834 1.1 lukem Provide generalized library-building support services.
6835 1.1 lukem
6836 1.1 lukem --config show all configuration variables
6837 1.1 lukem --debug enable verbose shell tracing
6838 1.1 lukem -n, --dry-run display commands without modifying any files
6839 1.1 lukem --features display basic configuration information and exit
6840 1.1 lukem --finish same as \`--mode=finish'
6841 1.1 lukem --help display this help message and exit
6842 1.1 lukem --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
6843 1.1 lukem --quiet same as \`--silent'
6844 1.1 lukem --silent don't print informational messages
6845 1.1 lukem --tag=TAG use configuration variables from tag TAG
6846 1.1 lukem --version print version information
6847 1.1 lukem
6848 1.1 lukem MODE must be one of the following:
6849 1.1 lukem
6850 1.1 lukem clean remove files from the build directory
6851 1.1 lukem compile compile a source file into a libtool object
6852 1.1 lukem execute automatically set library path, then run a program
6853 1.1 lukem finish complete the installation of libtool libraries
6854 1.1 lukem install install libraries or executables
6855 1.1 lukem link create a library or an executable
6856 1.1 lukem uninstall remove libraries from an installed directory
6857 1.1 lukem
6858 1.1 lukem MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
6859 1.1 lukem a more detailed description of MODE.
6860 1.1 lukem
6861 1.1 lukem Report bugs to <bug-libtool (at] gnu.org>."
6862 1.1 lukem exit $EXIT_SUCCESS
6863 1.1 lukem ;;
6864 1.1 lukem
6865 1.1 lukem clean)
6866 1.1 lukem $echo \
6867 1.1 lukem "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
6868 1.1 lukem
6869 1.1 lukem Remove files from the build directory.
6870 1.1 lukem
6871 1.1 lukem RM is the name of the program to use to delete files associated with each FILE
6872 1.1 lukem (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
6873 1.1 lukem to RM.
6874 1.1 lukem
6875 1.1 lukem If FILE is a libtool library, object or program, all the files associated
6876 1.1 lukem with it are deleted. Otherwise, only FILE itself is deleted using RM."
6877 1.1 lukem ;;
6878 1.1 lukem
6879 1.1 lukem compile)
6880 1.1 lukem $echo \
6881 1.1 lukem "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6882 1.1 lukem
6883 1.1 lukem Compile a source file into a libtool library object.
6884 1.1 lukem
6885 1.1 lukem This mode accepts the following additional options:
6886 1.1 lukem
6887 1.1 lukem -o OUTPUT-FILE set the output file name to OUTPUT-FILE
6888 1.1 lukem -prefer-pic try to building PIC objects only
6889 1.1 lukem -prefer-non-pic try to building non-PIC objects only
6890 1.1 lukem -static always build a \`.o' file suitable for static linking
6891 1.1 lukem
6892 1.1 lukem COMPILE-COMMAND is a command to be used in creating a \`standard' object file
6893 1.1 lukem from the given SOURCEFILE.
6894 1.1 lukem
6895 1.1 lukem The output file name is determined by removing the directory component from
6896 1.1 lukem SOURCEFILE, then substituting the C source code suffix \`.c' with the
6897 1.1 lukem library object suffix, \`.lo'."
6898 1.1 lukem ;;
6899 1.1 lukem
6900 1.1 lukem execute)
6901 1.1 lukem $echo \
6902 1.1 lukem "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
6903 1.1 lukem
6904 1.1 lukem Automatically set library path, then run a program.
6905 1.1 lukem
6906 1.1 lukem This mode accepts the following additional options:
6907 1.1 lukem
6908 1.1 lukem -dlopen FILE add the directory containing FILE to the library path
6909 1.1 lukem
6910 1.1 lukem This mode sets the library path environment variable according to \`-dlopen'
6911 1.1 lukem flags.
6912 1.1 lukem
6913 1.1 lukem If any of the ARGS are libtool executable wrappers, then they are translated
6914 1.1 lukem into their corresponding uninstalled binary, and any of their required library
6915 1.1 lukem directories are added to the library path.
6916 1.1 lukem
6917 1.1 lukem Then, COMMAND is executed, with ARGS as arguments."
6918 1.1 lukem ;;
6919 1.1 lukem
6920 1.1 lukem finish)
6921 1.1 lukem $echo \
6922 1.1 lukem "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6923 1.1 lukem
6924 1.1 lukem Complete the installation of libtool libraries.
6925 1.1 lukem
6926 1.1 lukem Each LIBDIR is a directory that contains libtool libraries.
6927 1.1 lukem
6928 1.1 lukem The commands that this mode executes may require superuser privileges. Use
6929 1.1 lukem the \`--dry-run' option if you just want to see what would be executed."
6930 1.1 lukem ;;
6931 1.1 lukem
6932 1.1 lukem install)
6933 1.1 lukem $echo \
6934 1.1 lukem "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6935 1.1 lukem
6936 1.1 lukem Install executables or libraries.
6937 1.1 lukem
6938 1.1 lukem INSTALL-COMMAND is the installation command. The first component should be
6939 1.1 lukem either the \`install' or \`cp' program.
6940 1.1 lukem
6941 1.1 lukem The rest of the components are interpreted as arguments to that command (only
6942 1.1 lukem BSD-compatible install options are recognized)."
6943 1.1 lukem ;;
6944 1.1 lukem
6945 1.1 lukem link)
6946 1.1 lukem $echo \
6947 1.1 lukem "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6948 1.1 lukem
6949 1.1 lukem Link object files or libraries together to form another library, or to
6950 1.1 lukem create an executable program.
6951 1.1 lukem
6952 1.1 lukem LINK-COMMAND is a command using the C compiler that you would use to create
6953 1.1 lukem a program from several object files.
6954 1.1 lukem
6955 1.1 lukem The following components of LINK-COMMAND are treated specially:
6956 1.1 lukem
6957 1.1 lukem -all-static do not do any dynamic linking at all
6958 1.1 lukem -avoid-version do not add a version suffix if possible
6959 1.1 lukem -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
6960 1.1 lukem -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
6961 1.1 lukem -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
6962 1.1 lukem -export-symbols SYMFILE
6963 1.1 lukem try to export only the symbols listed in SYMFILE
6964 1.1 lukem -export-symbols-regex REGEX
6965 1.1 lukem try to export only the symbols matching REGEX
6966 1.1 lukem -LLIBDIR search LIBDIR for required installed libraries
6967 1.1 lukem -lNAME OUTPUT-FILE requires the installed library libNAME
6968 1.1 lukem -module build a library that can dlopened
6969 1.1 lukem -no-fast-install disable the fast-install mode
6970 1.1 lukem -no-install link a not-installable executable
6971 1.1 lukem -no-undefined declare that a library does not refer to external symbols
6972 1.1 lukem -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
6973 1.1 lukem -objectlist FILE Use a list of object files found in FILE to specify objects
6974 1.1 lukem -precious-files-regex REGEX
6975 1.1 lukem don't remove output files matching REGEX
6976 1.1 lukem -release RELEASE specify package release information
6977 1.1 lukem -rpath LIBDIR the created library will eventually be installed in LIBDIR
6978 1.1 lukem -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
6979 1.1 lukem -static do not do any dynamic linking of uninstalled libtool libraries
6980 1.1 lukem -static-libtool-libs
6981 1.1 lukem do not do any dynamic linking of libtool libraries
6982 1.1 lukem -version-info CURRENT[:REVISION[:AGE]]
6983 1.1 lukem specify library version info [each variable defaults to 0]
6984 1.1 lukem
6985 1.1 lukem All other options (arguments beginning with \`-') are ignored.
6986 1.1 lukem
6987 1.1 lukem Every other argument is treated as a filename. Files ending in \`.la' are
6988 1.1 lukem treated as uninstalled libtool libraries, other files are standard or library
6989 1.1 lukem object files.
6990 1.1 lukem
6991 1.1 lukem If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
6992 1.1 lukem only library objects (\`.lo' files) may be specified, and \`-rpath' is
6993 1.1 lukem required, except when creating a convenience library.
6994 1.1 lukem
6995 1.1 lukem If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
6996 1.1 lukem using \`ar' and \`ranlib', or on Windows using \`lib'.
6997 1.1 lukem
6998 1.1 lukem If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
6999 1.1 lukem is created, otherwise an executable program is created."
7000 1.1 lukem ;;
7001 1.1 lukem
7002 1.1 lukem uninstall)
7003 1.1 lukem $echo \
7004 1.1 lukem "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
7005 1.1 lukem
7006 1.1 lukem Remove libraries from an installation directory.
7007 1.1 lukem
7008 1.1 lukem RM is the name of the program to use to delete files associated with each FILE
7009 1.1 lukem (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
7010 1.1 lukem to RM.
7011 1.1 lukem
7012 1.1 lukem If FILE is a libtool library, all the files associated with it are deleted.
7013 1.1 lukem Otherwise, only FILE itself is deleted using RM."
7014 1.1 lukem ;;
7015 1.1 lukem
7016 1.1 lukem *)
7017 1.1 lukem $echo "$modename: invalid operation mode \`$mode'" 1>&2
7018 1.1 lukem $echo "$help" 1>&2
7019 1.1 lukem exit $EXIT_FAILURE
7020 1.1 lukem ;;
7021 1.1 lukem esac
7022 1.1 lukem
7023 1.1 lukem $echo
7024 1.1 lukem $echo "Try \`$modename --help' for more information about other modes."
7025 1.1 lukem
7026 1.1 lukem exit $?
7027 1.1 lukem
7028 1.1 lukem # The TAGs below are defined such that we never get into a situation
7029 1.1 lukem # in which we disable both kinds of libraries. Given conflicting
7030 1.1 lukem # choices, we go for a static library, that is the most portable,
7031 1.1 lukem # since we can't tell whether shared libraries were disabled because
7032 1.1 lukem # the user asked for that or because the platform doesn't support
7033 1.1 lukem # them. This is particularly important on AIX, because we don't
7034 1.1 lukem # support having both static and shared libraries enabled at the same
7035 1.1 lukem # time on that platform, so we default to a shared-only configuration.
7036 1.1 lukem # If a disable-shared tag is given, we'll fallback to a static-only
7037 1.1 lukem # configuration. But we'll never go from static-only to shared-only.
7038 1.1 lukem
7039 1.1 lukem # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
7040 1.1 lukem disable_libs=shared
7041 1.1 lukem # ### END LIBTOOL TAG CONFIG: disable-shared
7042 1.1 lukem
7043 1.1 lukem # ### BEGIN LIBTOOL TAG CONFIG: disable-static
7044 1.1 lukem disable_libs=static
7045 1.1 lukem # ### END LIBTOOL TAG CONFIG: disable-static
7046 1.1 lukem
7047 1.1 lukem # Local Variables:
7048 1.1 lukem # mode:shell-script
7049 1.1 lukem # sh-indentation:2
7050 1.1 lukem # End:
7051