aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory M. Tuner <gmt@be-evil.net>2013-11-25 03:03:26 -0800
committerGregory M. Tuner <gmt@be-evil.net>2013-11-25 03:03:26 -0800
commit702c24ff42c2cedda06e94fe057b10b8b1ca5fe1 (patch)
treecca80bd1498ecaae48b717c62f8bba7cc49d115f /eclass/autotools-multilib.eclass
parent.gitignore: .swp and tags files (diff)
downloadgmt-702c24ff42c2cedda06e94fe057b10b8b1ca5fe1.tar.gz
gmt-702c24ff42c2cedda06e94fe057b10b8b1ca5fe1.tar.bz2
gmt-702c24ff42c2cedda06e94fe057b10b8b1ca5fe1.zip
AUTOTOOLS_IN_SOURCE_BUILD support for autotools-multilib.eclass
Signed-off-by: Gregory M. Tuner <gmt@be-evil.net>
Diffstat (limited to 'eclass/autotools-multilib.eclass')
-rw-r--r--eclass/autotools-multilib.eclass41
1 files changed, 30 insertions, 11 deletions
diff --git a/eclass/autotools-multilib.eclass b/eclass/autotools-multilib.eclass
index adec1da..6ce5fd6 100644
--- a/eclass/autotools-multilib.eclass
+++ b/eclass/autotools-multilib.eclass
@@ -18,9 +18,12 @@
# when the relevant flag is enabled. Other than that, it works like
# regular autotools-utils.
#
-# Note that the multilib support requires out-of-source builds to be
-# enabled. Thus, it is impossible to use AUTOTOOLS_IN_SOURCE_BUILD with
-# it.
+# Note that AUTOTOOLS_IN_SOURCE_BUILD is supported; this is a reversal
+# from previous versions, where it was unsupported. When activated,
+# this will cause the source to be cloned into the build dirs
+# instead of the usual out-of-source build recipe (this could mean
+# a lot of stuff gets copied for some projects, so please use it
+# sparingly).
# EAPI=4 is required for meaningful MULTILIB_USEDEP.
case ${EAPI:-0} in
@@ -95,14 +98,20 @@ if has src_install ${MULTILIB_PARALLEL_PHASES} ; then
die "src_install in MULTILIB_PARALLEL_PHASES requries MULTILIB_INSECURE_INSTALL"
fi
-if [[ ${AUTOTOOLS_IN_SOURCE_BUILD} ]]; then
- die "${ECLASS}: multilib support requires out-of-source builds."
-fi
-
inherit my-god-its-full-of-quotation-marks ehooker autotools-utils multilib-build
EXPORT_FUNCTIONS src_prepare src_configure src_compile src_test src_install
+_wrap_srcdir() {
+ debug-print-function "${FUNCNAME}" "$@"
+ if [[ ${REAL_AUTOTOOLS_IN_SOURCE_BUILD} ]] ; then
+ # stop whispering lies into multilib-build's ear... and start telling them to autotools-utils instead :)
+ ECONF_SOURCE="${BUILD_DIR}" S="${BUILD_DIR}" AUTOTOOLS_IN_SOURCE_BUILD="${REAL_AUTOTOOLS_IN_SOURCE_BUILD}" "$@"
+ else
+ "$@"
+ fi
+}
+
# @FUNCTION: autotools_multilib_src_prepare
# @USAGE: [list of arguments]
# @RETURN: Either the results of autotools-utils_src_prepare, or zero,
@@ -115,10 +124,13 @@ EXPORT_FUNCTIONS src_prepare src_configure src_compile src_test src_install
# fires the autotools-multilib-global-post_src_prepare ehook.
autotools-multilib_src_prepare() {
debug-print-function "${FUNCNAME}" "$@"
+
local _autotools_multilib_src_prepare_result=0
if ehook_fire autotools-multilib-global-pre_src_prepare ; then
autotools-utils_src_prepare "${@}"
_autotools_multilib_src_prepare_result=$?
+ [[ ${AUTOTOOLS_IN_SOURCE_BUILD} ]] && \
+ AUTOTOOLS_IN_SOURCE_BUILD="" multilib_copy_sources
fi
ehook_fire autotools-multilib-global-post_src_prepare -u
return ${_autotools_multilib_src_prepare_result}
@@ -192,6 +204,7 @@ _autotools_multilib_phasic_abi_wrapper() {
# Fires autotools-multilib-global-{pre,post}_<phase-name> ehooks.
_autotools_multilib_phasic_foreach_abi() {
debug-print-function "${FUNCNAME}" "$@"
+
local _autotools_multilib_phase="$1"
case ${_autotools_multilib_phase} in
src_configure|src_compile|src_test|src_install) shift ;;
@@ -200,11 +213,17 @@ _autotools_multilib_phasic_foreach_abi() {
local _autotools_multilib_foreach_result=0
if ehook_fire autotools-multilib-global-pre_${_autotools_multilib_phase} ; then
if has ${_autotools_multilib_phase} ${MULTILIB_PARALLEL_PHASES} ; then
- multilib_parallel_foreach_abi _autotools_multilib_phasic_abi_wrapper \
- "${_autotools_multilib_phase}" "$@"
+ REAL_AUTOTOOLS_IN_SOURCE_BUILD="${AUTOTOOLS_IN_SOURCE_BUILD}" \
+ AUTOTOOLS_IN_SOURCE_BUILD="" \
+ multilib_parallel_foreach_abi _wrap_srcdir \
+ _autotools_multilib_phasic_abi_wrapper \
+ "${_autotools_multilib_phase}" "$@"
else
- multilib_foreach_abi _autotools_multilib_phasic_abi_wrapper \
- "${_autotools_multilib_phase}" "$@"
+ REAL_AUTOTOOLS_IN_SOURCE_BUILD="${AUTOTOOLS_IN_SOURCE_BUILD}" \
+ AUTOTOOLS_IN_SOURCE_BUILD="" \
+ multilib_foreach_abi _wrap_srcdir \
+ _autotools_multilib_phasic_abi_wrapper \
+ "${_autotools_multilib_phase}" "$@"
fi
_autotools_multilib_foreach_result=$?
fi