/[gentoo-x86]/eclass/autotools.eclass
Gentoo

Contents of /eclass/autotools.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.37 - (hide annotations) (download)
Thu Jun 15 22:29:25 2006 UTC (8 years, 1 month ago) by flameeyes
Branch: MAIN
Changes since 1.36: +2 -12 lines
Remove deprecated code.

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

  ViewVC Help
Powered by ViewVC 1.1.20