1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
$NetBSD: patch-ac,v 1.14 2004/12/17 16:24:22 jlam Exp $
--- ltmain.sh.orig 2004-09-19 08:34:44.000000000 -0400
+++ ltmain.sh
@@ -184,6 +184,31 @@ func_win32_libid () {
# command doesn't match the default compiler.
# arg is usually of the form 'gcc ...'
func_infer_tag () {
+ # Set the commonly-used compilers for some tags.
+ tag_compilers_CC="*cc *xlc"
+ tag_compilers_CXX="*++ *CC"
+ tag_compilers_F77="*77 *fort"
+ base_compiler=`set -- "$@"; $echo $1`
+ # If $tagname still isn't set, then try to infer if the default
+ # "CC" tag applies by matching up the base compile command to some
+ # compilers commonly used for the "CC" tag.
+ if test -z "$tagname"; then
+ z=CC
+ eval "tag_compilers=\$tag_compilers_${z}"
+ if test -n "$tag_compilers"; then
+ for zp in $tag_compilers; do
+ case $base_compiler in
+ $zp)
+ # The compiler in the base compile command matches
+ # one of the common compilers for the current tag.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ done
+ fi
+ fi
if test -n "$available_tags" && test -z "$tagname"; then
CC_quoted=
for arg in $CC; do
@@ -224,6 +249,27 @@ func_infer_tag () {
break
;;
esac
+ # If $tagname still isn't set, then try to infer it by
+ # matching up the base compile command to some compilers
+ # commonly used for certain tags.
+ base_compiler=`set -- "$@"; $echo $1`
+ eval "tag_compilers=\$tag_compilers_${z}"
+ if test -n "$tag_compilers"; then
+ for zp in $tag_compilers; do
+ case $base_compiler in
+ $zp)
+ # The compiler in the base compile command matches
+ # one of the common compilers for the current tag.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ done
+ if test -n "$tagname"; then
+ break
+ fi
+ fi
fi
done
# If $tagname still isn't set, then no tagged configuration
@@ -522,7 +568,7 @@ if test -z "$show_help"; then
$echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
$echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
case $nonopt in
- *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc* | *CC)
mode=link
for arg
do
@@ -1306,6 +1352,13 @@ EOF
exit $EXIT_FAILURE
;;
esac
+ # Canonicalise the pathname
+ tmp=""
+ while test "$arg" != "$tmp"
+ do
+ tmp=$arg
+ arg=`$echo "X$arg" | $Xsed -e 's%[^/.][^/.]*/\.\.%%g' -e 's%/\./%/%g' -e 's%//*%/%g' -e 's%/$%%g'`
+ done
if test "$prev" = rpath; then
case "$rpath " in
*" $arg "*) ;;
@@ -3168,6 +3221,7 @@ EOF
linux)
major=.`expr $current - $age`
versuffix="$major.$age.$revision"
+ versuffix2="$major.$age"
;;
osf)
@@ -5364,8 +5418,16 @@ relink_command=\"$relink_command\""
exit $EXIT_FAILURE
fi
- # Strip any trailing slash from the destination.
- dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+ # Canonicalise the pathname:
+ # - remove foo/../
+ # - replace //
+ # - remove /./
+ # - strip any trailing /
+ tmp=""
+ while test "$dest" != "$tmp"; do
+ tmp=$dest
+ dest=`$echo "X$dest" | $Xsed -e 's%[^/.][^/.]*/\.\.%%g' -e 's%/\./%/%g' -e 's%//*%/%g' -e 's%/$%%g'`
+ done
# Check to see that the destination is a directory.
test -d "$dest" && isdir=yes
|