2N/A#
2N/A# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
2N/A#
2N/A.KEEP_STATE:
2N/A
2N/Ainclude ../Makefile.master
2N/Ainclude ../Makefile.buildnum
2N/A
2N/AROOT_BOOT_GRUB = $(ROOT)/boot/grub
2N/AROOT_SRC_DIR = $(ROOT)/usr/src/grub/grub2
2N/ASRC_GRUB2 = $(SRC)/grub/grub2
2N/ADIST_ARCHIVE=grub-1.99.tar.gz
2N/AGMAKE = /usr/gnu/bin/make
2N/AGRUB_VERSION = 1.99
2N/A
2N/Aall := TARGET = all
2N/Ainstall := TARGET = install
2N/Ainstall := INSTARG = DESTDIR=$(ROOT)
2N/Aclean := TARGET = clean
2N/Aclobber := TARGET = clean
2N/A
2N/AROOT_GRUB2_BIOSDIR = $(ROOT)/usr/lib/grub2/bios
2N/AROOT_GRUB2_BIOS_SHARE = $(ROOT_GRUB2_BIOSDIR)/share
2N/AROOT_GRUB2_BIOS_SHARE_GRUB = $(ROOT_GRUB2_BIOS_SHARE)/grub
2N/AROOT_GRUB2_BIOS_SHARE_GRUB_THEMES = $(ROOT_GRUB2_BIOS_SHARE_GRUB)/themes
2N/AROOT_GRUB2_BIOS_SHARE_GRUB_THEMES_SOLARIS = $(ROOT_GRUB2_BIOS_SHARE_GRUB_THEMES)/solaris
2N/AROOT_GRUB2_BIOS_MAN = $(ROOT_GRUB2_BIOS_SHARE)/man
2N/AROOT_GRUB2_BIOS_DEFDIR = $(ROOT_GRUB2_BIOSDIR)/etc/default
2N/AROOT_GRUB2_BIOS_LIBGRUB = $(ROOT_GRUB2_BIOSDIR)/lib/grub
2N/AROOT_GRUB2_BIOS_LIBGRUB_PLAT = $(ROOT_GRUB2_BIOS_LIBGRUB)/i386-pc
2N/AROOT_GRUB2_UEFI64DIR = $(ROOT)/usr/lib/grub2/uefi64
2N/AROOT_GRUB2_UEFI64_SHARE = $(ROOT_GRUB2_UEFI64DIR)/share
2N/AROOT_GRUB2_UEFI64_MAN = $(ROOT_GRUB2_UEFI64_SHARE)/man
2N/AROOT_GRUB2_UEFI64_DEFDIR = $(ROOT_GRUB2_UEFI64DIR)/etc/default
2N/AROOT_GRUB2_UEFI64_LIBGRUB = $(ROOT_GRUB2_UEFI64DIR)/lib/grub
2N/AROOT_GRUB2_UEFI64_LIBGRUB_PLAT = $(ROOT_GRUB2_UEFI64_LIBGRUB)/x86_64-efi
2N/A
2N/AMOD_INTF_H = $(SRC_GRUB2)/include/grub/util/modvers.h
2N/AXVER_H = $(SRC_GRUB2)/include/grub/xversion.h
2N/AVERSION_DIRS = $(ROOT_GRUB2_UEFI64_LIBGRUB_PLAT) $(ROOT_GRUB2_BIOS_LIBGRUB_PLAT)
2N/AVERSION_FILES = $(VERSION_DIRS:%=%/version.lst)
2N/A
2N/AGRUBPKGVERS_BRANCH_MAIN = $(RELEASE_MAJOR).$(RELEASE_MINOR).0.$(TRUNKID).$(UPDATENUM).$(SRUNUM).$(PLATNUM).$(BUILDID).$(NIGHTLYID):`date -u "+%Y%m%dT%H%M%SZ"`
2N/AGRUBPKGVERS_BRANCH_MAIN_NOTIME = $(RELEASE_MAJOR).$(RELEASE_MINOR).0.$(TRUNKID).$(UPDATENUM).$(SRUNUM).$(PLATNUM).$(BUILDID).$(NIGHTLYID)
2N/AGRUB2_SOLARIS_VERSION_CMD = echo $(GRUB_VERSION),$(GRUBPKGVERS_BRANCH_MAIN)
2N/AGRUB2_SOLARIS_VERSION_CMD_NOTIME = echo $(GRUB_VERSION),$(GRUBPKGVERS_BRANCH_MAIN_NOTIME)
2N/AGRUB2_SOLARIS_VERSION = $(GRUB2_SOLARIS_VERSION_CMD:sh)
2N/AGRUB2_SOLARIS_VERSION_NOTIME = $(GRUB2_SOLARIS_VERSION_CMD_NOTIME:sh)
2N/A
2N/AGRUB_NET_CONFIGFILE=grub_cfg_net
2N/A
2N/AGRUB2_SUBDIRS = grub2/build-bios grub2/build-uefi64
2N/A
2N/ATHEME_FILES = bmenu_c.png bmenu_e.png bmenu_n.png bmenu_ne.png \
2N/A bmenu_nw.png bmenu_s.png bmenu_se.png bmenu_sw.png \
2N/A bmenu_w.png liber18.pf2 oracle.jpg sbar_c.png sbar_n.png \
2N/A sbar_s.png sel_c.png terbox_c.png terbox_e.png terbox_n.png \
2N/A terbox_ne.png terbox_nw.png terbox_s.png terbox_se.png \
2N/A terbox_sw.png terbox_w.png theme.txt univers16.pf2 univers20.pf2
2N/A
2N/ATHEME_TARGETS = $(THEME_FILES:%=$(ROOT_GRUB2_BIOS_SHARE_GRUB_THEMES_SOLARIS)/%)
2N/A
2N/AINST_TARGETS = $(ROOT_GRUB2_BIOS_DEFDIR)/grub \
2N/A $(ROOT_GRUB2_UEFI64_DEFDIR)/grub \
2N/A $(ROOT_SRC_DIR)/COPYING \
2N/A $(ROOT_SRC_DIR)/AUTHORS \
2N/A $(ROOT_SRC_DIR)/$(DIST_ARCHIVE) \
2N/A $(ROOT_BOOT_GRUB)/splash.jpg \
2N/A $(ROOT_BOOT_GRUB)/$(GRUB_NET_CONFIGFILE) \
2N/A $(ROOT_BOOT_GRUB)/default_video_modes.txt \
2N/A $(THEME_TARGETS)
2N/A
2N/ANET_IMAGES = $(ROOT_BOOT_GRUB)/pxegrub2 $(ROOT_BOOT_GRUB)/grub2netx64.efi
2N/A
2N/A# The grub-mkimage binary from the bios subdirectory works for all platforms.
2N/AGRUB2_MKIMAGE=$(ROOT_GRUB2_BIOSDIR)/bin/grub-mkimage
2N/A
2N/ACOMMON_NETIMAGE_MODULES = terminal gfxterm bitmap_scale bitmap font regexp \
2N/A video extcmd crypto normal sleep tr multiboot2 part_msdos part_gpt \
2N/A zfs gzio echo test zfsinfo minicmd keystatus chain boot mmap serial \
2N/A relocator reboot ls hashsum help gcry_crc cat configfile video_fb \
2N/A read acpi videoinfo lsmmap terminfo iso9660 fat fshelp iorw lspci \
2N/A setpci memrw iorw date datetime time
2N/ABIOS_NETIMAGE_MODULES=$(COMMON_NETIMAGE_MODULES) multiboot vbe lsapm vga_text
2N/AUEFI64_NETIMAGE_MODULES=$(COMMON_NETIMAGE_MODULES) efi_gop
2N/A
2N/A# Order DOES matter with the LOADMODS variables. GRUB2 will load these modules in order
2N/A# Remember NOT to include modules here that are already in the memdisk image. The only
2N/A# modules that should be here are modules that are needed to find the grub.cfg and to
2N/A# read from the prefix (stored in the memdisk).
2N/ACOMMON_NETIMAGE_LOADMODS=tftp memdisk tar
2N/ABIOS_NETIMAGE_LOADMODS=pxe biosdisk $(COMMON_NETIMAGE_LOADMODS)
2N/AUEFI64_NETIMAGE_LOADMODS=efinet $(COMMON_NETIMAGE_LOADMODS)
2N/A
2N/A$(ROOT_SRC_DIR)/$(DIST_ARCHIVE) := FILEMODE=0644
2N/Agrub2/build-bios/$(DIST_ARCHIVE) := TARGET=dist
2N/A
2N/Aall clean: grub2
2N/A
2N/Aclobber: clean
2N/A $(RM) grub2/build-bios/$(DIST_ARCHIVE) $(NET_IMAGES)
2N/A
2N/Ainstall: grub2 $(VERSION_FILES) $(INST_TARGETS) $(NET_IMAGES)
2N/A $(RM) $(ROOT_GRUB2_BIOS_LIBGRUB)/x86_64-efi; \
2N/A $(LN) -s ../../../uefi64/lib/grub/x86_64-efi $(ROOT_GRUB2_BIOS_LIBGRUB)
2N/A $(RM) $(ROOT_GRUB2_UEFI64_LIBGRUB)/i386-pc; \
2N/A $(LN) -s ../../../bios/lib/grub/i386-pc $(ROOT_GRUB2_UEFI64_LIBGRUB)
2N/A $(RM) -r $(ROOT_GRUB2_BIOS_MAN) $(ROOT_GRUB2_UEFI64_MAN) \
2N/A $(ROOT_GRUB2_BIOS_SHARE)/grub/*.h \
2N/A $(ROOT_GRUB2_UEFI64_SHARE)/grub/*.h
2N/A
2N/A%/version.lst: FRC
2N/A @$(RM) $@; \
2N/A $(ECHO) "solaris_grub_version: $(GRUB2_SOLARIS_VERSION)" > $@; \
2N/A $(GREP) '^#define[ ]*GRUB_MODULE_INTERFACE_VERSION' $(MOD_INTF_H) | \
2N/A awk '{print "module_interface_version: " $$3}' >> $@; \
2N/A $(CHMOD) $(FILEMODE) $@
2N/A
2N/Ainstver: FRC
2N/A @$(ECHO) '#ifndef _GRUB_XVERSION_H' > $(XVER_H).tmp; \
2N/A $(ECHO) '#define _GRUB_XVERSION_H' >> $(XVER_H).tmp; \
2N/A $(ECHO) '#define GRUB_EXTENDED_VERSION '\""$(GRUB2_SOLARIS_VERSION_NOTIME)"\" >> $(XVER_H).tmp; \
2N/A $(ECHO) '#endif' >> $(XVER_H).tmp; \
2N/A if test ! -f $(XVER_H) || ! /usr/bin/diff $(XVER_H) $(XVER_H).tmp; then \
2N/A mv $(XVER_H).tmp $(XVER_H); \
2N/A else \
2N/A rm -f $(XVER_H).tmp; \
2N/A fi
2N/A
2N/Asetuplinks: FRC
2N/A @$(MKDIR) -p $(SRC_GRUB2)/build-bios/include/grub; \
2N/A $(MKDIR) -p $(SRC_GRUB2)/build-uefi64/include/grub; \
2N/A cd $(SRC_GRUB2)/build-bios/include/grub; \
2N/A if ! test -L cpu; then \
2N/A $(LN) -s ../../../include/grub/i386 cpu; \
2N/A fi; \
2N/A if ! test -L machine; then \
2N/A $(LN) -s ../../../include/grub/i386/pc machine; \
2N/A fi
2N/A @cd $(SRC_GRUB2)/build-uefi64/include/grub; \
2N/A if ! test -L cpu; then \
2N/A $(LN) -s ../../../include/grub/x86_64 cpu; \
2N/A fi; \
2N/A if ! test -L machine; then \
2N/A $(LN) -s ../../../include/grub/x86_64/efi machine; \
2N/A fi
2N/A
2N/A$(GRUB2_SUBDIRS): FRC
2N/A unset DOMAIN; \
2N/A cd $@; pwd; \
2N/A MAKE=$(GMAKE) PATH=/usr/gnu/bin:"$(PATH)" VERSION=$(GRUB_VERSION) \
2N/A $(GMAKE) -j $(DMAKE_MAX_JOBS) $(TARGET) $(INSTARG);
2N/A
2N/Agrub2: instver setuplinks $(GRUB2_SUBDIRS)
2N/A
2N/A$(ROOT_GRUB2_BIOS_DEFDIR)/%: etc_default_%
2N/A $(INS.rename)
2N/A
2N/A$(ROOT_GRUB2_UEFI64_DEFDIR)/%: etc_default_%
2N/A $(INS.rename)
2N/A
2N/A#
2N/A# The source build is done only in the build-bios subdirectory.
2N/A#
2N/Agrub2/build-bios/$(DIST_ARCHIVE): grub2/build-bios
2N/A
2N/A$(ROOT_BOOT_GRUB)/pxegrub2: FRC
2N/A tempdir=$$(mktemp -d /tmp/memdisk.XXXXXXXXX); \
2N/A platform=i386-pc; \
2N/A prefixdir="$${tempdir}/$$platform"; \
2N/A srcdir=$(ROOT_GRUB2_BIOS_LIBGRUB_PLAT); \
2N/A $(MKDIR) -p "$$prefixdir"; \
2N/A $(CP) $(GRUB_NET_CONFIGFILE) "$${prefixdir}/grub.cfg"; \
2N/A $(CP) "$${srcdir}/"*.lst "$${prefixdir}"; \
2N/A for mod in $(BIOS_NETIMAGE_MODULES); do \
2N/A $(CP) "$${srcdir}/$${mod}.mod" "$$prefixdir"; \
2N/A done; \
2N/A (cd "$$tempdir"; $(TAR) cf memdisk.img *); \
2N/A $(GRUB2_MKIMAGE) -O i386-pc-pxe -d "$$srcdir" -o $@ -m "$${tempdir}/memdisk.img" -p '(memdisk)/'"$$platform" $(BIOS_NETIMAGE_LOADMODS); \
2N/A $(RM) -r "$$tempdir"
2N/A $(CHMOD) $(FILEMODE) $@
2N/A
2N/A$(ROOT_BOOT_GRUB)/grub2netx64.efi: FRC
2N/A tempdir=$$(mktemp -d /tmp/memdisk.XXXXXXXXX); \
2N/A platform=x86_64-efi; \
2N/A prefixdir="$${tempdir}/$$platform"; \
2N/A srcdir=$(ROOT_GRUB2_UEFI64_LIBGRUB_PLAT); \
2N/A $(MKDIR) -p "$$prefixdir"; \
2N/A $(CP) $(GRUB_NET_CONFIGFILE) "$${prefixdir}/grub.cfg"; \
2N/A $(CP) "$${srcdir}/"*.lst "$${prefixdir}"; \
2N/A for mod in $(UEFI64_NETIMAGE_MODULES); do \
2N/A $(CP) "$${srcdir}/$${mod}.mod" "$$prefixdir"; \
2N/A done; \
2N/A (cd "$$tempdir"; $(TAR) cf memdisk.img *); \
2N/A $(GRUB2_MKIMAGE) -O x86_64-efi -d "$$srcdir" -o $@ -m "$${tempdir}/memdisk.img" -p '(memdisk)/'"$$platform" $(UEFI64_NETIMAGE_LOADMODS); \
2N/A $(RM) -r "$$tempdir"
2N/A $(CHMOD) $(FILEMODE) $@
2N/A
2N/A$(ROOT_SRC_DIR)/%: grub2/build-bios/%
2N/A $(INS.file)
2N/A
2N/A$(ROOT_SRC_DIR)/%: grub2/%
2N/A $(INS.file)
2N/A
2N/A$(ROOT_BOOT_GRUB)/%: %
2N/A $(INS.file)
2N/A
2N/A$(ROOT_GRUB2_BIOS_SHARE_GRUB)/%: %
2N/A $(INS.file)
2N/A
2N/AFRC: