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

Diff of /eclass/autotools.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.20