It will become especially useful when more ABI flags are introduced.
---
 gx86/eclass/multilib-build.eclass | 59 ++++++++++++++++++++++-----------------
 1 file changed, 34 insertions(+), 25 deletions(-)

diff --git a/gx86/eclass/multilib-build.eclass 
b/gx86/eclass/multilib-build.eclass
index d8bd5ab..20d4f1c 100644
--- a/gx86/eclass/multilib-build.eclass
+++ b/gx86/eclass/multilib-build.eclass
@@ -39,6 +39,23 @@ IUSE=multilib
 # @CODE
 MULTILIB_USEDEP='multilib(-)?'
 
+# @FUNCTION: multilib_get_enabled_abis
+# @DESCRIPTION:
+# Return the ordered list of enabled ABIs if multilib builds
+# are enabled. The best (most preferred) ABI will come last.
+#
+# If multilib is disabled, the default ABI will be returned
+# in order to enforce consistent testing with multilib code.
+multilib_get_enabled_abis() {
+       debug-print-function ${FUNCNAME} "${@}"
+
+       if use multilib; then
+               get_all_abis
+       else
+               echo ${DEFAULT_ABI}
+       fi
+}
+
 # @FUNCTION: multilib_foreach_abi
 # @USAGE: <argv>...
 # @DESCRIPTION:
@@ -51,15 +68,11 @@ MULTILIB_USEDEP='multilib(-)?'
 multilib_foreach_abi() {
        local initial_dir=${BUILD_DIR:-${S}}
 
-       if use multilib; then
-               local ABI
-               for ABI in $(get_all_abis); do
-                       multilib_toolchain_setup "${ABI}"
-                       BUILD_DIR=${initial_dir%%/}-${ABI} "${@}"
-               done
-       else
-               "${@}"
-       fi
+       local ABI
+       for ABI in $(multilib_get_enabled_abis); do
+               multilib_toolchain_setup "${ABI}"
+               BUILD_DIR=${initial_dir%%/}-${ABI} "${@}"
+       done
 }
 
 # @FUNCTION: multilib_parallel_foreach_abi
@@ -77,26 +90,22 @@ multilib_foreach_abi() {
 multilib_parallel_foreach_abi() {
        local initial_dir=${BUILD_DIR:-${S}}
 
-       if use multilib; then
-               multijob_init
+       multijob_init
 
-               local ABI
-               for ABI in $(get_all_abis); do
-                       (
-                               multijob_child_init
+       local ABI
+       for ABI in $(multilib_get_enabled_abis); do
+               (
+                       multijob_child_init
 
-                               multilib_toolchain_setup "${ABI}"
-                               BUILD_DIR=${initial_dir%%/}-${ABI}
-                               "${@}"
-                       ) &
+                       multilib_toolchain_setup "${ABI}"
+                       BUILD_DIR=${initial_dir%%/}-${ABI}
+                       "${@}"
+               ) &
 
-                       multijob_post_fork
-               done
+               multijob_post_fork
+       done
 
-               multijob_finish
-       else
-               "${@}"
-       fi
+       multijob_finish
 }
 
 _MULTILIB_BUILD=1
-- 
1.8.1.1


Reply via email to