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

Contents of /eclass/autotools.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.16 - (show annotations) (download)
Wed Aug 31 01:44:02 2005 UTC (8 years, 10 months ago) by azarah
Branch: MAIN
Changes since 1.15: +36 -4 lines
Change M4DIR to AT_M4DIR.  Do not always run gnuconfig_update (handled
by econf).  Make eaclocal's handling of AT_M4DIR a bit smarter.

1 # Copyright 1999-2005 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/eclass/autotools.eclass,v 1.15 2005/08/30 11:29:17 flameeyes Exp $
4 #
5 # Author: Diego Pettenò <flameeyes@gentoo.org>
6 # Enhancements: Martin Schlemmer <azarah@gentoo.org>
7 #
8 # This eclass is for handling autotooled software packages that
9 # needs to regenerate their build scripts.
10 #
11 # NB: If you add anything, please comment it!
12
13 inherit eutils gnuconfig
14
15 #DEPEND="sys-devel/automake
16 # sys-devel/autoconf
17 # sys-devel/libtool"
18 #
19 # Ebuilds should rather depend on the proper version of the tool.
20
21 # Variables:
22 #
23 # AT_M4DIR - Additional director(y|ies) aclocal should include
24 # AT_GNUCONF_UPDATE - Should gnuconfig_update() be run (normally handled by
25 # econf()) [yes|no]
26
27 # XXX: M4DIR should be depreciated
28 AT_M4DIR=${AT_M4DIR:-${M4DIR}}
29 AT_GNUCONF_UPDATE="no"
30
31 # Internal function to run an autotools' tool
32 autotools_run_tool() {
33 local STDERR_TARGET="${T}/$$.out"
34 local PATCH_TARGET="${T}/$$.patch"
35 local ris
36
37 echo "***** $1 *****" > ${STDERR_TARGET%/*}/$1-${STDERR_TARGET##*/}
38 echo >> ${STDERR_TARGET%/*}/$1-${STDERR_TARGET##*/}
39
40 ebegin "Running $1"
41 $@ >> ${STDERR_TARGET%/*}/$1-${STDERR_TARGET##*/} 2>&1
42 ris=$?
43 eend ${ris}
44
45 if [[ ${ris} != 0 ]]; then
46 echo
47 eerror "Failed Running $1 !"
48 eerror
49 eerror "Include in your bugreport the contents of:"
50 eerror
51 eerror " ${STDERR_TARGET%/*}/$1-${STDERR_TARGET##*/}"
52 echo
53 die "Failed Running $1 !"
54 fi
55 }
56
57 # Internal function to check for support
58 autotools_check_macro() {
59 [[ -f configure.ac || -f configure.in ]] && \
60 autoconf --trace=$1 2>/dev/null
61 return 0
62 }
63
64 # Internal function to get additional subdirs to configure
65 autotools_get_subdirs() {
66 local subdirs_scan_out
67
68 subdirs_scan_out=$(autotools_check_macro "AC_CONFIG_SUBDIRS")
69 [[ -n ${subdirs_scan_out} ]] || return 0
70
71 echo "${subdirs_scan_out}" | gawk \
72 '($0 !~ /^[[:space:]]*(#|dnl)/) {
73 if (match($0, "AC_CONFIG_SUBDIRS\\(\\[?([^\\])]*)", res)) {
74 split(res[1], DIRS, /[\])]/)
75 print DIRS[1]
76 }
77 }' | uniq
78
79 return 0
80 }
81
82
83
84 # These functions runs the autotools using autotools_run_tool with the
85 # specified parametes. The name of the tool run is the same of the function
86 # without e prefix.
87 # They also force installing the support files for safety.
88 eaclocal() {
89 local aclocal_opts
90
91 # XXX: M4DIR should be depreciated
92 AT_M4DIR=${AT_M4DIR:-${M4DIR}}
93
94 if [[ -n ${AT_M4DIR} ]] ; then
95 for x in ${AT_M4DIR} ; do
96 case "${x}" in
97 "-I")
98 # We handle it below
99 ;;
100 "-I"*)
101 # Invalid syntax, but maybe we should help out ...
102 ewarn "eaclocal: Proper syntax is (note the space after '-I'): aclocal -I <dir>"
103 aclocal_opts="${aclocal_opts} -I ${x}"
104 ;;
105 *)
106 [[ ! -d ${x} ]] && ewarn "eaclocal: '${x}' does not exist"
107 aclocal_opts="${aclocal_opts} -I ${x}"
108 ;;
109 esac
110 done
111 fi
112
113 [[ -f aclocal.m4 && -n $(grep -e 'generated.*by aclocal' aclocal.m4) ]] && \
114 autotools_run_tool aclocal "$@" ${aclocal_opts}
115 }
116
117 _elibtoolize() {
118 # Check if we should run libtoolize
119 [[ -n $(autotools_check_macro "AC_PROG_LIBTOOL") ]] || return 0
120 use userland_Darwin && LIBTOOLIZE="glibtoolize"
121 autotools_run_tool ${LIBTOOLIZE:-libtoolize} "$@"
122
123 # Need to rerun aclocal
124 eaclocal
125 }
126
127 eautoheader() {
128 # Check if we should run autoheader
129 [[ -n $(autotools_check_macro "AC_CONFIG_HEADERS") ]] || return 0
130 autotools_run_tool autoheader "$@"
131 }
132
133 eautoconf() {
134 if [[ ! -f configure.ac && ! -f configure.in ]] ; then
135 echo
136 eerror "No configure.{ac,in} present in '$(pwd | sed -e 's:.*/::')'!"
137 echo
138 die "No configure.{ac,in} present!"
139 fi
140
141 autotools_run_tool autoconf "$@"
142 }
143
144 eautomake() {
145 [[ -f Makefile.am ]] || return 0
146 # --force-missing seems not to be recognized by some flavours of automake
147 autotools_run_tool automake --add-missing --copy "$@"
148 }
149
150 # This function mimes the behavior of autoreconf, but uses the different
151 # eauto* functions to run the tools. It doesn't accept parameters, but
152 # the directory with include files can be specified with AT_M4DIR variable.
153 #
154 # Note: doesn't run autopoint right now, but runs gnuconfig_update.
155 eautoreconf() {
156 local pwd=$(pwd) x
157
158 # Take care of subdirs
159 for x in $(autotools_get_subdirs); do
160 if [[ -d ${x} ]] ; then
161 cd "${x}"
162 eautoreconf
163 cd "${pwd}"
164 fi
165 done
166
167 eaclocal
168 _elibtoolize --copy --force
169 eautoconf
170 eautoheader
171 eautomake
172
173 # Normally run by econf()
174 [[ ${AT_GNUCONF_UPDATE} == "yes" ]] && gnuconfig_update
175 }

  ViewVC Help
Powered by ViewVC 1.1.20