diff options
author | Steven J Newbury <steve@snewbury.org.uk> | 2009-04-22 21:57:16 +0100 |
---|---|---|
committer | Steven J Newbury <steve@snewbury.org.uk> | 2009-04-22 21:57:16 +0100 |
commit | f61633438b8608bf6de5db168ebfd8a5c9bd7b24 (patch) | |
tree | c165a6f1053b1dd4517bb77d9b340467b22a2cf8 /eclass | |
parent | Merge branch 'master' of git@github.com:sjnewbury/multilib-overlay (diff) | |
download | multilib-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.eclass | 144 |
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 |