summaryrefslogtreecommitdiff
path: root/boot/grub2/grub2.mk
diff options
context:
space:
mode:
Diffstat (limited to 'boot/grub2/grub2.mk')
-rw-r--r--boot/grub2/grub2.mk93
1 files changed, 93 insertions, 0 deletions
diff --git a/boot/grub2/grub2.mk b/boot/grub2/grub2.mk
new file mode 100644
index 000000000..6c3bbefe3
--- /dev/null
+++ b/boot/grub2/grub2.mk
@@ -0,0 +1,93 @@
+#############################################################
+#
+# grub2
+#
+# TODO
+#
+# * grub2's autogen uses ruby, which isn't part of the core Debian
+# installation. So either decide it is a requirement for Buildroot,
+# or build it for the host.
+#
+# * improve the installation procedure. For the moment, it just
+# installs everything in $(TARGET_DIR).
+#
+#############################################################
+GRUB2_SOURCE:=grub2_1.98.orig.tar.gz
+GRUB2_PATCH:=grub2_1.98-1.diff.gz
+GRUB2_SITE=$(BR2_DEBIAN_MIRROR)/debian/pool/main/g/grub2
+GRUB2_PATCH_SITE:=$(GRUB2_SITE)
+GRUB2_CAT:=$(ZCAT)
+GRUB2_DIR:=$(BUILD_DIR)/grub-1.98
+
+GRUB2_CFLAGS=-DSUPPORT_LOOPDEV
+ifeq ($(BR2_LARGEFILE),)
+GRUB2_CFLAGS+=-U_FILE_OFFSET_BITS
+endif
+
+$(DL_DIR)/$(GRUB2_SOURCE):
+ $(call DOWNLOAD,$(GRUB2_SITE),$(GRUB2_SOURCE))
+
+$(DL_DIR)/$(GRUB2_PATCH):
+ $(call DOWNLOAD,$(GRUB2_PATCH_SITE),$(GRUB2_PATCH))
+
+grub2-source: $(DL_DIR)/$(GRUB2_SOURCE) $(DL_DIR)/$(GRUB2_PATCH)
+
+$(GRUB2_DIR)/.unpacked: $(DL_DIR)/$(GRUB2_SOURCE) $(DL_DIR)/$(GRUB2_PATCH)
+ mkdir -p $(@D)
+ $(GRUB2_CAT) $(DL_DIR)/$(GRUB2_SOURCE) | tar $(TAR_STRIP_COMPONENTS)=1 -C $(@D) -xvf -
+ toolchain/patch-kernel.sh $(@D) $(DL_DIR) $(GRUB2_PATCH)
+ for i in `grep -v "^#" $(@D)/debian/patches/00list`; do \
+ cat $(@D)/debian/patches/$$i | patch -p1 -d $(@D); \
+ done
+ toolchain/patch-kernel.sh $(@D) boot/grub2 grub-\*.patch
+ touch $@
+
+$(GRUB2_DIR)/.configured: $(GRUB2_DIR)/.unpacked
+ (cd $(GRUB2_DIR); rm -rf config.cache; \
+ $(TARGET_CONFIGURE_OPTS) ; \
+ ./autogen.sh ; \
+ $(TARGET_CONFIGURE_OPTS) \
+ $(TARGET_CONFIGURE_ARGS) \
+ CPPFLAGS="$(GRUB2_CFLAGS)" \
+ grub_cv_i386_check_nested_functions=no \
+ ./configure $(QUIET) \
+ --target=$(GNU_TARGET_NAME) \
+ --host=$(GNU_TARGET_NAME) \
+ --build=$(GNU_HOST_NAME) \
+ --prefix=/ \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --disable-grub-mkfont \
+ --disable-grub-fstest \
+ --disable-grub-emu-usb \
+ --disable-werror \
+ $(DISABLE_LARGEFILE) \
+ $(GRUB2_CONFIG-y) \
+ )
+ touch $@
+
+$(GRUB2_DIR)/.compiled: $(GRUB2_DIR)/.configured
+ $(MAKE) CC=$(TARGET_CC) -C $(@D)
+ touch $@
+
+$(GRUB2_DIR)/.installed: $(GRUB2_DIR)/.compiled
+ $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install
+ touch $@
+
+grub2: host-automake host-autoconf $(GRUB2_DIR)/.installed
+
+grub2-clean:
+ $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(GRUB2_DIR) uninstall
+ -$(MAKE) -C $(GRUB2_DIR) clean
+
+grub2-dirclean:
+ rm -rf $(GRUB2_DIR)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(BR2_TARGET_GRUB2),y)
+TARGETS+=grub2
+endif