]> gcc.gnu.org Git - gcc.git/blame - ltmain.sh
cppalloc.c (xstrdup): Use memcpy.
[gcc.git] / ltmain.sh
CommitLineData
6599da04 1# ltmain.sh - Provide generalized library-building support services.
cf4ccd63
JL
2# NOTE: Changing this file will not affect anything until you rerun ltconfig.
3#
90fb0c24 4# Copyright (C) 1996-1999 Free Software Foundation, Inc.
6599da04
JM
5# Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
6#
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 2 of the License, or
10# (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful, but
13# WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15# General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20#
21# As a special exception to the GNU General Public License, if you
22# distribute this file as part of a program that contains a
23# configuration script generated by Autoconf, you may include it under
24# the same distribution terms that you use for the rest of that program.
25
fbd836fc
ILT
26# Check that we have a working $echo.
27if test "X$1" = X--no-reexec; then
28 # Discard the --no-reexec flag, and continue.
29 shift
90fb0c24
TT
30elif test "X$1" = X--fallback-echo; then
31 # used as fallback echo
32 shift
33 cat <<EOF
34$*
35EOF
36 exit 0
fbd836fc
ILT
37elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
38 # Yippee, $echo works!
39 :
40else
41 # Restart under the correct shell, and then maybe $echo will work.
42 exec $SHELL "$0" --no-reexec ${1+"$@"}
43fi
44
6599da04 45# The name of this program.
cf4ccd63
JL
46progname=`$echo "$0" | sed 's%^.*/%%'`
47modename="$progname"
6599da04
JM
48
49# Constants.
50PROGRAM=ltmain.sh
51PACKAGE=libtool
90fb0c24
TT
52VERSION=1.2f
53TIMESTAMP=" (1.385 1999/03/15 17:24:54)"
6599da04
JM
54
55default_mode=
56help="Try \`$progname --help' for more information."
57magic="%%%MAGIC variable%%%"
58mkdir="mkdir"
59mv="mv -f"
6599da04
JM
60rm="rm -f"
61
cf4ccd63
JL
62# Sed substitution that helps us do robust quoting. It backslashifies
63# metacharacters that are still active within double-quoted strings.
90fb0c24 64Xsed='sed -e 1s/^X//'
cf4ccd63 65sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
90fb0c24
TT
66SP2NL='tr \040 \012'
67NL2SP='tr \012 \040'
cf4ccd63
JL
68
69# NLS nuisances.
70# Only set LANG and LC_ALL to C if already set.
71# These must not be set unconditionally because not all systems understand
72# e.g. LANG=C (notably SCO).
fbd836fc
ILT
73# We save the old values to restore during execute mode.
74if test "${LC_ALL+set}" = set; then
75 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
76fi
77if test "${LANG+set}" = set; then
78 save_LANG="$LANG"; LANG=C; export LANG
79fi
cf4ccd63 80
6599da04 81if test "$LTCONFIG_VERSION" != "$VERSION"; then
cf4ccd63 82 echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
6599da04
JM
83 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
84 exit 1
85fi
86
6599da04 87if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
cf4ccd63 88 echo "$modename: not configured to build any kind of library" 1>&2
6599da04
JM
89 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
90 exit 1
91fi
92
93# Global variables.
94mode=$default_mode
95nonopt=
96prev=
97prevopt=
98run=
cf4ccd63 99show="$echo"
6599da04 100show_help=
cf4ccd63 101execute_dlfiles=
fbd836fc 102lo2o="s/\\.lo\$/.${objext}/"
6599da04
JM
103
104# Parse our command line options once, thoroughly.
105while test $# -gt 0
106do
107 arg="$1"
108 shift
109
110 case "$arg" in
cf4ccd63 111 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
6599da04
JM
112 *) optarg= ;;
113 esac
114
115 # If the previous option needs an argument, assign it.
116 if test -n "$prev"; then
cf4ccd63
JL
117 case "$prev" in
118 execute_dlfiles)
119 eval "$prev=\"\$$prev \$arg\""
120 ;;
121 *)
122 eval "$prev=\$arg"
123 ;;
124 esac
125
6599da04
JM
126 prev=
127 prevopt=
128 continue
129 fi
130
131 # Have we seen a non-optional argument yet?
132 case "$arg" in
133 --help)
134 show_help=yes
135 ;;
136
137 --version)
90fb0c24 138 echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
6599da04
JM
139 exit 0
140 ;;
141
cf4ccd63
JL
142 --config)
143 sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
144 exit 0
145 ;;
146
147 --debug)
148 echo "$progname: enabling shell trace mode"
149 set -x
150 ;;
151
6599da04
JM
152 --dry-run | -n)
153 run=:
154 ;;
155
156 --features)
157 echo "host: $host"
158 if test "$build_libtool_libs" = yes; then
159 echo "enable shared libraries"
160 else
161 echo "disable shared libraries"
162 fi
163 if test "$build_old_libs" = yes; then
164 echo "enable static libraries"
165 else
166 echo "disable static libraries"
167 fi
168 exit 0
169 ;;
170
171 --finish) mode="finish" ;;
172
173 --mode) prevopt="--mode" prev=mode ;;
174 --mode=*) mode="$optarg" ;;
175
cf4ccd63
JL
176 --quiet | --silent)
177 show=:
178 ;;
179
180 -dlopen)
181 prevopt="-dlopen"
182 prev=execute_dlfiles
183 ;;
184
6599da04 185 -*)
cf4ccd63
JL
186 $echo "$modename: unrecognized option \`$arg'" 1>&2
187 $echo "$help" 1>&2
6599da04
JM
188 exit 1
189 ;;
190
191 *)
192 nonopt="$arg"
193 break
194 ;;
195 esac
196done
197
6599da04 198if test -n "$prevopt"; then
cf4ccd63
JL
199 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
200 $echo "$help" 1>&2
6599da04
JM
201 exit 1
202fi
203
6599da04
JM
204if test -z "$show_help"; then
205
206 # Infer the operation mode.
207 if test -z "$mode"; then
208 case "$nonopt" in
cf4ccd63 209 *cc | *++ | gcc* | *-gcc*)
6599da04
JM
210 mode=link
211 for arg
212 do
90fb0c24
TT
213 case "$arg" in
214 -c)
215 mode=compile
216 break
217 ;;
218 esac
6599da04
JM
219 done
220 ;;
fbd836fc 221 *db | *dbx | *strace | *truss)
cf4ccd63
JL
222 mode=execute
223 ;;
224 *install*|cp|mv)
6599da04
JM
225 mode=install
226 ;;
227 *rm)
228 mode=uninstall
229 ;;
6599da04 230 *)
cf4ccd63
JL
231 # If we have no mode, but dlfiles were specified, then do execute mode.
232 test -n "$execute_dlfiles" && mode=execute
233
6599da04
JM
234 # Just use the default operation mode.
235 if test -z "$mode"; then
90fb0c24
TT
236 if test -n "$nonopt"; then
237 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
238 else
239 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
240 fi
6599da04
JM
241 fi
242 ;;
243 esac
244 fi
245
cf4ccd63
JL
246 # Only execute mode is allowed to have -dlopen flags.
247 if test -n "$execute_dlfiles" && test "$mode" != execute; then
248 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
249 $echo "$help" 1>&2
250 exit 1
251 fi
252
6599da04
JM
253 # Change the help message to a mode-specific one.
254 generic_help="$help"
cf4ccd63 255 help="Try \`$modename --help --mode=$mode' for more information."
6599da04
JM
256
257 # These modes are in order of execution frequency so that they run quickly.
258 case "$mode" in
259 # libtool compile mode
260 compile)
cf4ccd63 261 modename="$modename: compile"
6599da04 262 # Get the compilation command and the source file.
cf4ccd63 263 base_compile=
6599da04 264 lastarg=
cf4ccd63
JL
265 srcfile="$nonopt"
266 suppress_output=
6599da04 267
90fb0c24 268 user_target=no
6599da04
JM
269 for arg
270 do
cf4ccd63 271 # Accept any command-line options.
6599da04 272 case "$arg" in
cf4ccd63 273 -o)
90fb0c24
TT
274 if test "$user_target" != "no"; then
275 $echo "$modename: you cannot specify \`-o' more than once" 1>&2
276 exit 1
277 fi
278 user_target=next
cf4ccd63
JL
279 ;;
280
281 -static)
cf4ccd63
JL
282 build_old_libs=yes
283 continue
284 ;;
6599da04
JM
285 esac
286
90fb0c24
TT
287 case "$user_target" in
288 next)
289 # The next one is the -o target name
290 user_target=yes
291 continue
292 ;;
293 yes)
294 # We got the output file
295 user_target=set
296 libobj="$arg"
297 continue
298 ;;
299 esac
300
cf4ccd63
JL
301 # Accept the current argument as the source file.
302 lastarg="$srcfile"
303 srcfile="$arg"
304
305 # Aesthetically quote the previous argument.
306
307 # Backslashify any backslashes, double quotes, and dollar signs.
308 # These are the only characters that are still specially
309 # interpreted inside of double-quoted scrings.
310 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
311
312 # Double-quote args containing other shell metacharacters.
313 # Many Bourne shells cannot handle close brackets correctly in scan
314 # sets, so we specify it separately.
315 case "$lastarg" in
316 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
317 lastarg="\"$lastarg\""
318 ;;
319 esac
320
321 # Add the previous argument to base_compile.
322 if test -z "$base_compile"; then
323 base_compile="$lastarg"
324 else
325 base_compile="$base_compile $lastarg"
326 fi
6599da04
JM
327 done
328
90fb0c24
TT
329 case "$user_target" in
330 set)
331 ;;
332 no)
333 # Get the name of the library object.
334 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
335 ;;
336 *)
337 $echo "$modename: you must specify a target with \`-o'" 1>&2
338 exit 1
339 ;;
340 esac
6599da04
JM
341
342 # Recognize several different file suffixes.
90fb0c24
TT
343 # If the user specifies -o file.o, it is replaced with file.lo
344 xform='[cCFSfmso]'
6599da04 345 case "$libobj" in
cf4ccd63
JL
346 *.ada) xform=ada ;;
347 *.adb) xform=adb ;;
348 *.ads) xform=ads ;;
349 *.asm) xform=asm ;;
350 *.c++) xform=c++ ;;
6599da04
JM
351 *.cc) xform=cc ;;
352 *.cpp) xform=cpp ;;
353 *.cxx) xform=cxx ;;
354 *.f90) xform=f90 ;;
cf4ccd63 355 *.for) xform=for ;;
6599da04
JM
356 esac
357
cf4ccd63 358 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
6599da04
JM
359
360 case "$libobj" in
fbd836fc 361 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
6599da04 362 *)
90fb0c24 363 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
6599da04
JM
364 exit 1
365 ;;
366 esac
367
368 if test -z "$base_compile"; then
cf4ccd63
JL
369 $echo "$modename: you must specify a compilation command" 1>&2
370 $echo "$help" 1>&2
6599da04
JM
371 exit 1
372 fi
373
374 # Delete any leftover library objects.
375 if test "$build_old_libs" = yes; then
90fb0c24 376 removelist="$obj $libobj"
6599da04 377 else
90fb0c24
TT
378 removelist="$libobj"
379 fi
380
381 $run $rm $removelist
382 trap "$run $rm $removelist; exit 1" 1 2 15
383
384 # Calculate the filename of the output object if compiler does
385 # not support -o with -c
386 if test "$compiler_c_o" = no; then
387 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext}
388 lockfile="$output_obj.lock"
389 removelist="$removelist $output_obj $lockfile"
390 trap "$run $rm $removelist; exit 1" 1 2 15
391 else
392 need_locks=no
393 lockfile=
394 fi
395
396 # Lock this critical section if it is needed
397 # We use this script file to make the link, it avoids creating a new file
398 if test "$need_locks" = yes; then
399 until ln "$0" "$lockfile" 2>/dev/null; do
400 $show "Waiting for $lockfile to be removed"
401 sleep 2
402 done
403 elif test "$need_locks" = warn; then
404 if test -f "$lockfile"; then
405 echo "\
406*** ERROR, $lockfile exists and contains:
407`cat $lockfile 2>/dev/null`
408
409This indicates that another process is trying to use the same
410temporary object file, and libtool could not work around it because
411your compiler does not support \`-c' and \`-o' together. If you
412repeat this compilation, it may succeed, by chance, but you had better
413avoid parallel builds (make -j) in this platform, or get a better
414compiler."
415
416 $run $rm $removelist
417 exit 1
418 fi
419 echo $srcfile > "$lockfile"
6599da04
JM
420 fi
421
fbd836fc
ILT
422 if test -n "$fix_srcfile_path"; then
423 eval srcfile=\"$fix_srcfile_path\"
424 fi
425
6599da04
JM
426 # Only build a PIC object if we are building libtool libraries.
427 if test "$build_libtool_libs" = yes; then
cf4ccd63
JL
428 # Without this assignment, base_compile gets emptied.
429 fbsd_hideous_sh_bug=$base_compile
430
6599da04 431 # All platforms use -DPIC, to notify preprocessed assembler code.
90fb0c24
TT
432 command="$base_compile $pic_flag -DPIC $srcfile"
433 if test "$build_old_libs" = yes; then
434 lo_libobj="$libobj"
435 dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
436 if test "X$dir" = "X$libobj"; then
437 dir="$objdir"
438 else
439 dir="$dir/$objdir"
440 fi
441 libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
442
443 if test -d "$dir"; then
444 $show "$rm $libobj"
445 $run $rm $libobj
446 else
447 $show "$mkdir $dir"
448 $run $mkdir $dir
449 status=$?
450 if test $status -ne 0 && test ! -d $dir; then
451 exit $status
452 fi
453 fi
454 fi
455 if test "$compiler_o_lo" = yes; then
456 output_obj="$libobj"
457 command="$command -o $output_obj"
458 elif test "$compiler_c_o" = yes; then
459 output_obj="$obj"
460 command="$command -o $output_obj"
461 fi
462
463 $show "$command"
464 if $run eval "$command"; then :
6599da04 465 else
90fb0c24
TT
466 test -n "$output_obj" && $run $rm $removelist
467 exit 1
6599da04
JM
468 fi
469
90fb0c24
TT
470 if test "$need_locks" = warn &&
471 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
472 echo "\
473*** ERROR, $lockfile contains:
474`cat $lockfile 2>/dev/null`
475
476but it should contain:
477$srcfile
478
479This indicates that another process is trying to use the same
480temporary object file, and libtool could not work around it because
481your compiler does not support \`-c' and \`-o' together. If you
482repeat this compilation, it may succeed, by chance, but you had better
483avoid parallel builds (make -j) in this platform, or get a better
484compiler."
485
486 $run $rm $removelist
487 exit 1
488 fi
489
490 # Just move the object if needed, then go on to compile the next one
491 if test x"$output_obj" != x"$libobj"; then
492 $show "$mv $output_obj $libobj"
493 if $run $mv $output_obj $libobj; then :
494 else
495 error=$?
496 $run $rm $removelist
497 exit $error
498 fi
6599da04
JM
499 fi
500
90fb0c24
TT
501 # If we have no pic_flag, then copy the object into place and finish.
502 if test -z "$pic_flag" && test "$build_old_libs" = yes; then
503 # Rename the .lo from within objdir to obj
504 if test -f $obj; then
505 $show $rm $obj
506 $run $rm $obj
507 fi
508
509 $show "$mv $libobj $obj"
510 if $run $mv $libobj $obj; then :
511 else
512 error=$?
513 $run $rm $removelist
514 exit $error
515 fi
516
517 # Now arrange that obj and lo_libobj become the same file
518 $show "$LN_S $obj $lo_libobj"
519 if $run $LN_S $obj $lo_libobj; then
520 exit 0
521 else
522 error=$?
523 $run $rm $removelist
524 exit $error
525 fi
526 fi
cf4ccd63
JL
527
528 # Allow error messages only from the first compilation.
529 suppress_output=' >/dev/null 2>&1'
6599da04
JM
530 fi
531
532 # Only build a position-dependent object if we build old libraries.
533 if test "$build_old_libs" = yes; then
90fb0c24
TT
534 command="$base_compile $srcfile"
535 if test "$compiler_c_o" = yes; then
536 command="$command -o $obj"
537 output_obj="$obj"
538 fi
539
cf4ccd63 540 # Suppress compiler output if we already did a PIC compilation.
90fb0c24
TT
541 command="$command$suppress_output"
542 $show "$command"
543 if $run eval "$command"; then :
6599da04 544 else
90fb0c24
TT
545 $run $rm $removelist
546 exit 1
547 fi
548
549 if test "$need_locks" = warn &&
550 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
551 echo "\
552*** ERROR, $lockfile contains:
553`cat $lockfile 2>/dev/null`
554
555but it should contain:
556$srcfile
557
558This indicates that another process is trying to use the same
559temporary object file, and libtool could not work around it because
560your compiler does not support \`-c' and \`-o' together. If you
561repeat this compilation, it may succeed, by chance, but you had better
562avoid parallel builds (make -j) in this platform, or get a better
563compiler."
564
565 $run $rm $removelist
566 exit 1
567 fi
568
569 # Just move the object if needed
570 if test x"$output_obj" != x"$obj"; then
571 $show "$mv $output_obj $obj"
572 if $run $mv $output_obj $obj; then :
573 else
574 error=$?
575 $run $rm $removelist
576 exit $error
577 fi
578 fi
579
580 # Create an invalid libtool object if no PIC, so that we do not
581 # accidentally link it into a program.
582 if test "$build_libtool_libs" != yes; then
583 $show "echo timestamp > $libobj"
584 $run eval "echo timestamp > \$libobj" || exit $?
585 else
586 # Move the .lo from within objdir
587 $show "$mv $libobj $lo_libobj"
588 if $run $mv $libobj $lo_libobj; then :
589 else
590 error=$?
591 $run $rm $removelist
592 exit $error
593 fi
6599da04
JM
594 fi
595 fi
596
90fb0c24
TT
597 # Unlock the critical section if it was locked
598 if test "$need_locks" != no; then
599 $rm "$lockfile"
6599da04
JM
600 fi
601
602 exit 0
603 ;;
604
605 # libtool link mode
606 link)
cf4ccd63 607 modename="$modename: link"
90fb0c24 608 C_compiler="$CC" # save it, to compile generated C sources
cf4ccd63 609 CC="$nonopt"
90fb0c24
TT
610 case "$host" in
611 *-*-cygwin* | *-*-mingw* | *-*-os2*)
612 # It is impossible to link a dll without this setting, and
613 # we shouldn't force the makefile maintainer to figure out
614 # which system we are compiling for in order to pass an extra
615 # flag for every libtool invokation.
616 # allow_undefined=no
617
618 # FIXME: Unfortunately, there are problems with the above when trying
619 # to make a dll which has undefined symbols, in which case not
620 # even a static library is built. For now, we need to specify
621 # -no-undefined on the libtool link line when we can be certain
622 # that all symbols are satisfied, otherwise we get a static library.
623 allow_undefined=yes
624
625 # This is a source program that is used to create dlls on Windows
626 # Don't remove nor modify the starting and closing comments
627# /* ltdll.c starts here */
628# #define WIN32_LEAN_AND_MEAN
629# #include <windows.h>
630# #undef WIN32_LEAN_AND_MEAN
631# #include <stdio.h>
632#
633# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
634#
635# #include <cygwin/cygwin_dll.h>
636# DECLARE_CYGWIN_DLL( DllMain );
637# HINSTANCE __hDllInstance_base;
638#
639# BOOL APIENTRY
640# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
641# {
642# __hDllInstance_base = hInst;
643# return TRUE;
644# }
645# /* ltdll.c ends here */
646 # This is a source program that is used to create import libraries
647 # on Windows for dlls which lack them. Don't remove nor modify the
648 # starting and closing comments
649# /* impgen.c starts here */
650# /* Copyright (C) 1999 Free Software Foundation, Inc.
651#
652# This file is part of GNU libtool.
653#
654# This program is free software; you can redistribute it and/or modify
655# it under the terms of the GNU General Public License as published by
656# the Free Software Foundation; either version 2 of the License, or
657# (at your option) any later version.
658#
659# This program is distributed in the hope that it will be useful,
660# but WITHOUT ANY WARRANTY; without even the implied warranty of
661# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
662# GNU General Public License for more details.
663#
664# You should have received a copy of the GNU General Public License
665# along with this program; if not, write to the Free Software
666# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
667# */
668#
669# #include <stdio.h> /* for printf() */
670# #include <unistd.h> /* for open(), lseek(), read() */
671# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
672# #include <string.h> /* for strdup() */
673#
674# static unsigned int
675# pe_get16 (fd, offset)
676# int fd;
677# int offset;
678# {
679# unsigned char b[2];
680# lseek (fd, offset, SEEK_SET);
681# read (fd, b, 2);
682# return b[0] + (b[1]<<8);
683# }
684#
685# static unsigned int
686# pe_get32 (fd, offset)
687# int fd;
688# int offset;
689# {
690# unsigned char b[4];
691# lseek (fd, offset, SEEK_SET);
692# read (fd, b, 4);
693# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
694# }
695#
696# static unsigned int
697# pe_as32 (ptr)
698# void *ptr;
699# {
700# unsigned char *b = ptr;
701# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
702# }
703#
704# int
705# main (argc, argv)
706# int argc;
707# char *argv[];
708# {
709# int dll;
710# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
711# unsigned long export_rva, export_size, nsections, secptr, expptr;
712# unsigned long name_rvas, nexp;
713# unsigned char *expdata, *erva;
714# char *filename, *dll_name;
715#
716# filename = argv[1];
717#
718# dll = open(filename, O_RDONLY|O_BINARY);
719# if (!dll)
720# return 1;
721#
722# dll_name = filename;
723#
724# for (i=0; filename[i]; i++)
725# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
726# dll_name = filename + i +1;
727#
728# pe_header_offset = pe_get32 (dll, 0x3c);
729# opthdr_ofs = pe_header_offset + 4 + 20;
730# num_entries = pe_get32 (dll, opthdr_ofs + 92);
731#
732# if (num_entries < 1) /* no exports */
733# return 1;
734#
735# export_rva = pe_get32 (dll, opthdr_ofs + 96);
736# export_size = pe_get32 (dll, opthdr_ofs + 100);
737# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
738# secptr = (pe_header_offset + 4 + 20 +
739# pe_get16 (dll, pe_header_offset + 4 + 16));
740#
741# expptr = 0;
742# for (i = 0; i < nsections; i++)
743# {
744# char sname[8];
745# unsigned long secptr1 = secptr + 40 * i;
746# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
747# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
748# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
749# lseek(dll, secptr1, SEEK_SET);
750# read(dll, sname, 8);
751# if (vaddr <= export_rva && vaddr+vsize > export_rva)
752# {
753# expptr = fptr + (export_rva - vaddr);
754# if (export_rva + export_size > vaddr + vsize)
755# export_size = vsize - (export_rva - vaddr);
756# break;
757# }
758# }
759#
760# expdata = (unsigned char*)malloc(export_size);
761# lseek (dll, expptr, SEEK_SET);
762# read (dll, expdata, export_size);
763# erva = expdata - export_rva;
764#
765# nexp = pe_as32 (expdata+24);
766# name_rvas = pe_as32 (expdata+32);
767#
768# printf ("EXPORTS\n");
769# for (i = 0; i<nexp; i++)
770# {
771# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
772# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
773# }
774#
775# return 0;
776# }
777# /* impgen.c ends here */
778 ;;
779 *)
780 allow_undefined=yes
781 ;;
782 esac
cf4ccd63
JL
783 compile_command="$CC"
784 finalize_command="$CC"
785
90fb0c24
TT
786 compile_rpath=
787 finalize_rpath=
6599da04
JM
788 compile_shlibpath=
789 finalize_shlibpath=
fbd836fc
ILT
790 convenience=
791 old_convenience=
6599da04 792 deplibs=
90fb0c24
TT
793 linkopts=
794
795 if test -n "$shlibpath_var"; then
796 # get the directories listed in $shlibpath_var
797 eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
798 else
799 lib_search_path=
800 fi
801 # now prepend the system-specific ones
802 eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
803 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
804
805 avoid_version=no
cf4ccd63
JL
806 dlfiles=
807 dlprefiles=
90fb0c24 808 dlself=no
6599da04 809 export_dynamic=no
90fb0c24
TT
810 export_symbols=
811 export_symbols_regex=
fbd836fc 812 generated=
6599da04
JM
813 libobjs=
814 link_against_libtool_libs=
6599da04 815 ltlibs=
90fb0c24 816 module=no
6599da04 817 objs=
90fb0c24 818 preload=no
6599da04
JM
819 prev=
820 prevarg=
cf4ccd63
JL
821 release=
822 rpath=
90fb0c24 823 xrpath=
6599da04
JM
824 perm_rpath=
825 temp_rpath=
90fb0c24 826 thread_safe=no
6599da04
JM
827 vinfo=
828
829 # We need to know -static, to get the right output filenames.
830 for arg
831 do
832 case "$arg" in
cf4ccd63 833 -all-static | -static)
90fb0c24 834 if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
cf4ccd63 835 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
90fb0c24
TT
836 fi
837 build_libtool_libs=no
cf4ccd63 838 build_old_libs=yes
90fb0c24
TT
839 break
840 ;;
6599da04
JM
841 esac
842 done
843
cf4ccd63
JL
844 # See if our shared archives depend on static archives.
845 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
846
847 # Go through the arguments, transforming them on the way.
fbd836fc
ILT
848 while test $# -gt 0; do
849 arg="$1"
850 shift
851
6599da04
JM
852 # If the previous option needs an argument, assign it.
853 if test -n "$prev"; then
90fb0c24
TT
854 case "$prev" in
855 output)
856 compile_command="$compile_command @OUTPUT@"
857 finalize_command="$finalize_command @OUTPUT@"
858 ;;
859 esac
860
861 case "$prev" in
862 dlfiles|dlprefiles)
863 if test "$preload" = no; then
864 # Add the symbol object into the linking commands.
865 compile_command="$compile_command @SYMFILE@"
866 finalize_command="$finalize_command @SYMFILE@"
867 preload=yes
868 fi
869 case "$arg" in
870 *.la | *.lo) ;; # We handle these cases below.
871 self)
872 if test "$prev" = dlprefiles; then
873 dlself=yes
874 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
875 dlself=yes
876 fi
877 prev=
878 continue
879 ;;
880 *)
881 dlprefiles="$dlprefiles $arg"
882 test "$prev" = dlfiles && dlfiles="$dlfiles $arg"
883 prev=
884 ;;
885 esac
886 ;;
887 expsyms)
888 export_symbols="$arg"
889 if test ! -f "$arg"; then
890 $echo "$modename: symbol file \`$arg' does not exist"
891 exit 1
892 fi
893 prev=
894 continue
895 ;;
896 expsyms_regex)
897 export_symbols_regex="$arg"
898 prev=
899 continue
900 ;;
cf4ccd63
JL
901 release)
902 release="-$arg"
903 prev=
904 continue
905 ;;
90fb0c24
TT
906 rpath)
907 rpath="$rpath $arg"
cf4ccd63
JL
908 prev=
909 continue
910 ;;
90fb0c24
TT
911 xrpath)
912 xrpath="$xrpath $arg"
913 prev=
914 continue
915 ;;
916 *)
917 eval "$prev=\"\$arg\""
918 prev=
919 continue
920 ;;
921 esac
6599da04
JM
922 fi
923
6599da04
JM
924 prevarg="$arg"
925
926 case "$arg" in
cf4ccd63
JL
927 -all-static)
928 if test -n "$link_static_flag"; then
90fb0c24 929 compile_command="$compile_command $link_static_flag"
cf4ccd63 930 finalize_command="$finalize_command $link_static_flag"
90fb0c24
TT
931 dlopen_self=$dlopen_self_static
932 fi
933 continue
cf4ccd63 934 ;;
6599da04 935
cf4ccd63
JL
936 -allow-undefined)
937 # FIXME: remove this flag sometime in the future.
938 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
6599da04
JM
939 continue
940 ;;
941
90fb0c24
TT
942 -avoid-version)
943 avoid_version=yes
944 continue
945 ;;
946
cf4ccd63 947 -dlopen)
90fb0c24
TT
948 prev=dlfiles
949 continue
950 ;;
6599da04 951
cf4ccd63 952 -dlpreopen)
90fb0c24
TT
953 prev=dlprefiles
954 continue
955 ;;
6599da04 956
cf4ccd63 957 -export-dynamic)
90fb0c24
TT
958 if test "$export_dynamic" != yes; then
959 export_dynamic=yes
cf4ccd63
JL
960 if test -n "$export_dynamic_flag_spec"; then
961 eval arg=\"$export_dynamic_flag_spec\"
962 else
963 arg=
964 fi
90fb0c24
TT
965 fi
966 ;;
6599da04 967
90fb0c24
TT
968 -export-symbols | -export-symbols-regex)
969 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
970 $echo "$modename: cannot have more than one -exported-symbols"
971 exit 1
972 fi
973 if test "$arg" = "-export-symbols"; then
974 prev=expsyms
975 else
976 prev=expsyms_regex
977 fi
978 continue
979 ;;
6599da04 980
cf4ccd63 981 -L*)
90fb0c24
TT
982 dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'`
983 case "$dir" in
984 /* | [A-Za-z]:[/\\]*)
cf4ccd63 985 # Add the corresponding hardcode_libdir_flag, if it is not identical.
90fb0c24
TT
986 ;;
987 *)
988 $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2
989 exit 1
990 ;;
991 esac
992 case " $deplibs " in
993 *" $arg "*) ;;
994 *) deplibs="$deplibs $arg";;
995 esac
996 case " $lib_search_path " in
997 *" $dir "*) ;;
998 *) lib_search_path="$lib_search_path $dir";;
999 esac
1000 case "$host" in
1001 *-*-cygwin* | *-*-mingw* | *-*-os2*)
1002 dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
1003 case ":$dllsearchpath:" in
1004 ::) dllsearchpath="$dllsearchdir";;
1005 *":$dllsearchdir:"*) ;;
1006 *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
1007 esac
1008 ;;
1009 esac
1010 ;;
6599da04 1011
90fb0c24
TT
1012 -l*)
1013 deplibs="$deplibs $arg"
1014 ;;
6599da04 1015
90fb0c24
TT
1016 -module)
1017 if test "$module" != yes; then
1018 module=yes
1019 if test -n "$export_dynamic_flag_spec"; then
1020 eval arg=\"$export_dynamic_flag_spec\"
1021 else
1022 arg=
1023 fi
1024 fi
1025 ;;
1026
cf4ccd63
JL
1027 -no-undefined)
1028 allow_undefined=no
6599da04
JM
1029 continue
1030 ;;
1031
cf4ccd63 1032 -o) prev=output ;;
6599da04 1033
cf4ccd63
JL
1034 -release)
1035 prev=release
1036 continue
6599da04
JM
1037 ;;
1038
cf4ccd63 1039 -rpath)
90fb0c24
TT
1040 prev=rpath
1041 continue
1042 ;;
1043
1044 -R)
1045 prev=xrpath
1046 continue
1047 ;;
1048
1049 -R*)
1050 xrpath="$xrpath "`$echo "X$arg" | $Xsed -e 's/^-R//'`
1051 continue
1052 ;;
6599da04 1053
cf4ccd63
JL
1054 -static)
1055 # If we have no pic_flag, then this is the same as -all-static.
1056 if test -z "$pic_flag" && test -n "$link_static_flag"; then
90fb0c24 1057 compile_command="$compile_command $link_static_flag"
cf4ccd63 1058 finalize_command="$finalize_command $link_static_flag"
90fb0c24
TT
1059 dlopen_self=$dlopen_self_static
1060 fi
1061 continue
1062 ;;
1063
1064 -thread-safe)
1065 thread_safe=yes
cf4ccd63 1066 continue
6599da04
JM
1067 ;;
1068
cf4ccd63 1069 -version-info)
90fb0c24
TT
1070 prev=vinfo
1071 continue
1072 ;;
6599da04 1073
cf4ccd63
JL
1074 # Some other compiler flag.
1075 -* | +*)
1076 # Unknown arguments in both finalize_command and compile_command need
1077 # to be aesthetically quoted because they are evaled later.
1078 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1079 case "$arg" in
1080 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1081 arg="\"$arg\""
1082 ;;
1083 esac
90fb0c24 1084 ;;
6599da04 1085
fbd836fc 1086 *.o | *.obj | *.a | *.lib)
90fb0c24
TT
1087 # A standard object.
1088 objs="$objs $arg"
1089 ;;
6599da04 1090
cf4ccd63 1091 *.lo)
90fb0c24 1092 # A library object.
cf4ccd63
JL
1093 if test "$prev" = dlfiles; then
1094 dlfiles="$dlfiles $arg"
90fb0c24 1095 if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
cf4ccd63
JL
1096 prev=
1097 continue
1098 else
1099 # If libtool objects are unsupported, then we need to preload.
1100 prev=dlprefiles
1101 fi
6599da04
JM
1102 fi
1103
cf4ccd63
JL
1104 if test "$prev" = dlprefiles; then
1105 # Preload the old-style object.
fbd836fc 1106 dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
cf4ccd63 1107 prev=
6599da04 1108 fi
cf4ccd63 1109 libobjs="$libobjs $arg"
90fb0c24 1110 ;;
6599da04 1111
cf4ccd63 1112 *.la)
90fb0c24
TT
1113 # A libtool-controlled library.
1114
1115 dlname=
1116 libdir=
1117 library_names=
1118 old_library=
1119
1120 # Check to see that this really is a libtool archive.
1121 if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
1122 else
1123 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
1124 exit 1
1125 fi
1126
1127 # If the library was installed with an old release of libtool,
1128 # it will not redefine variable installed.
1129 installed=yes
1130
1131 # If there is no directory component, then add one.
1132 case "$arg" in
1133 */* | *\\*) . $arg ;;
1134 *) . ./$arg ;;
1135 esac
1136
1137 # Get the name of the library we link against.
1138 linklib=
1139 for l in $old_library $library_names; do
1140 linklib="$l"
1141 done
1142
1143 if test -z "$linklib"; then
1144 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
1145 exit 1
1146 fi
1147
1148 # Find the relevant object directory and library name.
1149 name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
1150
1151 if test "X$installed" = Xyes; then
1152 dir="$libdir"
1153 else
1154 dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1155 if test "X$dir" = "X$arg"; then
1156 dir="$objdir"
1157 else
1158 dir="$dir/$objdir"
1159 fi
1160 fi
1161
1162 if test -n "$dependency_libs"; then
1163 # Extract -R from dependency_libs
1164 temp_deplibs=
1165 for deplib in $dependency_libs; do
1166 case "$deplib" in
1167 -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
1168 case " $rpath $xrpath " in
1169 *" $temp_xrpath "*) ;;
1170 *) xrpath="$xrpath $temp_xrpath";;
1171 esac;;
1172 -L*) case "$compile_command $temp_deplibs " in
1173 *" $deplib "*) ;;
1174 *) temp_deplibs="$temp_deplibs $deplib";;
1175 esac;;
1176 *) temp_deplibs="$temp_deplibs $deplib";;
1177 esac
1178 done
1179 dependency_libs="$temp_deplibs"
1180 fi
1181
1182 if test -z "$libdir"; then
fbd836fc 1183 # It is a libtool convenience library, so add in its objects.
90fb0c24 1184 convenience="$convenience $dir/$old_library"
fbd836fc 1185 old_convenience="$old_convenience $dir/$old_library"
90fb0c24
TT
1186 deplibs="$deplibs$dependency_libs"
1187 compile_command="$compile_command $dir/$old_library$dependency_libs"
1188 finalize_command="$finalize_command $dir/$old_library$dependency_libs"
fbd836fc
ILT
1189 continue
1190 fi
1191
90fb0c24
TT
1192 # This library was specified with -dlopen.
1193 if test "$prev" = dlfiles; then
1194 dlfiles="$dlfiles $arg"
1195 if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
1196 # If there is no dlname, no dlopen support or we're linking statically,
1197 # we need to preload.
1198 prev=dlprefiles
1199 else
1200 # We should not create a dependency on this library, but we
cf4ccd63
JL
1201 # may need any libraries it requires.
1202 compile_command="$compile_command$dependency_libs"
1203 finalize_command="$finalize_command$dependency_libs"
90fb0c24
TT
1204 prev=
1205 continue
1206 fi
1207 fi
1208
1209 # The library was specified with -dlpreopen.
1210 if test "$prev" = dlprefiles; then
1211 # Prefer using a static library (so that no silly _DYNAMIC symbols
1212 # are required to link).
1213 if test -n "$old_library"; then
1214 dlprefiles="$dlprefiles $dir/$old_library"
1215 else
1216 dlprefiles="$dlprefiles $dir/$linklib"
1217 fi
1218 prev=
1219 fi
1220
1221 if test "$build_libtool_libs" = yes && test -n "$library_names"; then
1222 link_against_libtool_libs="$link_against_libtool_libs $arg"
1223 if test -n "$shlibpath_var"; then
1224 # Make sure the rpath contains only unique directories.
1225 case "$temp_rpath " in
1226 *" $dir "*) ;;
1227 *) temp_rpath="$temp_rpath $dir" ;;
1228 esac
1229 fi
cf4ccd63 1230
90fb0c24
TT
1231 # We need an absolute path.
1232 case "$dir" in
1233 /* | [A-Za-z]:[/\\]*) absdir="$dir" ;;
1234 *)
1235 absdir=`cd "$dir" && pwd`
1236 if test -z "$absdir"; then
1237 $echo "$modename: cannot determine absolute directory name of \`$libdir'" 1>&2
1238 exit 1
1239 fi
1240 ;;
1241 esac
1242
cf4ccd63 1243 # This is the magic to use -rpath.
90fb0c24
TT
1244 # Skip directories that are in the system default run-time
1245 # search path, unless they have been requested with -R.
1246 case " $sys_lib_dlsearch_path " in
1247 *" $absdir "*) ;;
1248 *)
1249 case "$compile_rpath " in
1250 *" $absdir "*) ;;
1251 *) compile_rpath="$compile_rpath $absdir"
1252 esac
1253 ;;
1254 esac
cf4ccd63 1255
90fb0c24
TT
1256 case " $sys_lib_dlsearch_path " in
1257 *" $libdir "*) ;;
1258 *)
1259 case "$finalize_rpath " in
1260 *" $libdir "*) ;;
1261 *) finalize_rpath="$finalize_rpath $libdir"
1262 esac
1263 ;;
1264 esac
cf4ccd63 1265
fbd836fc 1266 lib_linked=yes
90fb0c24
TT
1267 case "$hardcode_action" in
1268 immediate | unsupported)
1269 if test "$hardcode_direct" = no; then
1270 compile_command="$compile_command $dir/$linklib"
1271 deplibs="$deplibs $dir/$linklib"
1272 case "$host" in
1273 *-*-cygwin* | *-*-mingw* | *-*-os2*)
1274 dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
1275 if test -n "$dllsearchpath"; then
1276 dllsearchpath="$dllsearchpath:$dllsearchdir"
1277 else
1278 dllsearchpath="$dllsearchdir"
1279 fi
1280 ;;
1281 esac
1282 elif test "$hardcode_minus_L" = no; then
fbd836fc
ILT
1283 case "$host" in
1284 *-*-sunos*)
90fb0c24 1285 compile_shlibpath="$compile_shlibpath$dir:"
fbd836fc
ILT
1286 ;;
1287 esac
90fb0c24
TT
1288 case "$compile_command " in
1289 *" -L$dir "*) ;;
1290 *) compile_command="$compile_command -L$dir";;
1291 esac
1292 compile_command="$compile_command -l$name"
1293 deplibs="$deplibs -L$dir -l$name"
1294 elif test "$hardcode_shlibpath_var" = no; then
1295 case ":$compile_shlibpath:" in
1296 *":$dir:"*) ;;
1297 *) compile_shlibpath="$compile_shlibpath$dir:";;
1298 esac
1299 compile_command="$compile_command -l$name"
1300 deplibs="$deplibs -l$name"
fbd836fc
ILT
1301 else
1302 lib_linked=no
90fb0c24
TT
1303 fi
1304 ;;
1305
1306 relink)
1307 if test "$hardcode_direct" = yes; then
1308 compile_command="$compile_command $absdir/$linklib"
1309 deplibs="$deplibs $absdir/$linklib"
1310 elif test "$hardcode_minus_L" = yes; then
1311 case "$compile_command " in
1312 *" -L$absdir "*) ;;
1313 *) compile_command="$compile_command -L$absdir";;
1314 esac
1315 compile_command="$compile_command -l$name"
1316 deplibs="$deplibs -L$absdir -l$name"
1317 elif test "$hardcode_shlibpath_var" = yes; then
1318 case ":$compile_shlibpath:" in
1319 *":$absdir:"*) ;;
1320 *) compile_shlibpath="$compile_shlibpath$absdir:";;
1321 esac
1322 compile_command="$compile_command -l$name"
1323 deplibs="$deplibs -l$name"
fbd836fc
ILT
1324 else
1325 lib_linked=no
90fb0c24
TT
1326 fi
1327 ;;
fbd836fc
ILT
1328
1329 *)
1330 lib_linked=no
1331 ;;
90fb0c24 1332 esac
cf4ccd63 1333
fbd836fc
ILT
1334 if test "$lib_linked" != yes; then
1335 $echo "$modename: configuration error: unsupported hardcode properties"
1336 exit 1
1337 fi
1338
90fb0c24
TT
1339 # Finalize command for both is simple: just hardcode it.
1340 if test "$hardcode_direct" = yes; then
1341 finalize_command="$finalize_command $libdir/$linklib"
1342 elif test "$hardcode_minus_L" = yes; then
1343 case "$finalize_command " in
1344 *" -L$libdir "*) ;;
1345 *) finalize_command="$finalize_command -L$libdir";;
1346 esac
1347 finalize_command="$finalize_command -l$name"
1348 elif test "$hardcode_shlibpath_var" = yes; then
1349 case ":$finalize_shlibpath:" in
1350 *":$libdir:"*) ;;
1351 *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
1352 esac
1353 finalize_command="$finalize_command -l$name"
1354 else
1355 # We cannot seem to hardcode it, guess we'll fake it.
1356 case "$finalize_command " in
1357 *" -L$dir "*) ;;
1358 *) finalize_command="$finalize_command -L$libdir";;
1359 esac
1360 finalize_command="$finalize_command -l$name"
1361 fi
1362 else
1363 # Transform directly to old archives if we don't build new libraries.
1364 if test -n "$pic_flag" && test -z "$old_library"; then
1365 $echo "$modename: cannot find static library for \`$arg'" 1>&2
1366 exit 1
1367 fi
cf4ccd63
JL
1368
1369 # Here we assume that one of hardcode_direct or hardcode_minus_L
1370 # is not unsupported. This is valid on all known static and
1371 # shared platforms.
1372 if test "$hardcode_direct" != unsupported; then
1373 test -n "$old_library" && linklib="$old_library"
1374 compile_command="$compile_command $dir/$linklib"
1375 finalize_command="$finalize_command $dir/$linklib"
1376 else
90fb0c24
TT
1377 case "$compile_command " in
1378 *" -L$dir "*) ;;
1379 *) compile_command="$compile_command -L$dir";;
1380 esac
1381 compile_command="$compile_command -l$name"
1382 case "$finalize_command " in
1383 *" -L$dir "*) ;;
1384 *) finalize_command="$finalize_command -L$dir";;
1385 esac
1386 finalize_command="$finalize_command -l$name"
6599da04 1387 fi
90fb0c24 1388 fi
cf4ccd63
JL
1389
1390 # Add in any libraries that this one depends upon.
1391 compile_command="$compile_command$dependency_libs"
1392 finalize_command="$finalize_command$dependency_libs"
6599da04 1393 continue
90fb0c24 1394 ;;
6599da04 1395
cf4ccd63 1396 # Some other compiler argument.
6599da04 1397 *)
cf4ccd63
JL
1398 # Unknown arguments in both finalize_command and compile_command need
1399 # to be aesthetically quoted because they are evaled later.
1400 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1401 case "$arg" in
1402 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1403 arg="\"$arg\""
1404 ;;
1405 esac
90fb0c24 1406 ;;
6599da04
JM
1407 esac
1408
cf4ccd63
JL
1409 # Now actually substitute the argument into the commands.
1410 if test -n "$arg"; then
1411 compile_command="$compile_command $arg"
1412 finalize_command="$finalize_command $arg"
1413 fi
6599da04
JM
1414 done
1415
1416 if test -n "$prev"; then
cf4ccd63
JL
1417 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1418 $echo "$help" 1>&2
6599da04
JM
1419 exit 1
1420 fi
1421
fbd836fc 1422 oldlibs=
90fb0c24
TT
1423 # calculate the name of the file, without its directory
1424 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
1425 libobjs_save="$libobjs"
1426
6599da04
JM
1427 case "$output" in
1428 "")
cf4ccd63
JL
1429 $echo "$modename: you must specify an output file" 1>&2
1430 $echo "$help" 1>&2
6599da04
JM
1431 exit 1
1432 ;;
1433
fbd836fc
ILT
1434 *.a | *.lib)
1435 if test -n "$link_against_libtool_libs"; then
90fb0c24
TT
1436 $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
1437 exit 1
fbd836fc
ILT
1438 fi
1439
1440 if test -n "$deplibs"; then
90fb0c24 1441 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
fbd836fc
ILT
1442 fi
1443
1444 if test -n "$dlfiles$dlprefiles"; then
90fb0c24 1445 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
fbd836fc
ILT
1446 fi
1447
1448 if test -n "$rpath"; then
90fb0c24
TT
1449 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
1450 fi
1451
1452 if test -n "$xrpath"; then
1453 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
fbd836fc
ILT
1454 fi
1455
1456 if test -n "$vinfo"; then
90fb0c24 1457 $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
fbd836fc
ILT
1458 fi
1459
1460 if test -n "$release"; then
90fb0c24
TT
1461 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
1462 fi
1463
1464 if test -n "$export_symbols"; then
1465 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
fbd836fc
ILT
1466 fi
1467
cf4ccd63
JL
1468 # Now set the variables for building old libraries.
1469 build_libtool_libs=no
fbd836fc 1470 oldlibs="$output"
cf4ccd63
JL
1471 ;;
1472
6599da04 1473 *.la)
cf4ccd63 1474 # Make sure we only generate libraries of the form `libNAME.la'.
90fb0c24
TT
1475 case "$outputname" in
1476 lib*)
1477 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
1478 eval libname=\"$libname_spec\"
1479 ;;
cf4ccd63 1480 *)
90fb0c24
TT
1481 if test "$module" = no; then
1482 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
1483 $echo "$help" 1>&2
1484 exit 1
1485 fi
1486 if test "$need_lib_prefix" != no; then
1487 # Add the "lib" prefix for modules if required
1488 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
1489 eval libname=\"$libname_spec\"
1490 else
1491 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
1492 fi
cf4ccd63
JL
1493 ;;
1494 esac
1495
90fb0c24
TT
1496 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
1497 if test "X$output_objdir" = "X$output"; then
1498 output_objdir="$objdir"
1499 else
1500 output_objdir="$output_objdir/$objdir"
1501 fi
6599da04
JM
1502
1503 # All the library-specific variables (install_libdir is set above).
1504 library_names=
1505 old_library=
1506 dlname=
6599da04
JM
1507
1508 if test -n "$objs"; then
90fb0c24
TT
1509 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
1510 exit 1
6599da04
JM
1511 fi
1512
1513 # How the heck are we supposed to write a wrapper for a shared library?
1514 if test -n "$link_against_libtool_libs"; then
90fb0c24
TT
1515 $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
1516 exit 1
6599da04
JM
1517 fi
1518
cf4ccd63 1519 if test -n "$dlfiles$dlprefiles"; then
90fb0c24 1520 $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
cf4ccd63 1521 fi
6599da04 1522
cf4ccd63
JL
1523 set dummy $rpath
1524 if test $# -gt 2; then
1525 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
6599da04 1526 fi
cf4ccd63 1527 install_libdir="$2"
6599da04 1528
90fb0c24 1529 oldlibs=
fbd836fc 1530 if test -z "$rpath"; then
90fb0c24
TT
1531 if test "$build_libtool_libs" = yes; then
1532 # Building a libtool convenience library.
1533 libext=al
1534 oldlibs="$output_objdir/$libname.$libext $oldlibs"
1535 build_libtool_libs=convenience
1536 build_old_libs=yes
1537 fi
1538 dependency_libs="$deplibs"
fbd836fc
ILT
1539
1540 if test -n "$vinfo"; then
1541 $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
1542 fi
1543
1544 if test -n "$release"; then
1545 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
1546 fi
1547 else
6599da04 1548
cf4ccd63
JL
1549 # Parse the version information argument.
1550 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
fbd836fc 1551 set dummy $vinfo 0 0 0
cf4ccd63 1552 IFS="$save_ifs"
6599da04 1553
fbd836fc 1554 if test -n "$8"; then
cf4ccd63
JL
1555 $echo "$modename: too many parameters to \`-version-info'" 1>&2
1556 $echo "$help" 1>&2
1557 exit 1
1558 fi
6599da04 1559
fbd836fc
ILT
1560 current="$2"
1561 revision="$3"
1562 age="$4"
6599da04 1563
cf4ccd63
JL
1564 # Check that each of the things are valid numbers.
1565 case "$current" in
1566 0 | [1-9] | [1-9][0-9]*) ;;
1567 *)
1568 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
1569 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1570 exit 1
1571 ;;
1572 esac
6599da04 1573
cf4ccd63
JL
1574 case "$revision" in
1575 0 | [1-9] | [1-9][0-9]*) ;;
1576 *)
1577 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
1578 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1579 exit 1
1580 ;;
1581 esac
6599da04 1582
cf4ccd63
JL
1583 case "$age" in
1584 0 | [1-9] | [1-9][0-9]*) ;;
1585 *)
1586 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
1587 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1588 exit 1
1589 ;;
1590 esac
6599da04 1591
cf4ccd63
JL
1592 if test $age -gt $current; then
1593 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
1594 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1595 exit 1
1596 fi
6599da04 1597
cf4ccd63 1598 # Calculate the version variables.
fbd836fc
ILT
1599 major=
1600 versuffix=
1601 verstring=
cf4ccd63
JL
1602 case "$version_type" in
1603 none) ;;
6599da04 1604
90fb0c24
TT
1605 irix)
1606 major=`expr $current - $age + 1`
1607 versuffix="$major.$revision"
1608 verstring="sgi$major.$revision"
1609
1610 # Add in all the interfaces that we are compatible with.
1611 loop=$revision
1612 while test $loop != 0; do
1613 iface=`expr $revision - $loop`
1614 loop=`expr $loop - 1`
1615 verstring="sgi$major.$iface:$verstring"
1616 done
1617 ;;
1618
cf4ccd63 1619 linux)
cf4ccd63 1620 major=.`expr $current - $age`
fbd836fc 1621 versuffix="$major.$age.$revision"
cf4ccd63 1622 ;;
6599da04 1623
cf4ccd63 1624 osf)
fbd836fc
ILT
1625 major=`expr $current - $age`
1626 versuffix=".$current.$age.$revision"
cf4ccd63
JL
1627 verstring="$current.$age.$revision"
1628
1629 # Add in all the interfaces that we are compatible with.
1630 loop=$age
1631 while test $loop != 0; do
1632 iface=`expr $current - $loop`
1633 loop=`expr $loop - 1`
1634 verstring="$verstring:${iface}.0"
1635 done
1636
1637 # Make executables depend on our current version.
1638 verstring="$verstring:${current}.0"
1639 ;;
1640
1641 sunos)
fbd836fc
ILT
1642 major=".$current"
1643 versuffix=".$current.$revision"
cf4ccd63
JL
1644 ;;
1645
90fb0c24
TT
1646 freebsd-aout)
1647 major=".$current"
1648 versuffix=".$current.$revision";
1649 ;;
1650
1651 freebsd-elf)
1652 major=".$current"
1653 versuffix=".$current";
1654 ;;
1655
cf4ccd63
JL
1656 windows)
1657 # Like Linux, but with '-' rather than '.', since we only
1658 # want one extension on Windows 95.
cf4ccd63
JL
1659 major=`expr $current - $age`
1660 versuffix="-$major-$age-$revision"
1661 ;;
1662
1663 *)
1664 $echo "$modename: unknown library version type \`$version_type'" 1>&2
1665 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
1666 exit 1
1667 ;;
1668 esac
cf4ccd63 1669
fbd836fc
ILT
1670 # Clear the version info if we defaulted, and they specified a release.
1671 if test -z "$vinfo" && test -n "$release"; then
cf4ccd63 1672 major=
fbd836fc 1673 verstring="0.0"
90fb0c24
TT
1674 if test "$need_version" = no; then
1675 versuffix=
1676 else
fbd836fc 1677 versuffix=".0.0"
90fb0c24 1678 fi
fbd836fc 1679 fi
cf4ccd63 1680
90fb0c24
TT
1681 # Remove version info from name if versioning should be avoided
1682 if test "$avoid_version" = yes && test "$need_version" = no; then
1683 major=
1684 versuffix=
1685 verstring=""
1686 fi
1687
fbd836fc
ILT
1688 # Check to see if the archive will have undefined symbols.
1689 if test "$allow_undefined" = yes; then
1690 if test "$allow_undefined_flag" = unsupported; then
1691 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
1692 build_libtool_libs=no
1693 build_old_libs=yes
1694 fi
1695 else
1696 # Don't allow undefined symbols.
1697 allow_undefined_flag="$no_undefined_flag"
1698 fi
cf4ccd63 1699
fbd836fc 1700 dependency_libs="$deplibs"
90fb0c24
TT
1701 case "$host" in
1702 *-*-cygwin* | *-*-mingw* | *-*-os2*)
1703 # these systems don't actually have a c library (as such)!
1704 ;;
1705 *)
1706 # Add libc to deplibs on all other systems.
1707 deplibs="$deplibs -lc"
1708 ;;
1709 esac
cf4ccd63 1710 fi
6599da04
JM
1711
1712 # Create the output directory, or remove our outputs if we need to.
90fb0c24
TT
1713 if test -d $output_objdir; then
1714 $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
1715 $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
6599da04 1716 else
90fb0c24
TT
1717 $show "$mkdir $output_objdir"
1718 $run $mkdir $output_objdir
1719 status=$?
1720 if test $status -ne 0 && test ! -d $output_objdir; then
1721 exit $status
1722 fi
1723 fi
1724
1725 # Now set the variables for building old libraries.
1726 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
1727 oldlibs="$oldlibs $output_objdir/$libname.$libext"
1728
1729 # Transform .lo files to .o files.
1730 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
6599da04
JM
1731 fi
1732
1733 if test "$build_libtool_libs" = yes; then
90fb0c24
TT
1734 # Transform deplibs into only deplibs that can be linked in shared.
1735 name_save=$name
1736 libname_save=$libname
1737 release_save=$release
1738 versuffix_save=$versuffix
1739 major_save=$major
1740 # I'm not sure if I'm treating the release correctly. I think
1741 # release should show up in the -l (ie -lgmp5) so we don't want to
1742 # add it in twice. Is that correct?
1743 release=""
1744 versuffix=""
1745 major=""
1746 newdeplibs=
1747 droppeddeps=no
1748 case "$deplibs_check_method" in
1749 pass_all)
1750 newdeplibs=$deplibs
1751 ;; # Don't check for shared/static. Everything works.
1752 # This might be a little naive. We might want to check
1753 # whether the library exists or not. But this is on
1754 # osf3 & osf4 and I'm not really sure... Just
1755 # implementing what was already the behaviour.
1756 test_compile)
1757 # This code stresses the "libraries are programs" paradigm to its
1758 # limits. Maybe even breaks it. We compile a program, linking it
1759 # against the deplibs as a proxy for the library. Then we can check
1760 # whether they linked in statically or dynamically with ldd.
1761 $rm conftest.c
1762 cat > conftest.c <<EOF
1763 int main() { return 0; }
1764EOF
1765 $rm conftest
1766 $C_compiler -o conftest conftest.c $deplibs
1767 if test $? -eq 0 ; then
1768 ldd_output=`ldd conftest`
1769 for i in $deplibs; do
1770 name="`expr $i : '-l\(.*\)'`"
1771 # If $name is empty we are operating on a -L argument.
1772 if test "$name" != "" ; then
1773 libname=`eval \\$echo \"$libname_spec\"`
1774 deplib_matches=`eval \\$echo \"$library_names_spec\"`
1775 set dummy $deplib_matches
1776 deplib_match=$2
1777 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
1778 newdeplibs="$newdeplibs $i"
1779 else
1780 droppeddeps=yes
1781 echo
1782 echo "*** Warning: This library needs some functionality provided by $i."
1783 echo "*** I have the capability to make that library automatically link in when"
1784 echo "*** you link to this library. But I can only do this if you have a"
1785 echo "*** shared version of the library, which you do not appear to have."
1786 fi
1787 else
1788 newdeplibs="$newdeplibs $i"
1789 fi
1790 done
1791 else
1792 # Error occured in the first compile. Let's try to salvage the situation:
1793 # Compile a seperate program for each library.
1794 for i in $deplibs; do
1795 name="`expr $i : '-l\(.*\)'`"
1796 # If $name is empty we are operating on a -L argument.
1797 if test "$name" != "" ; then
1798 $rm conftest
1799 $C_compiler -o conftest conftest.c $i
1800 # Did it work?
1801 if test $? -eq 0 ; then
1802 ldd_output=`ldd conftest`
1803 libname=`eval \\$echo \"$libname_spec\"`
1804 deplib_matches=`eval \\$echo \"$library_names_spec\"`
1805 set dummy $deplib_matches
1806 deplib_match=$2
1807 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
1808 newdeplibs="$newdeplibs $i"
1809 else
1810 droppeddeps=yes
1811 echo
1812 echo "*** Warning: This library needs some functionality provided by $i."
1813 echo "*** I have the capability to make that library automatically link in when"
1814 echo "*** you link to this library. But I can only do this if you have a"
1815 echo "*** shared version of the library, which you do not appear to have."
1816 fi
1817 else
1818 droppeddeps=yes
1819 echo
1820 echo "*** Warning! Library $i is needed by this library but I was not able to"
1821 echo "*** make it link in! You will probably need to install it or some"
1822 echo "*** library that it depends on before this library will be fully"
1823 echo "*** functional. Installing it before continuing would be even better."
1824 fi
1825 else
1826 newdeplibs="$newdeplibs $i"
1827 fi
1828 done
1829 fi
1830 deplibs=$newdeplibs
1831 ;;
1832 file_magic*)
1833 set dummy $deplibs_check_method
1834 file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
1835 for a_deplib in $deplibs; do
1836 name="`expr $a_deplib : '-l\(.*\)'`"
1837 # If $name is empty we are operating on a -L argument.
1838 if test "$name" != "" ; then
1839 libname=`eval \\$echo \"$libname_spec\"`
1840 for i in $lib_search_path; do
1841 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
1842 for potent_lib in $potential_libs; do
1843 # Follow soft links.
1844 if ls -lLd "$potlib" 2>/dev/null \
1845 | grep " -> " >/dev/null; then
1846 continue
1847 fi
1848 # The statement above tries to avoid entering an
1849 # endless loop below, in case of cyclic links.
1850 # We might still enter an endless loop, since a link
1851 # loop can be closed while we follow links,
1852 # but so what?
1853 potlib="$potent_lib"
1854 while test -h "$potlib" 2>/dev/null; do
1855 potliblink=`ls -ld $potlib | sed 's/.* -> //'`
1856 case "$potliblink" in
1857 /*) potlib="$potliblink";;
1858 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
1859 esac
1860 done
1861 if eval $file_magic_cmd \"\$potlib\" \
1862 | sed 10q \
1863 | egrep "$file_magic_regex" > /dev/null; then
1864 newdeplibs="$newdeplibs $a_deplib"
1865 a_deplib=""
1866 break 2
1867 fi
1868 done
1869 done
1870 if test -n "$a_deplib" ; then
1871 droppeddeps=yes
1872 echo
1873 echo "*** Warning: This library needs some functionality provided by $a_deplib."
1874 echo "*** I have the capability to make that library automatically link in when"
1875 echo "*** you link to this library. But I can only do this if you have a"
1876 echo "*** shared version of the library, which you do not appear to have."
1877 fi
1878 else
1879 # Add a -L argument.
1880 newdeplibs="$newdeplibs $a_deplib"
1881 fi
1882 done # Gone through all deplibs.
1883 ;;
1884 none | unknown | *) newdeplibs=""
1885 if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
1886 -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
1887 grep . >/dev/null; then
1888 echo
1889 if test "X$deplibs_check_method" = "Xnone"; then
1890 echo "*** Warning: inter-library dependencies are not supported in this platform."
1891 else
1892 echo "*** Warning: inter-library dependencies are not known to be supported."
1893 fi
1894 echo "*** All declared inter-library dependencies are being dropped."
1895 droppeddeps=yes
1896 fi
1897 ;;
1898 esac
1899 versuffix=$versuffix_save
1900 major=$major_save
1901 release=$release_save
1902 libname=$libname_save
1903 name=$name_save
1904
1905 if test "$droppeddeps" = yes; then
1906 if test "$module" = yes; then
1907 echo
1908 echo "*** Warning: libtool could not satisfy all declared inter-library"
1909 echo "*** dependencies of module $libname. Therefore, libtool will create"
1910 echo "*** a static module, that should work as long as the dlopening"
1911 echo "*** application is linked with the -dlopen flag."
1912 if test -z "$global_symbol_pipe"; then
1913 echo
1914 echo "*** However, this would only work if libtool was able to extract symbol"
1915 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
1916 echo "*** not find such a program. So, this module is probably useless."
1917 echo "*** \`nm' from GNU binutils and a full rebuild may help."
1918 fi
1919 if test "$build_old_libs" = no; then
1920 oldlibs="$output_objdir/$libname.$libext"
1921 build_libtool_libs=module
1922 build_old_libs=yes
1923 else
1924 build_libtool_libs=no
1925 fi
1926 dlname=
1927 library_names=
1928 else
1929 echo "*** The inter-library dependencies that have been dropped here will be"
1930 echo "*** automatically added whenever a program is linked with this library"
1931 echo "*** or is declared to -dlopen it."
1932 fi
1933 fi
1934 fi
1935
1936 # test again, we may have decided not to build it any more
1937 if test "$build_libtool_libs" = yes; then
1938 deplibs=$newdeplibs
1939 # Done checking deplibs!
1940
fbd836fc
ILT
1941 # Get the real and link names of the library.
1942 eval library_names=\"$library_names_spec\"
1943 set dummy $library_names
1944 realname="$2"
1945 shift; shift
1946
1947 if test -n "$soname_spec"; then
1948 eval soname=\"$soname_spec\"
1949 else
1950 soname="$realname"
1951 fi
6599da04 1952
90fb0c24 1953 lib="$output_objdir/$realname"
6599da04
JM
1954 for link
1955 do
1956 linknames="$linknames $link"
1957 done
1958
90fb0c24
TT
1959 # Ensure that we have .o objects for linkers which dislike .lo
1960 # (e.g. aix) incase we are running --disable-static
1961 for obj in $libobjs; do
1962 oldobj=`$echo "X$obj" | $Xsed -e "$lo2o"`
1963 test -f $oldobj || ${LN_S} $obj $oldobj
1964 done
6599da04 1965
90fb0c24
TT
1966 # Use standard objects if they are pic
1967 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
6599da04 1968
fbd836fc
ILT
1969 if test -n "$whole_archive_flag_spec"; then
1970 if test -n "$convenience"; then
1971 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
1972 fi
1973 else
1974 for xlib in $convenience; do
1975 # Extract the objects.
1976 xdir="$xlib"x
1977 generated="$generated $xdir"
90fb0c24 1978 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
fbd836fc
ILT
1979
1980 $show "${rm}r $xdir"
1981 $run ${rm}r "$xdir"
1982 $show "mkdir $xdir"
1983 $run mkdir "$xdir"
1984 status=$?
1985 if test $status -ne 0 && test ! -d "$xdir"; then
1986 exit $status
1987 fi
1988 $show "(cd $xdir && $AR x ../$xlib)"
1989 $run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $?
1990
90fb0c24 1991 libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
fbd836fc
ILT
1992 done
1993 fi
1994
90fb0c24
TT
1995 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
1996 eval flag=\"$thread_safe_flag_spec\"
1997
1998 linkopts="$linkopts $flag"
1999 fi
2000
2001 # Prepare the list of exported symbols
2002 if test -z "$export_symbols"; then
2003 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
2004 $show "generating symbol list for \`$libname.la'"
2005 export_symbols="$objdir/$libname.exp"
2006 $run $rm $export_symbols
2007 eval cmds=\"$export_symbols_cmds\"
2008 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2009 for cmd in $cmds; do
2010 IFS="$save_ifs"
2011 $show "$cmd"
2012 $run eval "$cmd" || exit $?
2013 done
2014 IFS="$save_ifs"
2015 if test -n "$export_symbols_regex"; then
2016 $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
2017 $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
2018 $show "$mv \"${export_symbols}T\" \"$export_symbols\""
2019 $run eval '$mv "${export_symbols}T" "$export_symbols"'
2020 fi
2021 fi
2022 fi
2023
2024 if test -n "$export_symbols" && test -n "$include_expsyms"; then
2025 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
2026 fi
2027
fbd836fc 2028 # Do each of the archive commands.
90fb0c24
TT
2029 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
2030 eval cmds=\"$archive_expsym_cmds\"
2031 else
2032 eval cmds=\"$archive_cmds\"
2033 fi
2034 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
fbd836fc
ILT
2035 for cmd in $cmds; do
2036 IFS="$save_ifs"
2037 $show "$cmd"
2038 $run eval "$cmd" || exit $?
2039 done
2040 IFS="$save_ifs"
2041
2042 # Create links to the real library.
2043 for linkname in $linknames; do
cf4ccd63 2044 if test "$realname" != "$linkname"; then
90fb0c24
TT
2045 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
2046 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
fbd836fc
ILT
2047 fi
2048 done
6599da04 2049
90fb0c24
TT
2050 # If -module or -export-dynamic was specified, set the dlname.
2051 if test "$module" = yes || test "$export_dynamic" = yes; then
fbd836fc
ILT
2052 # On all known operating systems, these are identical.
2053 dlname="$soname"
2054 fi
6599da04
JM
2055 fi
2056 ;;
2057
fbd836fc 2058 *.lo | *.o | *.obj)
6599da04 2059 if test -n "$link_against_libtool_libs"; then
90fb0c24
TT
2060 $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
2061 exit 1
6599da04
JM
2062 fi
2063
2064 if test -n "$deplibs"; then
90fb0c24 2065 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
cf4ccd63
JL
2066 fi
2067
2068 if test -n "$dlfiles$dlprefiles"; then
90fb0c24 2069 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
6599da04
JM
2070 fi
2071
cf4ccd63 2072 if test -n "$rpath"; then
90fb0c24
TT
2073 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
2074 fi
2075
2076 if test -n "$xrpath"; then
2077 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
6599da04
JM
2078 fi
2079
2080 if test -n "$vinfo"; then
90fb0c24 2081 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
cf4ccd63
JL
2082 fi
2083
2084 if test -n "$release"; then
90fb0c24 2085 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
6599da04
JM
2086 fi
2087
2088 case "$output" in
2089 *.lo)
90fb0c24
TT
2090 if test -n "$objs"; then
2091 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
2092 exit 1
2093 fi
2094 libobj="$output"
2095 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
2096 ;;
6599da04 2097 *)
90fb0c24
TT
2098 libobj=
2099 obj="$output"
2100 ;;
6599da04
JM
2101 esac
2102
2103 # Delete the old objects.
2104 $run $rm $obj $libobj
2105
2106 # Create the old-style object.
90fb0c24 2107 reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
6599da04
JM
2108
2109 output="$obj"
cf4ccd63 2110 eval cmds=\"$reload_cmds\"
90fb0c24 2111 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
6599da04 2112 for cmd in $cmds; do
90fb0c24
TT
2113 IFS="$save_ifs"
2114 $show "$cmd"
2115 $run eval "$cmd" || exit $?
6599da04
JM
2116 done
2117 IFS="$save_ifs"
2118
2119 # Exit if we aren't doing a library object file.
2120 test -z "$libobj" && exit 0
2121
2122 if test "$build_libtool_libs" != yes; then
90fb0c24
TT
2123 # Create an invalid libtool object if no PIC, so that we don't
2124 # accidentally link it into a program.
2125 $show "echo timestamp > $libobj"
2126 $run eval "echo timestamp > $libobj" || exit $?
2127 exit 0
6599da04
JM
2128 fi
2129
2130 if test -n "$pic_flag"; then
90fb0c24
TT
2131 # Only do commands if we really have different PIC objects.
2132 reload_objs="$libobjs"
2133 output="$libobj"
2134 eval cmds=\"$reload_cmds\"
2135 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2136 for cmd in $cmds; do
2137 IFS="$save_ifs"
2138 $show "$cmd"
2139 $run eval "$cmd" || exit $?
2140 done
2141 IFS="$save_ifs"
6599da04 2142 else
90fb0c24
TT
2143 # Just create a symlink.
2144 $show $rm $libobj
2145 $run $rm $libobj
2146 $show "$LN_S $obj $libobj"
2147 $run $LN_S $obj $libobj || exit $?
6599da04
JM
2148 fi
2149
2150 exit 0
2151 ;;
2152
90fb0c24 2153 # Anything else should be a program.
6599da04 2154 *)
cf4ccd63 2155 if test -n "$vinfo"; then
90fb0c24 2156 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
6599da04
JM
2157 fi
2158
cf4ccd63 2159 if test -n "$release"; then
90fb0c24 2160 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
6599da04
JM
2161 fi
2162
90fb0c24
TT
2163 if test "$preload" = yes; then
2164 if test "$dlopen" = unknown && test "$dlopen_self" = unknown &&
2165 test "$dlopen_self_static" = unknown; then
2166 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
2167 fi
2168 fi
2169
2170 if test "$dlself" = yes && test "$export_dynamic" = no; then
2171 $echo "$modename: error: \`-dlopen self' requires \`-export-dynamic'" 1>&2
2172 exit 1
2173 fi
2174
2175 if test -n "$rpath$xrpath"; then
cf4ccd63 2176 # If the user specified any rpath flags, then add them.
90fb0c24
TT
2177 for libdir in $rpath $xrpath; do
2178 # This is the magic to use -rpath.
2179 case "$compile_rpath " in
2180 *" $libdir "*) ;;
2181 *) compile_rpath="$compile_rpath $libdir" ;;
2182 esac
2183 case "$finalize_rpath " in
2184 *" $libdir "*) ;;
2185 *) finalize_rpath="$finalize_rpath $libdir" ;;
2186 esac
cf4ccd63 2187 done
6599da04
JM
2188 fi
2189
90fb0c24
TT
2190 # Now hardcode the library paths
2191 rpath=
2192 hardcode_libdirs=
2193 for libdir in $compile_rpath $finalize_rpath; do
2194 if test -n "$hardcode_libdir_flag_spec"; then
2195 if test -n "$hardcode_libdir_separator"; then
2196 if test -z "$hardcode_libdirs"; then
2197 hardcode_libdirs="$libdir"
2198 else
2199 # Just accumulate the unique libdirs.
2200 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
2201 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2202 ;;
2203 *)
2204 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2205 ;;
2206 esac
2207 fi
2208 else
2209 eval flag=\"$hardcode_libdir_flag_spec\"
2210
2211 rpath="$rpath $flag"
2212 fi
2213 elif test -n "$runpath_var"; then
2214 case "$perm_rpath " in
2215 *" $libdir "*) ;;
2216 *) perm_rpath="$perm_rpath $libdir" ;;
2217 esac
2218 fi
2219 done
2220 # Substitute the hardcoded libdirs into the rpath.
2221 if test -n "$hardcode_libdir_separator" &&
2222 test -n "$hardcode_libdirs"; then
2223 libdir="$hardcode_libdirs"
2224 eval rpath=\" $hardcode_libdir_flag_spec\"
cf4ccd63 2225 fi
90fb0c24
TT
2226 compile_rpath="$rpath"
2227
2228 rpath=
2229 hardcode_libdirs=
2230 for libdir in $finalize_rpath; do
2231 if test -n "$hardcode_libdir_flag_spec"; then
2232 if test -n "$hardcode_libdir_separator"; then
2233 if test -z "$hardcode_libdirs"; then
2234 hardcode_libdirs="$libdir"
2235 else
2236 # Just accumulate the unique libdirs.
2237 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
2238 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2239 ;;
2240 *)
2241 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2242 ;;
2243 esac
2244 fi
2245 else
2246 eval flag=\"$hardcode_libdir_flag_spec\"
6599da04 2247
90fb0c24
TT
2248 rpath="$rpath $flag"
2249 fi
2250 elif test -n "$runpath_var"; then
2251 case "$finalize_perm_rpath " in
2252 *" $libdir "*) ;;
2253 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
2254 esac
2255 fi
2256 done
2257 # Substitute the hardcoded libdirs into the rpath.
2258 if test -n "$hardcode_libdir_separator" &&
2259 test -n "$hardcode_libdirs"; then
2260 libdir="$hardcode_libdirs"
2261 eval rpath=\" $hardcode_libdir_flag_spec\"
cf4ccd63 2262 fi
90fb0c24 2263 finalize_rpath="$rpath"
cf4ccd63 2264
90fb0c24
TT
2265 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2266 if test "X$output_objdir" = "X$output"; then
2267 output_objdir="$objdir"
cf4ccd63 2268 else
90fb0c24 2269 output_objdir="$output_objdir/$objdir"
cf4ccd63
JL
2270 fi
2271
90fb0c24
TT
2272 if test -n "$libobjs" && test "$build_old_libs" = yes; then
2273 # Transform all the library objects into standard objects.
2274 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2275 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2276 fi
cf4ccd63 2277
90fb0c24
TT
2278 dlsyms=
2279 if test -n "$dlfiles$dlprefiles" || test "$dlself" = yes; then
2280 if test -n "$NM" && test -n "$global_symbol_pipe"; then
2281 dlsyms="${outputname}S.c"
cf4ccd63 2282 else
90fb0c24 2283 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
6599da04 2284 fi
90fb0c24 2285 fi
cf4ccd63 2286
90fb0c24
TT
2287 if test -n "$dlsyms"; then
2288 case "$dlsyms" in
2289 "") ;;
2290 *.c)
2291 # Discover the nlist of each of the dlfiles.
2292 nlist="$objdir/${output}.nm"
2293
2294 if test -d $objdir; then
2295 $show "$rm $nlist ${nlist}S ${nlist}T"
2296 $run $rm "$nlist" "${nlist}S" "${nlist}T"
cf4ccd63 2297 else
90fb0c24
TT
2298 $show "$mkdir $objdir"
2299 $run $mkdir $objdir
2300 status=$?
2301 if test $status -ne 0 && test ! -d $objdir; then
2302 exit $status
2303 fi
cf4ccd63
JL
2304 fi
2305
90fb0c24
TT
2306 # Parse the name list into a source file.
2307 $show "creating $objdir/$dlsyms"
2308
2309 $echo > "$objdir/$dlsyms" "\
2310/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
2311/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
cf4ccd63
JL
2312
2313#ifdef __cplusplus
2314extern \"C\" {
2315#endif
2316
2317/* Prevent the only kind of declaration conflicts we can make. */
90fb0c24 2318#define lt_preloaded_symbols some_other_symbol
cf4ccd63
JL
2319
2320/* External symbol declarations for the compiler. */\
2321"
2322
90fb0c24
TT
2323 if test "$dlself" = yes; then
2324 $show "generating symbol list for \`$output'"
2325
2326 echo ': @PROGRAM@ ' > "$nlist"
2327
2328 # Add our own program objects to the symbol list.
2329 progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2330 for arg in $progfiles; do
2331 $show "extracting global C symbols from \`$arg'"
2332 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
2333 done
2334
2335 if test -n "$exclude_expsyms"; then
2336 $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2337 $run eval '$mv "$nlist"T "$nlist"'
2338 fi
2339
2340 if test -n "$export_symbols_regex"; then
2341 $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2342 $run eval '$mv "$nlist"T "$nlist"'
2343 fi
2344
2345 # Prepare the list of exported symbols
2346 if test -z "$export_symbols"; then
2347 export_symbols="$objdir/$output.exp"
2348 $run $rm $export_symbols
2349 $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2350 else
2351 $run $rm $export_symbols
2352 $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$objdir/$output.exp"'
2353 $run eval 'grep -f "$objdir/$output.exp" < "$nlist" > "$nlist"T'
2354 $run eval 'mv "$nlist"T "$nlist"'
2355 fi
2356 fi
2357
2358 for arg in $dlprefiles; do
2359 $show "extracting global C symbols from \`$arg'"
2360 name=`echo "$arg" | sed -e 's%^.*/%%'`
2361 $run eval 'echo ": $name " >> "$nlist"'
2362 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
2363 done
2364
2365 if test -z "$run"; then
2366 # Make sure we have at least an empty file.
2367 test -f "$nlist" || : > "$nlist"
2368
2369 if test -n "$exclude_expsyms"; then
2370 egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2371 $mv "$nlist"T "$nlist"
2372 fi
2373
2374 # Try sorting and uniquifying the output.
2375 if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
2376 :
2377 else
2378 grep -v "^: " < "$nlist" > "$nlist"S
2379 fi
2380
2381 if test -f "$nlist"S; then
2382 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
cf4ccd63 2383 else
90fb0c24 2384 echo '/* NONE */' >> "$output_objdir/$dlsyms"
cf4ccd63
JL
2385 fi
2386
90fb0c24 2387 $echo >> "$output_objdir/$dlsyms" "\
cf4ccd63 2388
90fb0c24 2389#undef lt_preloaded_symbols
cf4ccd63
JL
2390
2391#if defined (__STDC__) && __STDC__
90fb0c24 2392# define lt_ptr_t void *
cf4ccd63 2393#else
90fb0c24
TT
2394# define lt_ptr_t char *
2395# define const
cf4ccd63
JL
2396#endif
2397
cf4ccd63 2398/* The mapping between symbol names and symbols. */
90fb0c24
TT
2399const struct {
2400 const char *name;
2401 lt_ptr_t address;
cf4ccd63 2402}
90fb0c24 2403lt_preloaded_symbols[] =
cf4ccd63
JL
2404{\
2405"
2406
90fb0c24
TT
2407 sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
2408 -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
2409 < "$nlist" >> "$output_objdir/$dlsyms"
cf4ccd63 2410
90fb0c24
TT
2411 $echo >> "$output_objdir/$dlsyms" "\
2412 {0, (lt_ptr_t) 0}
cf4ccd63
JL
2413};
2414
90fb0c24
TT
2415/* This works around a problem in FreeBSD linker */
2416#ifdef FREEBSD_WORKAROUND
2417static const void *lt_preloaded_setup() {
2418 return lt_preloaded_symbols;
2419}
2420#endif
2421
cf4ccd63
JL
2422#ifdef __cplusplus
2423}
2424#endif\
2425"
90fb0c24 2426 fi
cf4ccd63 2427
90fb0c24
TT
2428 pic_flag_for_symtable=
2429 case "$host" in
2430 # compiling the symbol table file with pic_flag works around
2431 # a FreeBSD bug that causes programs to crash when -lm is
2432 # linked before any other PIC object. But we must not use
2433 # pic_flag when linking with -static. The problem exists in
2434 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2435 *-*-freebsd2*|*-*-freebsd3.0*)
2436 case "$compile_command " in
2437 *" -static "*) ;;
2438 *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
2439 esac
cf4ccd63 2440 esac
cf4ccd63 2441
90fb0c24
TT
2442 # Now compile the dynamic symbol file.
2443 $show "(cd $objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
2444 $run eval '(cd $objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
cf4ccd63 2445
90fb0c24
TT
2446 # Transform the symbol file into the correct name.
2447 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"`
2448 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"`
2449 ;;
2450 *)
2451 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
2452 exit 1
2453 ;;
2454 esac
cf4ccd63 2455 else
90fb0c24
TT
2456 # We keep going just in case the user didn't refer to
2457 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
2458 # really was required.
cf4ccd63 2459
90fb0c24
TT
2460 # Nullify the symbol file.
2461 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
2462 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
cf4ccd63
JL
2463 fi
2464
2465 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
90fb0c24
TT
2466 # Replace the output file specification.
2467 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
2468 link_command="$compile_command$compile_rpath"
2469
2470 # We have no uninstalled library dependencies, so finalize right now.
2471 $show "$link_command"
2472 $run eval "$link_command"
2473 exit $?
6599da04
JM
2474 fi
2475
2476 if test -n "$shlibpath_var"; then
90fb0c24
TT
2477 # We should set the shlibpath_var
2478 rpath=
2479 for dir in $temp_rpath; do
2480 case "$dir" in
2481 /* | [A-Za-z]:[/\\]*)
2482 # Absolute path.
2483 rpath="$rpath$dir:"
2484 ;;
2485 *)
2486 # Relative path: add a thisdir entry.
2487 rpath="$rpath\$thisdir/$dir:"
2488 ;;
2489 esac
2490 done
2491 temp_rpath="$rpath"
6599da04
JM
2492 fi
2493
90fb0c24
TT
2494 if test -n "$compile_shlibpath$finalize_shlibpath"; then
2495 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
6599da04
JM
2496 fi
2497 if test -n "$finalize_shlibpath"; then
90fb0c24 2498 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
6599da04
JM
2499 fi
2500
90fb0c24
TT
2501 compile_var=
2502 finalize_var=
2503 if test -n "$runpath_var"; then
2504 if test -n "$perm_rpath"; then
2505 # We should set the runpath_var.
2506 rpath=
2507 for dir in $perm_rpath; do
2508 rpath="$rpath$dir:"
2509 done
2510 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
2511 fi
2512 if test -n "$finalize_perm_rpath"; then
2513 # We should set the runpath_var.
2514 rpath=
2515 for dir in $finalize_perm_rpath; do
2516 rpath="$rpath$dir:"
2517 done
2518 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
2519 fi
6599da04
JM
2520 fi
2521
cf4ccd63 2522 if test "$hardcode_action" = relink; then
90fb0c24
TT
2523 # Fast installation is not supported
2524 link_command="$compile_var$compile_command$compile_rpath"
2525 relink_command="$finalize_var$finalize_command$finalize_rpath"
2526
2527 # AGH! Flame the AIX and HP-UX people for me, will ya?
2528 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
2529 $echo "$modename: \`$output' will be relinked during installation" 1>&2
2530 else
2531 if test "$fast_install" != no; then
2532 link_command="$finalize_var$compile_command$finalize_rpath"
2533 if test "$fast_install" = yes; then
2534 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
2535 else
2536 # fast_install is set to needless
2537 relink_command=
2538 fi
2539 else
2540 link_command="$compile_var$compile_command$compile_rpath"
2541 relink_command="$finalize_var$finalize_command$finalize_rpath"
2542 fi
2543 fi
2544
2545 # Replace the output file specification.
2546 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
2547
2548 # Create the binary in the object directory, then wrap it.
2549 if test ! -d $output_objdir; then
2550 $show "$mkdir $output_objdir"
2551 $run $mkdir $output_objdir
2552 status=$?
2553 if test $status -ne 0 && test ! -d $objdir; then
2554 exit $status
2555 fi
cf4ccd63 2556 fi
6599da04 2557
90fb0c24
TT
2558 # Delete the old output file.
2559 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
2560
2561 $show "$link_command"
2562 $run eval "$link_command" || exit $?
6599da04
JM
2563
2564 # Now create the wrapper script.
cf4ccd63
JL
2565 $show "creating $output"
2566
90fb0c24
TT
2567 # Quote the relink command for shipping.
2568 if test -n "$relink_command"; then
2569 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
2570 fi
cf4ccd63
JL
2571
2572 # Quote $echo for shipping.
90fb0c24
TT
2573 if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
2574 case "$0" in
2575 /* | [A-Za-z]:[/\\]*) qecho="$SHELL $0 --fallback-echo";;
2576 *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
2577 esac
2578 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
2579 else
2580 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
2581 fi
6599da04
JM
2582
2583 # Only actually do things if our run command is non-null.
2584 if test -z "$run"; then
90fb0c24
TT
2585 # win32 will think the script is a binary if it has
2586 # a .exe suffix, so we strip it off here.
2587 case $output in
2588 *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
2589 esac
2590 $rm $output
2591 trap "$rm $output; exit 1" 1 2 15
6599da04 2592
90fb0c24 2593 $echo > $output "\
cf4ccd63 2594#! $SHELL
6599da04 2595
90fb0c24
TT
2596# $output - temporary wrapper script for $objdir/$outputname
2597# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
6599da04
JM
2598#
2599# The $output program cannot be directly executed until all the libtool
2600# libraries that it depends on are installed.
2601#
90fb0c24 2602# This wrapper script should never be moved out of the build directory.
6599da04
JM
2603# If it is, it will not operate correctly.
2604
cf4ccd63
JL
2605# Sed substitution that helps us do robust quoting. It backslashifies
2606# metacharacters that are still active within double-quoted strings.
90fb0c24 2607Xsed='sed -e 1s/^X//'
cf4ccd63
JL
2608sed_quote_subst='$sed_quote_subst'
2609
2610# The HP-UX ksh and POSIX shell print the target directory to stdout
2611# if CDPATH is set.
2612if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
2613
90fb0c24
TT
2614relink_command=\"$relink_command\"
2615
6599da04 2616# This environment variable determines our operation mode.
cf4ccd63 2617if test \"\$libtool_install_magic\" = \"$magic\"; then
90fb0c24 2618 # install mode needs the following variable:
6599da04 2619 link_against_libtool_libs='$link_against_libtool_libs'
6599da04 2620else
cf4ccd63 2621 # When we are sourced in execute mode, \$file and \$echo are already set.
fbd836fc 2622 if test \"\$libtool_execute_magic\" != \"$magic\"; then
cf4ccd63
JL
2623 echo=\"$qecho\"
2624 file=\"\$0\"
fbd836fc
ILT
2625 # Make sure echo works.
2626 if test \"X\$1\" = X--no-reexec; then
2627 # Discard the --no-reexec flag, and continue.
2628 shift
2629 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
2630 # Yippee, \$echo works!
2631 :
2632 else
2633 # Restart under the correct shell, and then maybe \$echo will work.
2634 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
2635 fi
cf4ccd63
JL
2636 fi\
2637"
90fb0c24 2638 $echo >> $output "\
6599da04 2639
cf4ccd63
JL
2640 # Find the directory that this script lives in.
2641 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
2642 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
2643
2644 # Follow symbolic links until we get to the real thisdir.
2645 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
2646 while test -n \"\$file\"; do
2647 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
2648
2649 # If there was a directory component, then change thisdir.
2650 if test \"x\$destdir\" != \"x\$file\"; then
2651 case \"\$destdir\" in
fbd836fc 2652 /* | [A-Za-z]:[/\\]*) thisdir=\"\$destdir\" ;;
cf4ccd63
JL
2653 *) thisdir=\"\$thisdir/\$destdir\" ;;
2654 esac
2655 fi
6599da04 2656
cf4ccd63
JL
2657 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
2658 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
2659 done
6599da04 2660
cf4ccd63
JL
2661 # Try to get the absolute directory name.
2662 absdir=\`cd \"\$thisdir\" && pwd\`
2663 test -n \"\$absdir\" && thisdir=\"\$absdir\"
90fb0c24 2664"
6599da04 2665
90fb0c24
TT
2666 if test "$fast_install" = yes; then
2667 echo >> $output "\
2668 program=lt-'$outputname'
cf4ccd63 2669 progdir=\"\$thisdir/$objdir\"
90fb0c24
TT
2670
2671 if test ! -f \"\$progdir/\$program\" || \\
2672 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
2673 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
2674
2675 file=\"\$\$-\$program\"
2676
2677 if test ! -d \"\$progdir\"; then
2678 $mkdir \"\$progdir\"
2679 else
2680 $rm \"\$progdir/\$file\"
2681 fi"
2682
2683 echo >> $output "\
2684
2685 # relink executable if necessary
2686 if test -n \"\$relink_command\"; then
2687 if (cd \"\$thisdir\" && eval \$relink_command); then :
2688 else
2689 $rm \"\$progdir/\$file\"
2690 exit 1
2691 fi
2692 fi
2693
2694 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
2695 { $rm \"\$progdir/\$program\";
2696 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
2697 $rm \"\$progdir/\$file\"
2698 fi"
2699 else
2700 echo >> $output "\
2701 program='$outputname'
2702 progdir=\"\$thisdir/$objdir\"
2703"
2704 fi
2705
2706 echo >> $output "\
6599da04 2707
cf4ccd63 2708 if test -f \"\$progdir/\$program\"; then"
6599da04 2709
90fb0c24
TT
2710 # Export our shlibpath_var if we have one.
2711 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
2712 $echo >> $output "\
6599da04 2713 # Add our own library path to $shlibpath_var
cf4ccd63 2714 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
6599da04
JM
2715
2716 # Some systems cannot cope with colon-terminated $shlibpath_var
90fb0c24
TT
2717 # The second colon is a workaround for a bug in BeOS R4 sed
2718 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
6599da04
JM
2719
2720 export $shlibpath_var
cf4ccd63 2721"
90fb0c24
TT
2722 fi
2723
2724 # fixup the dll searchpath if we need to.
2725 if test -n "$dllsearchpath"; then
2726 $echo >> $output "\
2727 # Add the dll search path components to the executable PATH
2728 PATH=$dllsearchpath:\$PATH
2729"
2730 fi
6599da04 2731
90fb0c24 2732 $echo >> $output "\
cf4ccd63
JL
2733 if test \"\$libtool_execute_magic\" != \"$magic\"; then
2734 # Run the actual program with our arguments.
90fb0c24
TT
2735"
2736 case $host in
2737 *-*-cygwin* | *-*-mingw | *-*-os2*)
2738 # win32 systems need to use the prog path for dll
2739 # lookup to work
2740 $echo >> $output "\
2741 exec \$progdir\\\\\$program \${1+\"\$@\"}
2742"
2743 ;;
2744 *)
2745 $echo >> $output "\
cf4ccd63
JL
2746 # Export the path to the program.
2747 PATH=\"\$progdir:\$PATH\"
2748 export PATH
6599da04 2749
cf4ccd63 2750 exec \$program \${1+\"\$@\"}
90fb0c24
TT
2751"
2752 ;;
2753 esac
2754 $echo >> $output "\
cf4ccd63
JL
2755 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
2756 exit 1
2757 fi
6599da04
JM
2758 else
2759 # The program doesn't exist.
cf4ccd63
JL
2760 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
2761 \$echo \"This script is just a wrapper for \$program.\" 1>&2
2762 echo \"See the $PACKAGE documentation for more information.\" 1>&2
6599da04
JM
2763 exit 1
2764 fi
cf4ccd63
JL
2765fi\
2766"
90fb0c24 2767 chmod +x $output
6599da04
JM
2768 fi
2769 exit 0
2770 ;;
2771 esac
2772
6599da04 2773 # See if we need to build an old-fashioned archive.
fbd836fc
ILT
2774 for oldlib in $oldlibs; do
2775
2776 if test "$build_libtool_libs" = convenience; then
90fb0c24 2777 oldobjs="$libobjs_save"
fbd836fc
ILT
2778 addlibs="$convenience"
2779 build_libtool_libs=no
2780 else
90fb0c24
TT
2781 if test "$build_libtool_libs" = module; then
2782 oldobjs="$libobjs_save"
2783 build_libtool_libs=no
2784 else
2785 oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
2786 fi
fbd836fc
ILT
2787 addlibs="$old_convenience"
2788 fi
2789
2790 # Add in members from convenience archives.
2791 for xlib in $addlibs; do
2792 # Extract the objects.
2793 xdir="$xlib"x
2794 generated="$generated $xdir"
90fb0c24 2795 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
fbd836fc
ILT
2796
2797 $show "${rm}r $xdir"
2798 $run ${rm}r "$xdir"
2799 $show "mkdir $xdir"
2800 $run mkdir "$xdir"
2801 status=$?
2802 if test $status -ne 0 && test ! -d "$xdir"; then
2803 exit $status
2804 fi
2805 $show "(cd $xdir && $AR x ../$xlib)"
2806 $run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $?
2807
90fb0c24 2808 oldobjs="$oldobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
fbd836fc 2809 done
6599da04 2810
cf4ccd63
JL
2811 # Do each command in the archive commands.
2812 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
2813 eval cmds=\"$old_archive_from_new_cmds\"
6599da04 2814 else
cf4ccd63 2815 eval cmds=\"$old_archive_cmds\"
6599da04 2816 fi
90fb0c24 2817 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
6599da04 2818 for cmd in $cmds; do
90fb0c24
TT
2819 IFS="$save_ifs"
2820 $show "$cmd"
2821 $run eval "$cmd" || exit $?
6599da04
JM
2822 done
2823 IFS="$save_ifs"
fbd836fc
ILT
2824 done
2825
2826 if test -n "$generated"; then
2827 $show "${rm}r$generated"
2828 $run ${rm}r$generated
6599da04
JM
2829 fi
2830
2831 # Now create the libtool archive.
2832 case "$output" in
2833 *.la)
2834 old_library=
fbd836fc 2835 test "$build_old_libs" = yes && old_library="$libname.$libext"
cf4ccd63 2836 $show "creating $output"
6599da04 2837
90fb0c24
TT
2838 if test -n "$xrpath"; then
2839 temp_xrpath=
2840 for libdir in $xrpath; do
2841 temp_xrpath="$temp_xrpath -R$libdir"
2842 done
2843 dependency_libs="$temp_xrpath $dependency_libs"
2844 fi
2845
6599da04
JM
2846 # Only create the output if not a dry run.
2847 if test -z "$run"; then
90fb0c24 2848 $echo > $output "\
6599da04 2849# $output - a libtool library file
90fb0c24 2850# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
6599da04
JM
2851
2852# The name that we can dlopen(3).
2853dlname='$dlname'
2854
2855# Names of this library.
2856library_names='$library_names'
2857
2858# The name of the static archive.
2859old_library='$old_library'
2860
cf4ccd63
JL
2861# Libraries that this one depends upon.
2862dependency_libs='$dependency_libs'
2863
6599da04
JM
2864# Version information for $libname.
2865current=$current
2866age=$age
2867revision=$revision
2868
90fb0c24
TT
2869# Is this an already installed library?
2870installed=no
2871
6599da04 2872# Directory that this library needs to be installed in:
cf4ccd63
JL
2873libdir='$install_libdir'\
2874"
90fb0c24
TT
2875
2876 $rm "$output_objdir/$outputname"i
2877 sed 's/^installed=no$/installed=yes/' \
2878 < "$output" > "$output_objdir/$outputname"i || exit 1
6599da04
JM
2879 fi
2880
2881 # Do a symbolic link so that the libtool archive can be found in
2882 # LD_LIBRARY_PATH before the program is installed.
90fb0c24
TT
2883 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
2884 $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $?
6599da04
JM
2885 ;;
2886 esac
2887 exit 0
2888 ;;
2889
2890 # libtool install mode
2891 install)
cf4ccd63 2892 modename="$modename: install"
6599da04 2893
cf4ccd63
JL
2894 # There may be an optional sh(1) argument at the beginning of
2895 # install_prog (especially on Windows NT).
90fb0c24 2896 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then
cf4ccd63
JL
2897 # Aesthetically quote it.
2898 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
2899 case "$arg" in
2900 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
2901 arg="\"$arg\""
2902 ;;
2903 esac
2904 install_prog="$arg "
2905 arg="$1"
6599da04 2906 shift
cf4ccd63
JL
2907 else
2908 install_prog=
2909 arg="$nonopt"
6599da04
JM
2910 fi
2911
cf4ccd63
JL
2912 # The real first argument should be the name of the installation program.
2913 # Aesthetically quote it.
2914 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
2915 case "$arg" in
2916 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
2917 arg="\"$arg\""
2918 ;;
2919 esac
2920 install_prog="$install_prog$arg"
2921
6599da04
JM
2922 # We need to accept at least all the BSD install flags.
2923 dest=
2924 files=
2925 opts=
2926 prev=
2927 install_type=
cf4ccd63 2928 isdir=no
6599da04
JM
2929 stripme=
2930 for arg
2931 do
2932 if test -n "$dest"; then
90fb0c24
TT
2933 files="$files $dest"
2934 dest="$arg"
2935 continue
6599da04
JM
2936 fi
2937
2938 case "$arg" in
2939 -d) isdir=yes ;;
2940 -f) prev="-f" ;;
2941 -g) prev="-g" ;;
2942 -m) prev="-m" ;;
2943 -o) prev="-o" ;;
2944 -s)
90fb0c24
TT
2945 stripme=" -s"
2946 continue
2947 ;;
6599da04
JM
2948 -*) ;;
2949
2950 *)
90fb0c24
TT
2951 # If the previous option needed an argument, then skip it.
2952 if test -n "$prev"; then
2953 prev=
2954 else
2955 dest="$arg"
2956 continue
2957 fi
2958 ;;
6599da04 2959 esac
cf4ccd63
JL
2960
2961 # Aesthetically quote the argument.
2962 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
2963 case "$arg" in
2964 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
2965 arg="\"$arg\""
2966 ;;
2967 esac
6599da04
JM
2968 install_prog="$install_prog $arg"
2969 done
2970
2971 if test -z "$install_prog"; then
cf4ccd63
JL
2972 $echo "$modename: you must specify an install program" 1>&2
2973 $echo "$help" 1>&2
6599da04
JM
2974 exit 1
2975 fi
2976
2977 if test -n "$prev"; then
cf4ccd63
JL
2978 $echo "$modename: the \`$prev' option requires an argument" 1>&2
2979 $echo "$help" 1>&2
6599da04
JM
2980 exit 1
2981 fi
2982
2983 if test -z "$files"; then
2984 if test -z "$dest"; then
90fb0c24 2985 $echo "$modename: no file or destination specified" 1>&2
6599da04 2986 else
90fb0c24 2987 $echo "$modename: you must specify a destination" 1>&2
6599da04 2988 fi
cf4ccd63 2989 $echo "$help" 1>&2
6599da04
JM
2990 exit 1
2991 fi
2992
2993 # Strip any trailing slash from the destination.
cf4ccd63 2994 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
6599da04
JM
2995
2996 # Check to see that the destination is a directory.
2997 test -d "$dest" && isdir=yes
cf4ccd63 2998 if test "$isdir" = yes; then
6599da04
JM
2999 destdir="$dest"
3000 destname=
3001 else
cf4ccd63
JL
3002 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
3003 test "X$destdir" = "X$dest" && destdir=.
3004 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
6599da04
JM
3005
3006 # Not a directory, so check to see that there is only one file specified.
3007 set dummy $files
3008 if test $# -gt 2; then
90fb0c24
TT
3009 $echo "$modename: \`$dest' is not a directory" 1>&2
3010 $echo "$help" 1>&2
3011 exit 1
6599da04
JM
3012 fi
3013 fi
3014 case "$destdir" in
fbd836fc 3015 /* | [A-Za-z]:[/\\]*) ;;
6599da04
JM
3016 *)
3017 for file in $files; do
90fb0c24
TT
3018 case "$file" in
3019 *.lo) ;;
3020 *)
3021 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
3022 $echo "$help" 1>&2
3023 exit 1
3024 ;;
3025 esac
6599da04
JM
3026 done
3027 ;;
3028 esac
3029
cf4ccd63
JL
3030 # This variable tells wrapper scripts just to set variables rather
3031 # than running their programs.
3032 libtool_install_magic="$magic"
3033
6599da04
JM
3034 staticlibs=
3035 future_libdirs=
3036 current_libdirs=
3037 for file in $files; do
3038
3039 # Do each installation.
3040 case "$file" in
fbd836fc 3041 *.a | *.lib)
90fb0c24
TT
3042 # Do the static libraries later.
3043 staticlibs="$staticlibs $file"
3044 ;;
6599da04
JM
3045
3046 *.la)
90fb0c24
TT
3047 # Check to see that this really is a libtool archive.
3048 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
3049 else
3050 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
3051 $echo "$help" 1>&2
3052 exit 1
3053 fi
3054
3055 library_names=
3056 old_library=
3057 # If there is no directory component, then add one.
3058 case "$file" in
3059 */* | *\\*) . $file ;;
3060 *) . ./$file ;;
3061 esac
3062
3063 # Add the libdir to current_libdirs if it is the destination.
3064 if test "X$destdir" = "X$libdir"; then
3065 case "$current_libdirs " in
3066 *" $libdir "*) ;;
3067 *) current_libdirs="$current_libdirs $libdir" ;;
3068 esac
3069 else
3070 # Note the libdir as a future libdir.
3071 case "$future_libdirs " in
3072 *" $libdir "*) ;;
3073 *) future_libdirs="$future_libdirs $libdir" ;;
3074 esac
3075 fi
3076
3077 dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
3078 test "X$dir" = "X$file/" && dir=
3079 dir="$dir$objdir"
3080
3081 # See the names of the shared library.
3082 set dummy $library_names
3083 if test -n "$2"; then
3084 realname="$2"
3085 shift
3086 shift
3087
3088 # Install the shared library and build the symlinks.
3089 $show "$install_prog $dir/$realname $destdir/$realname"
3090 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
3091 test "X$dlname" = "X$realname" && dlname=
3092
3093 if test $# -gt 0; then
3094 # Delete the old symlinks, and create new ones.
3095 for linkname
3096 do
3097 test "X$dlname" = "X$linkname" && dlname=
3098 if test "$linkname" != "$realname"; then
3099 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
3100 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
fbd836fc 3101 fi
90fb0c24
TT
3102 done
3103 fi
3104
3105 if test -n "$dlname"; then
3106 # Install the dynamically-loadable library.
3107 $show "$install_prog $dir/$dlname $destdir/$dlname"
3108 $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $?
3109 fi
3110
3111 # Do each command in the postinstall commands.
3112 lib="$destdir/$realname"
3113 eval cmds=\"$postinstall_cmds\"
3114 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3115 for cmd in $cmds; do
3116 IFS="$save_ifs"
3117 $show "$cmd"
3118 $run eval "$cmd" || exit $?
3119 done
3120 IFS="$save_ifs"
3121 fi
3122
3123 # Install the pseudo-library for information purposes.
3124 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3125 instname="$dir/$name"i
3126 if test ! -f "$instname"; then
3127 # Just in case it was removed...
3128 $show "Creating $instname"
3129 $rm "$instname"
3130 sed 's/^installed=no$/installed=yes/' "$file" > "$instname"
3131 fi
3132 $show "$install_prog $instname $destdir/$name"
3133 $run eval "$install_prog $instname $destdir/$name" || exit $?
3134
3135 # Maybe install the static library, too.
3136 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
3137 ;;
6599da04
JM
3138
3139 *.lo)
90fb0c24
TT
3140 # Install (i.e. copy) a libtool object.
3141
3142 # Figure out destination file name, if it wasn't already specified.
3143 if test -n "$destname"; then
3144 destfile="$destdir/$destname"
3145 else
3146 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3147 destfile="$destdir/$destfile"
3148 fi
3149
3150 # Deduce the name of the destination old-style object file.
3151 case "$destfile" in
3152 *.lo)
3153 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
3154 ;;
3155 *.o | *.obj)
3156 staticdest="$destfile"
3157 destfile=
3158 ;;
3159 *)
3160 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
3161 $echo "$help" 1>&2
3162 exit 1
3163 ;;
3164 esac
3165
3166 # Install the libtool object if requested.
3167 if test -n "$destfile"; then
3168 $show "$install_prog $file $destfile"
3169 $run eval "$install_prog $file $destfile" || exit $?
3170 fi
3171
3172 # Install the old object if enabled.
3173 if test "$build_old_libs" = yes; then
3174 # Deduce the name of the old-style object file.
3175 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
3176
3177 $show "$install_prog $staticobj $staticdest"
3178 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
3179 fi
3180 exit 0
3181 ;;
6599da04
JM
3182
3183 *)
90fb0c24
TT
3184 # Figure out destination file name, if it wasn't already specified.
3185 if test -n "$destname"; then
3186 destfile="$destdir/$destname"
3187 else
3188 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3189 destfile="$destdir/$destfile"
3190 fi
3191
3192 # Do a test to see if this is really a libtool program.
3193 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3194 link_against_libtool_libs=
3195 relink_command=
3196
3197 # If there is no directory component, then add one.
3198 case "$file" in
3199 */* | *\\*) . $file ;;
3200 *) . ./$file ;;
3201 esac
3202
3203 # Check the variables that should have been set.
3204 if test -z "$link_against_libtool_libs"; then
3205 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
3206 exit 1
3207 fi
3208
3209 finalize=yes
3210 for lib in $link_against_libtool_libs; do
3211 # Check to see that each library is installed.
3212 libdir=
3213 if test -f "$lib"; then
3214 # If there is no directory component, then add one.
3215 case "$lib" in
3216 */* | *\\*) . $lib ;;
3217 *) . ./$lib ;;
3218 esac
3219 fi
3220 libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
3221 if test -n "$libdir" && test ! -f "$libfile"; then
3222 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
3223 finalize=no
3224 fi
3225 done
3226
3227 outputname=
3228 if test "$fast_install" = no && test -n "$relink_command"; then
3229 if test "$finalize" = yes; then
3230 outputname="/tmp/$$-$file"
3231 # Replace the output file specification.
3232 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
3233
3234 $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
3235 $show "$relink_command"
3236 if $run eval "$relink_command"; then :
3237 else
3238 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
3239 continue
3240 fi
3241 file="$outputname"
3242 else
3243 $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
3244 fi
3245 else
3246 # Install the binary that we compiled earlier.
cf4ccd63 3247 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
90fb0c24
TT
3248 fi
3249 fi
6599da04 3250
90fb0c24
TT
3251 $show "$install_prog$stripme $file $destfile"
3252 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
3253 test -n "$outputname" && $rm $outputname
3254 ;;
6599da04
JM
3255 esac
3256 done
3257
3258 for file in $staticlibs; do
cf4ccd63 3259 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6599da04
JM
3260
3261 # Set up the ranlib parameters.
3262 oldlib="$destdir/$name"
3263
3264 $show "$install_prog $file $oldlib"
cf4ccd63 3265 $run eval "$install_prog \$file \$oldlib" || exit $?
6599da04
JM
3266
3267 # Do each command in the postinstall commands.
cf4ccd63 3268 eval cmds=\"$old_postinstall_cmds\"
90fb0c24 3269 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
6599da04 3270 for cmd in $cmds; do
90fb0c24
TT
3271 IFS="$save_ifs"
3272 $show "$cmd"
3273 $run eval "$cmd" || exit $?
6599da04
JM
3274 done
3275 IFS="$save_ifs"
3276 done
3277
3278 if test -n "$future_libdirs"; then
cf4ccd63 3279 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
6599da04
JM
3280 fi
3281
3282 if test -n "$current_libdirs"; then
3283 # Maybe just do a dry run.
3284 test -n "$run" && current_libdirs=" -n$current_libdirs"
cf4ccd63 3285 exec $SHELL $0 --finish$current_libdirs
6599da04
JM
3286 exit 1
3287 fi
3288
3289 exit 0
3290 ;;
3291
cf4ccd63
JL
3292 # libtool finish mode
3293 finish)
3294 modename="$modename: finish"
3295 libdirs="$nonopt"
3296 admincmds=
3297
3298 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
3299 for dir
3300 do
90fb0c24 3301 libdirs="$libdirs $dir"
cf4ccd63
JL
3302 done
3303
3304 for libdir in $libdirs; do
3305 if test -n "$finish_cmds"; then
3306 # Do each command in the finish commands.
3307 eval cmds=\"$finish_cmds\"
90fb0c24
TT
3308 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3309 for cmd in $cmds; do
3310 IFS="$save_ifs"
3311 $show "$cmd"
3312 $run eval "$cmd" || admincmds="$admincmds
cf4ccd63 3313 $cmd"
90fb0c24
TT
3314 done
3315 IFS="$save_ifs"
cf4ccd63
JL
3316 fi
3317 if test -n "$finish_eval"; then
3318 # Do the single finish_eval.
3319 eval cmds=\"$finish_eval\"
3320 $run eval "$cmds" || admincmds="$admincmds
3321 $cmds"
3322 fi
3323 done
3324 fi
3325
90fb0c24
TT
3326 # Exit here if they wanted silent mode.
3327 test "$show" = : && exit 0
3328
cf4ccd63
JL
3329 echo "----------------------------------------------------------------------"
3330 echo "Libraries have been installed in:"
3331 for libdir in $libdirs; do
3332 echo " $libdir"
6599da04 3333 done
cf4ccd63 3334 echo
90fb0c24
TT
3335 echo "If you ever happen to want to link against installed libraries"
3336 echo "in a given directory, LIBDIR, you must either use libtool, and"
3337 echo "specify the full pathname of the library, or use \`-LLIBDIR'"
3338 echo "flag during linking and do at least one of the following:"
cf4ccd63
JL
3339 if test -n "$shlibpath_var"; then
3340 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
3341 echo " during execution"
3342 fi
3343 if test -n "$runpath_var"; then
3344 echo " - add LIBDIR to the \`$runpath_var' environment variable"
3345 echo " during linking"
3346 fi
3347 if test -n "$hardcode_libdir_flag_spec"; then
3348 libdir=LIBDIR
3349 eval flag=\"$hardcode_libdir_flag_spec\"
6599da04 3350
cf4ccd63 3351 echo " - use the \`$flag' linker flag"
6599da04 3352 fi
cf4ccd63
JL
3353 if test -n "$admincmds"; then
3354 echo " - have your system administrator run these commands:$admincmds"
3355 fi
3356 if test -f /etc/ld.so.conf; then
3357 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
3358 fi
3359 echo
3360 echo "See any operating system documentation about shared libraries for"
3361 echo "more information, such as the ld(1) and ld.so(8) manual pages."
3362 echo "----------------------------------------------------------------------"
3363 exit 0
3364 ;;
6599da04 3365
cf4ccd63
JL
3366 # libtool execute mode
3367 execute)
3368 modename="$modename: execute"
3369
3370 # The first argument is the command name.
3371 cmd="$nonopt"
3372 if test -z "$cmd"; then
3373 $echo "$modename: you must specify a COMMAND" 1>&2
3374 $echo "$help"
3375 exit 1
3376 fi
6599da04 3377
cf4ccd63
JL
3378 # Handle -dlopen flags immediately.
3379 for file in $execute_dlfiles; do
fbd836fc 3380 if test ! -f "$file"; then
cf4ccd63
JL
3381 $echo "$modename: \`$file' is not a file" 1>&2
3382 $echo "$help" 1>&2
3383 exit 1
6599da04
JM
3384 fi
3385
cf4ccd63
JL
3386 dir=
3387 case "$file" in
3388 *.la)
90fb0c24
TT
3389 # Check to see that this really is a libtool archive.
3390 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
3391 else
3392 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
3393 $echo "$help" 1>&2
3394 exit 1
3395 fi
cf4ccd63
JL
3396
3397 # Read the libtool library.
3398 dlname=
3399 library_names=
3400
90fb0c24 3401 # If there is no directory component, then add one.
cf4ccd63
JL
3402 case "$file" in
3403 */* | *\\*) . $file ;;
90fb0c24 3404 *) . ./$file ;;
cf4ccd63
JL
3405 esac
3406
3407 # Skip this library if it cannot be dlopened.
3408 if test -z "$dlname"; then
3409 # Warn if it was a shared library.
3410 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
3411 continue
3412 fi
3413
3414 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3415 test "X$dir" = "X$file" && dir=.
3416
3417 if test -f "$dir/$objdir/$dlname"; then
3418 dir="$dir/$objdir"
3419 else
3420 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
3421 exit 1
3422 fi
3423 ;;
3424
3425 *.lo)
3426 # Just add the directory containing the .lo file.
3427 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3428 test "X$dir" = "X$file" && dir=.
3429 ;;
3430
3431 *)
3432 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
90fb0c24 3433 continue
cf4ccd63 3434 ;;
6599da04
JM
3435 esac
3436
cf4ccd63
JL
3437 # Get the absolute pathname.
3438 absdir=`cd "$dir" && pwd`
3439 test -n "$absdir" && dir="$absdir"
3440
3441 # Now add the directory to shlibpath_var.
3442 if eval "test -z \"\$$shlibpath_var\""; then
3443 eval "$shlibpath_var=\"\$dir\""
6599da04 3444 else
cf4ccd63 3445 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6599da04
JM
3446 fi
3447 done
6599da04 3448
cf4ccd63
JL
3449 # This variable tells wrapper scripts just to set shlibpath_var
3450 # rather than running their programs.
3451 libtool_execute_magic="$magic"
6599da04 3452
cf4ccd63
JL
3453 # Check if any of the arguments is a wrapper script.
3454 args=
3455 for file
3456 do
3457 case "$file" in
3458 -*) ;;
3459 *)
90fb0c24
TT
3460 # Do a test to see if this is really a libtool program.
3461 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
cf4ccd63
JL
3462 # If there is no directory component, then add one.
3463 case "$file" in
3464 */* | *\\*) . $file ;;
3465 *) . ./$file ;;
3466 esac
6599da04 3467
cf4ccd63
JL
3468 # Transform arg to wrapped name.
3469 file="$progdir/$program"
3470 fi
90fb0c24 3471 ;;
cf4ccd63
JL
3472 esac
3473 # Quote arguments (to preserve shell metacharacters).
3474 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
3475 args="$args \"$file\""
3476 done
6599da04 3477
cf4ccd63
JL
3478 if test -z "$run"; then
3479 # Export the shlibpath_var.
3480 eval "export $shlibpath_var"
3481
fbd836fc
ILT
3482 # Restore saved enviroment variables
3483 if test "${save_LC_ALL+set}" = set; then
90fb0c24 3484 LC_ALL="$save_LC_ALL"; export LC_ALL
fbd836fc
ILT
3485 fi
3486 if test "${save_LANG+set}" = set; then
90fb0c24 3487 LANG="$save_LANG"; export LANG
fbd836fc
ILT
3488 fi
3489
cf4ccd63
JL
3490 # Now actually exec the command.
3491 eval "exec \$cmd$args"
3492
3493 $echo "$modename: cannot exec \$cmd$args"
3494 exit 1
3495 else
3496 # Display what would be done.
3497 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
3498 $echo "export $shlibpath_var"
3499 $echo "$cmd$args"
3500 exit 0
6599da04 3501 fi
6599da04
JM
3502 ;;
3503
3504 # libtool uninstall mode
3505 uninstall)
cf4ccd63 3506 modename="$modename: uninstall"
6599da04
JM
3507 rm="$nonopt"
3508 files=
3509
3510 for arg
3511 do
3512 case "$arg" in
3513 -*) rm="$rm $arg" ;;
3514 *) files="$files $arg" ;;
3515 esac
3516 done
3517
3518 if test -z "$rm"; then
cf4ccd63
JL
3519 $echo "$modename: you must specify an RM program" 1>&2
3520 $echo "$help" 1>&2
6599da04
JM
3521 exit 1
3522 fi
3523
3524 for file in $files; do
cf4ccd63
JL
3525 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3526 test "X$dir" = "X$file" && dir=.
3527 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6599da04
JM
3528
3529 rmfiles="$file"
3530
3531 case "$name" in
3532 *.la)
90fb0c24
TT
3533 # Possibly a libtool archive, so verify it.
3534 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3535 . $dir/$name
3536
3537 # Delete the libtool libraries and symlinks.
3538 for n in $library_names; do
3539 rmfiles="$rmfiles $dir/$n"
3540 test "X$n" = "X$dlname" && dlname=
3541 done
3542 test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname"
3543 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
cf4ccd63
JL
3544
3545 $show "$rm $rmfiles"
3546 $run $rm $rmfiles
3547
3548 if test -n "$library_names"; then
3549 # Do each command in the postuninstall commands.
3550 eval cmds=\"$postuninstall_cmds\"
90fb0c24 3551 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
cf4ccd63
JL
3552 for cmd in $cmds; do
3553 IFS="$save_ifs"
3554 $show "$cmd"
3555 $run eval "$cmd"
3556 done
3557 IFS="$save_ifs"
3558 fi
6599da04 3559
90fb0c24 3560 if test -n "$old_library"; then
cf4ccd63
JL
3561 # Do each command in the old_postuninstall commands.
3562 eval cmds=\"$old_postuninstall_cmds\"
90fb0c24 3563 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
cf4ccd63
JL
3564 for cmd in $cmds; do
3565 IFS="$save_ifs"
3566 $show "$cmd"
3567 $run eval "$cmd"
3568 done
3569 IFS="$save_ifs"
3570 fi
3571
90fb0c24
TT
3572 # FIXME: should reinstall the best remaining shared library.
3573 fi
3574 ;;
6599da04
JM
3575
3576 *.lo)
90fb0c24
TT
3577 if test "$build_old_libs" = yes; then
3578 oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
3579 rmfiles="$rmfiles $dir/$oldobj"
3580 fi
cf4ccd63
JL
3581 $show "$rm $rmfiles"
3582 $run $rm $rmfiles
90fb0c24 3583 ;;
6599da04 3584
cf4ccd63 3585 *)
90fb0c24 3586 $show "$rm $rmfiles"
cf4ccd63
JL
3587 $run $rm $rmfiles
3588 ;;
3589 esac
6599da04
JM
3590 done
3591 exit 0
3592 ;;
3593
cf4ccd63
JL
3594 "")
3595 $echo "$modename: you must specify a MODE" 1>&2
3596 $echo "$generic_help" 1>&2
6599da04
JM
3597 exit 1
3598 ;;
3599 esac
3600
cf4ccd63
JL
3601 $echo "$modename: invalid operation mode \`$mode'" 1>&2
3602 $echo "$generic_help" 1>&2
6599da04
JM
3603 exit 1
3604fi # test -z "$show_help"
3605
3606# We need to display help for each of the modes.
3607case "$mode" in
cf4ccd63
JL
3608"") $echo \
3609"Usage: $modename [OPTION]... [MODE-ARG]...
6599da04
JM
3610
3611Provide generalized library-building support services.
3612
cf4ccd63
JL
3613 --config show all configuration variables
3614 --debug enable verbose shell tracing
6599da04 3615-n, --dry-run display commands without modifying any files
cf4ccd63 3616 --features display basic configuration information and exit
6599da04
JM
3617 --finish same as \`--mode=finish'
3618 --help display this help message and exit
3619 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
cf4ccd63
JL
3620 --quiet same as \`--silent'
3621 --silent don't print informational messages
6599da04
JM
3622 --version print version information
3623
3624MODE must be one of the following:
3625
3626 compile compile a source file into a libtool object
cf4ccd63 3627 execute automatically set library path, then run a program
6599da04
JM
3628 finish complete the installation of libtool libraries
3629 install install libraries or executables
3630 link create a library or an executable
3631 uninstall remove libraries from an installed directory
3632
cf4ccd63
JL
3633MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
3634a more detailed description of MODE."
3635 exit 0
6599da04
JM
3636 ;;
3637
3638compile)
cf4ccd63
JL
3639 $echo \
3640"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6599da04
JM
3641
3642Compile a source file into a libtool library object.
3643
fbd836fc
ILT
3644This mode accepts the following additional options:
3645
90fb0c24 3646 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
fbd836fc
ILT
3647 -static always build a \`.o' file suitable for static linking
3648
6599da04
JM
3649COMPILE-COMMAND is a command to be used in creating a \`standard' object file
3650from the given SOURCEFILE.
3651
3652The output file name is determined by removing the directory component from
3653SOURCEFILE, then substituting the C source code suffix \`.c' with the
cf4ccd63 3654library object suffix, \`.lo'."
6599da04
JM
3655 ;;
3656
cf4ccd63
JL
3657execute)
3658 $echo \
3659"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
3660
3661Automatically set library path, then run a program.
3662
3663This mode accepts the following additional options:
6599da04 3664
cf4ccd63 3665 -dlopen FILE add the directory containing FILE to the library path
6599da04 3666
cf4ccd63
JL
3667This mode sets the library path environment variable according to \`-dlopen'
3668flags.
6599da04 3669
cf4ccd63
JL
3670If any of the ARGS are libtool executable wrappers, then they are translated
3671into their corresponding uninstalled binary, and any of their required library
3672directories are added to the library path.
3673
3674Then, COMMAND is executed, with ARGS as arguments."
6599da04
JM
3675 ;;
3676
3677finish)
cf4ccd63
JL
3678 $echo \
3679"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6599da04
JM
3680
3681Complete the installation of libtool libraries.
3682
3683Each LIBDIR is a directory that contains libtool libraries.
3684
3685The commands that this mode executes may require superuser privileges. Use
cf4ccd63 3686the \`--dry-run' option if you just want to see what would be executed."
6599da04
JM
3687 ;;
3688
3689install)
cf4ccd63
JL
3690 $echo \
3691"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6599da04
JM
3692
3693Install executables or libraries.
3694
3695INSTALL-COMMAND is the installation command. The first component should be
3696either the \`install' or \`cp' program.
3697
3698The rest of the components are interpreted as arguments to that command (only
cf4ccd63 3699BSD-compatible install options are recognized)."
6599da04
JM
3700 ;;
3701
3702link)
cf4ccd63
JL
3703 $echo \
3704"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6599da04
JM
3705
3706Link object files or libraries together to form another library, or to
3707create an executable program.
3708
3709LINK-COMMAND is a command using the C compiler that you would use to create
3710a program from several object files.
3711
3712The following components of LINK-COMMAND are treated specially:
3713
cf4ccd63 3714 -all-static do not do any dynamic linking at all
90fb0c24 3715 -avoid-version do not add a version suffix if possible
cf4ccd63 3716 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
90fb0c24 3717 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
6599da04 3718 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
90fb0c24
TT
3719 -export-symbols SYMFILE
3720 try to export only the symbols listed in SYMFILE
6599da04
JM
3721 -LLIBDIR search LIBDIR for required installed libraries
3722 -lNAME OUTPUT-FILE requires the installed library libNAME
90fb0c24 3723 -module build a library that can dlopened
cf4ccd63 3724 -no-undefined declare that a library does not refer to external symbols
6599da04 3725 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
cf4ccd63 3726 -release RELEASE specify package release information
6599da04 3727 -rpath LIBDIR the created library will eventually be installed in LIBDIR
90fb0c24 3728 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
cf4ccd63 3729 -static do not do any dynamic linking of libtool libraries
6599da04 3730 -version-info CURRENT[:REVISION[:AGE]]
90fb0c24 3731 specify library version info [each variable defaults to 0]
6599da04
JM
3732
3733All other options (arguments beginning with \`-') are ignored.
3734
3735Every other argument is treated as a filename. Files ending in \`.la' are
3736treated as uninstalled libtool libraries, other files are standard or library
3737object files.
3738
90fb0c24
TT
3739If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
3740only library objects (\`.lo' files) may be specified, and \`-rpath' is
3741required, except when creating a convenience library.
6599da04 3742
fbd836fc 3743If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
90fb0c24 3744using \`ar' and \`ranlib', or on Windows using \`lib'.
6599da04 3745
fbd836fc
ILT
3746If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
3747is created, otherwise an executable program is created."
6599da04
JM
3748 ;;
3749
3750uninstall)
cf4ccd63
JL
3751 $echo
3752"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6599da04
JM
3753
3754Remove libraries from an installation directory.
3755
3756RM is the name of the program to use to delete files associated with each FILE
3757(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
3758to RM.
3759
3760If FILE is a libtool library, all the files associated with it are deleted.
cf4ccd63 3761Otherwise, only FILE itself is deleted using RM."
6599da04
JM
3762 ;;
3763
3764*)
cf4ccd63
JL
3765 $echo "$modename: invalid operation mode \`$mode'" 1>&2
3766 $echo "$help" 1>&2
6599da04
JM
3767 exit 1
3768 ;;
3769esac
3770
cf4ccd63
JL
3771echo
3772$echo "Try \`$modename --help' for more information about other modes."
6599da04
JM
3773
3774exit 0
3775
3776# Local Variables:
3777# mode:shell-script
3778# sh-indentation:2
3779# End:
This page took 0.518177 seconds and 5 git commands to generate.