| 1 |
mgorny |
1.62 |
# Copyright 1999-2013 Gentoo Foundation
|
| 2 |
reavertm |
1.1 |
# Distributed under the terms of the GNU General Public License v2
|
| 3 |
mgorny |
1.68 |
# $Header: /var/cvsroot/gentoo-x86/eclass/autotools-utils.eclass,v 1.67 2013/05/03 09:20:56 mgorny Exp $
|
| 4 |
reavertm |
1.1 |
|
| 5 |
|
|
# @ECLASS: autotools-utils.eclass
|
| 6 |
|
|
# @MAINTAINER:
|
| 7 |
|
|
# Maciej Mrozowski <reavertm@gentoo.org>
|
| 8 |
reavertm |
1.10 |
# Michał Górny <mgorny@gentoo.org>
|
| 9 |
reavertm |
1.1 |
# @BLURB: common ebuild functions for autotools-based packages
|
| 10 |
|
|
# @DESCRIPTION:
|
| 11 |
|
|
# autotools-utils.eclass is autotools.eclass(5) and base.eclass(5) wrapper
|
| 12 |
|
|
# providing all inherited features along with econf arguments as Bash array,
|
| 13 |
|
|
# out of source build with overridable build dir location, static archives
|
| 14 |
mgorny |
1.28 |
# handling, libtool files removal.
|
| 15 |
|
|
#
|
| 16 |
mgorny |
1.56 |
# Please note that autotools-utils does not support mixing of its phase
|
| 17 |
mgorny |
1.28 |
# functions with regular econf/emake calls. If necessary, please call
|
| 18 |
|
|
# autotools-utils_src_compile instead of the latter.
|
| 19 |
reavertm |
1.1 |
#
|
| 20 |
|
|
# @EXAMPLE:
|
| 21 |
|
|
# Typical ebuild using autotools-utils.eclass:
|
| 22 |
|
|
#
|
| 23 |
|
|
# @CODE
|
| 24 |
|
|
# EAPI="2"
|
| 25 |
|
|
#
|
| 26 |
|
|
# inherit autotools-utils
|
| 27 |
|
|
#
|
| 28 |
|
|
# DESCRIPTION="Foo bar application"
|
| 29 |
|
|
# HOMEPAGE="http://example.org/foo/"
|
| 30 |
|
|
# SRC_URI="mirror://sourceforge/foo/${P}.tar.bz2"
|
| 31 |
|
|
#
|
| 32 |
|
|
# LICENSE="LGPL-2.1"
|
| 33 |
|
|
# KEYWORDS=""
|
| 34 |
|
|
# SLOT="0"
|
| 35 |
|
|
# IUSE="debug doc examples qt4 static-libs tiff"
|
| 36 |
|
|
#
|
| 37 |
|
|
# CDEPEND="
|
| 38 |
|
|
# media-libs/libpng:0
|
| 39 |
|
|
# qt4? (
|
| 40 |
pesa |
1.63 |
# dev-qt/qtcore:4
|
| 41 |
|
|
# dev-qt/qtgui:4
|
| 42 |
reavertm |
1.1 |
# )
|
| 43 |
|
|
# tiff? ( media-libs/tiff:0 )
|
| 44 |
|
|
# "
|
| 45 |
|
|
# RDEPEND="${CDEPEND}
|
| 46 |
|
|
# !media-gfx/bar
|
| 47 |
|
|
# "
|
| 48 |
|
|
# DEPEND="${CDEPEND}
|
| 49 |
|
|
# doc? ( app-doc/doxygen )
|
| 50 |
|
|
# "
|
| 51 |
|
|
#
|
| 52 |
|
|
# # bug 123456
|
| 53 |
|
|
# AUTOTOOLS_IN_SOURCE_BUILD=1
|
| 54 |
|
|
#
|
| 55 |
|
|
# DOCS=(AUTHORS ChangeLog README "Read me.txt" TODO)
|
| 56 |
|
|
#
|
| 57 |
|
|
# PATCHES=(
|
| 58 |
|
|
# "${FILESDIR}/${P}-gcc44.patch" # bug 123458
|
| 59 |
|
|
# "${FILESDIR}/${P}-as-needed.patch"
|
| 60 |
|
|
# "${FILESDIR}/${P}-unbundle_libpng.patch"
|
| 61 |
|
|
# )
|
| 62 |
|
|
#
|
| 63 |
|
|
# src_configure() {
|
| 64 |
reavertm |
1.6 |
# local myeconfargs=(
|
| 65 |
mgorny |
1.23 |
# $(use_enable debug)
|
| 66 |
reavertm |
1.1 |
# $(use_with qt4)
|
| 67 |
|
|
# $(use_enable threads multithreading)
|
| 68 |
|
|
# $(use_with tiff)
|
| 69 |
|
|
# )
|
| 70 |
|
|
# autotools-utils_src_configure
|
| 71 |
|
|
# }
|
| 72 |
|
|
#
|
| 73 |
|
|
# src_compile() {
|
| 74 |
|
|
# autotools-utils_src_compile
|
| 75 |
|
|
# use doc && autotools-utils_src_compile docs
|
| 76 |
|
|
# }
|
| 77 |
|
|
#
|
| 78 |
|
|
# src_install() {
|
| 79 |
mgorny |
1.58 |
# use doc && HTML_DOCS=("${BUILD_DIR}/apidocs/html/")
|
| 80 |
reavertm |
1.1 |
# autotools-utils_src_install
|
| 81 |
|
|
# if use examples; then
|
| 82 |
mgorny |
1.58 |
# dobin "${BUILD_DIR}"/foo_example{1,2,3} \\
|
| 83 |
reavertm |
1.1 |
# || die 'dobin examples failed'
|
| 84 |
|
|
# fi
|
| 85 |
|
|
# }
|
| 86 |
|
|
#
|
| 87 |
|
|
# @CODE
|
| 88 |
|
|
|
| 89 |
|
|
# Keep variable names synced with cmake-utils and the other way around!
|
| 90 |
|
|
|
| 91 |
|
|
case ${EAPI:-0} in
|
| 92 |
axs |
1.57 |
2|3|4|5) ;;
|
| 93 |
reavertm |
1.2 |
*) die "EAPI=${EAPI} is not supported" ;;
|
| 94 |
reavertm |
1.1 |
esac
|
| 95 |
|
|
|
| 96 |
mgorny |
1.32 |
# @ECLASS-VARIABLE: AUTOTOOLS_AUTORECONF
|
| 97 |
jlec |
1.33 |
# @DEFAULT_UNSET
|
| 98 |
mgorny |
1.32 |
# @DESCRIPTION:
|
| 99 |
|
|
# Set to a non-empty value in order to enable running autoreconf
|
| 100 |
|
|
# in src_prepare() and adding autotools dependencies.
|
| 101 |
|
|
#
|
| 102 |
mgorny |
1.37 |
# This is usually necessary when using live sources or applying patches
|
| 103 |
|
|
# modifying configure.ac or Makefile.am files. Note that in the latter case
|
| 104 |
|
|
# setting this variable is obligatory even though the eclass will work without
|
| 105 |
|
|
# it (to add the necessary dependencies).
|
| 106 |
|
|
#
|
| 107 |
mgorny |
1.32 |
# The eclass will try to determine the correct autotools to run including a few
|
| 108 |
|
|
# external tools: gettext, glib-gettext, intltool, gtk-doc, gnome-doc-prepare.
|
| 109 |
|
|
# If your tool is not supported, please open a bug and we'll add support for it.
|
| 110 |
|
|
#
|
| 111 |
|
|
# Note that dependencies are added for autoconf, automake and libtool only.
|
| 112 |
|
|
# If your package needs one of the external tools listed above, you need to add
|
| 113 |
|
|
# appropriate packages to DEPEND yourself.
|
| 114 |
mgorny |
1.51 |
[[ ${AUTOTOOLS_AUTORECONF} ]] || : ${AUTOTOOLS_AUTO_DEPEND:=no}
|
| 115 |
mgorny |
1.32 |
|
| 116 |
mgorny |
1.30 |
inherit autotools eutils libtool
|
| 117 |
reavertm |
1.1 |
|
| 118 |
|
|
EXPORT_FUNCTIONS src_prepare src_configure src_compile src_install src_test
|
| 119 |
|
|
|
| 120 |
mgorny |
1.58 |
# @ECLASS-VARIABLE: BUILD_DIR
|
| 121 |
mgorny |
1.30 |
# @DEFAULT_UNSET
|
| 122 |
reavertm |
1.1 |
# @DESCRIPTION:
|
| 123 |
|
|
# Build directory, location where all autotools generated files should be
|
| 124 |
|
|
# placed. For out of source builds it defaults to ${WORKDIR}/${P}_build.
|
| 125 |
mgorny |
1.58 |
#
|
| 126 |
|
|
# This variable has been called AUTOTOOLS_BUILD_DIR formerly.
|
| 127 |
|
|
# It is set under that name for compatibility.
|
| 128 |
reavertm |
1.1 |
|
| 129 |
|
|
# @ECLASS-VARIABLE: AUTOTOOLS_IN_SOURCE_BUILD
|
| 130 |
mgorny |
1.30 |
# @DEFAULT_UNSET
|
| 131 |
reavertm |
1.1 |
# @DESCRIPTION:
|
| 132 |
|
|
# Set to enable in-source build.
|
| 133 |
|
|
|
| 134 |
|
|
# @ECLASS-VARIABLE: ECONF_SOURCE
|
| 135 |
mgorny |
1.30 |
# @DEFAULT_UNSET
|
| 136 |
reavertm |
1.1 |
# @DESCRIPTION:
|
| 137 |
|
|
# Specify location of autotools' configure script. By default it uses ${S}.
|
| 138 |
|
|
|
| 139 |
|
|
# @ECLASS-VARIABLE: myeconfargs
|
| 140 |
mgorny |
1.30 |
# @DEFAULT_UNSET
|
| 141 |
reavertm |
1.1 |
# @DESCRIPTION:
|
| 142 |
|
|
# Optional econf arguments as Bash array. Should be defined before calling src_configure.
|
| 143 |
|
|
# @CODE
|
| 144 |
|
|
# src_configure() {
|
| 145 |
reavertm |
1.7 |
# local myeconfargs=(
|
| 146 |
reavertm |
1.1 |
# --disable-readline
|
| 147 |
|
|
# --with-confdir="/etc/nasty foo confdir/"
|
| 148 |
|
|
# $(use_enable debug cnddebug)
|
| 149 |
|
|
# $(use_enable threads multithreading)
|
| 150 |
|
|
# )
|
| 151 |
|
|
# autotools-utils_src_configure
|
| 152 |
|
|
# }
|
| 153 |
|
|
# @CODE
|
| 154 |
|
|
|
| 155 |
mgorny |
1.30 |
# @ECLASS-VARIABLE: DOCS
|
| 156 |
|
|
# @DEFAULT_UNSET
|
| 157 |
|
|
# @DESCRIPTION:
|
| 158 |
|
|
# Array containing documents passed to dodoc command.
|
| 159 |
|
|
#
|
| 160 |
mgorny |
1.61 |
# In EAPIs 4+, can list directories as well.
|
| 161 |
|
|
#
|
| 162 |
mgorny |
1.30 |
# Example:
|
| 163 |
|
|
# @CODE
|
| 164 |
|
|
# DOCS=( NEWS README )
|
| 165 |
|
|
# @CODE
|
| 166 |
|
|
|
| 167 |
|
|
# @ECLASS-VARIABLE: HTML_DOCS
|
| 168 |
|
|
# @DEFAULT_UNSET
|
| 169 |
|
|
# @DESCRIPTION:
|
| 170 |
|
|
# Array containing documents passed to dohtml command.
|
| 171 |
|
|
#
|
| 172 |
|
|
# Example:
|
| 173 |
|
|
# @CODE
|
| 174 |
|
|
# HTML_DOCS=( doc/html/ )
|
| 175 |
|
|
# @CODE
|
| 176 |
|
|
|
| 177 |
|
|
# @ECLASS-VARIABLE: PATCHES
|
| 178 |
|
|
# @DEFAULT_UNSET
|
| 179 |
|
|
# @DESCRIPTION:
|
| 180 |
|
|
# PATCHES array variable containing all various patches to be applied.
|
| 181 |
|
|
#
|
| 182 |
|
|
# Example:
|
| 183 |
|
|
# @CODE
|
| 184 |
|
|
# PATCHES=( "${FILESDIR}"/${P}-mypatch.patch )
|
| 185 |
|
|
# @CODE
|
| 186 |
|
|
|
| 187 |
mgorny |
1.64 |
# @ECLASS-VARIABLE: AUTOTOOLS_PRUNE_LIBTOOL_FILES
|
| 188 |
mgorny |
1.65 |
# @DEFAULT_UNSET
|
| 189 |
mgorny |
1.64 |
# @DESCRIPTION:
|
| 190 |
|
|
# Sets the mode of pruning libtool files. The values correspond to
|
| 191 |
|
|
# prune_libtool_files parameters, with leading dashes stripped.
|
| 192 |
|
|
#
|
| 193 |
|
|
# Defaults to pruning the libtool files when static libraries are not
|
| 194 |
|
|
# installed or can be linked properly without them. Libtool files
|
| 195 |
|
|
# for modules (plugins) will be kept in case plugin loader needs them.
|
| 196 |
|
|
#
|
| 197 |
|
|
# If set to 'modules', the .la files for modules will be removed
|
| 198 |
|
|
# as well. This is often the preferred option.
|
| 199 |
|
|
#
|
| 200 |
|
|
# If set to 'all', all .la files will be removed unconditionally. This
|
| 201 |
|
|
# option is discouraged and shall be used only if 'modules' does not
|
| 202 |
|
|
# remove the files.
|
| 203 |
mgorny |
1.67 |
#
|
| 204 |
|
|
# If set to 'none', no .la files will be pruned ever. Use in corner
|
| 205 |
|
|
# cases only.
|
| 206 |
mgorny |
1.64 |
|
| 207 |
reavertm |
1.1 |
# Determine using IN or OUT source build
|
| 208 |
|
|
_check_build_dir() {
|
| 209 |
|
|
: ${ECONF_SOURCE:=${S}}
|
| 210 |
|
|
if [[ -n ${AUTOTOOLS_IN_SOURCE_BUILD} ]]; then
|
| 211 |
mgorny |
1.58 |
BUILD_DIR="${ECONF_SOURCE}"
|
| 212 |
reavertm |
1.1 |
else
|
| 213 |
mgorny |
1.59 |
# Respect both the old variable and the new one, depending
|
| 214 |
|
|
# on which one was set by the ebuild.
|
| 215 |
|
|
if [[ ! ${BUILD_DIR} && ${AUTOTOOLS_BUILD_DIR} ]]; then
|
| 216 |
|
|
eqawarn "The AUTOTOOLS_BUILD_DIR variable has been renamed to BUILD_DIR."
|
| 217 |
|
|
eqawarn "Please migrate the ebuild to use the new one."
|
| 218 |
|
|
|
| 219 |
|
|
# In the next call, both variables will be set already
|
| 220 |
|
|
# and we'd have to know which one takes precedence.
|
| 221 |
|
|
_RESPECT_AUTOTOOLS_BUILD_DIR=1
|
| 222 |
|
|
fi
|
| 223 |
mgorny |
1.60 |
|
| 224 |
mgorny |
1.59 |
if [[ ${_RESPECT_AUTOTOOLS_BUILD_DIR} ]]; then
|
| 225 |
mgorny |
1.60 |
BUILD_DIR=${AUTOTOOLS_BUILD_DIR:-${WORKDIR}/${P}_build}
|
| 226 |
|
|
else
|
| 227 |
|
|
: ${BUILD_DIR:=${WORKDIR}/${P}_build}
|
| 228 |
mgorny |
1.59 |
fi
|
| 229 |
reavertm |
1.1 |
fi
|
| 230 |
mgorny |
1.58 |
|
| 231 |
mgorny |
1.59 |
# Backwards compatibility for getting the value.
|
| 232 |
mgorny |
1.58 |
AUTOTOOLS_BUILD_DIR=${BUILD_DIR}
|
| 233 |
|
|
echo ">>> Working in BUILD_DIR: \"${BUILD_DIR}\""
|
| 234 |
reavertm |
1.1 |
}
|
| 235 |
|
|
|
| 236 |
|
|
# @FUNCTION: remove_libtool_files
|
| 237 |
mgorny |
1.14 |
# @USAGE: [all]
|
| 238 |
reavertm |
1.1 |
# @DESCRIPTION:
|
| 239 |
|
|
# Determines unnecessary libtool files (.la) and libtool static archives (.a)
|
| 240 |
|
|
# and removes them from installation image.
|
| 241 |
mgorny |
1.14 |
#
|
| 242 |
reavertm |
1.1 |
# To unconditionally remove all libtool files, pass 'all' as argument.
|
| 243 |
mgorny |
1.14 |
# Otherwise, libtool archives required for static linking will be preserved.
|
| 244 |
reavertm |
1.1 |
#
|
| 245 |
|
|
# In most cases it's not necessary to manually invoke this function.
|
| 246 |
|
|
# See autotools-utils_src_install for reference.
|
| 247 |
|
|
remove_libtool_files() {
|
| 248 |
|
|
debug-print-function ${FUNCNAME} "$@"
|
| 249 |
mgorny |
1.16 |
local removing_all
|
| 250 |
mgorny |
1.54 |
|
| 251 |
|
|
eqawarn "The remove_libtool_files() function was deprecated."
|
| 252 |
|
|
eqawarn "Please use prune_libtool_files() from eutils eclass instead."
|
| 253 |
|
|
|
| 254 |
mgorny |
1.16 |
[[ ${#} -le 1 ]] || die "Invalid number of args to ${FUNCNAME}()"
|
| 255 |
|
|
if [[ ${#} -eq 1 ]]; then
|
| 256 |
|
|
case "${1}" in
|
| 257 |
|
|
all)
|
| 258 |
|
|
removing_all=1
|
| 259 |
|
|
;;
|
| 260 |
|
|
*)
|
| 261 |
|
|
die "Invalid argument to ${FUNCNAME}(): ${1}"
|
| 262 |
|
|
esac
|
| 263 |
|
|
fi
|
| 264 |
reavertm |
1.1 |
|
| 265 |
mgorny |
1.19 |
local pc_libs=()
|
| 266 |
|
|
if [[ ! ${removing_all} ]]; then
|
| 267 |
|
|
local arg
|
| 268 |
|
|
for arg in $(find "${D}" -name '*.pc' -exec \
|
| 269 |
|
|
sed -n -e 's;^Libs:;;p' {} +); do
|
| 270 |
|
|
[[ ${arg} == -l* ]] && pc_libs+=(lib${arg#-l}.la)
|
| 271 |
|
|
done
|
| 272 |
|
|
fi
|
| 273 |
|
|
|
| 274 |
reavertm |
1.1 |
local f
|
| 275 |
mgorny |
1.12 |
find "${D}" -type f -name '*.la' -print0 | while read -r -d '' f; do
|
| 276 |
reavertm |
1.1 |
local shouldnotlink=$(sed -ne '/^shouldnotlink=yes$/p' "${f}")
|
| 277 |
mgorny |
1.14 |
local archivefile=${f/%.la/.a}
|
| 278 |
mgorny |
1.15 |
[[ "${f}" != "${archivefile}" ]] || die 'regex sanity check failed'
|
| 279 |
mgorny |
1.14 |
|
| 280 |
mgorny |
1.18 |
# Remove static libs we're not supposed to link against.
|
| 281 |
mgorny |
1.17 |
if [[ ${shouldnotlink} ]]; then
|
| 282 |
|
|
einfo "Removing unnecessary ${archivefile#${D%/}}"
|
| 283 |
|
|
rm -f "${archivefile}" || die
|
| 284 |
mgorny |
1.18 |
# The .la file may be used by a module loader, so avoid removing it
|
| 285 |
|
|
# unless explicitly requested.
|
| 286 |
mgorny |
1.17 |
[[ ${removing_all} ]] || continue
|
| 287 |
|
|
fi
|
| 288 |
|
|
|
| 289 |
mgorny |
1.18 |
# Remove .la files when:
|
| 290 |
|
|
# - user explicitly wants us to remove all .la files,
|
| 291 |
|
|
# - respective static archive doesn't exist,
|
| 292 |
mgorny |
1.19 |
# - they are covered by a .pc file already,
|
| 293 |
mgorny |
1.18 |
# - they don't provide any new information (no libs & no flags).
|
| 294 |
|
|
local removing
|
| 295 |
mgorny |
1.20 |
if [[ ${removing_all} ]]; then removing='forced'
|
| 296 |
|
|
elif [[ ! -f ${archivefile} ]]; then removing='no static archive'
|
| 297 |
|
|
elif has "$(basename "${f}")" "${pc_libs[@]}"; then
|
| 298 |
|
|
removing='covered by .pc'
|
| 299 |
mgorny |
1.18 |
elif [[ ! $(sed -n -e \
|
| 300 |
|
|
"s/^\(dependency_libs\|inherited_linker_flags\)='\(.*\)'$/\2/p" \
|
| 301 |
mgorny |
1.20 |
"${f}") ]]; then removing='no libs & flags'
|
| 302 |
mgorny |
1.18 |
fi
|
| 303 |
|
|
|
| 304 |
|
|
if [[ ${removing} ]]; then
|
| 305 |
mgorny |
1.20 |
einfo "Removing unnecessary ${f#${D%/}} (${removing})"
|
| 306 |
mgorny |
1.15 |
rm -f "${f}" || die
|
| 307 |
reavertm |
1.1 |
fi
|
| 308 |
|
|
done
|
| 309 |
|
|
}
|
| 310 |
|
|
|
| 311 |
mgorny |
1.32 |
# @FUNCTION: autotools-utils_autoreconf
|
| 312 |
|
|
# @DESCRIPTION:
|
| 313 |
|
|
# Reconfigure the sources (like gnome-autogen.sh or eautoreconf).
|
| 314 |
|
|
autotools-utils_autoreconf() {
|
| 315 |
|
|
debug-print-function ${FUNCNAME} "$@"
|
| 316 |
|
|
|
| 317 |
mgorny |
1.55 |
eqawarn "The autotools-utils_autoreconf() function was deprecated."
|
| 318 |
|
|
eqawarn "Please call autotools-utils_src_prepare()"
|
| 319 |
|
|
eqawarn "with AUTOTOOLS_AUTORECONF set instead."
|
| 320 |
|
|
|
| 321 |
mgorny |
1.32 |
# Override this func to not require unnecessary eaclocal calls.
|
| 322 |
|
|
autotools_check_macro() {
|
| 323 |
|
|
local x
|
| 324 |
|
|
|
| 325 |
|
|
# Add a few additional variants as we don't get expansions.
|
| 326 |
mgorny |
1.44 |
[[ ${1} = AC_CONFIG_HEADERS ]] && set -- "${@}" \
|
| 327 |
|
|
AC_CONFIG_HEADER AM_CONFIG_HEADER
|
| 328 |
mgorny |
1.32 |
|
| 329 |
|
|
for x; do
|
| 330 |
|
|
grep -h "^${x}" configure.{ac,in} 2>/dev/null
|
| 331 |
|
|
done
|
| 332 |
|
|
}
|
| 333 |
|
|
|
| 334 |
|
|
einfo "Autoreconfiguring '${PWD}' ..."
|
| 335 |
|
|
|
| 336 |
|
|
local auxdir=$(sed -n -e 's/^AC_CONFIG_AUX_DIR(\(.*\))$/\1/p' \
|
| 337 |
|
|
configure.{ac,in} 2>/dev/null)
|
| 338 |
|
|
if [[ ${auxdir} ]]; then
|
| 339 |
|
|
auxdir=${auxdir%%]}
|
| 340 |
|
|
mkdir -p ${auxdir##[}
|
| 341 |
|
|
fi
|
| 342 |
|
|
|
| 343 |
|
|
# Support running additional tools like gnome-autogen.sh.
|
| 344 |
|
|
# Note: you need to add additional depends to the ebuild.
|
| 345 |
|
|
|
| 346 |
|
|
# gettext
|
| 347 |
|
|
if [[ $(autotools_check_macro AM_GLIB_GNU_GETTEXT) ]]; then
|
| 348 |
jlec |
1.46 |
echo 'no' | autotools_run_tool glib-gettextize --copy --force
|
| 349 |
mgorny |
1.32 |
elif [[ $(autotools_check_macro AM_GNU_GETTEXT) ]]; then
|
| 350 |
mgorny |
1.38 |
eautopoint --force
|
| 351 |
mgorny |
1.32 |
fi
|
| 352 |
|
|
|
| 353 |
|
|
# intltool
|
| 354 |
|
|
if [[ $(autotools_check_macro AC_PROG_INTLTOOL IT_PROG_INTLTOOL) ]]
|
| 355 |
|
|
then
|
| 356 |
mgorny |
1.38 |
autotools_run_tool intltoolize --copy --automake --force
|
| 357 |
mgorny |
1.32 |
fi
|
| 358 |
|
|
|
| 359 |
|
|
# gtk-doc
|
| 360 |
|
|
if [[ $(autotools_check_macro GTK_DOC_CHECK) ]]; then
|
| 361 |
|
|
autotools_run_tool gtkdocize --copy
|
| 362 |
|
|
fi
|
| 363 |
|
|
|
| 364 |
|
|
# gnome-doc
|
| 365 |
|
|
if [[ $(autotools_check_macro GNOME_DOC_INIT) ]]; then
|
| 366 |
mgorny |
1.38 |
autotools_run_tool gnome-doc-prepare --copy --force
|
| 367 |
mgorny |
1.32 |
fi
|
| 368 |
|
|
|
| 369 |
|
|
if [[ $(autotools_check_macro AC_PROG_LIBTOOL AM_PROG_LIBTOOL LT_INIT) ]]
|
| 370 |
|
|
then
|
| 371 |
|
|
_elibtoolize --copy --force --install
|
| 372 |
|
|
fi
|
| 373 |
|
|
|
| 374 |
mgorny |
1.50 |
eaclocal
|
| 375 |
mgorny |
1.32 |
eautoconf
|
| 376 |
|
|
eautoheader
|
| 377 |
mgorny |
1.36 |
FROM_EAUTORECONF=sure eautomake
|
| 378 |
mgorny |
1.32 |
|
| 379 |
|
|
local x
|
| 380 |
mgorny |
1.49 |
for x in $(autotools_check_macro_val AC_CONFIG_SUBDIRS); do
|
| 381 |
mgorny |
1.32 |
if [[ -d ${x} ]] ; then
|
| 382 |
mgorny |
1.52 |
pushd "${x}" >/dev/null || die
|
| 383 |
mgorny |
1.48 |
autotools-utils_autoreconf
|
| 384 |
mgorny |
1.52 |
popd >/dev/null || die
|
| 385 |
mgorny |
1.32 |
fi
|
| 386 |
|
|
done
|
| 387 |
|
|
}
|
| 388 |
|
|
|
| 389 |
reavertm |
1.1 |
# @FUNCTION: autotools-utils_src_prepare
|
| 390 |
|
|
# @DESCRIPTION:
|
| 391 |
|
|
# The src_prepare function.
|
| 392 |
|
|
#
|
| 393 |
|
|
# Supporting PATCHES array and user patches. See base.eclass(5) for reference.
|
| 394 |
|
|
autotools-utils_src_prepare() {
|
| 395 |
|
|
debug-print-function ${FUNCNAME} "$@"
|
| 396 |
|
|
|
| 397 |
mgorny |
1.32 |
local want_autoreconf=${AUTOTOOLS_AUTORECONF}
|
| 398 |
|
|
|
| 399 |
mgorny |
1.45 |
[[ ${PATCHES} ]] && epatch "${PATCHES[@]}"
|
| 400 |
|
|
|
| 401 |
mgorny |
1.47 |
at_checksum() {
|
| 402 |
|
|
find '(' -name 'Makefile.am' \
|
| 403 |
|
|
-o -name 'configure.ac' \
|
| 404 |
|
|
-o -name 'configure.in' ')' \
|
| 405 |
|
|
-exec cksum {} + | sort -k2
|
| 406 |
|
|
}
|
| 407 |
|
|
|
| 408 |
|
|
[[ ! ${want_autoreconf} ]] && local checksum=$(at_checksum)
|
| 409 |
mgorny |
1.30 |
epatch_user
|
| 410 |
mgorny |
1.37 |
if [[ ! ${want_autoreconf} ]]; then
|
| 411 |
mgorny |
1.47 |
if [[ ${checksum} != $(at_checksum) ]]; then
|
| 412 |
mgorny |
1.45 |
einfo 'Will autoreconfigure due to user patches applied.'
|
| 413 |
mgorny |
1.37 |
want_autoreconf=yep
|
| 414 |
|
|
fi
|
| 415 |
|
|
fi
|
| 416 |
mgorny |
1.30 |
|
| 417 |
mgorny |
1.55 |
[[ ${want_autoreconf} ]] && eautoreconf
|
| 418 |
mgorny |
1.25 |
elibtoolize --patch-only
|
| 419 |
reavertm |
1.1 |
}
|
| 420 |
|
|
|
| 421 |
|
|
# @FUNCTION: autotools-utils_src_configure
|
| 422 |
|
|
# @DESCRIPTION:
|
| 423 |
|
|
# The src_configure function. For out of source build it creates build
|
| 424 |
|
|
# directory and runs econf there. Configuration parameters defined
|
| 425 |
|
|
# in myeconfargs are passed here to econf. Additionally following USE
|
| 426 |
|
|
# flags are known:
|
| 427 |
|
|
#
|
| 428 |
|
|
# IUSE="static-libs" passes --enable-shared and either --disable-static/--enable-static
|
| 429 |
|
|
# to econf respectively.
|
| 430 |
|
|
autotools-utils_src_configure() {
|
| 431 |
|
|
debug-print-function ${FUNCNAME} "$@"
|
| 432 |
|
|
|
| 433 |
mgorny |
1.22 |
[[ -z ${myeconfargs+1} || $(declare -p myeconfargs) == 'declare -a'* ]] \
|
| 434 |
|
|
|| die 'autotools-utils.eclass: myeconfargs has to be an array.'
|
| 435 |
|
|
|
| 436 |
mgorny |
1.35 |
[[ ${EAPI} == 2 ]] && ! use prefix && EPREFIX=
|
| 437 |
|
|
|
| 438 |
reavertm |
1.1 |
# Common args
|
| 439 |
mgorny |
1.41 |
local econfargs=()
|
| 440 |
|
|
|
| 441 |
|
|
_check_build_dir
|
| 442 |
mgorny |
1.43 |
if "${ECONF_SOURCE}"/configure --help 2>&1 | grep -q '^ *--docdir='; then
|
| 443 |
mgorny |
1.41 |
econfargs+=(
|
| 444 |
|
|
--docdir="${EPREFIX}"/usr/share/doc/${PF}
|
| 445 |
|
|
)
|
| 446 |
|
|
fi
|
| 447 |
reavertm |
1.1 |
|
| 448 |
|
|
# Handle static-libs found in IUSE, disable them by default
|
| 449 |
mgorny |
1.24 |
if in_iuse static-libs; then
|
| 450 |
reavertm |
1.1 |
econfargs+=(
|
| 451 |
|
|
--enable-shared
|
| 452 |
|
|
$(use_enable static-libs static)
|
| 453 |
|
|
)
|
| 454 |
|
|
fi
|
| 455 |
|
|
|
| 456 |
|
|
# Append user args
|
| 457 |
reavertm |
1.5 |
econfargs+=("${myeconfargs[@]}")
|
| 458 |
reavertm |
1.1 |
|
| 459 |
mgorny |
1.58 |
mkdir -p "${BUILD_DIR}" || die
|
| 460 |
|
|
pushd "${BUILD_DIR}" > /dev/null || die
|
| 461 |
mgorny |
1.30 |
econf "${econfargs[@]}" "$@"
|
| 462 |
mgorny |
1.52 |
popd > /dev/null || die
|
| 463 |
reavertm |
1.1 |
}
|
| 464 |
|
|
|
| 465 |
|
|
# @FUNCTION: autotools-utils_src_compile
|
| 466 |
|
|
# @DESCRIPTION:
|
| 467 |
mgorny |
1.58 |
# The autotools src_compile function, invokes emake in specified BUILD_DIR.
|
| 468 |
reavertm |
1.1 |
autotools-utils_src_compile() {
|
| 469 |
|
|
debug-print-function ${FUNCNAME} "$@"
|
| 470 |
|
|
|
| 471 |
|
|
_check_build_dir
|
| 472 |
mgorny |
1.58 |
pushd "${BUILD_DIR}" > /dev/null || die
|
| 473 |
mgorny |
1.30 |
emake "$@" || die 'emake failed'
|
| 474 |
mgorny |
1.52 |
popd > /dev/null || die
|
| 475 |
reavertm |
1.1 |
}
|
| 476 |
|
|
|
| 477 |
|
|
# @FUNCTION: autotools-utils_src_install
|
| 478 |
|
|
# @DESCRIPTION:
|
| 479 |
|
|
# The autotools src_install function. Runs emake install, unconditionally
|
| 480 |
|
|
# removes unnecessary static libs (based on shouldnotlink libtool property)
|
| 481 |
|
|
# and removes unnecessary libtool files when static-libs USE flag is defined
|
| 482 |
|
|
# and unset.
|
| 483 |
|
|
#
|
| 484 |
|
|
# DOCS and HTML_DOCS arrays are supported. See base.eclass(5) for reference.
|
| 485 |
|
|
autotools-utils_src_install() {
|
| 486 |
|
|
debug-print-function ${FUNCNAME} "$@"
|
| 487 |
|
|
|
| 488 |
|
|
_check_build_dir
|
| 489 |
mgorny |
1.58 |
pushd "${BUILD_DIR}" > /dev/null || die
|
| 490 |
mgorny |
1.30 |
emake DESTDIR="${D}" "$@" install || die "emake install failed"
|
| 491 |
mgorny |
1.52 |
popd > /dev/null || die
|
| 492 |
reavertm |
1.1 |
|
| 493 |
mgorny |
1.35 |
# Move docs installed by autotools (in EAPI < 4).
|
| 494 |
mgorny |
1.40 |
if [[ ${EAPI} == [23] ]] \
|
| 495 |
|
|
&& path_exists "${D}${EPREFIX}"/usr/share/doc/${PF}/*; then
|
| 496 |
mgorny |
1.39 |
if [[ $(find "${D}${EPREFIX}"/usr/share/doc/${PF}/* -type d) ]]; then
|
| 497 |
|
|
eqawarn "autotools-utils: directories in docdir require at least EAPI 4"
|
| 498 |
|
|
else
|
| 499 |
|
|
mkdir "${T}"/temp-docdir
|
| 500 |
|
|
mv "${D}${EPREFIX}"/usr/share/doc/${PF}/* "${T}"/temp-docdir/ \
|
| 501 |
|
|
|| die "moving docs to tempdir failed"
|
| 502 |
mgorny |
1.35 |
|
| 503 |
mgorny |
1.39 |
dodoc "${T}"/temp-docdir/* || die "docdir dodoc failed"
|
| 504 |
|
|
rm -r "${T}"/temp-docdir || die
|
| 505 |
|
|
fi
|
| 506 |
mgorny |
1.35 |
fi
|
| 507 |
|
|
|
| 508 |
mgorny |
1.30 |
# XXX: support installing them from builddir as well?
|
| 509 |
mgorny |
1.62 |
if declare -p DOCS &>/dev/null; then
|
| 510 |
|
|
# an empty list == don't install anything
|
| 511 |
|
|
if [[ ${DOCS[@]} ]]; then
|
| 512 |
|
|
if [[ ${EAPI} == [23] ]]; then
|
| 513 |
|
|
dodoc "${DOCS[@]}" || die
|
| 514 |
|
|
else
|
| 515 |
|
|
# dies by itself
|
| 516 |
|
|
dodoc -r "${DOCS[@]}"
|
| 517 |
|
|
fi
|
| 518 |
mgorny |
1.61 |
fi
|
| 519 |
mgorny |
1.34 |
else
|
| 520 |
|
|
local f
|
| 521 |
|
|
# same list as in PMS
|
| 522 |
|
|
for f in README* ChangeLog AUTHORS NEWS TODO CHANGES \
|
| 523 |
|
|
THANKS BUGS FAQ CREDITS CHANGELOG; do
|
| 524 |
|
|
if [[ -s ${f} ]]; then
|
| 525 |
|
|
dodoc "${f}" || die "(default) dodoc ${f} failed"
|
| 526 |
|
|
fi
|
| 527 |
|
|
done
|
| 528 |
mgorny |
1.30 |
fi
|
| 529 |
|
|
if [[ ${HTML_DOCS} ]]; then
|
| 530 |
|
|
dohtml -r "${HTML_DOCS[@]}" || die "dohtml failed"
|
| 531 |
|
|
fi
|
| 532 |
|
|
|
| 533 |
reavertm |
1.1 |
# Remove libtool files and unnecessary static libs
|
| 534 |
mgorny |
1.64 |
local prune_ltfiles=${AUTOTOOLS_PRUNE_LIBTOOL_FILES}
|
| 535 |
mgorny |
1.67 |
if [[ ${prune_ltfiles} != none ]]; then
|
| 536 |
|
|
prune_libtool_files ${prune_ltfiles:+--${prune_ltfiles}}
|
| 537 |
|
|
fi
|
| 538 |
reavertm |
1.1 |
}
|
| 539 |
|
|
|
| 540 |
|
|
# @FUNCTION: autotools-utils_src_test
|
| 541 |
|
|
# @DESCRIPTION:
|
| 542 |
|
|
# The autotools src_test function. Runs emake check in build directory.
|
| 543 |
|
|
autotools-utils_src_test() {
|
| 544 |
|
|
debug-print-function ${FUNCNAME} "$@"
|
| 545 |
|
|
|
| 546 |
|
|
_check_build_dir
|
| 547 |
mgorny |
1.58 |
pushd "${BUILD_DIR}" > /dev/null || die
|
| 548 |
mgorny |
1.66 |
|
| 549 |
mgorny |
1.68 |
if make -n check &>/dev/null; then
|
| 550 |
|
|
emake check "${@}" || die 'emake check failed.'
|
| 551 |
|
|
elif make -n test &>/dev/null; then
|
| 552 |
|
|
emake test "${@}" || die 'emake test failed.'
|
| 553 |
|
|
fi
|
| 554 |
mgorny |
1.66 |
|
| 555 |
mgorny |
1.52 |
popd > /dev/null || die
|
| 556 |
reavertm |
1.1 |
}
|