| #!/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 |