aboutsummaryrefslogtreecommitdiffstats
path: root/classes/autotools.bbclass
blob: 7c998e4ae975adef2288c3cdca271dc1d0165ea0 (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
inherit autotools_base

def autotools_deps(d):
	if bb.data.getVar('INHIBIT_AUTOTOOLS_DEPS', d, 1):
		return ''

	pn = bb.data.getVar('PN', d, 1)
	deps = ''

	if pn in ['autoconf-native', 'automake-native']:
		return deps
	deps += 'autoconf-native automake-native '

	if not pn in ['libtool', 'libtool-native', 'libtool-cross']:
		deps += 'libtool-native '
		if not bb.data.inherits_class('native', d) \
                        and not bb.data.inherits_class('cross', d) \
                        and not bb.data.inherits_class('sdk', d) \
                        and not bb.data.getVar('INHIBIT_DEFAULT_DEPS', d, 1):
                    deps += 'libtool-cross '
	return deps

DEPENDS_prepend = "${@autotools_deps(d)}"
DEPENDS_virtclass-native_prepend = "${@autotools_deps(d)}"
DEPENDS_virtclass-nativesdk_prepend = "${@autotools_deps(d)}"

acpaths = "default"
EXTRA_AUTORECONF = "--exclude=autopoint"

gnu_configize_here() {
	if [ -n "`autoconf -t AC_CANONICAL_BUILD`" ]; then
		macrodir="`autoconf -t AC_CONFIG_MACRO_DIR|cut -d: -f4|tail -n 1`"
		if [ -z "$macrodir" ]; then
			macrodir="."
		fi
		if [ ! -e ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ]; then
			oefatal "gnu-config data files missing"
		fi
		oenote "Updating config.sub and config.guess in $macrodir"
		ln -sf ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub \
		    $macrodir/config.sub
		ln -sf ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess \
		    $macrodir/config.guess
	fi
}

gnu_configize() {
	subdirs="`autoconf -t AC_CONFIG_SUBDIRS|cut -d: -f4`"
	for dir in $subdirs .; do
		if [ ! -e "$olddir/$dir" ]; then
			continue
		fi

		pushd $dir
		gnu_configize_here
		popd
	done
}

do_configure_prepend () {
	alias gnu-configize=gnu_configize
}

oe_autoreconf () {
	# autoreconf is too shy to overwrite aclocal.m4 if it doesn't look
	# like it was auto-generated.  Work around this by blowing it away
	# by hand, unless the package specifically asked not to run aclocal.
	if ! echo ${EXTRA_AUTORECONF} | grep -q "aclocal"; then
		rm -f aclocal.m4
	fi
	if [ -e configure.in ]; then
		CONFIGURE_AC=configure.in
	else
		CONFIGURE_AC=configure.ac
	fi
	if grep "^[[:space:]]*AM_GLIB_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
		if grep "sed.*POTFILES" $CONFIGURE_AC >/dev/null; then
			: do nothing -- we still have an old unmodified configure.ac
		else
			echo "no" | glib-gettextize --force
		fi
	else if grep "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then
		if [ -e ${STAGING_DATADIR}/gettext/config.rpath ]; then
			ln -sf ${STAGING_DATADIR}/gettext/config.rpath ${S}/
		else
			oenote ${STAGING_DATADIR}/gettext/config.rpath not found. gettext is not installed.
		fi
	fi
	mkdir -p m4
	autoreconf -Wcross --verbose --install --symlink --force ${EXTRA_AUTORECONF} "$@" \
	        || oefatal "autoreconf execution failed."

	if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then
		intltoolize --force --automake
	fi

	gnu_configize_here
}

autotools_do_configure() {
	case ${PN} in
	autoconf*|automake*)
	;;
	*)
		find ${S} -name configure.in -o -name configure.ac | \
			while read fn; do
				rm -f `dirname $fn`/configure
			done
		if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then
			olddir=`pwd`
			cd ${S}
			if [ x"${acpaths}" = xdefault ]; then
				acpaths=
				for i in `find ${S} -maxdepth 2 -name \*.m4|grep -v 'aclocal.m4'| \
					grep -v 'acinclude.m4' | sed -e 's,\(.*/\).*$,\1,'|sort -u`; do
					acpaths="$acpaths -I $i"
				done
			else
				acpaths="${acpaths}"
			fi
			AUTOV=`automake --version | head -n 1 | sed "s/.* //;s/\.[0-9]\+$//"`
			install -d ${STAGING_DATADIR}/aclocal
			install -d ${STAGING_DATADIR}/aclocal-$AUTOV
			acpaths="$acpaths -I${STAGING_DATADIR}/aclocal-$AUTOV -I ${STAGING_DATADIR}/aclocal"
			oe_autoreconf $acpaths
			cd $olddir
		fi
	;;
	esac
	if [ -e ${S}/configure ]; then
		oe_runconf $@
	else
		oenote "nothing to configure"
	fi
}

EXPORT_FUNCTIONS do_configure