revert changes. oops - should have been on the branch.
[deliverable/binutils-gdb.git] / ltmain.sh
CommitLineData
6079ad78 1# ltmain.sh - Provide generalized library-building support services.
33e0ca61
ILT
2# NOTE: Changing this file will not affect anything until you rerun ltconfig.
3#
4# Copyright (C) 1996-1998 Free Software Foundation, Inc.
6079ad78
ILT
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
99e9c6f7
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
30elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
31 # Yippee, $echo works!
32 :
33else
34 # Restart under the correct shell, and then maybe $echo will work.
35 exec $SHELL "$0" --no-reexec ${1+"$@"}
36fi
37
6079ad78 38# The name of this program.
33e0ca61
ILT
39progname=`$echo "$0" | sed 's%^.*/%%'`
40modename="$progname"
6079ad78
ILT
41
42# Constants.
43PROGRAM=ltmain.sh
44PACKAGE=libtool
99e9c6f7 45VERSION=1.2b
6079ad78
ILT
46
47default_mode=
48help="Try \`$progname --help' for more information."
49magic="%%%MAGIC variable%%%"
50mkdir="mkdir"
51mv="mv -f"
6079ad78
ILT
52rm="rm -f"
53
33e0ca61
ILT
54# Sed substitution that helps us do robust quoting. It backslashifies
55# metacharacters that are still active within double-quoted strings.
56Xsed='sed -e s/^X//'
57sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
58
59# NLS nuisances.
60# Only set LANG and LC_ALL to C if already set.
61# These must not be set unconditionally because not all systems understand
62# e.g. LANG=C (notably SCO).
99e9c6f7
ILT
63# We save the old values to restore during execute mode.
64if test "${LC_ALL+set}" = set; then
65 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
66fi
67if test "${LANG+set}" = set; then
68 save_LANG="$LANG"; LANG=C; export LANG
69fi
33e0ca61 70
6079ad78 71if test "$LTCONFIG_VERSION" != "$VERSION"; then
33e0ca61 72 echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
6079ad78
ILT
73 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
74 exit 1
75fi
76
6079ad78 77if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
33e0ca61 78 echo "$modename: not configured to build any kind of library" 1>&2
6079ad78
ILT
79 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
80 exit 1
81fi
82
83# Global variables.
84mode=$default_mode
85nonopt=
86prev=
87prevopt=
88run=
33e0ca61 89show="$echo"
6079ad78 90show_help=
33e0ca61 91execute_dlfiles=
99e9c6f7
ILT
92lo2o="s/\\.lo\$/.${objext}/"
93los2o="s/\\.lo /.${objext} /g"
6079ad78
ILT
94
95# Parse our command line options once, thoroughly.
96while test $# -gt 0
97do
98 arg="$1"
99 shift
100
101 case "$arg" in
33e0ca61 102 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
6079ad78
ILT
103 *) optarg= ;;
104 esac
105
106 # If the previous option needs an argument, assign it.
107 if test -n "$prev"; then
33e0ca61
ILT
108 case "$prev" in
109 execute_dlfiles)
110 eval "$prev=\"\$$prev \$arg\""
111 ;;
112 *)
113 eval "$prev=\$arg"
114 ;;
115 esac
116
6079ad78
ILT
117 prev=
118 prevopt=
119 continue
120 fi
121
122 # Have we seen a non-optional argument yet?
123 case "$arg" in
124 --help)
125 show_help=yes
126 ;;
127
128 --version)
129 echo "$PROGRAM (GNU $PACKAGE) $VERSION"
130 exit 0
131 ;;
132
99e9c6f7
ILT
133 --config)
134 sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
135 exit 0
136 ;;
137
138 --debug)
139 echo "$progname: enabling shell trace mode"
140 set -x
141 ;;
142
6079ad78
ILT
143 --dry-run | -n)
144 run=:
145 ;;
146
147 --features)
148 echo "host: $host"
149 if test "$build_libtool_libs" = yes; then
150 echo "enable shared libraries"
151 else
152 echo "disable shared libraries"
153 fi
154 if test "$build_old_libs" = yes; then
155 echo "enable static libraries"
156 else
157 echo "disable static libraries"
158 fi
159 exit 0
160 ;;
161
162 --finish) mode="finish" ;;
163
164 --mode) prevopt="--mode" prev=mode ;;
165 --mode=*) mode="$optarg" ;;
166
33e0ca61
ILT
167 --quiet | --silent)
168 show=:
169 ;;
170
171 -dlopen)
172 prevopt="-dlopen"
173 prev=execute_dlfiles
174 ;;
175
6079ad78 176 -*)
33e0ca61
ILT
177 $echo "$modename: unrecognized option \`$arg'" 1>&2
178 $echo "$help" 1>&2
6079ad78
ILT
179 exit 1
180 ;;
181
182 *)
183 nonopt="$arg"
184 break
185 ;;
186 esac
187done
188
6079ad78 189if test -n "$prevopt"; then
33e0ca61
ILT
190 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
191 $echo "$help" 1>&2
6079ad78
ILT
192 exit 1
193fi
194
6079ad78
ILT
195if test -z "$show_help"; then
196
197 # Infer the operation mode.
198 if test -z "$mode"; then
199 case "$nonopt" in
33e0ca61 200 *cc | *++ | gcc* | *-gcc*)
6079ad78
ILT
201 mode=link
202 for arg
203 do
204 case "$arg" in
205 -c)
206 mode=compile
207 break
208 ;;
209 esac
210 done
211 ;;
99e9c6f7 212 *db | *dbx | *strace | *truss)
33e0ca61
ILT
213 mode=execute
214 ;;
215 *install*|cp|mv)
6079ad78
ILT
216 mode=install
217 ;;
218 *rm)
219 mode=uninstall
220 ;;
6079ad78 221 *)
33e0ca61
ILT
222 # If we have no mode, but dlfiles were specified, then do execute mode.
223 test -n "$execute_dlfiles" && mode=execute
224
6079ad78
ILT
225 # Just use the default operation mode.
226 if test -z "$mode"; then
33e0ca61
ILT
227 if test -n "$nonopt"; then
228 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
229 else
230 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
231 fi
6079ad78
ILT
232 fi
233 ;;
234 esac
235 fi
236
33e0ca61
ILT
237 # Only execute mode is allowed to have -dlopen flags.
238 if test -n "$execute_dlfiles" && test "$mode" != execute; then
239 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
240 $echo "$help" 1>&2
241 exit 1
242 fi
243
6079ad78
ILT
244 # Change the help message to a mode-specific one.
245 generic_help="$help"
33e0ca61 246 help="Try \`$modename --help --mode=$mode' for more information."
6079ad78
ILT
247
248 # These modes are in order of execution frequency so that they run quickly.
249 case "$mode" in
250 # libtool compile mode
251 compile)
33e0ca61 252 modename="$modename: compile"
6079ad78 253 # Get the compilation command and the source file.
33e0ca61 254 base_compile=
6079ad78 255 lastarg=
33e0ca61
ILT
256 srcfile="$nonopt"
257 suppress_output=
6079ad78
ILT
258
259 for arg
260 do
33e0ca61 261 # Accept any command-line options.
6079ad78 262 case "$arg" in
33e0ca61
ILT
263 -o)
264 $echo "$modename: you cannot specify the output filename with \`-o'" 1>&2
265 $echo "$help" 1>&2
266 exit 1
267 ;;
268
269 -static)
33e0ca61
ILT
270 build_old_libs=yes
271 continue
272 ;;
273 esac
274
275 # Accept the current argument as the source file.
276 lastarg="$srcfile"
277 srcfile="$arg"
278
279 # Aesthetically quote the previous argument.
280
281 # Backslashify any backslashes, double quotes, and dollar signs.
282 # These are the only characters that are still specially
283 # interpreted inside of double-quoted scrings.
284 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
285
286 # Double-quote args containing other shell metacharacters.
287 # Many Bourne shells cannot handle close brackets correctly in scan
288 # sets, so we specify it separately.
289 case "$lastarg" in
290 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
291 lastarg="\"$lastarg\""
292 ;;
6079ad78
ILT
293 esac
294
33e0ca61
ILT
295 # Add the previous argument to base_compile.
296 if test -z "$base_compile"; then
297 base_compile="$lastarg"
298 else
299 base_compile="$base_compile $lastarg"
300 fi
6079ad78
ILT
301 done
302
303 # Get the name of the library object.
33e0ca61 304 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
6079ad78
ILT
305
306 # Recognize several different file suffixes.
33e0ca61 307 xform='[cCFSfms]'
6079ad78 308 case "$libobj" in
33e0ca61
ILT
309 *.ada) xform=ada ;;
310 *.adb) xform=adb ;;
311 *.ads) xform=ads ;;
312 *.asm) xform=asm ;;
313 *.c++) xform=c++ ;;
6079ad78
ILT
314 *.cc) xform=cc ;;
315 *.cpp) xform=cpp ;;
316 *.cxx) xform=cxx ;;
317 *.f90) xform=f90 ;;
33e0ca61 318 *.for) xform=for ;;
6079ad78
ILT
319 esac
320
33e0ca61 321 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
6079ad78
ILT
322
323 case "$libobj" in
99e9c6f7 324 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
6079ad78 325 *)
33e0ca61 326 $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2
6079ad78
ILT
327 exit 1
328 ;;
329 esac
330
331 if test -z "$base_compile"; then
33e0ca61
ILT
332 $echo "$modename: you must specify a compilation command" 1>&2
333 $echo "$help" 1>&2
6079ad78
ILT
334 exit 1
335 fi
336
337 # Delete any leftover library objects.
338 if test "$build_old_libs" = yes; then
339 $run $rm $obj $libobj
340 trap "$run $rm $obj $libobj; exit 1" 1 2 15
341 else
342 $run $rm $libobj
343 trap "$run $rm $libobj; exit 1" 1 2 15
344 fi
345
99e9c6f7
ILT
346 if test -n "$fix_srcfile_path"; then
347 eval srcfile=\"$fix_srcfile_path\"
348 fi
349
6079ad78
ILT
350 # Only build a PIC object if we are building libtool libraries.
351 if test "$build_libtool_libs" = yes; then
33e0ca61
ILT
352 # Without this assignment, base_compile gets emptied.
353 fbsd_hideous_sh_bug=$base_compile
354
6079ad78
ILT
355 # All platforms use -DPIC, to notify preprocessed assembler code.
356 $show "$base_compile$pic_flag -DPIC $srcfile"
33e0ca61 357 if $run eval "$base_compile\$pic_flag -DPIC \$srcfile"; then :
6079ad78 358 else
33e0ca61
ILT
359 test -n "$obj" && $run $rm $obj
360 exit 1
6079ad78
ILT
361 fi
362
363 # If we have no pic_flag, then copy the object into place and finish.
364 if test -z "$pic_flag"; then
33e0ca61
ILT
365 $show "$LN_S $obj $libobj"
366 $run $LN_S $obj $libobj
367 exit $?
6079ad78
ILT
368 fi
369
370 # Just move the object, then go on to compile the next one
371 $show "$mv $obj $libobj"
99e9c6f7 372 $run $mv $obj $libobj || exit $?
33e0ca61
ILT
373
374 # Allow error messages only from the first compilation.
375 suppress_output=' >/dev/null 2>&1'
6079ad78
ILT
376 fi
377
378 # Only build a position-dependent object if we build old libraries.
379 if test "$build_old_libs" = yes; then
33e0ca61
ILT
380 # Suppress compiler output if we already did a PIC compilation.
381 $show "$base_compile $srcfile$suppress_output"
382 if $run eval "$base_compile \$srcfile$suppress_output"; then :
6079ad78
ILT
383 else
384 $run $rm $obj $libobj
385 exit 1
386 fi
387 fi
388
33e0ca61
ILT
389 # Create an invalid libtool object if no PIC, so that we do not
390 # accidentally link it into a program.
6079ad78
ILT
391 if test "$build_libtool_libs" != yes; then
392 $show "echo timestamp > $libobj"
33e0ca61 393 $run eval "echo timestamp > \$libobj" || exit $?
6079ad78
ILT
394 fi
395
396 exit 0
397 ;;
398
399 # libtool link mode
400 link)
33e0ca61
ILT
401 modename="$modename: link"
402 CC="$nonopt"
403 allow_undefined=yes
404 compile_command="$CC"
405 finalize_command="$CC"
406
6079ad78
ILT
407 compile_shlibpath=
408 finalize_shlibpath=
99e9c6f7
ILT
409 convenience=
410 old_convenience=
6079ad78 411 deplibs=
33e0ca61
ILT
412 dlfiles=
413 dlprefiles=
6079ad78 414 export_dynamic=no
99e9c6f7 415 generated=
6079ad78 416 hardcode_libdirs=
6079ad78
ILT
417 libobjs=
418 link_against_libtool_libs=
6079ad78
ILT
419 ltlibs=
420 objs=
421 prev=
422 prevarg=
33e0ca61
ILT
423 release=
424 rpath=
6079ad78
ILT
425 perm_rpath=
426 temp_rpath=
427 vinfo=
428
429 # We need to know -static, to get the right output filenames.
430 for arg
431 do
432 case "$arg" in
33e0ca61
ILT
433 -all-static | -static)
434 if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
435 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
436 fi
6079ad78 437 build_libtool_libs=no
33e0ca61 438 build_old_libs=yes
6079ad78
ILT
439 break
440 ;;
441 esac
442 done
443
33e0ca61
ILT
444 # See if our shared archives depend on static archives.
445 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
446
447 # Go through the arguments, transforming them on the way.
99e9c6f7
ILT
448 while test $# -gt 0; do
449 arg="$1"
450 shift
451
6079ad78
ILT
452 # If the previous option needs an argument, assign it.
453 if test -n "$prev"; then
33e0ca61
ILT
454 case "$prev" in
455 output)
456 compile_command="$compile_command @OUTPUT@"
457 finalize_command="$finalize_command @OUTPUT@"
458 ;;
459 esac
6079ad78 460
33e0ca61
ILT
461 case "$prev" in
462 dlfiles|dlprefiles)
463 case "$arg" in
464 *.la | *.lo) ;; # We handle these cases below.
465 *)
466 dlprefiles="$dlprefiles $arg"
467 test "$prev" = dlfiles && dlfiles="$dlfiles $arg"
468 prev=
469 ;;
470 esac
471 ;;
472 release)
473 release="-$arg"
474 prev=
475 continue
476 ;;
477 rpath)
478 rpath="$rpath $arg"
479 prev=
480 continue
481 ;;
482 *)
483 eval "$prev=\"\$arg\""
484 prev=
485 continue
486 ;;
487 esac
6079ad78
ILT
488 fi
489
6079ad78
ILT
490 prevarg="$arg"
491
492 case "$arg" in
33e0ca61
ILT
493 -all-static)
494 if test -n "$link_static_flag"; then
495 compile_command="$compile_command $link_static_flag"
496 finalize_command="$finalize_command $link_static_flag"
497 fi
498 continue
499 ;;
6079ad78 500
33e0ca61
ILT
501 -allow-undefined)
502 # FIXME: remove this flag sometime in the future.
503 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
6079ad78
ILT
504 continue
505 ;;
506
33e0ca61
ILT
507 -dlopen)
508 prev=dlfiles
509 continue
510 ;;
6079ad78 511
33e0ca61
ILT
512 -dlpreopen)
513 prev=dlprefiles
514 continue
515 ;;
6079ad78 516
33e0ca61
ILT
517 -export-dynamic)
518 if test "$export_dynamic" != yes; then
519 export_dynamic=yes
520 if test -n "$export_dynamic_flag_spec"; then
521 eval arg=\"$export_dynamic_flag_spec\"
522 else
523 arg=
524 fi
6079ad78 525
33e0ca61
ILT
526 # Add the symbol object into the linking commands.
527 compile_command="$compile_command @SYMFILE@"
528 finalize_command="$finalize_command @SYMFILE@"
529 fi
530 ;;
6079ad78 531
33e0ca61
ILT
532 -L*)
533 dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'`
534 case "$dir" in
99e9c6f7 535 /* | [A-Za-z]:[/\\]*)
33e0ca61
ILT
536 # Add the corresponding hardcode_libdir_flag, if it is not identical.
537 ;;
538 *)
539 $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2
540 exit 1
541 ;;
542 esac
543 deplibs="$deplibs $arg"
544 ;;
6079ad78 545
33e0ca61 546 -l*) deplibs="$deplibs $arg" ;;
6079ad78 547
33e0ca61
ILT
548 -no-undefined)
549 allow_undefined=no
6079ad78
ILT
550 continue
551 ;;
552
33e0ca61 553 -o) prev=output ;;
6079ad78 554
33e0ca61
ILT
555 -release)
556 prev=release
557 continue
6079ad78
ILT
558 ;;
559
33e0ca61
ILT
560 -rpath)
561 prev=rpath
562 continue
563 ;;
6079ad78 564
33e0ca61
ILT
565 -static)
566 # If we have no pic_flag, then this is the same as -all-static.
567 if test -z "$pic_flag" && test -n "$link_static_flag"; then
568 compile_command="$compile_command $link_static_flag"
569 finalize_command="$finalize_command $link_static_flag"
570 fi
571 continue
6079ad78
ILT
572 ;;
573
33e0ca61
ILT
574 -version-info)
575 prev=vinfo
576 continue
577 ;;
6079ad78 578
33e0ca61
ILT
579 # Some other compiler flag.
580 -* | +*)
581 # Unknown arguments in both finalize_command and compile_command need
582 # to be aesthetically quoted because they are evaled later.
583 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
584 case "$arg" in
585 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
586 arg="\"$arg\""
587 ;;
588 esac
589 ;;
6079ad78 590
99e9c6f7 591 *.o | *.obj | *.a | *.lib)
33e0ca61
ILT
592 # A standard object.
593 objs="$objs $arg"
594 ;;
6079ad78 595
33e0ca61
ILT
596 *.lo)
597 # A library object.
598 if test "$prev" = dlfiles; then
599 dlfiles="$dlfiles $arg"
600 if test "$build_libtool_libs" = yes; then
601 prev=
602 continue
603 else
604 # If libtool objects are unsupported, then we need to preload.
605 prev=dlprefiles
606 fi
6079ad78
ILT
607 fi
608
33e0ca61
ILT
609 if test "$prev" = dlprefiles; then
610 # Preload the old-style object.
99e9c6f7 611 dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
33e0ca61 612 prev=
6079ad78 613 fi
33e0ca61
ILT
614 libobjs="$libobjs $arg"
615 ;;
6079ad78 616
33e0ca61
ILT
617 *.la)
618 # A libtool-controlled library.
6079ad78 619
33e0ca61
ILT
620 dlname=
621 libdir=
622 library_names=
623 old_library=
6079ad78 624
33e0ca61 625 # Check to see that this really is a libtool archive.
99e9c6f7 626 if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
33e0ca61
ILT
627 else
628 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
629 exit 1
630 fi
6079ad78 631
33e0ca61
ILT
632 # If there is no directory component, then add one.
633 case "$arg" in
634 */* | *\\*) . $arg ;;
635 *) . ./$arg ;;
636 esac
6079ad78 637
33e0ca61
ILT
638 # Get the name of the library we link against.
639 linklib=
640 for l in $old_library $library_names; do
641 linklib="$l"
642 done
6079ad78 643
33e0ca61
ILT
644 if test -z "$linklib"; then
645 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
646 exit 1
647 fi
6079ad78 648
33e0ca61
ILT
649 # Find the relevant object directory and library name.
650 name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
651 dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
652 if test "X$dir" = "X$arg"; then
653 dir="$objdir"
654 else
655 dir="$dir/$objdir"
656 fi
6079ad78 657
99e9c6f7
ILT
658 if test -z "$libdir"; then
659 # It is a libtool convenience library, so add in its objects.
660 convenience="$convenience $dir/$old_library"l
661 old_convenience="$old_convenience $dir/$old_library"
662 compile_command="$compile_command $dir/$old_library"
663 finalize_command="$finalize_command $dir/$old_library"
664 continue
665 fi
666
33e0ca61
ILT
667 # This library was specified with -dlopen.
668 if test "$prev" = dlfiles; then
669 dlfiles="$dlfiles $arg"
670 if test -z "$dlname"; then
671 # If there is no dlname, we need to preload.
672 prev=dlprefiles
673 else
674 # We should not create a dependency on this library, but we
675 # may need any libraries it requires.
676 compile_command="$compile_command$dependency_libs"
677 finalize_command="$finalize_command$dependency_libs"
678 prev=
679 continue
680 fi
681 fi
6079ad78 682
33e0ca61
ILT
683 # The library was specified with -dlpreopen.
684 if test "$prev" = dlprefiles; then
685 # Prefer using a static library (so that no silly _DYNAMIC symbols
686 # are required to link).
687 if test -n "$old_library"; then
688 dlprefiles="$dlprefiles $dir/$old_library"
689 else
690 dlprefiles="$dlprefiles $dir/$linklib"
691 fi
692 prev=
693 fi
6079ad78 694
33e0ca61
ILT
695 if test "$build_libtool_libs" = yes && test -n "$library_names"; then
696 link_against_libtool_libs="$link_against_libtool_libs $arg"
697 if test -n "$shlibpath_var"; then
698 # Make sure the rpath contains only unique directories.
699 case "$temp_rpath " in
700 *" $dir "*) ;;
701 *) temp_rpath="$temp_rpath $dir" ;;
702 esac
703 fi
704
705 # This is the magic to use -rpath.
706 if test -n "$hardcode_libdir_flag_spec"; then
707 if test -n "$hardcode_libdir_separator"; then
708 if test -z "$hardcode_libdirs"; then
709 # Put the magic libdir with the hardcode flag.
710 hardcode_libdirs="$libdir"
711 libdir="@HARDCODE_LIBDIRS@"
712 else
713 # Just accumulate the unique libdirs.
714 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
715 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
716 ;;
717 *)
718 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
719 ;;
720 esac
721 libdir=
722 fi
723 fi
724
725 if test -n "$libdir"; then
726 eval flag=\"$hardcode_libdir_flag_spec\"
727
728 compile_command="$compile_command $flag"
729 finalize_command="$finalize_command $flag"
730 fi
731 elif test -n "$runpath_var"; then
732 # Do the same for the permanent run path.
733 case "$perm_rpath " in
734 *" $libdir "*) ;;
735 *) perm_rpath="$perm_rpath $libdir" ;;
736 esac
737 fi
738
739
99e9c6f7 740 lib_linked=yes
33e0ca61 741 case "$hardcode_action" in
99e9c6f7 742 immediate | unsupported)
33e0ca61
ILT
743 if test "$hardcode_direct" = no; then
744 compile_command="$compile_command $dir/$linklib"
745 elif test "$hardcode_minus_L" = no; then
1e490350
JL
746 case "$host" in
747 *-*-sunos*)
748 compile_shlibpath="$compile_shlibpath$dir:"
749 ;;
750 esac
33e0ca61
ILT
751 compile_command="$compile_command -L$dir -l$name"
752 elif test "$hardcode_shlibpath_var" = no; then
753 compile_shlibpath="$compile_shlibpath$dir:"
754 compile_command="$compile_command -l$name"
99e9c6f7
ILT
755 else
756 lib_linked=no
33e0ca61
ILT
757 fi
758 ;;
759
760 relink)
761 # We need an absolute path.
762 case "$dir" in
99e9c6f7 763 /* | [A-Za-z]:[/\\]*) ;;
33e0ca61
ILT
764 *)
765 absdir=`cd "$dir" && pwd`
766 if test -z "$absdir"; then
767 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
768 exit 1
769 fi
770 dir="$absdir"
771 ;;
772 esac
773
774 if test "$hardcode_direct" = yes; then
775 compile_command="$compile_command $dir/$linklib"
776 elif test "$hardcode_minus_L" = yes; then
777 compile_command="$compile_command -L$dir -l$name"
778 elif test "$hardcode_shlibpath_var" = yes; then
779 compile_shlibpath="$compile_shlibpath$dir:"
780 compile_command="$compile_command -l$name"
99e9c6f7
ILT
781 else
782 lib_linked=no
33e0ca61
ILT
783 fi
784 ;;
785
99e9c6f7
ILT
786 *)
787 lib_linked=no
788 ;;
33e0ca61
ILT
789 esac
790
99e9c6f7
ILT
791 if test "$lib_linked" != yes; then
792 $echo "$modename: configuration error: unsupported hardcode properties"
793 exit 1
794 fi
795
33e0ca61
ILT
796 # Finalize command for both is simple: just hardcode it.
797 if test "$hardcode_direct" = yes; then
798 finalize_command="$finalize_command $libdir/$linklib"
799 elif test "$hardcode_minus_L" = yes; then
800 finalize_command="$finalize_command -L$libdir -l$name"
801 elif test "$hardcode_shlibpath_var" = yes; then
802 finalize_shlibpath="$finalize_shlibpath$libdir:"
803 finalize_command="$finalize_command -l$name"
6079ad78 804 else
33e0ca61
ILT
805 # We cannot seem to hardcode it, guess we'll fake it.
806 finalize_command="$finalize_command -L$libdir -l$name"
807 fi
6079ad78
ILT
808 else
809 # Transform directly to old archives if we don't build new libraries.
810 if test -n "$pic_flag" && test -z "$old_library"; then
33e0ca61
ILT
811 $echo "$modename: cannot find static library for \`$arg'" 1>&2
812 exit 1
813 fi
814
815 # Here we assume that one of hardcode_direct or hardcode_minus_L
816 # is not unsupported. This is valid on all known static and
817 # shared platforms.
818 if test "$hardcode_direct" != unsupported; then
819 test -n "$old_library" && linklib="$old_library"
820 compile_command="$compile_command $dir/$linklib"
821 finalize_command="$finalize_command $dir/$linklib"
822 else
823 compile_command="$compile_command -L$dir -l$name"
824 finalize_command="$finalize_command -L$dir -l$name"
6079ad78 825 fi
6079ad78 826 fi
33e0ca61
ILT
827
828 # Add in any libraries that this one depends upon.
829 compile_command="$compile_command$dependency_libs"
830 finalize_command="$finalize_command$dependency_libs"
6079ad78 831 continue
33e0ca61 832 ;;
6079ad78 833
33e0ca61 834 # Some other compiler argument.
6079ad78 835 *)
33e0ca61
ILT
836 # Unknown arguments in both finalize_command and compile_command need
837 # to be aesthetically quoted because they are evaled later.
838 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
839 case "$arg" in
840 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
841 arg="\"$arg\""
842 ;;
843 esac
844 ;;
6079ad78
ILT
845 esac
846
33e0ca61
ILT
847 # Now actually substitute the argument into the commands.
848 if test -n "$arg"; then
849 compile_command="$compile_command $arg"
850 finalize_command="$finalize_command $arg"
851 fi
6079ad78
ILT
852 done
853
854 if test -n "$prev"; then
33e0ca61
ILT
855 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
856 $echo "$help" 1>&2
6079ad78
ILT
857 exit 1
858 fi
859
99e9c6f7 860 oldlibs=
6079ad78
ILT
861 case "$output" in
862 "")
33e0ca61
ILT
863 $echo "$modename: you must specify an output file" 1>&2
864 $echo "$help" 1>&2
6079ad78
ILT
865 exit 1
866 ;;
867
33e0ca61
ILT
868 */* | *\\*)
869 $echo "$modename: output file \`$output' must have no directory components" 1>&2
99e9c6f7 870 $echo "$help" 1>&2
6079ad78
ILT
871 exit 1
872 ;;
873
99e9c6f7
ILT
874 *.a | *.lib)
875 if test -n "$link_against_libtool_libs"; then
876 $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
877 exit 1
878 fi
879
880 if test -n "$deplibs"; then
881 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
882 fi
883
884 if test -n "$dlfiles$dlprefiles"; then
885 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
886 fi
887
888 if test -n "$rpath"; then
889 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
890 fi
891
892 if test -n "$vinfo"; then
893 $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
894 fi
895
896 if test -n "$release"; then
897 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
898 fi
899
33e0ca61
ILT
900 # Now set the variables for building old libraries.
901 build_libtool_libs=no
99e9c6f7 902 oldlibs="$output"
33e0ca61
ILT
903 ;;
904
6079ad78 905 *.la)
33e0ca61
ILT
906 # Make sure we only generate libraries of the form `libNAME.la'.
907 case "$output" in
908 lib*) ;;
909 *)
99e9c6f7 910 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
33e0ca61
ILT
911 $echo "$help" 1>&2
912 exit 1
913 ;;
914 esac
915
916 name=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
917 eval libname=\"$libname_spec\"
6079ad78
ILT
918
919 # All the library-specific variables (install_libdir is set above).
920 library_names=
921 old_library=
922 dlname=
6079ad78
ILT
923
924 if test -n "$objs"; then
33e0ca61
ILT
925 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
926 exit 1
6079ad78
ILT
927 fi
928
929 # How the heck are we supposed to write a wrapper for a shared library?
930 if test -n "$link_against_libtool_libs"; then
99e9c6f7 931 $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
33e0ca61 932 exit 1
6079ad78
ILT
933 fi
934
33e0ca61 935 if test -n "$dlfiles$dlprefiles"; then
99e9c6f7 936 $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
33e0ca61 937 fi
6079ad78 938
33e0ca61
ILT
939 set dummy $rpath
940 if test $# -gt 2; then
941 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
6079ad78 942 fi
33e0ca61 943 install_libdir="$2"
6079ad78 944
99e9c6f7
ILT
945 # Now set the variables for building old libraries.
946 oldlibs="$objdir/$libname.$libext"
947 if test -z "$rpath"; then
948 # Building a libtool convenience library.
949 oldlibs="$objdir/$libname.al $oldlibs"
950 build_libtool_libs=convenience
951
952 if test -n "$vinfo"; then
953 $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
954 fi
955
956 if test -n "$release"; then
957 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
958 fi
959 else
6079ad78 960
33e0ca61
ILT
961 # Parse the version information argument.
962 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
99e9c6f7 963 set dummy $vinfo 0 0 0
33e0ca61 964 IFS="$save_ifs"
6079ad78 965
99e9c6f7 966 if test -n "$8"; then
33e0ca61
ILT
967 $echo "$modename: too many parameters to \`-version-info'" 1>&2
968 $echo "$help" 1>&2
969 exit 1
970 fi
6079ad78 971
99e9c6f7
ILT
972 current="$2"
973 revision="$3"
974 age="$4"
6079ad78 975
33e0ca61
ILT
976 # Check that each of the things are valid numbers.
977 case "$current" in
978 0 | [1-9] | [1-9][0-9]*) ;;
979 *)
980 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
981 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
982 exit 1
983 ;;
984 esac
6079ad78 985
33e0ca61
ILT
986 case "$revision" in
987 0 | [1-9] | [1-9][0-9]*) ;;
988 *)
989 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
990 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
991 exit 1
992 ;;
993 esac
6079ad78 994
33e0ca61
ILT
995 case "$age" in
996 0 | [1-9] | [1-9][0-9]*) ;;
997 *)
998 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
999 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1000 exit 1
1001 ;;
1002 esac
6079ad78 1003
33e0ca61
ILT
1004 if test $age -gt $current; then
1005 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
1006 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1007 exit 1
1008 fi
6079ad78 1009
33e0ca61 1010 # Calculate the version variables.
99e9c6f7
ILT
1011 major=
1012 versuffix=
1013 verstring=
33e0ca61
ILT
1014 case "$version_type" in
1015 none) ;;
6079ad78 1016
33e0ca61 1017 linux)
33e0ca61 1018 major=.`expr $current - $age`
99e9c6f7 1019 versuffix="$major.$age.$revision"
33e0ca61 1020 ;;
6079ad78 1021
33e0ca61 1022 osf)
99e9c6f7
ILT
1023 major=`expr $current - $age`
1024 versuffix=".$current.$age.$revision"
33e0ca61
ILT
1025 verstring="$current.$age.$revision"
1026
1027 # Add in all the interfaces that we are compatible with.
1028 loop=$age
1029 while test $loop != 0; do
1030 iface=`expr $current - $loop`
1031 loop=`expr $loop - 1`
1032 verstring="$verstring:${iface}.0"
1033 done
1034
1035 # Make executables depend on our current version.
1036 verstring="$verstring:${current}.0"
1037 ;;
1038
1039 sunos)
99e9c6f7
ILT
1040 major=".$current"
1041 versuffix=".$current.$revision"
33e0ca61
ILT
1042 ;;
1043
1044 windows)
1045 # Like Linux, but with '-' rather than '.', since we only
1046 # want one extension on Windows 95.
33e0ca61
ILT
1047 major=`expr $current - $age`
1048 versuffix="-$major-$age-$revision"
1049 ;;
1050
1051 *)
1052 $echo "$modename: unknown library version type \`$version_type'" 1>&2
1053 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
1054 exit 1
1055 ;;
1056 esac
33e0ca61 1057
99e9c6f7
ILT
1058 # Clear the version info if we defaulted, and they specified a release.
1059 if test -z "$vinfo" && test -n "$release"; then
33e0ca61
ILT
1060 major=
1061 versuffix=
99e9c6f7 1062 verstring="0.0"
1e490350
JL
1063 case "$host" in
1064 *-*-sunos*)
ac7f389d
ILT
1065 versuffix=".0.0"
1066 ;;
1067 esac
99e9c6f7 1068 fi
33e0ca61 1069
99e9c6f7
ILT
1070 # Check to see if the archive will have undefined symbols.
1071 if test "$allow_undefined" = yes; then
1072 if test "$allow_undefined_flag" = unsupported; then
1073 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
1074 build_libtool_libs=no
1075 build_old_libs=yes
1076 fi
1077 else
1078 # Don't allow undefined symbols.
1079 allow_undefined_flag="$no_undefined_flag"
1080 fi
33e0ca61 1081
99e9c6f7
ILT
1082 # Add libc to deplibs on all systems.
1083 dependency_libs="$deplibs"
1084 deplibs="$deplibs -lc"
33e0ca61 1085 fi
6079ad78
ILT
1086
1087 # Create the output directory, or remove our outputs if we need to.
1088 if test -d $objdir; then
99e9c6f7
ILT
1089 $show "${rm}r $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*"
1090 $run ${rm}r $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*
6079ad78
ILT
1091 else
1092 $show "$mkdir $objdir"
33e0ca61 1093 $run $mkdir $objdir
99e9c6f7
ILT
1094 status=$?
1095 if test $status -ne 0 && test ! -d $objdir; then
1096 exit $status
33e0ca61 1097 fi
6079ad78
ILT
1098 fi
1099
1100 if test "$build_libtool_libs" = yes; then
99e9c6f7
ILT
1101 # Get the real and link names of the library.
1102 eval library_names=\"$library_names_spec\"
1103 set dummy $library_names
1104 realname="$2"
1105 shift; shift
1106
1107 if test -n "$soname_spec"; then
1108 eval soname=\"$soname_spec\"
1109 else
1110 soname="$realname"
1111 fi
6079ad78 1112
99e9c6f7 1113 lib="$objdir/$realname"
6079ad78
ILT
1114 for link
1115 do
1116 linknames="$linknames $link"
1117 done
1118
99e9c6f7
ILT
1119 # Use standard objects if they are PIC.
1120 test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e "$los2o" -e 's/ $//g'`
6079ad78 1121
99e9c6f7
ILT
1122 # Transform .lo files to .o files.
1123 test "$build_old_libs" = yes && oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'`
1124
1125 if test -n "$whole_archive_flag_spec"; then
1126 if test -n "$convenience"; then
1127 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
1128 fi
1129 else
1130 for xlib in $convenience; do
1131 # Extract the objects.
1132 xdir="$xlib"x
1133 generated="$generated $xdir"
1134 xlib=`echo "$xlib" | $Xsed -e 's%^.*/%%'`
1135
1136 $show "${rm}r $xdir"
1137 $run ${rm}r "$xdir"
1138 $show "mkdir $xdir"
1139 $run mkdir "$xdir"
1140 status=$?
1141 if test $status -ne 0 && test ! -d "$xdir"; then
1142 exit $status
1143 fi
1144 $show "(cd $xdir && $AR x ../$xlib)"
1145 $run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $?
1146
1147 libobjs="$libobjs `echo $xdir/*`"
1148 done
1149 fi
6079ad78 1150
99e9c6f7
ILT
1151 # Do each of the archive commands.
1152 eval cmds=\"$archive_cmds\"
1153 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1154 for cmd in $cmds; do
1155 IFS="$save_ifs"
1156 $show "$cmd"
1157 $run eval "$cmd" || exit $?
1158 done
1159 IFS="$save_ifs"
1160
1161 # Create links to the real library.
1162 for linkname in $linknames; do
33e0ca61 1163 if test "$realname" != "$linkname"; then
99e9c6f7
ILT
1164 $show "(cd $objdir && $LN_S $realname $linkname)"
1165 $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $?
1166 fi
1167 done
6079ad78 1168
99e9c6f7
ILT
1169 # If -export-dynamic was specified, set the dlname.
1170 if test "$export_dynamic" = yes; then
1171 # On all known operating systems, these are identical.
1172 dlname="$soname"
1173 fi
6079ad78
ILT
1174 fi
1175 ;;
1176
99e9c6f7 1177 *.lo | *.o | *.obj)
6079ad78 1178 if test -n "$link_against_libtool_libs"; then
99e9c6f7 1179 $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
33e0ca61 1180 exit 1
6079ad78
ILT
1181 fi
1182
1183 if test -n "$deplibs"; then
99e9c6f7 1184 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
6079ad78
ILT
1185 fi
1186
33e0ca61 1187 if test -n "$dlfiles$dlprefiles"; then
99e9c6f7 1188 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
33e0ca61
ILT
1189 fi
1190
1191 if test -n "$rpath"; then
99e9c6f7 1192 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
6079ad78
ILT
1193 fi
1194
1195 if test -n "$vinfo"; then
99e9c6f7 1196 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
33e0ca61
ILT
1197 fi
1198
1199 if test -n "$release"; then
99e9c6f7 1200 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
6079ad78
ILT
1201 fi
1202
1203 case "$output" in
1204 *.lo)
33e0ca61
ILT
1205 if test -n "$objs"; then
1206 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
1207 exit 1
1208 fi
1209 libobj="$output"
99e9c6f7 1210 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
33e0ca61 1211 ;;
6079ad78
ILT
1212 *)
1213 libobj=
33e0ca61
ILT
1214 obj="$output"
1215 ;;
6079ad78
ILT
1216 esac
1217
1218 # Delete the old objects.
1219 $run $rm $obj $libobj
1220
1221 # Create the old-style object.
99e9c6f7 1222 reload_objs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'`
6079ad78
ILT
1223
1224 output="$obj"
33e0ca61 1225 eval cmds=\"$reload_cmds\"
6079ad78
ILT
1226 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1227 for cmd in $cmds; do
1228 IFS="$save_ifs"
1229 $show "$cmd"
33e0ca61 1230 $run eval "$cmd" || exit $?
6079ad78
ILT
1231 done
1232 IFS="$save_ifs"
1233
1234 # Exit if we aren't doing a library object file.
1235 test -z "$libobj" && exit 0
1236
1237 if test "$build_libtool_libs" != yes; then
1238 # Create an invalid libtool object if no PIC, so that we don't
1239 # accidentally link it into a program.
33e0ca61
ILT
1240 $show "echo timestamp > $libobj"
1241 $run eval "echo timestamp > $libobj" || exit $?
1242 exit 0
6079ad78
ILT
1243 fi
1244
1245 if test -n "$pic_flag"; then
33e0ca61
ILT
1246 # Only do commands if we really have different PIC objects.
1247 reload_objs="$libobjs"
1248 output="$libobj"
1249 eval cmds=\"$reload_cmds\"
6079ad78
ILT
1250 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1251 for cmd in $cmds; do
1252 IFS="$save_ifs"
1253 $show "$cmd"
1254 $run eval "$cmd" || exit $?
1255 done
1256 IFS="$save_ifs"
1257 else
1258 # Just create a symlink.
1259 $show "$LN_S $obj $libobj"
99e9c6f7 1260 $run $LN_S $obj $libobj || exit $?
6079ad78
ILT
1261 fi
1262
1263 exit 0
1264 ;;
1265
1266 *)
33e0ca61 1267 if test -n "$vinfo"; then
99e9c6f7 1268 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
6079ad78
ILT
1269 fi
1270
33e0ca61 1271 if test -n "$release"; then
99e9c6f7 1272 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
6079ad78
ILT
1273 fi
1274
33e0ca61
ILT
1275 if test -n "$rpath"; then
1276 # If the user specified any rpath flags, then add them.
1277 for libdir in $rpath; do
1278 if test -n "$hardcode_libdir_flag_spec"; then
1279 if test -n "$hardcode_libdir_separator"; then
1280 if test -z "$hardcode_libdirs"; then
1281 # Put the magic libdir with the hardcode flag.
1282 hardcode_libdirs="$libdir"
1283 libdir="@HARDCODE_LIBDIRS@"
1284 else
1285 # Just accumulate the unique libdirs.
1286 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
1287 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1288 ;;
1289 *)
1290 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1291 ;;
1292 esac
1293 libdir=
1294 fi
1295 fi
1296
1297 if test -n "$libdir"; then
1298 eval flag=\"$hardcode_libdir_flag_spec\"
1299
1300 compile_command="$compile_command $flag"
1301 finalize_command="$finalize_command $flag"
1302 fi
1303 elif test -n "$runpath_var"; then
1304 case "$perm_rpath " in
1305 *" $libdir "*) ;;
1306 *) perm_rpath="$perm_rpath $libdir" ;;
1307 esac
1308 fi
1309 done
6079ad78
ILT
1310 fi
1311
33e0ca61
ILT
1312 # Substitute the hardcoded libdirs into the compile commands.
1313 if test -n "$hardcode_libdir_separator"; then
1314 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1315 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1316 fi
6079ad78 1317
33e0ca61
ILT
1318 if test -n "$libobjs" && test "$build_old_libs" = yes; then
1319 # Transform all the library objects into standard objects.
99e9c6f7
ILT
1320 compile_command=`$echo "X$compile_command " | $Xsed -e "$los2o" -e 's/ $//'`
1321 finalize_command=`$echo "X$finalize_command " | $Xsed -e "$los2o" -e 's/ $//'`
33e0ca61
ILT
1322 fi
1323
1324 if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then
1325 dlsyms="${output}S.c"
1326 else
1327 dlsyms=
1328 fi
1329
1330 if test -n "$dlsyms"; then
1331 # Add our own program objects to the preloaded list.
99e9c6f7 1332 dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e "$los2o" -e 's/ $//'`
33e0ca61
ILT
1333
1334 # Discover the nlist of each of the dlfiles.
1335 nlist="$objdir/${output}.nm"
6079ad78 1336
33e0ca61
ILT
1337 if test -d $objdir; then
1338 $show "$rm $nlist ${nlist}T"
1339 $run $rm "$nlist" "${nlist}T"
1340 else
1341 $show "$mkdir $objdir"
1342 $run $mkdir $objdir
6079ad78 1343 status=$?
99e9c6f7 1344 if test $status -ne 0 && test ! -d $objdir; then
33e0ca61
ILT
1345 exit $status
1346 fi
6079ad78 1347 fi
33e0ca61
ILT
1348
1349 for arg in $dlprefiles; do
1350 $show "extracting global C symbols from \`$arg'"
1351 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
1352 done
1353
1354 # Parse the name list into a source file.
1355 $show "creating $objdir/$dlsyms"
1356 if test -z "$run"; then
1357 # Make sure we at least have an empty file.
1358 test -f "$nlist" || : > "$nlist"
1359
1360 # Try sorting and uniquifying the output.
1361 if sort "$nlist" | uniq > "$nlist"T; then
1362 mv -f "$nlist"T "$nlist"
1363 wcout=`wc "$nlist" 2>/dev/null`
1364 count=`echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'`
1365 (test "$count" -ge 0) 2>/dev/null || count=-1
1366 else
1367 $rm "$nlist"T
1368 count=-1
1369 fi
1370
1371 case "$dlsyms" in
1372 "") ;;
1373 *.c)
1374 $echo > "$objdir/$dlsyms" "\
1375/* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */
1376/* Generated by $PROGRAM - GNU $PACKAGE $VERSION */
1377
1378#ifdef __cplusplus
1379extern \"C\" {
1380#endif
1381
1382/* Prevent the only kind of declaration conflicts we can make. */
1383#define dld_preloaded_symbol_count some_other_symbol
1384#define dld_preloaded_symbols some_other_symbol
1385
1386/* External symbol declarations for the compiler. */\
1387"
1388
1389 if test -f "$nlist"; then
1390 sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms"
1391 else
1392 echo '/* NONE */' >> "$objdir/$dlsyms"
1393 fi
1394
1395 $echo >> "$objdir/$dlsyms" "\
1396
1397#undef dld_preloaded_symbol_count
1398#undef dld_preloaded_symbols
1399
1400#if defined (__STDC__) && __STDC__
1401# define __ptr_t void *
1402#else
1403# define __ptr_t char *
1404#endif
1405
1406/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */
1407int dld_preloaded_symbol_count = $count;
1408
1409/* The mapping between symbol names and symbols. */
1410struct {
1411 char *name;
1412 __ptr_t address;
1413}
1414dld_preloaded_symbols[] =
1415{\
1416"
1417
1418 if test -f "$nlist"; then
1419 sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
1420 fi
1421
1422 $echo >> "$objdir/$dlsyms" "\
1423 {0, (__ptr_t) 0}
1424};
1425
1426#ifdef __cplusplus
1427}
1428#endif\
1429"
1430 ;;
1431
1432 *)
1433 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
1434 exit 1
1435 ;;
1436 esac
1437 fi
1438
1439 # Now compile the dynamic symbol file.
1440 $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")"
1441 $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $?
1442
1443 # Transform the symbol file into the correct name.
99e9c6f7
ILT
1444 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"`
1445 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"`
33e0ca61
ILT
1446 elif test "$export_dynamic" != yes; then
1447 test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2
1448 else
1449 # We keep going just in case the user didn't refer to
1450 # dld_preloaded_symbols. The linker will fail if global_symbol_pipe
1451 # really was required.
1452 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
1453
1454 # Nullify the symbol file.
1455 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1456 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1457 fi
1458
1459 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
1460 # Replace the output file specification.
1461 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1462 finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1463
1464 # We have no uninstalled library dependencies, so finalize right now.
1465 $show "$compile_command"
1466 $run eval "$compile_command"
1467 exit $?
6079ad78
ILT
1468 fi
1469
1470 # Replace the output file specification.
33e0ca61
ILT
1471 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'`
1472 finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'`
6079ad78
ILT
1473
1474 # Create the binary in the object directory, then wrap it.
99e9c6f7 1475 if test ! -d $objdir; then
6079ad78 1476 $show "$mkdir $objdir"
33e0ca61
ILT
1477 $run $mkdir $objdir
1478 status=$?
99e9c6f7 1479 if test $status -ne 0 && test ! -d $objdir; then
33e0ca61
ILT
1480 exit $status
1481 fi
6079ad78
ILT
1482 fi
1483
1484 if test -n "$shlibpath_var"; then
1485 # We should set the shlibpath_var
33e0ca61
ILT
1486 rpath=
1487 for dir in $temp_rpath; do
1488 case "$dir" in
99e9c6f7 1489 /* | [A-Za-z]:[/\\]*)
33e0ca61
ILT
1490 # Absolute path.
1491 rpath="$rpath$dir:"
1492 ;;
1493 *)
1494 # Relative path: add a thisdir entry.
1495 rpath="$rpath\$thisdir/$dir:"
1496 ;;
1497 esac
1498 done
1499 temp_rpath="$rpath"
6079ad78
ILT
1500 fi
1501
1502 # Delete the old output file.
1503 $run $rm $output
1504
1505 if test -n "$compile_shlibpath"; then
33e0ca61 1506 compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command"
6079ad78
ILT
1507 fi
1508 if test -n "$finalize_shlibpath"; then
33e0ca61 1509 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
6079ad78
ILT
1510 fi
1511
33e0ca61
ILT
1512 if test -n "$runpath_var" && test -n "$perm_rpath"; then
1513 # We should set the runpath_var.
1514 rpath=
1515 for dir in $perm_rpath; do
1516 rpath="$rpath$dir:"
1517 done
1518 compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command"
1519 finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command"
6079ad78
ILT
1520 fi
1521
99e9c6f7 1522 if test "$hardcode_action" = relink; then
33e0ca61
ILT
1523 # AGH! Flame the AIX and HP-UX people for me, will ya?
1524 $echo "$modename: warning: using a buggy system linker" 1>&2
1525 $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2
99e9c6f7 1526 fi
6079ad78
ILT
1527
1528 $show "$compile_command"
1529 $run eval "$compile_command" || exit $?
1530
1531 # Now create the wrapper script.
33e0ca61
ILT
1532 $show "creating $output"
1533
1534 # Quote the finalize command for shipping.
1535 finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"`
1536
1537 # Quote $echo for shipping.
1538 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
6079ad78
ILT
1539
1540 # Only actually do things if our run command is non-null.
1541 if test -z "$run"; then
33e0ca61
ILT
1542 $rm $output
1543 trap "$rm $output; exit 1" 1 2 15
6079ad78 1544
33e0ca61 1545 $echo > $output "\
99e9c6f7 1546#! $SHELL
6079ad78
ILT
1547
1548# $output - temporary wrapper script for $objdir/$output
99e9c6f7 1549# Generated by $PROGRAM - GNU $PACKAGE $VERSION
6079ad78
ILT
1550#
1551# The $output program cannot be directly executed until all the libtool
1552# libraries that it depends on are installed.
1553#
1554# This wrapper script should never be moved out of \``pwd`'.
1555# If it is, it will not operate correctly.
1556
33e0ca61
ILT
1557# Sed substitution that helps us do robust quoting. It backslashifies
1558# metacharacters that are still active within double-quoted strings.
1559Xsed='sed -e s/^X//'
1560sed_quote_subst='$sed_quote_subst'
1561
1562# The HP-UX ksh and POSIX shell print the target directory to stdout
1563# if CDPATH is set.
1564if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
1565
6079ad78 1566# This environment variable determines our operation mode.
33e0ca61 1567if test \"\$libtool_install_magic\" = \"$magic\"; then
6079ad78
ILT
1568 # install mode needs the following variables:
1569 link_against_libtool_libs='$link_against_libtool_libs'
33e0ca61 1570 finalize_command=\"$finalize_command\"
6079ad78 1571else
33e0ca61 1572 # When we are sourced in execute mode, \$file and \$echo are already set.
99e9c6f7 1573 if test \"\$libtool_execute_magic\" != \"$magic\"; then
33e0ca61
ILT
1574 echo=\"$qecho\"
1575 file=\"\$0\"
99e9c6f7
ILT
1576 # Make sure echo works.
1577 if test \"X\$1\" = X--no-reexec; then
1578 # Discard the --no-reexec flag, and continue.
1579 shift
1580 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
1581 # Yippee, \$echo works!
1582 :
1583 else
1584 # Restart under the correct shell, and then maybe \$echo will work.
1585 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
1586 fi
33e0ca61
ILT
1587 fi\
1588"
1589 $echo >> $output "\
6079ad78 1590
33e0ca61
ILT
1591 # Find the directory that this script lives in.
1592 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
1593 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
1594
1595 # Follow symbolic links until we get to the real thisdir.
1596 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
1597 while test -n \"\$file\"; do
1598 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
1599
1600 # If there was a directory component, then change thisdir.
1601 if test \"x\$destdir\" != \"x\$file\"; then
1602 case \"\$destdir\" in
99e9c6f7 1603 /* | [A-Za-z]:[/\\]*) thisdir=\"\$destdir\" ;;
33e0ca61
ILT
1604 *) thisdir=\"\$thisdir/\$destdir\" ;;
1605 esac
1606 fi
6079ad78 1607
33e0ca61
ILT
1608 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
1609 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
1610 done
6079ad78 1611
33e0ca61
ILT
1612 # Try to get the absolute directory name.
1613 absdir=\`cd \"\$thisdir\" && pwd\`
1614 test -n \"\$absdir\" && thisdir=\"\$absdir\"
6079ad78 1615
33e0ca61
ILT
1616 progdir=\"\$thisdir/$objdir\"
1617 program='$output'
6079ad78 1618
33e0ca61 1619 if test -f \"\$progdir/\$program\"; then"
6079ad78 1620
33e0ca61
ILT
1621 # Export our shlibpath_var if we have one.
1622 if test -n "$shlibpath_var" && test -n "$temp_rpath"; then
1623 $echo >> $output "\
6079ad78 1624 # Add our own library path to $shlibpath_var
33e0ca61 1625 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
6079ad78
ILT
1626
1627 # Some systems cannot cope with colon-terminated $shlibpath_var
33e0ca61 1628 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\`
6079ad78
ILT
1629
1630 export $shlibpath_var
33e0ca61
ILT
1631"
1632 fi
6079ad78 1633
33e0ca61
ILT
1634 $echo >> $output "\
1635 if test \"\$libtool_execute_magic\" != \"$magic\"; then
1636 # Run the actual program with our arguments.
6079ad78 1637
33e0ca61
ILT
1638 # Export the path to the program.
1639 PATH=\"\$progdir:\$PATH\"
1640 export PATH
6079ad78 1641
33e0ca61
ILT
1642 exec \$program \${1+\"\$@\"}
1643
1644 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
1645 exit 1
1646 fi
6079ad78
ILT
1647 else
1648 # The program doesn't exist.
33e0ca61
ILT
1649 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
1650 \$echo \"This script is just a wrapper for \$program.\" 1>&2
1651 echo \"See the $PACKAGE documentation for more information.\" 1>&2
6079ad78
ILT
1652 exit 1
1653 fi
33e0ca61
ILT
1654fi\
1655"
1656 chmod +x $output
6079ad78
ILT
1657 fi
1658 exit 0
1659 ;;
1660 esac
1661
6079ad78 1662 # See if we need to build an old-fashioned archive.
99e9c6f7
ILT
1663 for oldlib in $oldlibs; do
1664
1665 if test "$build_libtool_libs" = convenience; then
1666 oldobjs="$libobjs"
1667 addlibs="$convenience"
1668 build_libtool_libs=no
1669 else
57ea81b9 1670 oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'`
99e9c6f7
ILT
1671 addlibs="$old_convenience"
1672 fi
1673
1674 # Add in members from convenience archives.
1675 for xlib in $addlibs; do
1676 # Extract the objects.
1677 xdir="$xlib"x
1678 generated="$generated $xdir"
1679 xlib=`echo "$xlib" | $Xsed -e 's%^.*/%%'`
1680
1681 $show "${rm}r $xdir"
1682 $run ${rm}r "$xdir"
1683 $show "mkdir $xdir"
1684 $run mkdir "$xdir"
1685 status=$?
1686 if test $status -ne 0 && test ! -d "$xdir"; then
1687 exit $status
1688 fi
1689 $show "(cd $xdir && $AR x ../$xlib)"
1690 $run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $?
1691
1692 oldobjs="$oldobjs `echo $xdir/*`"
1693 done
6079ad78 1694
33e0ca61
ILT
1695 # Do each command in the archive commands.
1696 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
1697 eval cmds=\"$old_archive_from_new_cmds\"
6079ad78 1698 else
33e0ca61 1699 eval cmds=\"$old_archive_cmds\"
6079ad78 1700 fi
6079ad78
ILT
1701 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1702 for cmd in $cmds; do
1703 IFS="$save_ifs"
1704 $show "$cmd"
33e0ca61 1705 $run eval "$cmd" || exit $?
6079ad78
ILT
1706 done
1707 IFS="$save_ifs"
99e9c6f7
ILT
1708 done
1709
1710 if test -n "$generated"; then
1711 $show "${rm}r$generated"
1712 $run ${rm}r$generated
6079ad78
ILT
1713 fi
1714
1715 # Now create the libtool archive.
1716 case "$output" in
1717 *.la)
1718 old_library=
99e9c6f7 1719 test "$build_old_libs" = yes && old_library="$libname.$libext"
33e0ca61 1720 $show "creating $output"
6079ad78
ILT
1721
1722 # Only create the output if not a dry run.
1723 if test -z "$run"; then
33e0ca61 1724 $echo > $output "\
6079ad78 1725# $output - a libtool library file
99e9c6f7 1726# Generated by $PROGRAM - GNU $PACKAGE $VERSION
6079ad78
ILT
1727
1728# The name that we can dlopen(3).
1729dlname='$dlname'
1730
1731# Names of this library.
1732library_names='$library_names'
1733
1734# The name of the static archive.
1735old_library='$old_library'
1736
33e0ca61
ILT
1737# Libraries that this one depends upon.
1738dependency_libs='$dependency_libs'
1739
6079ad78
ILT
1740# Version information for $libname.
1741current=$current
1742age=$age
1743revision=$revision
1744
1745# Directory that this library needs to be installed in:
33e0ca61
ILT
1746libdir='$install_libdir'\
1747"
6079ad78
ILT
1748 fi
1749
1750 # Do a symbolic link so that the libtool archive can be found in
1751 # LD_LIBRARY_PATH before the program is installed.
1752 $show "(cd $objdir && $LN_S ../$output $output)"
99e9c6f7 1753 $run eval "(cd $objdir && $LN_S ../$output $output)" || exit $?
6079ad78
ILT
1754 ;;
1755 esac
1756 exit 0
1757 ;;
1758
1759 # libtool install mode
1760 install)
33e0ca61 1761 modename="$modename: install"
6079ad78 1762
99e9c6f7 1763 # There may be an optional sh(1) argument at the beginning of
33e0ca61 1764 # install_prog (especially on Windows NT).
1e490350 1765 if test "$nonopt" = "$SHELL" || test "$nonopt" = "/bin/sh"; then
33e0ca61
ILT
1766 # Aesthetically quote it.
1767 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
1768 case "$arg" in
1769 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1770 arg="\"$arg\""
1771 ;;
1772 esac
1773 install_prog="$arg "
1774 arg="$1"
bf9abf2c 1775 shift
33e0ca61
ILT
1776 else
1777 install_prog=
1778 arg="$nonopt"
bf9abf2c 1779 fi
6079ad78 1780
33e0ca61
ILT
1781 # The real first argument should be the name of the installation program.
1782 # Aesthetically quote it.
1783 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1784 case "$arg" in
1785 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1786 arg="\"$arg\""
1787 ;;
1788 esac
1789 install_prog="$install_prog$arg"
1790
6079ad78
ILT
1791 # We need to accept at least all the BSD install flags.
1792 dest=
1793 files=
1794 opts=
1795 prev=
1796 install_type=
99e9c6f7 1797 isdir=no
6079ad78
ILT
1798 stripme=
1799 for arg
1800 do
1801 if test -n "$dest"; then
1802 files="$files $dest"
33e0ca61
ILT
1803 dest="$arg"
1804 continue
6079ad78
ILT
1805 fi
1806
1807 case "$arg" in
1808 -d) isdir=yes ;;
1809 -f) prev="-f" ;;
1810 -g) prev="-g" ;;
1811 -m) prev="-m" ;;
1812 -o) prev="-o" ;;
1813 -s)
33e0ca61
ILT
1814 stripme=" -s"
1815 continue
1816 ;;
6079ad78
ILT
1817 -*) ;;
1818
1819 *)
33e0ca61
ILT
1820 # If the previous option needed an argument, then skip it.
1821 if test -n "$prev"; then
1822 prev=
1823 else
1824 dest="$arg"
1825 continue
1826 fi
6079ad78
ILT
1827 ;;
1828 esac
33e0ca61
ILT
1829
1830 # Aesthetically quote the argument.
1831 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1832 case "$arg" in
1833 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1834 arg="\"$arg\""
1835 ;;
1836 esac
6079ad78
ILT
1837 install_prog="$install_prog $arg"
1838 done
1839
1840 if test -z "$install_prog"; then
33e0ca61
ILT
1841 $echo "$modename: you must specify an install program" 1>&2
1842 $echo "$help" 1>&2
6079ad78
ILT
1843 exit 1
1844 fi
1845
1846 if test -n "$prev"; then
33e0ca61
ILT
1847 $echo "$modename: the \`$prev' option requires an argument" 1>&2
1848 $echo "$help" 1>&2
6079ad78
ILT
1849 exit 1
1850 fi
1851
1852 if test -z "$files"; then
1853 if test -z "$dest"; then
33e0ca61 1854 $echo "$modename: no file or destination specified" 1>&2
6079ad78 1855 else
33e0ca61 1856 $echo "$modename: you must specify a destination" 1>&2
6079ad78 1857 fi
33e0ca61 1858 $echo "$help" 1>&2
6079ad78
ILT
1859 exit 1
1860 fi
1861
1862 # Strip any trailing slash from the destination.
33e0ca61 1863 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
6079ad78
ILT
1864
1865 # Check to see that the destination is a directory.
1866 test -d "$dest" && isdir=yes
99e9c6f7 1867 if test "$isdir" = yes; then
6079ad78
ILT
1868 destdir="$dest"
1869 destname=
1870 else
33e0ca61
ILT
1871 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
1872 test "X$destdir" = "X$dest" && destdir=.
1873 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
6079ad78
ILT
1874
1875 # Not a directory, so check to see that there is only one file specified.
1876 set dummy $files
1877 if test $# -gt 2; then
33e0ca61
ILT
1878 $echo "$modename: \`$dest' is not a directory" 1>&2
1879 $echo "$help" 1>&2
1880 exit 1
6079ad78
ILT
1881 fi
1882 fi
1883 case "$destdir" in
99e9c6f7 1884 /* | [A-Za-z]:[/\\]*) ;;
6079ad78
ILT
1885 *)
1886 for file in $files; do
33e0ca61
ILT
1887 case "$file" in
1888 *.lo) ;;
1889 *)
1890 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
1891 $echo "$help" 1>&2
1892 exit 1
1893 ;;
1894 esac
6079ad78
ILT
1895 done
1896 ;;
1897 esac
1898
33e0ca61
ILT
1899 # This variable tells wrapper scripts just to set variables rather
1900 # than running their programs.
1901 libtool_install_magic="$magic"
1902
6079ad78
ILT
1903 staticlibs=
1904 future_libdirs=
1905 current_libdirs=
1906 for file in $files; do
1907
1908 # Do each installation.
1909 case "$file" in
99e9c6f7 1910 *.a | *.lib)
33e0ca61
ILT
1911 # Do the static libraries later.
1912 staticlibs="$staticlibs $file"
1913 ;;
6079ad78
ILT
1914
1915 *.la)
33e0ca61 1916 # Check to see that this really is a libtool archive.
99e9c6f7 1917 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
33e0ca61
ILT
1918 else
1919 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
1920 $echo "$help" 1>&2
1921 exit 1
1922 fi
6079ad78 1923
33e0ca61
ILT
1924 library_names=
1925 old_library=
1926 # If there is no directory component, then add one.
1927 case "$file" in
1928 */* | *\\*) . $file ;;
1929 *) . ./$file ;;
1930 esac
6079ad78 1931
33e0ca61
ILT
1932 # Add the libdir to current_libdirs if it is the destination.
1933 if test "X$destdir" = "X$libdir"; then
1934 case "$current_libdirs " in
1935 *" $libdir "*) ;;
1936 *) current_libdirs="$current_libdirs $libdir" ;;
1937 esac
1938 else
1939 # Note the libdir as a future libdir.
1940 case "$future_libdirs " in
1941 *" $libdir "*) ;;
1942 *) future_libdirs="$future_libdirs $libdir" ;;
1943 esac
1944 fi
6079ad78 1945
33e0ca61
ILT
1946 dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
1947 test "X$dir" = "X$file/" && dir=
1948 dir="$dir$objdir"
1949
1950 # See the names of the shared library.
1951 set dummy $library_names
1952 if test -n "$2"; then
1953 realname="$2"
1954 shift
1955 shift
1956
1957 # Install the shared library and build the symlinks.
1958 $show "$install_prog $dir/$realname $destdir/$realname"
1959 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
1960 test "X$dlname" = "X$realname" && dlname=
6079ad78 1961
33e0ca61
ILT
1962 if test $# -gt 0; then
1963 # Delete the old symlinks.
6079ad78
ILT
1964 rmcmd="$rm"
1965 for linkname
1966 do
99e9c6f7
ILT
1967 if test "X$linkname" != "X$realname"; then
1968 rmcmd="$rmcmd $destdir/$linkname"
1969 fi
6079ad78
ILT
1970 done
1971 $show "$rmcmd"
1972 $run $rmcmd
1973
33e0ca61
ILT
1974 # ... and create new ones.
1975 for linkname
1976 do
99e9c6f7
ILT
1977 if test "X$linkname" != "X$realname"; then
1978 test "X$dlname" = "X$linkname" && dlname=
1979 $show "(cd $destdir && $LN_S $realname $linkname)"
1980 $run eval "(cd $destdir && $LN_S $realname $linkname)"
1981 fi
33e0ca61
ILT
1982 done
1983 fi
1984
1985 if test -n "$dlname"; then
1986 # Install the dynamically-loadable library.
1987 $show "$install_prog $dir/$dlname $destdir/$dlname"
1988 $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $?
1989 fi
1990
1991 # Do each command in the postinstall commands.
1992 lib="$destdir/$realname"
1993 eval cmds=\"$postinstall_cmds\"
1994 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1995 for cmd in $cmds; do
1996 IFS="$save_ifs"
1997 $show "$cmd"
1998 $run eval "$cmd" || exit $?
1999 done
2000 IFS="$save_ifs"
2001 fi
6079ad78 2002
33e0ca61
ILT
2003 # Install the pseudo-library for information purposes.
2004 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
2005 $show "$install_prog $file $destdir/$name"
2006 $run eval "$install_prog $file $destdir/$name" || exit $?
6079ad78 2007
33e0ca61
ILT
2008 # Maybe install the static library, too.
2009 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
2010 ;;
6079ad78
ILT
2011
2012 *.lo)
2013 # Install (i.e. copy) a libtool object.
2014
2015 # Figure out destination file name, if it wasn't already specified.
2016 if test -n "$destname"; then
33e0ca61
ILT
2017 destfile="$destdir/$destname"
2018 else
2019 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
2020 destfile="$destdir/$destfile"
6079ad78
ILT
2021 fi
2022
33e0ca61
ILT
2023 # Deduce the name of the destination old-style object file.
2024 case "$destfile" in
2025 *.lo)
99e9c6f7 2026 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
6079ad78 2027 ;;
99e9c6f7 2028 *.o | *.obj)
33e0ca61
ILT
2029 staticdest="$destfile"
2030 destfile=
2031 ;;
2032 *)
2033 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
2034 $echo "$help" 1>&2
2035 exit 1
2036 ;;
2037 esac
6079ad78 2038
33e0ca61
ILT
2039 # Install the libtool object if requested.
2040 if test -n "$destfile"; then
2041 $show "$install_prog $file $destfile"
2042 $run eval "$install_prog $file $destfile" || exit $?
2043 fi
6079ad78 2044
33e0ca61
ILT
2045 # Install the old object if enabled.
2046 if test "$build_old_libs" = yes; then
2047 # Deduce the name of the old-style object file.
99e9c6f7 2048 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
6079ad78 2049
33e0ca61
ILT
2050 $show "$install_prog $staticobj $staticdest"
2051 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
2052 fi
2053 exit 0
2054 ;;
6079ad78
ILT
2055
2056 *)
99e9c6f7
ILT
2057 # Figure out destination file name, if it wasn't already specified.
2058 if test -n "$destname"; then
2059 destfile="$destdir/$destname"
2060 else
2061 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
2062 destfile="$destdir/$destfile"
2063 fi
2064
33e0ca61 2065 # Do a test to see if this is really a libtool program.
99e9c6f7 2066 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
33e0ca61
ILT
2067 link_against_libtool_libs=
2068 finalize_command=
2069
2070 # If there is no directory component, then add one.
2071 case "$file" in
2072 */* | *\\*) . $file ;;
2073 *) . ./$file ;;
2074 esac
2075
2076 # Check the variables that should have been set.
2077 if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then
2078 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
2079 exit 1
2080 fi
2081
2082 finalize=yes
2083 for lib in $link_against_libtool_libs; do
2084 # Check to see that each library is installed.
2085 libdir=
2086 if test -f "$lib"; then
2087 # If there is no directory component, then add one.
2088 case "$lib" in
2089 */* | *\\*) . $lib ;;
2090 *) . ./$lib ;;
2091 esac
2092 fi
2093 libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
99e9c6f7 2094 if test -n "$libdir" && test ! -f "$libfile"; then
33e0ca61
ILT
2095 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
2096 finalize=no
2097 fi
2098 done
2099
2100 if test "$hardcode_action" = relink; then
2101 if test "$finalize" = yes; then
2102 $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
2103 $show "$finalize_command"
2104 if $run eval "$finalize_command"; then :
2105 else
2106 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
2107 continue
2108 fi
2109 file="$objdir/$file"T
2110 else
2111 $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
2112 fi
2113 else
2114 # Install the binary that we compiled earlier.
2115 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
2116 fi
2117 fi
6079ad78 2118
99e9c6f7
ILT
2119 $show "$install_prog$stripme $file $destfile"
2120 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
33e0ca61 2121 ;;
6079ad78
ILT
2122 esac
2123 done
2124
2125 for file in $staticlibs; do
33e0ca61 2126 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6079ad78
ILT
2127
2128 # Set up the ranlib parameters.
2129 oldlib="$destdir/$name"
2130
33e0ca61
ILT
2131 $show "$install_prog $file $oldlib"
2132 $run eval "$install_prog \$file \$oldlib" || exit $?
6079ad78
ILT
2133
2134 # Do each command in the postinstall commands.
33e0ca61 2135 eval cmds=\"$old_postinstall_cmds\"
6079ad78
ILT
2136 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
2137 for cmd in $cmds; do
2138 IFS="$save_ifs"
2139 $show "$cmd"
2140 $run eval "$cmd" || exit $?
2141 done
2142 IFS="$save_ifs"
2143 done
2144
2145 if test -n "$future_libdirs"; then
33e0ca61 2146 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
6079ad78
ILT
2147 fi
2148
2149 if test -n "$current_libdirs"; then
2150 # Maybe just do a dry run.
2151 test -n "$run" && current_libdirs=" -n$current_libdirs"
33e0ca61
ILT
2152 exec $SHELL $0 --finish$current_libdirs
2153 exit 1
6079ad78
ILT
2154 fi
2155
2156 exit 0
2157 ;;
2158
33e0ca61
ILT
2159 # libtool finish mode
2160 finish)
2161 modename="$modename: finish"
2162 libdirs="$nonopt"
99e9c6f7 2163 admincmds=
33e0ca61
ILT
2164
2165 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2166 for dir
2167 do
2168 libdirs="$libdirs $dir"
2169 done
2170
2171 for libdir in $libdirs; do
2172 if test -n "$finish_cmds"; then
2173 # Do each command in the finish commands.
2174 eval cmds=\"$finish_cmds\"
2175 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
2176 for cmd in $cmds; do
2177 IFS="$save_ifs"
2178 $show "$cmd"
99e9c6f7
ILT
2179 $run eval "$cmd" || admincmds="$admincmds
2180 $cmd"
33e0ca61
ILT
2181 done
2182 IFS="$save_ifs"
2183 fi
2184 if test -n "$finish_eval"; then
2185 # Do the single finish_eval.
2186 eval cmds=\"$finish_eval\"
99e9c6f7
ILT
2187 $run eval "$cmds" || admincmds="$admincmds
2188 $cmds"
33e0ca61
ILT
2189 fi
2190 done
2191 fi
2192
99e9c6f7 2193 echo "----------------------------------------------------------------------"
33e0ca61
ILT
2194 echo "Libraries have been installed in:"
2195 for libdir in $libdirs; do
2196 echo " $libdir"
6079ad78 2197 done
33e0ca61
ILT
2198 echo
2199 echo "To link against installed libraries in a given directory, LIBDIR,"
2200 echo "you must use the \`-LLIBDIR' flag during linking."
2201 echo
99e9c6f7 2202 echo " You will also need to do at least one of the following:"
33e0ca61
ILT
2203 if test -n "$shlibpath_var"; then
2204 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
2205 echo " during execution"
2206 fi
2207 if test -n "$runpath_var"; then
2208 echo " - add LIBDIR to the \`$runpath_var' environment variable"
2209 echo " during linking"
2210 fi
2211 if test -n "$hardcode_libdir_flag_spec"; then
2212 libdir=LIBDIR
2213 eval flag=\"$hardcode_libdir_flag_spec\"
6079ad78 2214
33e0ca61
ILT
2215 echo " - use the \`$flag' linker flag"
2216 fi
99e9c6f7
ILT
2217 if test -n "$admincmds"; then
2218 echo " - have your system administrator run these commands:$admincmds"
2219 fi
33e0ca61
ILT
2220 if test -f /etc/ld.so.conf; then
2221 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
6079ad78 2222 fi
33e0ca61
ILT
2223 echo
2224 echo "See any operating system documentation about shared libraries for"
2225 echo "more information, such as the ld(1) and ld.so(8) manual pages."
99e9c6f7 2226 echo "----------------------------------------------------------------------"
33e0ca61
ILT
2227 exit 0
2228 ;;
6079ad78 2229
33e0ca61
ILT
2230 # libtool execute mode
2231 execute)
2232 modename="$modename: execute"
2233
2234 # The first argument is the command name.
2235 cmd="$nonopt"
2236 if test -z "$cmd"; then
2237 $echo "$modename: you must specify a COMMAND" 1>&2
2238 $echo "$help"
2239 exit 1
2240 fi
6079ad78 2241
33e0ca61
ILT
2242 # Handle -dlopen flags immediately.
2243 for file in $execute_dlfiles; do
99e9c6f7 2244 if test ! -f "$file"; then
33e0ca61
ILT
2245 $echo "$modename: \`$file' is not a file" 1>&2
2246 $echo "$help" 1>&2
2247 exit 1
6079ad78
ILT
2248 fi
2249
33e0ca61
ILT
2250 dir=
2251 case "$file" in
2252 *.la)
2253 # Check to see that this really is a libtool archive.
99e9c6f7 2254 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
33e0ca61
ILT
2255 else
2256 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2257 $echo "$help" 1>&2
2258 exit 1
2259 fi
2260
2261 # Read the libtool library.
2262 dlname=
2263 library_names=
2264
2265 # If there is no directory component, then add one.
2266 case "$file" in
2267 */* | *\\*) . $file ;;
2268 *) . ./$file ;;
2269 esac
2270
2271 # Skip this library if it cannot be dlopened.
2272 if test -z "$dlname"; then
2273 # Warn if it was a shared library.
2274 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
2275 continue
2276 fi
2277
2278 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2279 test "X$dir" = "X$file" && dir=.
2280
2281 if test -f "$dir/$objdir/$dlname"; then
2282 dir="$dir/$objdir"
2283 else
2284 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
2285 exit 1
2286 fi
2287 ;;
2288
2289 *.lo)
2290 # Just add the directory containing the .lo file.
2291 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2292 test "X$dir" = "X$file" && dir=.
2293 ;;
2294
2295 *)
2296 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
2297 continue
2298 ;;
6079ad78
ILT
2299 esac
2300
33e0ca61
ILT
2301 # Get the absolute pathname.
2302 absdir=`cd "$dir" && pwd`
2303 test -n "$absdir" && dir="$absdir"
2304
2305 # Now add the directory to shlibpath_var.
2306 if eval "test -z \"\$$shlibpath_var\""; then
2307 eval "$shlibpath_var=\"\$dir\""
6079ad78 2308 else
33e0ca61 2309 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6079ad78
ILT
2310 fi
2311 done
6079ad78 2312
33e0ca61
ILT
2313 # This variable tells wrapper scripts just to set shlibpath_var
2314 # rather than running their programs.
2315 libtool_execute_magic="$magic"
6079ad78 2316
33e0ca61
ILT
2317 # Check if any of the arguments is a wrapper script.
2318 args=
2319 for file
2320 do
2321 case "$file" in
2322 -*) ;;
2323 *)
2324 # Do a test to see if this is really a libtool program.
99e9c6f7 2325 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
33e0ca61
ILT
2326 # If there is no directory component, then add one.
2327 case "$file" in
2328 */* | *\\*) . $file ;;
2329 *) . ./$file ;;
2330 esac
6079ad78 2331
33e0ca61
ILT
2332 # Transform arg to wrapped name.
2333 file="$progdir/$program"
2334 fi
2335 ;;
2336 esac
2337 # Quote arguments (to preserve shell metacharacters).
2338 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
2339 args="$args \"$file\""
2340 done
6079ad78 2341
33e0ca61
ILT
2342 if test -z "$run"; then
2343 # Export the shlibpath_var.
2344 eval "export $shlibpath_var"
2345
99e9c6f7
ILT
2346 # Restore saved enviroment variables
2347 if test "${save_LC_ALL+set}" = set; then
2348 LC_ALL="$save_LC_ALL"; export LC_ALL
2349 fi
2350 if test "${save_LANG+set}" = set; then
2351 LANG="$save_LANG"; export LANG
2352 fi
2353
33e0ca61
ILT
2354 # Now actually exec the command.
2355 eval "exec \$cmd$args"
2356
2357 $echo "$modename: cannot exec \$cmd$args"
2358 exit 1
2359 else
2360 # Display what would be done.
2361 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
2362 $echo "export $shlibpath_var"
2363 $echo "$cmd$args"
2364 exit 0
6079ad78 2365 fi
6079ad78
ILT
2366 ;;
2367
2368 # libtool uninstall mode
2369 uninstall)
33e0ca61 2370 modename="$modename: uninstall"
6079ad78
ILT
2371 rm="$nonopt"
2372 files=
2373
2374 for arg
2375 do
2376 case "$arg" in
2377 -*) rm="$rm $arg" ;;
2378 *) files="$files $arg" ;;
2379 esac
2380 done
2381
2382 if test -z "$rm"; then
33e0ca61
ILT
2383 $echo "$modename: you must specify an RM program" 1>&2
2384 $echo "$help" 1>&2
6079ad78
ILT
2385 exit 1
2386 fi
2387
2388 for file in $files; do
33e0ca61
ILT
2389 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2390 test "X$dir" = "X$file" && dir=.
2391 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6079ad78
ILT
2392
2393 rmfiles="$file"
2394
2395 case "$name" in
2396 *.la)
33e0ca61 2397 # Possibly a libtool archive, so verify it.
99e9c6f7 2398 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
33e0ca61
ILT
2399 . $dir/$name
2400
2401 # Delete the libtool libraries and symlinks.
2402 for n in $library_names; do
2403 rmfiles="$rmfiles $dir/$n"
2404 test "X$n" = "X$dlname" && dlname=
2405 done
2406 test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname"
2407 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
2408
2409 $show "$rm $rmfiles"
2410 $run $rm $rmfiles
2411
2412 if test -n "$library_names"; then
2413 # Do each command in the postuninstall commands.
2414 eval cmds=\"$postuninstall_cmds\"
2415 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
2416 for cmd in $cmds; do
2417 IFS="$save_ifs"
2418 $show "$cmd"
2419 $run eval "$cmd"
2420 done
2421 IFS="$save_ifs"
2422 fi
6079ad78 2423
33e0ca61
ILT
2424 if test -n "$old_library"; then
2425 # Do each command in the old_postuninstall commands.
2426 eval cmds=\"$old_postuninstall_cmds\"
2427 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
2428 for cmd in $cmds; do
2429 IFS="$save_ifs"
2430 $show "$cmd"
2431 $run eval "$cmd"
2432 done
2433 IFS="$save_ifs"
2434 fi
2435
2436 # FIXME: should reinstall the best remaining shared library.
2437 fi
2438 ;;
6079ad78
ILT
2439
2440 *.lo)
33e0ca61 2441 if test "$build_old_libs" = yes; then
99e9c6f7 2442 oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
33e0ca61
ILT
2443 rmfiles="$rmfiles $dir/$oldobj"
2444 fi
2445 $show "$rm $rmfiles"
2446 $run $rm $rmfiles
2447 ;;
6079ad78 2448
33e0ca61
ILT
2449 *)
2450 $show "$rm $rmfiles"
2451 $run $rm $rmfiles
2452 ;;
2453 esac
6079ad78
ILT
2454 done
2455 exit 0
2456 ;;
2457
33e0ca61
ILT
2458 "")
2459 $echo "$modename: you must specify a MODE" 1>&2
2460 $echo "$generic_help" 1>&2
6079ad78
ILT
2461 exit 1
2462 ;;
2463 esac
2464
33e0ca61
ILT
2465 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2466 $echo "$generic_help" 1>&2
6079ad78
ILT
2467 exit 1
2468fi # test -z "$show_help"
2469
2470# We need to display help for each of the modes.
2471case "$mode" in
33e0ca61
ILT
2472"") $echo \
2473"Usage: $modename [OPTION]... [MODE-ARG]...
6079ad78
ILT
2474
2475Provide generalized library-building support services.
2476
99e9c6f7
ILT
2477 --config show all configuration variables
2478 --debug enable verbose shell tracing
6079ad78 2479-n, --dry-run display commands without modifying any files
99e9c6f7 2480 --features display basic configuration information and exit
6079ad78
ILT
2481 --finish same as \`--mode=finish'
2482 --help display this help message and exit
2483 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
33e0ca61
ILT
2484 --quiet same as \`--silent'
2485 --silent don't print informational messages
6079ad78
ILT
2486 --version print version information
2487
2488MODE must be one of the following:
2489
2490 compile compile a source file into a libtool object
33e0ca61 2491 execute automatically set library path, then run a program
6079ad78
ILT
2492 finish complete the installation of libtool libraries
2493 install install libraries or executables
2494 link create a library or an executable
2495 uninstall remove libraries from an installed directory
2496
33e0ca61
ILT
2497MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
2498a more detailed description of MODE."
2499 exit 0
6079ad78
ILT
2500 ;;
2501
2502compile)
33e0ca61
ILT
2503 $echo \
2504"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6079ad78
ILT
2505
2506Compile a source file into a libtool library object.
2507
99e9c6f7
ILT
2508This mode accepts the following additional options:
2509
2510 -static always build a \`.o' file suitable for static linking
2511
6079ad78
ILT
2512COMPILE-COMMAND is a command to be used in creating a \`standard' object file
2513from the given SOURCEFILE.
2514
2515The output file name is determined by removing the directory component from
2516SOURCEFILE, then substituting the C source code suffix \`.c' with the
33e0ca61 2517library object suffix, \`.lo'."
6079ad78
ILT
2518 ;;
2519
33e0ca61
ILT
2520execute)
2521 $echo \
2522"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
2523
2524Automatically set library path, then run a program.
2525
2526This mode accepts the following additional options:
6079ad78 2527
33e0ca61 2528 -dlopen FILE add the directory containing FILE to the library path
6079ad78 2529
33e0ca61
ILT
2530This mode sets the library path environment variable according to \`-dlopen'
2531flags.
6079ad78 2532
33e0ca61
ILT
2533If any of the ARGS are libtool executable wrappers, then they are translated
2534into their corresponding uninstalled binary, and any of their required library
2535directories are added to the library path.
2536
2537Then, COMMAND is executed, with ARGS as arguments."
6079ad78
ILT
2538 ;;
2539
2540finish)
33e0ca61
ILT
2541 $echo \
2542"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6079ad78
ILT
2543
2544Complete the installation of libtool libraries.
2545
2546Each LIBDIR is a directory that contains libtool libraries.
2547
2548The commands that this mode executes may require superuser privileges. Use
33e0ca61 2549the \`--dry-run' option if you just want to see what would be executed."
6079ad78
ILT
2550 ;;
2551
2552install)
33e0ca61
ILT
2553 $echo \
2554"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6079ad78
ILT
2555
2556Install executables or libraries.
2557
2558INSTALL-COMMAND is the installation command. The first component should be
2559either the \`install' or \`cp' program.
2560
2561The rest of the components are interpreted as arguments to that command (only
33e0ca61 2562BSD-compatible install options are recognized)."
6079ad78
ILT
2563 ;;
2564
2565link)
33e0ca61
ILT
2566 $echo \
2567"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6079ad78
ILT
2568
2569Link object files or libraries together to form another library, or to
2570create an executable program.
2571
2572LINK-COMMAND is a command using the C compiler that you would use to create
2573a program from several object files.
2574
2575The following components of LINK-COMMAND are treated specially:
2576
33e0ca61
ILT
2577 -all-static do not do any dynamic linking at all
2578 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
2579 -dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols
6079ad78
ILT
2580 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2581 -LLIBDIR search LIBDIR for required installed libraries
2582 -lNAME OUTPUT-FILE requires the installed library libNAME
33e0ca61 2583 -no-undefined declare that a library does not refer to external symbols
6079ad78 2584 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
33e0ca61 2585 -release RELEASE specify package release information
6079ad78 2586 -rpath LIBDIR the created library will eventually be installed in LIBDIR
33e0ca61 2587 -static do not do any dynamic linking of libtool libraries
6079ad78 2588 -version-info CURRENT[:REVISION[:AGE]]
33e0ca61 2589 specify library version info [each variable defaults to 0]
6079ad78
ILT
2590
2591All other options (arguments beginning with \`-') are ignored.
2592
2593Every other argument is treated as a filename. Files ending in \`.la' are
2594treated as uninstalled libtool libraries, other files are standard or library
2595object files.
2596
2597If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only
2598library objects (\`.lo' files) may be specified, and \`-rpath' is required.
2599
99e9c6f7
ILT
2600If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2601using \`ar' and \`ranlib', or on WIndows using \`lib'.
6079ad78 2602
99e9c6f7
ILT
2603If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2604is created, otherwise an executable program is created."
6079ad78
ILT
2605 ;;
2606
2607uninstall)
33e0ca61
ILT
2608 $echo
2609"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6079ad78
ILT
2610
2611Remove libraries from an installation directory.
2612
2613RM is the name of the program to use to delete files associated with each FILE
2614(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
2615to RM.
2616
2617If FILE is a libtool library, all the files associated with it are deleted.
33e0ca61 2618Otherwise, only FILE itself is deleted using RM."
6079ad78
ILT
2619 ;;
2620
2621*)
33e0ca61
ILT
2622 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2623 $echo "$help" 1>&2
6079ad78
ILT
2624 exit 1
2625 ;;
2626esac
2627
33e0ca61
ILT
2628echo
2629$echo "Try \`$modename --help' for more information about other modes."
6079ad78
ILT
2630
2631exit 0
2632
2633# Local Variables:
2634# mode:shell-script
2635# sh-indentation:2
2636# End:
This page took 0.244087 seconds and 4 git commands to generate.