# $Id: PKGBUILD 206579 2014-03-02 01:23:40Z thomas $
# Maintainer: Thomas Bächler <thomas@archlinux.org>
pkgname=ovmf
pkgver=15280
pkgrel=1
arch=('any')
pkgdesc="Tianocore UEFI firmware for qemu."
url="http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=EDK2"
license=('custom')
makedepends=('git' 'python2' 'iasl')
source=('edk2::git+https://github.com/tianocore/edk2#commit=57a1b9c4252985ee5d631340fed453e73e0c9146'
        '0001-Fix-uninitialized-value-in-VfrCompiler-constructor.patch')
sha256sums=('SKIP'
            '8761c79b9d3e616c42bfb9c61d72893bbe19d774fe28ce9733ff62ed92478868')
options=(!makeflags)

pkgver() {
  cd "${srcdir}"/edk2
  git svn find-rev HEAD
}

prepare() {
  cd "${srcdir}"
  # edk2 uses python everywhere, but expects python2
  mkdir bin
  ln -s /usr/bin/python2 bin/python

  cd edk2
  patch -p1 -i "${srcdir}"/0001-Fix-uninitialized-value-in-VfrCompiler-constructor.patch
}

build() {
  if [ "$CARCH" != "x86_64" ]; then
    error "This package must be built under the x86_64 architecture."
    false
  fi
  export PATH="${srcdir}/bin:$PATH"
  cd "${srcdir}/"edk2
  make -C BaseTools
  export EDK_TOOLS_PATH="${srcdir}"/edk2/BaseTools
  . edksetup.sh BaseTools

  # Set RELEASE target, gcc 4.8 toolchain and number of build threads
  sed "s|^TARGET[ ]*=.*|TARGET = RELEASE|; \
       s|TOOL_CHAIN_TAG[ ]*=.*|TOOL_CHAIN_TAG = GCC48|; \
       s|MAX_CONCURRENT_THREAD_NUMBER[ ]*=.*|MAX_CONCURRENT_THREAD_NUMBER = $(nproc)|;" -i Conf/target.txt
  # Build OVMF for ia32
  sed "s|^TARGET_ARCH[ ]*=.*|TARGET_ARCH = IA32|; \
       s|^ACTIVE_PLATFORM[ ]*=.*|ACTIVE_PLATFORM = OvmfPkg/OvmfPkgIa32.dsc|;" -i Conf/target.txt
  ./BaseTools/BinWrappers/PosixLike/build
  # Build OVMF for x64
  sed "s|^TARGET_ARCH[ ]*=.*|TARGET_ARCH = X64|; \
       s|^ACTIVE_PLATFORM[ ]*=.*|ACTIVE_PLATFORM = OvmfPkg/OvmfPkgX64.dsc|;" -i Conf/target.txt
  ./BaseTools/BinWrappers/PosixLike/build
}

package() {
  install -D -m644 "${srcdir}"/edk2/Build/OvmfIa32/RELEASE_GCC48/FV/OVMF.fd "${pkgdir}"/usr/share/ovmf/ovmf_ia32.bin
  install -D -m644 "${srcdir}"/edk2/Build/OvmfX64/RELEASE_GCC48/FV/OVMF.fd "${pkgdir}"/usr/share/ovmf/ovmf_x64.bin
  install -D -m644 "${srcdir}"/edk2/OvmfPkg/License.txt "${pkgdir}"/usr/share/licenses/ovmf/License.txt
}
