summaryrefslogtreecommitdiff
path: root/mk/buildlink2/libtool-fix-la
blob: a05eceaa31807dc90423ae36cf541d35ce0f7143 (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
# $NetBSD: libtool-fix-la,v 1.3 2002/09/16 19:55:57 jlam Exp $
#
# For *.la files, in the "relink_command" line, we make the following
# replacements:
#
#       "libfoo.la" -> "-L./.libs libfoo.la"
#	"dirpath/libfoo.la" -> "-Ldirpath/.libs libfoo.la"
#
# This allows the libraries to be found within ${WRKSRC} during relinking.
# We rely on the proper rpath settings to be set by libtool.
#
# For the *.lai files, in the "dependency_libs" line, we remove redundant
# -Ldir and -llib options.

labase=`@BASENAME@ $lafile .la`
ladir=`@DIRNAME@ $lafile`
latimestamp=${ladir}/.${labase}.la.timestamp
laifile=${ladir}/.libs/${labase}.lai
if [ -f $lafile ]; then
	. ${ladir}/${labase}.la

	relink=
	for i in ${relink_command}; do
		case "$i" in
		-I*|-D*)
			;;
		-L*)
			case "$relink" in
			*"$i "*) ;;
			*"$i") ;;
			*) relink="${relink} $i" ;;
			esac
			;;
		$lafile)
			relink="${relink} $i"
			;;
		*.la)
			ltlibsdir=`@DIRNAME@ $i`/.libs
			case "$relink" in
			*"-L$ltlibsdir "*) ;;
			*"-L$ltlibsdir") ;;
			*) relink="$relink -L$ltlibsdir" ;;
			esac
			relink="${relink} $i"
			;;
		*)
			relink="${relink} $i"
			;;
		esac
	done
	if [ -n "$relink" ] && \
	   ! @EGREP@ "^#.*modified by buildlink2" $lafile >/dev/null 2>&1; then
		@MV@ -f $lafile ${lafile}.blsav
		(
			@CAT@ ${lafile}.blsav | @SED@ -e '/^relink_command=/,$d'
			@ECHO@ "relink_command='$relink'"
			@CAT@ ${lafile}.blsav | @SED@ -e '1,/^relink_command=/d'
			@ECHO@
			@ECHO@ "# This file has been modified by buildlink2."
		) > $lafile
		@ECHO@ "==> Fixed $lafile" >> $wrapperlog
	fi
	if [ -n "$laifile" ] && [ -f "$laifile" ] && \
	   ! @EGREP@ "^#.*modified by buildlink2" $laifile >/dev/null 2>&1; then
		@SED@	@_BLNK_WRAP_LT_UNTRANSFORM_SED@ \
			$laifile > ${laifile}.tmp
		. ${laifile}.tmp
		L=; l=; lexist=; prev=
		for i in ${dependency_libs}; do
			case "$i" in
			$prev)
				;;
			-L*)
				case "$L" in
				*"$i "*) ;;
				*"$i") ;;
				*) L="$L $i" ;;
				esac
				;;
			-l*)
				lexist=1
				l="$l $i"
				;;
			*)
				l="$l $i"
				;;
			esac
			prev="$i"
		done
		if [ -z "$lexist" ]; then
			L=
		fi
		deps="$L$l"
		@MV@ -f $laifile ${laifile}.blsav
		(
			@CAT@ ${laifile}.tmp | @SED@ -e '/^dependency_libs=/,$d'
			@ECHO@ "dependency_libs='$deps'"
			@CAT@ ${laifile}.tmp | @SED@ -e '1,/^dependency_libs=/d'
			@ECHO@
			@ECHO@ "# This file has been modified by buildlink2."
		) > ${laifile}
		@RM@ -f ${laifile}.tmp
		@ECHO@ "==> Fixed $laifile" >> $wrapperlog
	fi
fi