# Copyright 1999-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ # https://aur.archlinux.org/packages/ue/uefi-shell-svn/PKGBUILD referenced for build EAPI="5" inherit eutils mount-boot DESCRIPTION="UEFI Shell" HOMEPAGE="http://www.tianocore.org/" LICENSE="BSD-2" SLOT="0" KEYWORDS="amd64 x86" IUSE="shell32 +shell64" DEPEND="dev-lang/python:2.7 dev-lang/nasm app-arch/unzip" RDEPEND="" SRC_URI="http://downloads.sourceforge.net/project/edk2/UDK2014_Releases/UDK2014.SP1.P1/UDK2014.SP1.P1.Complete.MyWorkSpace.zip" _setup_env_vars() { einfo "Setup UDK PATH ENV variables" export _UDK_DIR="${WORKDIR}/${P}" export EDK_TOOLS_PATH="${_UDK_DIR}/BaseTools" export _TIANOCORE_PKG="Shell" export _UDK_TARGET="${_TIANOCORE_PKG}Pkg/${_TIANOCORE_PKG}Pkg.dsc" export _TIANOCORE_TARGET="RELEASE" export _COMPILER="GCC48" [[ "${ARCH}" == "amd64" ]] && export _TIANO_ARCH="X64" [[ "${ARCH}" == "x86" ]] && export _TIANO_ARCH="IA32" [[ "${ARCH}" == "amd64" ]] && export _TIANO_S_ARCH="x64" [[ "${ARCH}" == "x86" ]] && export _TIANO_S_ARCH="ia32" } src_unpack() { unpack "${A}" mkdir "${WORKDIR}/${P}" tar xf "${WORKDIR}/BaseTools(Unix).tar" -C "${WORKDIR}/${P}" unzip -q "${WORKDIR}/UDK2014.SP1.P1.MyWorkSpace.zip" -d "${WORKDIR}" mv "${WORKDIR}/MyWorkSpace/"* "${WORKDIR}/${P}" } src_prepare() { _setup_env_vars sed 's|--gc-sections|--gc-sections --build-id=none|g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" einfo "Use python2 for UDK BaseTools" sed 's|python |python2 |g' -i "${EDK_TOOLS_PATH}/BinWrappers/PosixLike"/* || true sed 's|python |python2 |g' -i "${EDK_TOOLS_PATH}/Tests/GNUmakefile" einfo "Fix GCC Warning as error" sed 's|-Werror |-Wno-error -Wno-unused-but-set-variable |g' -i "${EDK_TOOLS_PATH}/Source/C/Makefiles/header.makefile" || true sed 's|-Werror |-Wno-error -Wno-unused-but-set-variable |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true einfo "Fix GCC >=4.7 error - gcc: error: unrecognized command line option '-melf_x86_64'" sed 's| -m64 --64 -melf_x86_64| -m64|g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true sed 's|--64 | |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true sed 's| -m64 -melf_x86_64| -m64|g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true einfo "Remove GCC -g debug option and add -O0 -mabi=ms -maccumulate-outgoing-args" sed 's|DEFINE GCC_ALL_CC_FLAGS = -g |DEFINE GCC_ALL_CC_FLAGS = -O0 -mabi=ms -maccumulate-outgoing-args |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true sed 's|DEFINE GCC44_ALL_CC_FLAGS = -g |DEFINE GCC44_ALL_CC_FLAGS = -O0 -mabi=ms -maccumulate-outgoing-args |g' -i "${EDK_TOOLS_PATH}/Conf/tools_def.template" || true einfo "Fix UDK Target Platform" sed "s|ACTIVE_PLATFORM = Nt32Pkg/Nt32Pkg.dsc|ACTIVE_PLATFORM = ${_UDK_TARGET}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true sed "s|TARGET = DEBUG|TARGET = ${_TIANOCORE_TARGET}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true sed "s|TOOL_CHAIN_TAG = MYTOOLS|TOOL_CHAIN_TAG = ${_COMPILER}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true sed "s|IA32|X64|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true chmod 0755 "${_UDK_DIR}/BaseTools/BuildEnv" } src_compile() { _setup_env_vars einfo "Unset all compiler FLAGS" unset CFLAGS unset CPPFLAGS unset CXXFLAGS unset LDFLAGS unset MAKEFLAGS einfo "Setup UDK Environment" source "${_UDK_DIR}/BaseTools/BuildEnv" BaseTools einfo "Compile UDK BaseTools" emake -j1 -C "${EDK_TOOLS_PATH}" ARCH=${_TIANO_ARCH=} einfo "Unset all compiler FLAGS" unset CFLAGS unset CPPFLAGS unset CXXFLAGS unset LDFLAGS unset MAKEFLAGS einfo "Compile UEFI Shell v2 ${_TIANO_ARCH} binary" "${EDK_TOOLS_PATH}/BinWrappers/PosixLike/build" -p "${_UDK_TARGET}" -a "${_TIANO_ARCH}" -b "${_TIANOCORE_TARGET}" -t "${_COMPILER}" if [[ "${ARCH}" == "amd64" ]] && use shell32; then einfo "Unset all compiler FLAGS" unset CFLAGS unset CPPFLAGS unset CXXFLAGS unset LDFLAGS unset MAKEFLAGS einfo "Compile UEFI Shell v2 IA32 binary" "${EDK_TOOLS_PATH}/BinWrappers/PosixLike/build" -p "${_UDK_TARGET}" -a "IA32" -b "${_TIANOCORE_TARGET}" -t "${_COMPILER}" fi } src_install() { _setup_env_vars einfo "Install the UEFI Shell v2 ${_TIANO_ARCH} binary" insinto /boot/efi newins "${_UDK_DIR}/Build/${_TIANOCORE_PKG}/${_TIANOCORE_TARGET}_${_COMPILER}/${_TIANO_ARCH}/Shell.efi" shellx64.efi if [[ "${ARCH}" == "amd64" ]] && use shell32; then einfo "Install the UEFI Shell v2 IA32 binary" newins "${_UDK_DIR}/Build/${_TIANOCORE_PKG}/${_TIANOCORE_TARGET}_${_COMPILER}/IA32/Shell.efi" shellia32.efi fi }