| # Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| # |
| # Original Author: The Chromium OS Authors <chromium-os-dev@chromium.org> |
| # Purpose: Library for handling packages that are part of Auto Update. |
| # |
| |
| inherit flag-o-matic |
| |
| # Some boards started out 32bit (user/kernel) and then migrated to 64bit |
| # (user/kernel). Since we need to auto-update (AU) from the 32bit to |
| # 64bit, and the old 32bit kernels can't execte 64bit code, we need to |
| # always build the AU code as 32bit. |
| # |
| # Setup the build env to create 32bit objects. |
| board_setup_32bit_au_env() |
| { |
| [[ $# -eq 0 ]] || die "${FUNCNAME}: takes no arguments" |
| |
| __AU_OLD_ARCH=${ARCH} |
| __AU_OLD_ABI=${ABI} |
| __AU_OLD_LIBDIR_x86=${LIBDIR_x86} |
| __AU_OLD_CC=${CC} |
| __AU_OLD_CXX=${CXX} |
| export ARCH=x86 ABI=x86 LIBDIR_x86="lib" |
| __AU_OLD_CHOST=${CHOST} |
| export CHOST=i686-pc-linux-gnu |
| if [[ ${CC} == *"clang"* ]]; then |
| export CC=${CHOST}-clang |
| export CXX=${CHOST}-clang++ |
| fi |
| __AU_OLD_SYSROOT=${SYSROOT} |
| export SYSROOT=/usr/${CHOST} |
| append-ldflags -L"${__AU_OLD_SYSROOT}"/usr/lib |
| append-cppflags -isystem "${__AU_OLD_SYSROOT}"/usr/include |
| } |
| |
| # undo what we did in the above function |
| board_teardown_32bit_au_env() |
| { |
| [[ $# -eq 0 ]] || die "${FUNCNAME}: takes no arguments" |
| [ -z "${__AU_OLD_SYSROOT}" ] && \ |
| die "board_setup_32bit_au_env must be called first" |
| |
| filter-ldflags -L"${__AU_OLD_SYSROOT}"/usr/lib |
| filter-flags -isystem "${__AU_OLD_SYSROOT}"/usr/include |
| export SYSROOT=${__AU_OLD_SYSROOT} |
| export CHOST=${__AU_OLD_CHOST} |
| export LIBDIR_x86=${__AU_OLD_LIBDIR_x86} |
| export ABI=${__AU_OLD_ABI} |
| export ARCH=${__AU_OLD_ARCH} |
| if [[ ${CC} == *"clang"* ]]; then |
| export CC=${__AU_OLD_CC} |
| export CXX=${__AU_OLD_CXX} |
| fi |
| } |