diff options
author | Gregory M. Tuner <gmt@be-evil.net> | 2013-11-25 03:03:26 -0800 |
---|---|---|
committer | Gregory M. Tuner <gmt@be-evil.net> | 2013-11-25 03:03:26 -0800 |
commit | 702c24ff42c2cedda06e94fe057b10b8b1ca5fe1 (patch) | |
tree | cca80bd1498ecaae48b717c62f8bba7cc49d115f /eclass/autotools-multilib.eclass | |
parent | .gitignore: .swp and tags files (diff) | |
download | gmt-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.eclass | 41 |
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 |