add script to build grub for galileo

This script will download and build grub.efi which can
be used on galileo for booting Zephyr.

Change-Id: Iba8777ae3868befa3bcd3972813779dbecd9c947
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
diff --git a/.gitignore b/.gitignore
index 78585e0..0f8a69e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,4 @@
 html/
 doc/latex/
 sanity-out/
+scripts/grub
diff --git a/scripts/build_grub.sh b/scripts/build_grub.sh
new file mode 100755
index 0000000..53c128f
--- /dev/null
+++ b/scripts/build_grub.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+# Originally from the Galileo port in contiki
+# https://github.com/otcshare/contiki-x86
+
+set -e
+
+JOBS=5
+HEAD="bac5d1a64ab4191058a8fd4c05f6b3b339e249e7"
+SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+
+prepare() {
+  if [[ ! -d ./src ]]; then
+    git clone git://git.savannah.gnu.org/grub.git src
+  fi
+
+  pushd src
+  git checkout $HEAD
+  git clean -fdx
+  popd
+}
+
+build() {
+  pushd src
+
+  ./autogen.sh
+  ./configure --with-platform=efi --target=i386
+
+  make -j${JOBS}
+
+  ./grub-mkimage -p /EFI/BOOT -d ./grub-core/ -O i386-efi -o grub.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
+
+  popd
+}
+
+setup() {
+  mkdir -p bin
+  cp src/grub.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