blob: b7e5a3511d2521c32f8c3ec45fcd318790325418 [file] [log] [blame]
#!/usr/bin/env bash
# Originally from the Galileo port in contiki
# https://github.com/otcshare/contiki-x86
set -e
unset CFLAGS
JOBS=5
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
if [ "x$1" == "x" ]; then
echo "Usage: $0 [i386|x86_64]"
exit 1
fi
TARGET_ARCH=$1
export PYTHON=python3
prepare() {
if [[ ! -d ./src ]]; then
git clone http://git.savannah.gnu.org/r/grub.git src
fi
pushd src
git checkout grub-2.04
git clean -fdx
popd
}
build() {
pushd src
./bootstrap
./autogen.sh
./configure --with-platform=efi --target=${TARGET_ARCH} --disable-werror
make -j${JOBS}
./grub-mkimage -p /EFI/BOOT -d ./grub-core/ -O ${TARGET_ARCH}-efi \
-o grub_${TARGET_ARCH}.efi \
boot efifwsetup efi_gop efinet efi_uga lsefimmap lsefi lsefisystab \
exfat fat multiboot2 multiboot terminal part_msdos part_gpt normal \
all_video aout configfile echo file fixvideo fshelp gfxterm gfxmenu \
gfxterm_background gfxterm_menu legacycfg video_bochs video_cirrus \
video_colors video_fb videoinfo video net tftp
popd
}
setup() {
mkdir -p bin
cp src/grub_${TARGET_ARCH}.efi bin/
}
cleanup() {
rm -rf ./src
rm -rf ./bin
}
# This script will always run on its own basepath, no matter where you call it from.
mkdir -p ${SCRIPT_DIR}/grub
pushd ${SCRIPT_DIR}/grub
case $1 in
-c | --cleanup)
cleanup
;;
*)
prepare && build && setup
;;
esac
popd