summaryrefslogtreecommitdiff
path: root/mk/buildlink3/libtool.sh
blob: 8008999eafc43948d258502c5c7e1ced33dc20f0 (plain)
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!@BUILDLINK_SHELL@
#
# $NetBSD: libtool.sh,v 1.5 2003/10/03 19:39:19 jlam Exp $

Xsed='@SED@ -e 1s/^X//'
sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'

buildcmd="@_BLNK_WRAP_BUILDCMD@"
quotearg="@_BLNK_WRAP_QUOTEARG@"
marshall="@_BLNK_WRAP_MARSHALL@"
private_pre_cache="@_BLNK_WRAP_PRIVATE_PRE_CACHE@"
private_cache_add="@_BLNK_WRAP_PRIVATE_CACHE_ADD@"
private_cache="@_BLNK_WRAP_PRIVATE_CACHE@"
private_post_cache="@_BLNK_WRAP_PRIVATE_POST_CACHE@"
pre_cache="@_BLNK_WRAP_PRE_CACHE@"
cache_add="@_BLNK_WRAP_CACHE_ADD@"
cache="@_BLNK_WRAP_CACHE@"
post_cache="@_BLNK_WRAP_POST_CACHE@"
logic="@_BLNK_WRAP_LOGIC@"
post_logic="@_BLNK_WRAP_POST_LOGIC@"

wrapperlog="${BUILDLINK_WRAPPER_LOG-@_BLNK_WRAP_LOG@}"

libtool_fix_la="@_BLNK_LIBTOOL_FIX_LA@"
fixlibpath=${BUILDLINK_FIX_IMPROPER_LIBTOOL_LIBPATH-yes}

updatecache=${BUILDLINK_UPDATE_CACHE-yes}
cacheall=${BUILDLINK_CACHE_ALL-no}

cat="@CAT@"
echo="@ECHO@"
test="@TEST@"

BUILDLINK_DIR="@BUILDLINK_DIR@"
WRKDIR="@WRKDIR@"
WRKSRC="@WRKSRC@"

mode=link
prevopt=
nonopt=
lafile=
for arg; do
	case $arg in
	-*=*)	optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
	*)	optarg= ;;
	esac
	if $test -n "$prevopt"; then
		case $prevopt in
		--mode)
			mode="$arg"
			;;
		--fix-la|-o)
			case $arg in
			*.la) lafile="$arg" ;;
			esac
			;;
		esac
		prevopt=
		continue
	fi
	case $arg in
	--mode|--fix-la|-o)
		prevopt="$arg"
		;;
	--mode=*)
		mode="$optarg"
		;;
	-*)
		if $test -n "$nonopt"; then
			case $arg in
			-c) mode=compile ;;
			esac
		fi
		;;
	*)
		if $test -z "$nonopt"; then	
			nonopt="$arg"
			case $arg in
			*cc|*++|gcc*|*-gcc*|*CC) mode=link ;;
			*install*|cp|mv)	 mode=install ;;
			esac
		fi
		;;
	esac
done

cmd="@WRAPPEE@"
case $mode in
install)
	#
	# We're doing libtool installation, so just quote all of the
	# command-line arguments and append them to $cmd.  We don't worry
	# about caching or speed, since installation is not a bottleneck
	# for package creation.
	#
	while $test $# -gt 0; do
        	arg="$1"; shift
        	. $quotearg
        	arg="$qarg"
        	cmd="$cmd $arg"
	done    
	;;
*)
	while $test $# -gt 0; do
		arg="$1"; shift
		skipargs=0
		case $arg in
		--fix-la)
			. $libtool_fix_la
			exit
			;;
		*cc|*++|gcc*|*-gcc*|*CC)
			case $mode in
			link)
				cmd="$cmd $arg"
 				arg="@_BLNK_WRAP_EXTRA_FLAGS@"
				;;
			esac
			;;
		*)
			cachehit=no
			skipcache=no
			#
			# Marshall any group of consecutive arguments into
			# a single $arg to be checked in the cache and
			# logic files.
			#
			. $marshall
			#
			# Check the private cache, and possibly set
			# skipcache=yes.
			#
			. $private_cache
			#
			# Check the common cache shared by all of the other
			# wrappers.
			#
			case $skipcache,$cachehit in
			no,no)	. $cache ;;
			esac
			#
			# If the cache doesn't cover the arg we're
			# examining, then run it through the
			# transformations and cache the result.
			#
			case $cachehit in
			no)	. $logic ;;
			esac
			;;
		esac
		#
		# Build up the command-line.
		#
		. $buildcmd
	done
	;;
esac

@_BLNK_WRAP_ENV@
@_BLNK_WRAP_SANITIZE_PATH@

$echo $cmd >> $wrapperlog
eval $cmd
wrapper_result=$?

if $test -n "$lafile" && $test -f "$lafile"; then
	. $libtool_fix_la
fi

exit ${wrapper_result}