summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorSteven J Newbury <steve@snewbury.org.uk>2009-04-22 21:57:16 +0100
committerSteven J Newbury <steve@snewbury.org.uk>2009-04-22 21:57:16 +0100
commitf61633438b8608bf6de5db168ebfd8a5c9bd7b24 (patch)
treec165a6f1053b1dd4517bb77d9b340467b22a2cf8 /eclass
parentMerge branch 'master' of git@github.com:sjnewbury/multilib-overlay (diff)
downloadmultilib-portage-f61633438b8608bf6de5db168ebfd8a5c9bd7b24.tar.gz
multilib-portage-f61633438b8608bf6de5db168ebfd8a5c9bd7b24.tar.bz2
multilib-portage-f61633438b8608bf6de5db168ebfd8a5c9bd7b24.zip
Factorize envioronment saving, and drop array declarations since they
have no effect anyway.
Diffstat (limited to 'eclass')
-rw-r--r--eclass/multilib-native.eclass144
1 files changed, 28 insertions, 116 deletions
diff --git a/eclass/multilib-native.eclass b/eclass/multilib-native.eclass
index 672a677ab..1ae5f887c 100644
--- a/eclass/multilib-native.eclass
+++ b/eclass/multilib-native.eclass
@@ -26,47 +26,22 @@ esac
# -----------------------------------------------------------------------------
-# This eclass makes extensive use of bash arrays for holding critical
-# environment variables for each supported ABI
-
-# This array stores the index key generated by $(get_install_abis) from
-# multilib.eclass
-declare -a EMULTILIB_ARRAY_INDEX
-
-# Arrays to holding ABI specific toolchain variables
-declare -a EMULTILIB_AS
-declare -a EMULTILIB_CC
-declare -a EMULTILIB_CXX
-declare -a EMULTILIB_FC
-declare -a EMULTILIB_LD
-declare -a EMULTILIB_ASFLAGS
-declare -a EMULTILIB_CFLAGS
-declare -a EMULTILIB_CXXFLAGS
-declare -a EMULTILIB_FCFLAGS
-declare -a EMULTILIB_FFLAGS
-declare -a EMULTILIB_LDFLAGS
-declare -a EMULTILIB_CHOST
-declare -a EMULTILIB_CBUILD
-declare -a EMULTILIB_CDEFINE
-declare -a EMULTILIB_LIBDIR
-
-# Saved Portage/eclass variables
-declare -a EMULTILIB_S
-declare -a EMULTILIB_ECONF_SOURCE
-declare -a EMULTILIB_KDE_S
-declare -a EMULTILIB_CMAKE_BUILD_DIR
-declare -a EMULTILIB_CCACHE_DIR
-declare -a EMULTILIB_QTBINDIR
-declare -a EMULTILIB_QMAKE
-declare -a EMULTILIB_QMAKESPEC
-declare -a EMULTILIB_myconf
-declare -a EMULTILIB_mycmakeargs
-
-# Non-default ABI binaries
-declare -a EMULTILIB_PYTHON
-declare -a EMULTILIB_PERLBIN
-
-# On initialisation of multilib environment this gets incremented by 1
+# @VARIABLE: EMULTILIB_SAVE_VARS
+# @DESCRIPTION: Environment variables to save
+# EMULTILIB_SAVE_VARS="${EMULTILIB_SAVE_VARS}
+# AS CC CXX FC LD ASFLAGS CFLAGS CXXFLAGS FCFLAGS FFLAGS LDFLAGS
+# CHOST CBUILD CDEFINE LIBDIR S ECONF_SOURCE KDE_S
+# CMAKE_BUILD_DIR CCACHE_DIR QTBINDIR QMAKE QMAKESPEC myconf
+# mycmakeargs PYTHON PERLBIN"
+EMULTILIB_SAVE_VARS="${EMULTILIB_SAVE_VARS}
+ AS CC CXX FC LD ASFLAGS CFLAGS CXXFLAGS FCFLAGS FFLAGS LDFLAGS
+ CHOST CBUILD CDEFINE LIBDIR S ECONF_SOURCE KDE_S
+ CMAKE_BUILD_DIR CCACHE_DIR QTBINDIR QMAKE QMAKESPEC myconf
+ mycmakeargs PYTHON PERLBIN"
+
+# @VARIABLE: EMULTILIB_SOURCE_TOP_DIRNAME
+# @DESCRIPTION: On initialisation of multilib environment this gets incremented by 1
+# EMULTILIB_INITIALISED=""
EMULTILIB_INITIALISED=""
# @VARIABLE: EMULTILIB_SOURCE_TOP_DIRNAME
@@ -326,42 +301,12 @@ multilib-native_setup_abi_env() {
# @DESCRIPTION: Save environment for ABI
multilib-native_save_abi_env() {
multilib_debug "Saving Environment" "${1}"
-
- # Save toolchain flags for each ABI
- EMULTILIB_AS[$(multilib-native_abi_to_index_key ${1})]="${AS}"
- EMULTILIB_CC[$(multilib-native_abi_to_index_key ${1})]="${CC}"
- EMULTILIB_CXX[$(multilib-native_abi_to_index_key ${1})]="${CXX}"
- EMULTILIB_FC[$(multilib-native_abi_to_index_key ${1})]="${FC}"
- EMULTILIB_LD[$(multilib-native_abi_to_index_key ${1})]="${LD}"
- EMULTILIB_ASFLAGS[$(multilib-native_abi_to_index_key ${1})]="${ASFLAGS}"
- EMULTILIB_CFLAGS[$(multilib-native_abi_to_index_key ${1})]="${CFLAGS}"
- EMULTILIB_CXXFLAGS[$(multilib-native_abi_to_index_key ${1})]="${CXXFLAGS}"
- EMULTILIB_FCFLAGS[$(multilib-native_abi_to_index_key ${1})]="${FCFLAGS}"
- EMULTILIB_FFLAGS[$(multilib-native_abi_to_index_key ${1})]="${FFLAGS}"
- EMULTILIB_LDFLAGS[$(multilib-native_abi_to_index_key ${1})]="${LDFLAGS}"
- EMULTILIB_CDEFINE[$(multilib-native_abi_to_index_key ${1})]="${CBUILD}"
- EMULTILIB_CHOST[$(multilib-native_abi_to_index_key ${1})]="${CHOST}"
- EMULTILIB_CBUILD[$(multilib-native_abi_to_index_key ${1})]="${CBUILD}"
- EMULTILIB_LIBDIR[$(multilib-native_abi_to_index_key ${1})]="${LIBDIR}"
-
- # Saved Portage/eclass variables
- EMULTILIB_S[$(multilib-native_abi_to_index_key ${1})]="${S}"
- EMULTILIB_ECONF_SOURCE[$(multilib-native_abi_to_index_key ${1})]="${ECONF_SOURCE}"
- EMULTILIB_KDE_S[$(multilib-native_abi_to_index_key ${1})]="${KDE_S}"
- EMULTILIB_CMAKE_BUILD_DIR[$(multilib-native_abi_to_index_key ${1})]="${CMAKE_BUILD_DIR}"
- EMULTILIB_CCACHE_DIR[$(multilib-native_abi_to_index_key ${1})]="${CCACHE_DIR}"
- EMULTILIB_QTBINDIR[$(multilib-native_abi_to_index_key ${1})]="${QTBINDIR}"
- EMULTILIB_QMAKE[$(multilib-native_abi_to_index_key ${1})]="${QMAKE}"
- EMULTILIB_QMAKESPEC[$(multilib-native_abi_to_index_key ${1})]="${QMAKESPEC}"
- EMULTILIB_myconf[$(multilib-native_abi_to_index_key ${1})]="${myconf}"
- EMULTILIB_mycmakeargs[$(multilib-native_abi_to_index_key ${1})]="${mycmakeargs}"
-
- # Non-default ABI binaries
- EMULTILIB_PYTHON[$(multilib-native_abi_to_index_key ${1})]="${PYTHON}"
- EMULTILIB_PERLBIN[$(multilib-native_abi_to_index_key ${1})]="${PERLBIN}"
-
- multilib_debug "EMULTILIB_S[$(multilib-native_abi_to_index_key ${1})]" "${EMULTILIB_S[$(multilib-native_abi_to_index_key ${1})]}"
- multilib_debug "EMULTILIB_CC[$(multilib-native_abi_to_index_key ${1})]" "${EMULTILIB_CC[$(multilib-native_abi_to_index_key ${1})]}"
+ local _var _array
+ for _var in ${EMULTILIB_SAVE_VARS}; do
+ _array="EMULTILIB_${_var}"
+ multilib_debug ${_array}[$(multilib-native_abi_to_index_key ${1})] "${!_var}"
+ eval "${_array}[$(multilib-native_abi_to_index_key ${1})]"="\"${!_var}\""
+ done
}
# Internal function
@@ -370,45 +315,12 @@ multilib-native_save_abi_env() {
# @DESCRIPTION: Restore environment for ABI
multilib-native_restore_abi_env() {
multilib_debug "Restoring Environment" "${1}"
-
- multilib_debug "EMULTILIB_S[$(multilib-native_abi_to_index_key ${1})]" "${EMULTILIB_S[$(multilib-native_abi_to_index_key ${1})]}"
- multilib_debug "EMULTILIB_CFLAGS[$(multilib-native_abi_to_index_key ${1})]" "${EMULTILIB_CFLAGS[$(multilib-native_abi_to_index_key ${1})]}"
-
- # Restore compiler and linker flags for each ABI
- AS="${EMULTILIB_AS[$(multilib-native_abi_to_index_key ${1})]}"
- CC="${EMULTILIB_CC[$(multilib-native_abi_to_index_key ${1})]}"
- CXX="${EMULTILIB_CXX[$(multilib-native_abi_to_index_key ${1})]}"
- FC="${EMULTILIB_FC[$(multilib-native_abi_to_index_key ${1})]}"
- LD="${EMULTILIB_LD[$(multilib-native_abi_to_index_key ${1})]}"
- ASFLAGS="${EMULTILIB_ASFLAGS[$(multilib-native_abi_to_index_key ${1})]}"
- CFLAGS="${EMULTILIB_CFLAGS[$(multilib-native_abi_to_index_key ${1})]}"
- CXXFLAGS="${EMULTILIB_CXXFLAGS[$(multilib-native_abi_to_index_key ${1})]}"
- FCFLAGS="${EMULTILIB_FCFLAGS[$(multilib-native_abi_to_index_key ${1})]}"
- FFLAGS="${EMULTILIB_FFLAGS[$(multilib-native_abi_to_index_key ${1})]}"
- LDFLAGS="${EMULTILIB_LDFLAGS[$(multilib-native_abi_to_index_key ${1})]}"
- CDEFINE="${EMULTILIB_CDEFINE[$(multilib-native_abi_to_index_key ${1})]}"
- CHOST="${EMULTILIB_CHOST[$(multilib-native_abi_to_index_key ${1})]}"
- CBUILD="${EMULTILIB_CBUILD[$(multilib-native_abi_to_index_key ${1})]}"
- LIBDIR="${EMULTILIB_LIBDIR[$(multilib-native_abi_to_index_key ${1})]}"
-
- # Saved Portage/eclass variables
- S="${EMULTILIB_S[$(multilib-native_abi_to_index_key ${1})]}"
- ECONF_SOURCE="${EMULTILIB_ECONF_SOURCE[$(multilib-native_abi_to_index_key ${1})]}"
- KDE_S="${EMULTILIB_KDE_S[$(multilib-native_abi_to_index_key ${1})]}"
- CMAKE_BUILD_DIR="${EMULTILIB_CMAKE_BUILD_DIR[$(multilib-native_abi_to_index_key ${1})]}"
- CCACHE_DIR="${EMULTILIB_CCACHE_DIR[$(multilib-native_abi_to_index_key ${1})]}"
- QTBINDIR="${EMULTILIB_QTBINDIR[$(multilib-native_abi_to_index_key ${1})]}"
- QMAKE="${EMULTILIB_QMAKE[$(multilib-native_abi_to_index_key ${1})]}"
- QMAKESPEC="${EMULTILIB_QMAKESPEC[$(multilib-native_abi_to_index_key ${1})]}"
- myconf="${EMULTILIB_myconf[$(multilib-native_abi_to_index_key ${1})]}"
- mycmakeargs="${EMULTILIB_mycmakeargs[$(multilib-native_abi_to_index_key ${1})]}"
-
- # Non-default ABI binaries
- PYTHON="${EMULTILIB_PYTHON[$(multilib-native_abi_to_index_key ${1})]}"
- PERLBIN="${EMULTILIB_PERLBIN[$(multilib-native_abi_to_index_key ${1})]}"
-
- multilib_debug "S" "${S}"
- multilib_debug "CFLAGS" "${CFLAGS}"
+ local _var _array
+ for _var in ${EMULTILIB_SAVE_VARS}; do
+ _array="EMULTILIB_${_var}[$(multilib-native_abi_to_index_key ${1})]"
+ multilib_debug "${_var}" "${!_array}"
+ export ${_var}="${!_array}"
+ done
}
# @FUNCTION: multilib-native_src_generic