summaryrefslogtreecommitdiffstats
path: root/autogen.sh
blob: 1ccfc6c85ac239066b0a3cb5a8b3a412a1927708 (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
#!/bin/sh

#
# Helps generate autoconf/automake stuff, when code is checked out from SCM.
#
# Copyright (C) 2006-2010 - Karel Zak <kzak@redhat.com>
#

srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.

THEDIR=`pwd`
cd $srcdir
DIE=0

warn_mesg ()
{
	echo
	echo "WARNING: $1"
	test -z "$2" ||
		echo "       $2"
	echo
}

error_mesg ()
{
	echo
	echo "ERROR: $1"
	test -z "$2" ||
		echo "       $2"
	echo
	DIE=1
}

# provide simple gettext backward compatibility
autopoint_fun ()
{
	# we have to deal with set -e ...
	ret="0"

	# check against this hardcoded set of alternative gettext versions
	gt_ver=`gettext --version |\
		sed -n -e 's/.* \(0\.17\|0\.18\|0\.18\.[1-2]\)$/\1/p'`

	if [ -n "$gt_ver" ]; then
		warn_mesg "warning: forcing autopoint to use old gettext $gt_ver"
		rm -f configure.ac.autogenbak
		sed -i.autogenbak configure.ac \
			-e "s/\(AM_GNU_GETTEXT_VERSION\).*/\1([$gt_ver])/"
	fi

	autopoint "$@" || ret=$?

	if [ -n "$gt_ver" ]; then
		mv configure.ac.autogenbak configure.ac
	fi

	return $ret
}

test -f sys-utils/mount.c ||
	error_mesg "You must run this script in the top-level util-linux directory."

(autopoint --version) < /dev/null > /dev/null 2>&1 ||
	error_mesg "You must have autopoint installed to generate the util-linux build system." "The autopoint command is part of the GNU gettext package."

(autoconf --version) < /dev/null > /dev/null 2>&1 ||
	error_mesg "You must have autoconf installed to generate the util-linux build system."

(autoheader --version) < /dev/null > /dev/null 2>&1 ||
	error_mesg "You must have autoheader installed to generate the util-linux build system."  "The autoheader command is part of the GNU autoconf package."

[ -x "$(command -v gettext)" -o -x "$(command -v xgettext)" ] ||
	warn_mesg "You need have [x]gettext binary installed to update po/ stuff."

if ! (bison --version) < /dev/null > /dev/null 2>&1; then
	error_mesg "You must have bison installed to build the util-linux."
else
	lexver=$(bison --version | awk '/^bison \(GNU [Bb]ison\)/ { print $4 }')
	case "$lexver" in
		[2-9].*)
			;;
		*)
			error_mesg "You must have bison version >= 2.x, but you have $lexver."
			;;
	esac
fi

LIBTOOLIZE=libtoolize
case `uname` in Darwin*) LIBTOOLIZE=glibtoolize ;; esac
if ! ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1; then
	error_mesg "You must have libtool-2 installed to generate the util-linux build system."
else
	ltver=$($LIBTOOLIZE --version | awk '/^[g]*libtoolize/ { print $4 }')
	ltver=${ltver:-"none"}
	test ${ltver##2.} = "$ltver" &&
		error_mesg "You must have libtool version >= 2.x.x, but you have $ltver."
fi

(automake --version) < /dev/null > /dev/null 2>&1 ||
	error_mesg "You must have automake installed to generate the util-linux build system."

if test "$DIE" -eq 1; then
	exit 1
fi

echo
echo "Generating build-system with:"
echo "   autopoint:  $(autopoint --version | head -1)"
echo "   aclocal:    $(aclocal --version | head -1)"
echo "   autoconf:   $(autoconf --version | head -1)"
echo "   autoheader: $(autoheader --version | head -1)"
echo "   automake:   $(automake --version | head -1)"
echo "   libtoolize: $($LIBTOOLIZE --version | head -1)"
echo "   bison:      $(bison --version | head -1)"
echo

rm -rf autom4te.cache

set -e
po/update-potfiles
autopoint_fun --force $AP_OPTS
if ! grep -q datarootdir po/Makefile.in.in; then
	echo "INFO: autopoint does not honor dataroot variable, patching."
	sed -i -e 's/^datadir *=\(.*\)/datarootdir = @datarootdir@\
datadir = @datadir@/g' po/Makefile.in.in
fi
$LIBTOOLIZE --force $LT_OPTS

# patch libtool
if test -f tools/libtool.m4.patch; then
	if test -L m4/libtool.m4; then
		cp m4/libtool.m4 m4/libtool.m4.org
		rm m4/libtool.m4
		mv m4/libtool.m4.org m4/libtool.m4
	fi
	set +e
	patch --batch --dry -p1 < tools/libtool.m4.patch > /dev/null 2>&1
	if [ "$?" -eq 0 ]; then
		patch -p1 --batch < tools/libtool.m4.patch
	fi
	set -e
fi

aclocal -I m4 $AL_OPTS
autoconf $AC_OPTS
autoheader $AH_OPTS

automake --add-missing $AM_OPTS


cd "$THEDIR"

echo
echo "Now type '$srcdir/configure' and 'make' to compile."
echo