#!/bin/sh

NAME="edk2"
DESC="EFI Development Kit II"

MAKEDEPS=" bash python iasl nasm util-linux util-linux-misc"

PKG_VER=0.0.202202
_realver=edk2-stable${PKG_VER##*.}
_sslver=1.1.1n
_sfver=3e
SOURCE="https://github.com/tianocore/edk2/archive/$_realver.tar.gz"

ADDITIONAL="
https://www.openssl.org/source/openssl-$_sslver.tar.gz
http://www.jhauser.us/arithmetic/SoftFloat-$_sfver.zip
0008-BaseTools-do-not-build-BrotliCompress-RH-only.patch
0009-MdeModulePkg-remove-package-private-Brotli-include-p.patch
build-hack.patch
disable-werror.patch
"

TARGET_ARCH=X64
PLATFORM=OvmfPkg/OvmfPkgX64.dsc

TOOLCHAIN=GCC5
RELEASE=RELEASE


prepare() {
	# unix line endings for the files to be patched
	sed -e 's/\r$//' -i BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp \
		BaseTools/Source/C/VolInfo/VolInfo.c
	rm -rf CryptoPkg/Library/OpensslLib/openssl
	ln -s "$BUILD_ROOT"/openssl-$_sslver CryptoPkg/Library/OpensslLib/openssl
	rm -rf ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3
	ln -s "$BUILD_ROOT"/SoftFloat-$_sfver \
		ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3
	apply_patches
}

build() {
	export WORKSPACE=$PWD
	export PACKAGES_PATH=$PWD
	export EDK_TOOLS_PATH=$PWD/BaseTools/
	export PATH=$PWD/BaseTools/BinWrappers/PosixLike/:$PATH
	# parallel build fails
	unset MAKEFLAGS

	bash -c ". edksetup.sh"
	make -C BaseTools

	msg "Building Plaform Files"
	command build -b $RELEASE \
		-a $TARGET_ARCH  \
		-t $TOOLCHAIN \
		-p $PLATFORM \
		-n ${JOBS:-2}
}

package() {
	mkdir -p "$PKG_DEST"/usr/bin \
		"$PKG_DEST"/usr/share/edk2/Conf \
		"$PKG_DEST"/usr/share/edk2/Scripts

	install BaseTools/Source/C/bin/* BaseTools/BinWrappers/PosixLike/LzmaF86Compress \
		"$PKG_DEST"/usr/bin
	install BaseTools/BuildEnv "$PKG_DEST"/usr/share/edk2/
	install BaseTools/Conf/*.template "$PKG_DEST"/usr/share/edk2/Conf
	install BaseTools/Scripts/GccBase.lds "$PKG_DEST"/usr/share/edk2/Scripts

	for i in $(find BaseTools/Source/Python -type d -maxdepth 1); do
		local mod=${i##*/}
		test -f "$i/$mod.py" || continue
		cp -R BaseTools/Source/Python/"$mod" "$PKG_DEST"/usr/share/edk2/Python/
		cat <<- EOF > "$PKG_DEST"/usr/bin/"$mod".py
		#!/bin/sh
		export PYTHONPATH=/usr/share/edk2/Python
		exec $PYTHON_COMMAND /usr/share/edk2/Python/$mod/$mod.py "\$@"
		EOF
		chmod +x "$PKG_DEST"/usr/bin/"$mod".py
	done
}