1 |
azarah |
1.11 |
# Copyright 1999-2005 Gentoo Foundation |
2 |
vapier |
1.6 |
# Distributed under the terms of the GNU General Public License v2 |
3 |
flameeyes |
1.32 |
# $Header: /var/cvsroot/gentoo-x86/eclass/autotools.eclass,v 1.31 2006/03/08 19:51:40 flameeyes Exp $ |
4 |
vapier |
1.7 |
# |
5 |
azarah |
1.11 |
# Author: Diego Pettenò <flameeyes@gentoo.org> |
6 |
azarah |
1.12 |
# Enhancements: Martin Schlemmer <azarah@gentoo.org> |
7 |
vapier |
1.7 |
# |
8 |
azarah |
1.11 |
# This eclass is for handling autotooled software packages that |
9 |
|
|
# needs to regenerate their build scripts. |
10 |
azarah |
1.1 |
# |
11 |
azarah |
1.11 |
# NB: If you add anything, please comment it! |
12 |
azarah |
1.1 |
|
13 |
flameeyes |
1.30 |
inherit eutils gnuconfig libtool |
14 |
azarah |
1.11 |
|
15 |
flameeyes |
1.28 |
DEPEND="sys-devel/automake |
16 |
|
|
sys-devel/autoconf |
17 |
|
|
sys-devel/libtool" |
18 |
azarah |
1.11 |
|
19 |
azarah |
1.16 |
# Variables: |
20 |
|
|
# |
21 |
azarah |
1.17 |
# AT_M4DIR - Additional director(y|ies) aclocal should search |
22 |
azarah |
1.16 |
# AT_GNUCONF_UPDATE - Should gnuconfig_update() be run (normally handled by |
23 |
azarah |
1.17 |
# econf()) [yes|no] |
24 |
flameeyes |
1.23 |
# AM_OPTS - Additional options to pass to automake during |
25 |
|
|
# eautoreconf call. |
26 |
azarah |
1.17 |
|
27 |
|
|
# Functions: |
28 |
|
|
# |
29 |
|
|
# eautoreconf() - Should do a full autoreconf - normally what most people |
30 |
|
|
# will be interested in. Also should handle additional |
31 |
|
|
# directories specified by AC_CONFIG_SUBDIRS. |
32 |
|
|
# eaclocal() - Runs aclocal. Respects AT_M4DIR for additional directories |
33 |
|
|
# to search for macro's. |
34 |
|
|
# _elibtoolize() - Runs libtoolize. Note the '_' prefix .. to not collide |
35 |
|
|
# with elibtoolize() from libtool.eclass |
36 |
|
|
# eautoconf - Runs autoconf. |
37 |
|
|
# eautoheader - Runs autoheader. |
38 |
|
|
# eautomake - Runs automake |
39 |
|
|
# |
40 |
azarah |
1.16 |
|
41 |
|
|
# XXX: M4DIR should be depreciated |
42 |
|
|
AT_M4DIR=${AT_M4DIR:-${M4DIR}} |
43 |
|
|
AT_GNUCONF_UPDATE="no" |
44 |
|
|
|
45 |
azarah |
1.11 |
|
46 |
azarah |
1.17 |
# This function mimes the behavior of autoreconf, but uses the different |
47 |
|
|
# eauto* functions to run the tools. It doesn't accept parameters, but |
48 |
|
|
# the directory with include files can be specified with AT_M4DIR variable. |
49 |
|
|
# |
50 |
|
|
# Note: doesn't run autopoint right now, but runs gnuconfig_update. |
51 |
|
|
eautoreconf() { |
52 |
|
|
local pwd=$(pwd) x |
53 |
azarah |
1.11 |
|
54 |
azarah |
1.17 |
# Take care of subdirs |
55 |
|
|
for x in $(autotools_get_subdirs); do |
56 |
|
|
if [[ -d ${x} ]] ; then |
57 |
|
|
cd "${x}" |
58 |
flameeyes |
1.32 |
AT_NOELIBTOOLIZE="yes" eautoreconf |
59 |
azarah |
1.17 |
cd "${pwd}" |
60 |
|
|
fi |
61 |
|
|
done |
62 |
azarah |
1.11 |
|
63 |
flameeyes |
1.26 |
einfo "Running eautoreconf in '$(pwd)' ..." |
64 |
azarah |
1.17 |
eaclocal |
65 |
|
|
_elibtoolize --copy --force |
66 |
|
|
eautoconf |
67 |
|
|
eautoheader |
68 |
flameeyes |
1.23 |
eautomake ${AM_OPTS} |
69 |
azarah |
1.1 |
|
70 |
azarah |
1.17 |
# Normally run by econf() |
71 |
|
|
[[ ${AT_GNUCONF_UPDATE} == "yes" ]] && gnuconfig_update |
72 |
flameeyes |
1.21 |
|
73 |
flameeyes |
1.32 |
[[ ${AT_NOELIBTOOLIZE} == "yes" ]] && return 0 |
74 |
|
|
|
75 |
flameeyes |
1.30 |
# Call it here to prevent failures due to elibtoolize called _before_ |
76 |
|
|
# eautoreconf. |
77 |
|
|
elibtoolize |
78 |
|
|
|
79 |
flameeyes |
1.21 |
return 0 |
80 |
azarah |
1.12 |
} |
81 |
|
|
|
82 |
azarah |
1.11 |
# These functions runs the autotools using autotools_run_tool with the |
83 |
|
|
# specified parametes. The name of the tool run is the same of the function |
84 |
|
|
# without e prefix. |
85 |
|
|
# They also force installing the support files for safety. |
86 |
|
|
eaclocal() { |
87 |
azarah |
1.12 |
local aclocal_opts |
88 |
|
|
|
89 |
azarah |
1.16 |
# XXX: M4DIR should be depreciated |
90 |
|
|
AT_M4DIR=${AT_M4DIR:-${M4DIR}} |
91 |
|
|
|
92 |
|
|
if [[ -n ${AT_M4DIR} ]] ; then |
93 |
|
|
for x in ${AT_M4DIR} ; do |
94 |
|
|
case "${x}" in |
95 |
|
|
"-I") |
96 |
|
|
# We handle it below |
97 |
|
|
;; |
98 |
|
|
*) |
99 |
|
|
[[ ! -d ${x} ]] && ewarn "eaclocal: '${x}' does not exist" |
100 |
|
|
aclocal_opts="${aclocal_opts} -I ${x}" |
101 |
|
|
;; |
102 |
|
|
esac |
103 |
|
|
done |
104 |
|
|
fi |
105 |
flameeyes |
1.15 |
|
106 |
flameeyes |
1.22 |
[[ ! -f aclocal.m4 || -n $(grep -e 'generated.*by aclocal' aclocal.m4) ]] && \ |
107 |
azarah |
1.12 |
autotools_run_tool aclocal "$@" ${aclocal_opts} |
108 |
|
|
} |
109 |
|
|
|
110 |
|
|
_elibtoolize() { |
111 |
azarah |
1.19 |
local opts |
112 |
swegener |
1.20 |
|
113 |
azarah |
1.12 |
# Check if we should run libtoolize |
114 |
|
|
[[ -n $(autotools_check_macro "AC_PROG_LIBTOOL") ]] || return 0 |
115 |
azarah |
1.19 |
|
116 |
|
|
[[ -f Makefile.am ]] && opts="--automake" |
117 |
swegener |
1.20 |
|
118 |
flameeyes |
1.18 |
[[ "${USERLAND}" == "Darwin" ]] && LIBTOOLIZE="glibtoolize" |
119 |
azarah |
1.19 |
autotools_run_tool ${LIBTOOLIZE:-libtoolize} "$@" ${opts} |
120 |
flameeyes |
1.15 |
|
121 |
azarah |
1.12 |
# Need to rerun aclocal |
122 |
|
|
eaclocal |
123 |
azarah |
1.11 |
} |
124 |
azarah |
1.1 |
|
125 |
azarah |
1.11 |
eautoheader() { |
126 |
azarah |
1.12 |
# Check if we should run autoheader |
127 |
|
|
[[ -n $(autotools_check_macro "AC_CONFIG_HEADERS") ]] || return 0 |
128 |
azarah |
1.11 |
autotools_run_tool autoheader "$@" |
129 |
|
|
} |
130 |
azarah |
1.1 |
|
131 |
azarah |
1.11 |
eautoconf() { |
132 |
azarah |
1.12 |
if [[ ! -f configure.ac && ! -f configure.in ]] ; then |
133 |
|
|
echo |
134 |
|
|
eerror "No configure.{ac,in} present in '$(pwd | sed -e 's:.*/::')'!" |
135 |
|
|
echo |
136 |
|
|
die "No configure.{ac,in} present!" |
137 |
|
|
fi |
138 |
|
|
|
139 |
azarah |
1.11 |
autotools_run_tool autoconf "$@" |
140 |
|
|
} |
141 |
azarah |
1.1 |
|
142 |
azarah |
1.11 |
eautomake() { |
143 |
flameeyes |
1.24 |
local extra_opts |
144 |
|
|
|
145 |
azarah |
1.12 |
[[ -f Makefile.am ]] || return 0 |
146 |
flameeyes |
1.24 |
|
147 |
|
|
[[ -f INSTALL && -f AUTHORS && -f ChangeLog ]] \ |
148 |
|
|
|| extra_opts="${extra_opts} --foreign" |
149 |
|
|
|
150 |
flameeyes |
1.14 |
# --force-missing seems not to be recognized by some flavours of automake |
151 |
flameeyes |
1.24 |
autotools_run_tool automake --add-missing --copy ${extra_opts} "$@" |
152 |
azarah |
1.1 |
} |
153 |
|
|
|
154 |
azarah |
1.11 |
|
155 |
|
|
|
156 |
azarah |
1.17 |
# Internal function to run an autotools' tool |
157 |
|
|
autotools_run_tool() { |
158 |
|
|
local STDERR_TARGET="${T}/$$.out" |
159 |
|
|
local PATCH_TARGET="${T}/$$.patch" |
160 |
|
|
local ris |
161 |
|
|
|
162 |
|
|
echo "***** $1 *****" > ${STDERR_TARGET%/*}/$1-${STDERR_TARGET##*/} |
163 |
|
|
echo >> ${STDERR_TARGET%/*}/$1-${STDERR_TARGET##*/} |
164 |
|
|
|
165 |
azarah |
1.27 |
ebegin "Running $@" |
166 |
azarah |
1.17 |
$@ >> ${STDERR_TARGET%/*}/$1-${STDERR_TARGET##*/} 2>&1 |
167 |
|
|
ris=$? |
168 |
|
|
eend ${ris} |
169 |
|
|
|
170 |
|
|
if [[ ${ris} != 0 ]]; then |
171 |
|
|
echo |
172 |
|
|
eerror "Failed Running $1 !" |
173 |
|
|
eerror |
174 |
|
|
eerror "Include in your bugreport the contents of:" |
175 |
|
|
eerror |
176 |
|
|
eerror " ${STDERR_TARGET%/*}/$1-${STDERR_TARGET##*/}" |
177 |
|
|
echo |
178 |
|
|
die "Failed Running $1 !" |
179 |
|
|
fi |
180 |
|
|
} |
181 |
|
|
|
182 |
|
|
# Internal function to check for support |
183 |
|
|
autotools_check_macro() { |
184 |
|
|
[[ -f configure.ac || -f configure.in ]] && \ |
185 |
flameeyes |
1.31 |
WANT_AUTOCONF="2.5" autoconf --trace=$1 2>/dev/null |
186 |
azarah |
1.17 |
return 0 |
187 |
|
|
} |
188 |
|
|
|
189 |
|
|
# Internal function to get additional subdirs to configure |
190 |
|
|
autotools_get_subdirs() { |
191 |
|
|
local subdirs_scan_out |
192 |
|
|
|
193 |
|
|
subdirs_scan_out=$(autotools_check_macro "AC_CONFIG_SUBDIRS") |
194 |
|
|
[[ -n ${subdirs_scan_out} ]] || return 0 |
195 |
|
|
|
196 |
|
|
echo "${subdirs_scan_out}" | gawk \ |
197 |
|
|
'($0 !~ /^[[:space:]]*(#|dnl)/) { |
198 |
azarah |
1.25 |
if (match($0, /AC_CONFIG_SUBDIRS:(.*)$/, res)) |
199 |
|
|
print res[1] |
200 |
azarah |
1.17 |
}' | uniq |
201 |
azarah |
1.16 |
|
202 |
azarah |
1.17 |
return 0 |
203 |
azarah |
1.11 |
} |
204 |
azarah |
1.17 |
|