diff options
author | Florian Fischer <vlooe@web.de> | 2009-04-11 22:39:12 +0200 |
---|---|---|
committer | Florian Fischer <vlooe@web.de> | 2009-04-11 22:39:12 +0200 |
commit | 2cb255b8df844aaa94ae3757e80404f28567eb80 (patch) | |
tree | ff01217eac684418976e7af8bc7134556664d97b /doc | |
parent | Merge branch 'master' of git@github.com:sjnewbury/multilib-overlay (diff) | |
download | multilib-portage-2cb255b8df844aaa94ae3757e80404f28567eb80.tar.gz multilib-portage-2cb255b8df844aaa94ae3757e80404f28567eb80.tar.bz2 multilib-portage-2cb255b8df844aaa94ae3757e80404f28567eb80.zip |
replaced the bash 4 specific parts
Diffstat (limited to 'doc')
-rw-r--r-- | doc/experimental/multilib-native.eclass | 178 |
1 files changed, 100 insertions, 78 deletions
diff --git a/doc/experimental/multilib-native.eclass b/doc/experimental/multilib-native.eclass index 1e9b12a5f..92c9236da 100644 --- a/doc/experimental/multilib-native.eclass +++ b/doc/experimental/multilib-native.eclass @@ -28,54 +28,70 @@ esac # ----------------------------------------------------------------------------- + +_set_multilib_array_index() { + case $1 in + INIT) EMULTILIB_ARRAY_INDEX=0 ;; + x86) EMULTILIB_ARRAY_INDEX=1 ;; + amd64) EMULTILIB_ARRAY_INDEX=2 ;; + ppc) EMULTILIB_ARRAY_INDEX=3 ;; + ppc64) EMULTILIB_ARRAY_INDEX=4 ;; + *) EMULTILIB_ARRAY_INDEX=0 ;; + esac +} + # ABI specific configuration -declare -A EMULTILIB_COMPILER_ABI_FLAGS -declare -A EMULTILIB_LIB_SUFFIX -declare -A EMULTILIB_LIB_SUBDIR -declare -A EMULTILIB_CHOST +declare -a EMULTILIB_COMPILER_ABI_FLAGS +declare -a EMULTILIB_LIB_SUFFIX +declare -a EMULTILIB_LIB_SUBDIR +declare -a EMULTILIB_CHOST # This is the place to add support for new ABIs -EMULTILIB_COMPILER_ABI_FLAGS[x86]="-m32" -EMULTILIB_LIB_SUFFIX[x86]="32" -EMULTILIB_LIB_SUBDIR[x86]="" -EMULTILIB_MACHINE_NAME[x86]="i686" - -EMULTILIB_COMPILER_ABI_FLAGS[amd64]="-m64" -EMULTILIB_LIB_SUFFIX[amd64]="64" -EMULTILIB_LIB_SUBDIR[amd64]="" -EMULTILIB_MACHINE_NAME[amd64]="x86_64" - -EMULTILIB_COMPILER_ABI_FLAGS[ppc]="-m32" -EMULTILIB_LIB_SUFFIX[ppc]="32" -EMULTILIB_LIB_SUBDIR[ppc]="" -EMULTILIB_MACHINE_NAME[ppc]="powerpc" - -EMULTILIB_COMPILER_ABI_FLAGS[ppc64]="-m64" -EMULTILIB_LIB_SUFFIX[ppc64]="64" -EMULTILIB_LIB_SUBDIR[ppc64]="" -EMULTILIB_MACHINE_NAME[ppc64]="powerpc64" +_set_multilib_array_index x86 +EMULTILIB_COMPILER_ABI_FLAGS[${EMULTILIB_ARRAY_INDEX}]="-m32" +EMULTILIB_LIB_SUFFIX[${EMULTILIB_ARRAY_INDEX}]="32" +EMULTILIB_LIB_SUBDIR[${EMULTILIB_ARRAY_INDEX}]="" +EMULTILIB_MACHINE_NAME[${EMULTILIB_ARRAY_INDEX}]="i686" + +_set_multilib_array_index amd64 +EMULTILIB_COMPILER_ABI_FLAGS[${EMULTILIB_ARRAY_INDEX}]="-m64" +EMULTILIB_LIB_SUFFIX[${EMULTILIB_ARRAY_INDEX}]="64" +EMULTILIB_LIB_SUBDIR[${EMULTILIB_ARRAY_INDEX}]="" +EMULTILIB_MACHINE_NAME[${EMULTILIB_ARRAY_INDEX}]="x86_64" + +_set_multilib_array_index ppc +EMULTILIB_COMPILER_ABI_FLAGS[${EMULTILIB_ARRAY_INDEX}]="-m32" +EMULTILIB_LIB_SUFFIX[${EMULTILIB_ARRAY_INDEX}]="32" +EMULTILIB_LIB_SUBDIR[${EMULTILIB_ARRAY_INDEX}]="" +EMULTILIB_MACHINE_NAME[${EMULTILIB_ARRAY_INDEX}]="powerpc" + +_set_multilib_array_index ppc64 +EMULTILIB_COMPILER_ABI_FLAGS[${EMULTILIB_ARRAY_INDEX}]="-m64" +EMULTILIB_LIB_SUFFIX[${EMULTILIB_ARRAY_INDEX}]="64" +EMULTILIB_LIB_SUBDIR[${EMULTILIB_ARRAY_INDEX}]="" +EMULTILIB_MACHINE_NAME[${EMULTILIB_ARRAY_INDEX}]="powerpc64" # ----------------------------------------------------------------------------- # These arrays are used to store environment for each ABI # Saved compiler flags for each ABI -declare -A EMULTILIB_CFLAGS -declare -A EMULTILIB_CXXFLAGS -declare -A EMULTILIB_FFLAGS -declare -A EMULTILIB_FCFLAGS -declare -A EMULTILIB_LDFLAGS +declare -a EMULTILIB_CFLAGS +declare -a EMULTILIB_CXXFLAGS +declare -a EMULTILIB_FFLAGS +declare -a EMULTILIB_FCFLAGS +declare -a EMULTILIB_LDFLAGS # Saved Portage/eclass variables -declare -A EMULTILIB_S -declare -A EMULTILIB_KDE_S -declare -A EMULTILIB_CCACHE_DIR -declare -A EMULTILIB_myconf -declare -A EMULTILIB_mycmakeargs +declare -a EMULTILIB_S +declare -a EMULTILIB_KDE_S +declare -a EMULTILIB_CCACHE_DIR +declare -a EMULTILIB_myconf +declare -a EMULTILIB_mycmakeargs # Non-default ABI binaries -declare -A EMULTILIB_PYTHON -declare -A EMULTILIB_PERLBIN +declare -a EMULTILIB_PYTHON +declare -a EMULTILIB_PERLBIN # On initialisation of multilib environment this gets incremented by 1 EMULTILIB_INITIALISED=0 @@ -169,7 +185,10 @@ _export_ml_config_vars() { local _config_script _config_var for _config_script in $(find "/usr/bin" -executable \ -regex ".*-config.*-${1}"); do - declare -u _config_var="${_config_script%%-*}" + _config_var="${_config_script%%-*}" + #convert to upper case letters. + #with bash 4 we could use declare -u + _config_var="$(echo $_config_var | tr "[:lower:]" "[:upper:]")" _config_var="${_config_var##*/}_CONFIG" _config_var="${_config_var/#LIB}" multilib_debug "${_config_var}_default" "${!_config_var}" @@ -184,30 +203,31 @@ _export_ml_config_vars() { # @USAGE: <ABI> # @DESCRIPTION: Setup initial environment for ABI, flags, workarounds etc. _setup_platform_env() { + _set_multilib_array_index ${1} local pyver="" - [[ -z "${EMULTILIB_MACHINE_NAME[${1}]}" ]] && die "Unknown ABI (${1})" - CHOST="${EMULTILIB_MACHINE_NAME[${1}]}-${CHOST#*-}" + [[ -z "${EMULTILIB_MACHINE_NAME[${EMULTILIB_ARRAY_INDEX}]}" ]] && die "Unknown ABI (${1})" + CHOST="${EMULTILIB_MACHINE_NAME[${EMULTILIB_ARRAY_INDEX}]}-${CHOST#*-}" # Set compiler and linker ABI flags - append-flags "${EMULTILIB_COMPILER_ABI_FLAGS[${1}]}" - append-ldflags "${EMULTILIB_COMPILER_ABI_FLAGS[${1}]}" + append-flags "${EMULTILIB_COMPILER_ABI_FLAGS[${EMULTILIB_ARRAY_INDEX}]}" + append-ldflags "${EMULTILIB_COMPILER_ABI_FLAGS[${EMULTILIB_ARRAY_INDEX}]}" - multilib_debug EMULTILIB_COMPILER_ABI_FLAGS[${1}] ${EMULTILIB_COMPILER_ABI_FLAGS[${1}]} + multilib_debug EMULTILIB_COMPILER_ABI_FLAGS[${EMULTILIB_ARRAY_INDEX}] ${EMULTILIB_COMPILER_ABI_FLAGS[${EMULTILIB_ARRAY_INDEX}]} multilib_debug "${ABI} CFLAGS" "${CFLAGS}" multilib_debug "${ABI} LDFLAGS" "${CFLAGS}" # Multilib QT Support - if [[ -n "${EMULTILIB_LIB_SUFFIX[${1}]}" ]]; then - QMAKESPEC="linux-g++-${EMULTILIB_LIB_SUFFIX[${1}]}" + if [[ -n "${EMULTILIB_LIB_SUFFIX[${EMULTILIB_ARRAY_INDEX}]}" ]]; then + QMAKESPEC="linux-g++-${EMULTILIB_LIB_SUFFIX[${EMULTILIB_ARRAY_INDEX}]}" else QMAKESPEC="linux-g++" fi if [[ ${ABI} == ${DEFAULT_ABI} ]]; then - if [[ -n "${EMULTILIB_LIB_SUFFIX[${1}]}" ]]; then - QTBINDIR="/usr/libexec/qt/${EMULTILIB_LIB_SUFFIX[${1}]}" - QMAKESPEC="linux-g++-${EMULTILIB_LIB_SUFFIX[${1}]}" - elif [[ -d "${EMULTILIB_LIB_SUBDIR[${1}]}" ]]; then - QTBINDIR="/usr/libexec/qt/${EMULTILIB_LIB_SUBDIR[${1}]}" + if [[ -n "${EMULTILIB_LIB_SUFFIX[${EMULTILIB_ARRAY_INDEX}]}" ]]; then + QTBINDIR="/usr/libexec/qt/${EMULTILIB_LIB_SUFFIX[${EMULTILIB_ARRAY_INDEX}]}" + QMAKESPEC="linux-g++-${EMULTILIB_LIB_SUFFIX[${EMULTILIB_ARRAY_INDEX}]}" + elif [[ -d "${EMULTILIB_LIB_SUBDIR[${EMULTILIB_ARRAY_INDEX}]}" ]]; then + QTBINDIR="/usr/libexec/qt/${EMULTILIB_LIB_SUBDIR[${EMULTILIB_ARRAY_INDEX}]}" QMAKESPEC="" else QMAKESPEC="linux-g++" @@ -223,7 +243,7 @@ _setup_platform_env() { # ccache if [[ -z ${CCACHE_DIR} ]] ; then - CCACHE_DIR="/var/tmp/ccache" + CCACHE_DIR="/var/tmp/ccache-${1}" else CCACHE_DIR="${CCACHE_DIR}-${1}" fi @@ -248,56 +268,58 @@ _setup_platform_env() { # @USAGE: <ABI> # @DESCRIPTION: Save environment for ABI _save_platform_env() { + _set_multilib_array_index ${1} multilib_debug "Saving Environment" "${1}" # Save compiler and linker flags for each ABI - EMULTILIB_CFLAGS[${1}]="${CFLAGS}" - EMULTILIB_CXXFLAGS[${1}]="${CXXFLAGS}" - EMULTILIB_FFLAGS[${1}]="${FFLAGS}" - EMULTILIB_FCFLAGS[${1}]="${FCFLAGS}" - EMULTILIB_LDFLAGS[${1}]="${LDFLAGS}" + EMULTILIB_CFLAGS[${EMULTILIB_ARRAY_INDEX}]="${CFLAGS}" + EMULTILIB_CXXFLAGS[${EMULTILIB_ARRAY_INDEX}]="${CXXFLAGS}" + EMULTILIB_FFLAGS[${EMULTILIB_ARRAY_INDEX}]="${FFLAGS}" + EMULTILIB_FCFLAGS[${EMULTILIB_ARRAY_INDEX}]="${FCFLAGS}" + EMULTILIB_LDFLAGS[${EMULTILIB_ARRAY_INDEX}]="${LDFLAGS}" # Saved Portage/eclass variables - EMULTILIB_S[${1}]="${S}" - EMULTILIB_KDE_S[${1}]="${KDE_S}" - EMULTILIB_CCACHE_DIR[${1}]="${CCACHE_DIR}" - EMULTILIB_myconf[${1}]="${myconf}" - EMULTILIB_mycmakeargs[${1}]="${mymakeargs}" + EMULTILIB_S[${EMULTILIB_ARRAY_INDEX}]="${S}" + EMULTILIB_KDE_S[${EMULTILIB_ARRAY_INDEX}]="${KDE_S}" + EMULTILIB_CCACHE_DIR[${EMULTILIB_ARRAY_INDEX}]="${CCACHE_DIR}" + EMULTILIB_myconf[${EMULTILIB_ARRAY_INDEX}]="${myconf}" + EMULTILIB_mycmakeargs[${EMULTILIB_ARRAY_INDEX}]="${mymakeargs}" # Non-default ABI binaries - EMULTILIB_PYTHON[${1}]="${PYTHON}" - EMULTILIB_PERLBIN[${1}]="${PERLBIN}" + EMULTILIB_PYTHON[${EMULTILIB_ARRAY_INDEX}]="${PYTHON}" + EMULTILIB_PERLBIN[${EMULTILIB_ARRAY_INDEX}]="${PERLBIN}" - multilib_debug "EMULTILIB_S[${1}]" "${EMULTILIB_S[${1}]}" - multilib_debug "EMULTILIB_CFLAGS[${1}]" "${EMULTILIB_CFLAGS[${1}]}" + multilib_debug "EMULTILIB_S[${EMULTILIB_ARRAY_INDEX}]" "${EMULTILIB_S[${EMULTILIB_ARRAY_INDEX}]}" + multilib_debug "EMULTILIB_CFLAGS[${EMULTILIB_ARRAY_INDEX}]" "${EMULTILIB_CFLAGS[${EMULTILIB_ARRAY_INDEX}]}" } # @FUNCTION: _restore_platform_env # @USAGE: <ABI> # @DESCRIPTION: Restore environment for ABI _restore_platform_env() { + _set_multilib_array_index ${1} multilib_debug "Restoring Environment" "${1}" - multilib_debug "EMULTILIB_S[${1}]" "${EMULTILIB_S[${1}]}" - multilib_debug "EMULTILIB_CFLAGS[${1}]" "${EMULTILIB_CFLAGS[${1}]}" + multilib_debug "EMULTILIB_S[${EMULTILIB_ARRAY_INDEX}]" "${EMULTILIB_S[${EMULTILIB_ARRAY_INDEX}]}" + multilib_debug "EMULTILIB_CFLAGS[${EMULTILIB_ARRAY_INDEX}]" "${EMULTILIB_CFLAGS[${EMULTILIB_ARRAY_INDEX}]}" # Restore compiler and linker flags for each ABI - CFLAGS="${EMULTILIB_CFLAGS[${1}]}" - CXXFLAGS="${EMULTILIB_CXXFLAGS[${1}]}" - FFLAGS="${EMULTILIB_FFLAGS[${1}]}" - FCFLAGS="${EMULTILIB_FCFLAGS[${1}]}" - LDFLAGS="${EMULTILIB_LDFLAGS[${1}]}" + CFLAGS="${EMULTILIB_CFLAGS[${EMULTILIB_ARRAY_INDEX}]}" + CXXFLAGS="${EMULTILIB_CXXFLAGS[${EMULTILIB_ARRAY_INDEX}]}" + FFLAGS="${EMULTILIB_FFLAGS[${EMULTILIB_ARRAY_INDEX}]}" + FCFLAGS="${EMULTILIB_FCFLAGS[${EMULTILIB_ARRAY_INDEX}]}" + LDFLAGS="${EMULTILIB_LDFLAGS[${EMULTILIB_ARRAY_INDEX}]}" # Saved Portage/eclass variables - S="${EMULTILIB_S[${1}]}" - KDE_S="${EMULTILIB_KDE_S[${1}]}" - CCACHE_DIR="${EMULTILIB_CCACHE_DIR[${1}]}" - myconf="${EMULTILIB_myconf[${1}]}" - mymakeargs="${EMULTILIB_mycmakeargs[${1}]}" + S="${EMULTILIB_S[${EMULTILIB_ARRAY_INDEX}]}" + KDE_S="${EMULTILIB_KDE_S[${EMULTILIB_ARRAY_INDEX}]}" + CCACHE_DIR="${EMULTILIB_CCACHE_DIR[${EMULTILIB_ARRAY_INDEX}]}" + myconf="${EMULTILIB_myconf[${EMULTILIB_ARRAY_INDEX}]}" + mymakeargs="${EMULTILIB_mycmakeargs[${EMULTILIB_ARRAY_INDEX}]}" # Non-default ABI binaries - PYTHON="${EMULTILIB_PYTHON[${1}]}" - PERLBIN="${EMULTILIB_PERLBIN[${1}]}" + PYTHON="${EMULTILIB_PYTHON[${EMULTILIB_ARRAY_INDEX}]}" + PERLBIN="${EMULTILIB_PERLBIN[${EMULTILIB_ARRAY_INDEX}]}" multilib_debug "S" "${S}" multilib_debug "CFLAGS" "${CFLAGS}" @@ -511,7 +533,7 @@ multilib-native_src_generic_sub() { done fi fi - + # Now save the environment _save_platform_env "${ABI}" fi |