#!/usr/bin/make -f SHELL := bash deb_version := $(shell dpkg-parsechangelog | sed -ne "s/^Version: \(.*\)/\1/p") upstream_version := $(shell echo $(deb_version) | sed -e "s/-[^-]*$$//") package := grub2 DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH 2>/dev/null) DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null) DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null) HOST_CFLAGS := -g -Wall -Wno-error=unused-result ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) HOST_CFLAGS += -O0 else HOST_CFLAGS += -O2 endif unexport CFLAGS export HOST_CFLAGS export TARGET_CPPFLAGS := -Wno-unused-but-set-variable ifeq (,$(shell which qemu-system-i386 2>/dev/null)) with_check := no else with_check := yes endif CC := gcc-4.7 # Enable external modules from grub-extras. export GRUB_CONTRIB := $(CURDIR)/debian/grub-extras confflags = PACKAGE_VERSION="$(deb_version)" PACKAGE_STRING="GRUB $(deb_version)" CC=$(CC) TARGET_CC=$(CC) --enable-grub-mkfont AUTOGEN_DEB_FILES = config templates preinst postinst postrm dirs install links maintscript BUILD_PACKAGES := $(strip $(shell dh_listpackages)) REAL_PACKAGES = grub-emu grub-pc grub-coreboot grub-efi-ia32 grub-efi-amd64 grub-efi-ia64 grub-efi-arm grub-ieee1275 grub-firmware-qemu grub-uboot grub-yeeloong ifneq (,$(filter i386 amd64,$(DEB_HOST_ARCH_CPU))) COMMON_PLATFORM := pc else ifneq (,$(filter powerpc ppc64 sparc,$(DEB_HOST_ARCH_CPU))) COMMON_PLATFORM := ieee1275 else ifeq (mipsel,$(DEB_HOST_ARCH_CPU)) COMMON_PLATFORM := yeeloong else ifeq (ia64,$(DEB_HOST_ARCH_CPU)) COMMON_PLATFORM := efi-ia64 else ifeq (arm,$(DEB_HOST_ARCH_CPU)) COMMON_PLATFORM := uboot else $(error COMMON_PLATFORM not set for $(DEB_HOST_ARCH_CPU)) endif ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes)) DEFAULT_CMDLINE := quiet splash DEFAULT_TIMEOUT := 10 DEFAULT_HIDDEN_TIMEOUT := 0 DEFAULT_HIDDEN_TIMEOUT_BOOL := true confflags += \ --enable-ubuntu-recovery \ --enable-quiet-boot \ --enable-quick-boot \ --enable-gfxpayload-dynamic \ --enable-vt-handoff substvars := \ -Vlsb-base-depends="lsb-base (>= 3.0-6)" \ -Vgfxpayload-depends="grub-gfxpayload-lists [any-i386 any-amd64]" else DEFAULT_CMDLINE := quiet DEFAULT_TIMEOUT := 5 DEFAULT_HIDDEN_TIMEOUT := DEFAULT_HIDDEN_TIMEOUT_BOOL := false substvars := endif SB_PACKAGE := ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes)) ifeq ($(DEB_HOST_ARCH),amd64) SB_PACKAGE := grub-efi-amd64 SB_PLATFORM := x86_64-efi SB_EFI_NAME := x64 endif endif %: dh $@ --parallel override_dh_auto_configure: $(patsubst %,configure/%,$(BUILD_PACKAGES)) override_dh_auto_build: $(patsubst %,build/%,$(BUILD_PACKAGES)) override_dh_auto_install: $(patsubst %,install/%,$(BUILD_PACKAGES)) $(patsubst %,configure/%,$(REAL_PACKAGES)) :: configure/% : debian/stamps/configure-% $(patsubst %,build/%,$(REAL_PACKAGES) grub-rescue-pc) :: build/% : debian/stamps/build-% debian/stamps/configure-%: package = $(subst debian/stamps/configure-,,$@) debian/stamps/configure-%: export DH_OPTIONS = -p$(package) -Bobj/$(package) debian/stamps/build-%: package = $(subst debian/stamps/build-,,$@) debian/stamps/build-%: export DH_OPTIONS = -p$(package) -Bobj/$(package) install/%: package = $(subst install/,,$@) install/%: package_bin = $(package)-bin install/%: package_dbg = $(package)-dbg install/grub-emu: package_bin = grub-emu install/grub-emu: package_dbg = grub-emu-dbg install/%: export DH_OPTIONS = -p$(package) -Bobj/$(patsubst grub-common,grub-$(COMMON_PLATFORM),$(package)) debian/stamps/autogen: autogen.sh configure.ac Makefile.util.def grub-core/Makefile.core.def mkdir -p debian/stamps env -u DH_OPTIONS dh_autoreconf -- ./autogen.sh touch $@ debian/stamps/configure-grub-common: debian/stamps/configure-grub-$(COMMON_PLATFORM) debian/stamps/build-grub-common: debian/stamps/build-grub-$(COMMON_PLATFORM) debian/stamps/configure-grub-pc debian/stamps/configure-grub-ieee1275 debian/stamps/configure-grub-coreboot debian/stamps/configure-grub-emu debian/stamps/configure-grub-uboot debian/stamps/configure-grub-yeeloong: debian/stamps/autogen mkdir -p debian/stamps obj/$(package) dh_auto_configure -- $(confflags) --with-platform=$(subst grub-,,$(package)) touch $@ # This name scheme leaves room for things like amd32 someday debian/stamps/configure-grub-efi-ia32: debian/stamps/autogen mkdir -p debian/stamps obj/$(package) dh_auto_configure -- $(confflags) --with-platform=efi --target=i386-pe --program-prefix="" touch $@ debian/stamps/configure-grub-efi-amd64: debian/stamps/autogen mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@) dh_auto_configure -- $(confflags) --with-platform=efi --target=amd64-pe --program-prefix="" touch $@ debian/stamps/configure-grub-efi-ia64: debian/stamps/autogen mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@) dh_auto_configure -- $(confflags) --with-platform=efi touch $@ debian/stamps/configure-grub-efi-arm: debian/stamps/autogen mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@) dh_auto_configure -- $(confflags) --with-platform=efi touch $@ debian/stamps/configure-grub-firmware-qemu: debian/stamps/autogen mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@) dh_auto_configure -- $(confflags) --with-platform=qemu touch $@ debian/stamps/build-grub-efi-ia32 debian/stamps/build-grub-efi-amd64 debian/stamps/build-grub-efi-ia64 debian/stamps/build-grub-efi-arm debian/stamps/build-grub-ieee1275 debian/stamps/build-grub-coreboot debian/stamps/build-grub-emu debian/stamps/build-grub-uboot debian/stamps/build-grub-yeeloong: debian/stamps/build-%: debian/stamps/configure-% dh_auto_build touch $@ debian/stamps/build-grub-pc: debian/stamps/configure-grub-pc dh_auto_build ifeq ($(with_check), yes) PATH="$$PATH:/sbin:/usr/sbin" dh_auto_test endif touch $@ debian/stamps/build-grub-firmware-qemu: debian/stamps/configure-grub-firmware-qemu dh_auto_build grub_dir=`mktemp -d` ; \ grub_memdisk=`mktemp` ; \ trap "rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM ; \ mkdir -p $${grub_dir}/boot/grub ; \ cp debian/grub-firmware-qemu_grub.cfg $${grub_dir}/boot/grub/grub.cfg ; \ tar -cf - -C $${grub_dir} boot > $${grub_memdisk} ; \ obj/$(package)/grub-mkimage \ -O i386-qemu \ -d $(CURDIR)/obj/$(package)/grub-core \ $(CURDIR)/obj/$(package)/grub-core/*.mod \ -m $${grub_memdisk} \ -o $(CURDIR)/obj/$(package)/grub.bin touch $@ debian/stamps/build-grub-rescue-pc: debian/stamps/build-grub-pc mkdir -p obj/grub-rescue-pc cp -a obj/grub-pc/grub-mkrescue obj/grub-pc/grub-mkconfig_lib \ obj/grub-rescue-pc/ mkdir -p obj/grub-rescue-pc/rescue-disk/boot/grub cp docs/grub.cfg obj/grub-rescue-pc/rescue-disk/boot/grub/ sed -i 's,^prefix=.*,prefix=$(CURDIR)/obj/grub-rescue-pc,' \ obj/grub-rescue-pc/grub-mkrescue mkdir -p obj/grub-rescue-pc/lib/grub rm -rf obj/grub-rescue-pc/lib/grub/i386-pc cp -a obj/grub-pc/grub-core obj/grub-rescue-pc/lib/grub/i386-pc pkgdatadir=$(CURDIR)/obj/grub-rescue-pc \ obj/grub-rescue-pc/grub-mkrescue \ --grub-mkimage=$(CURDIR)/obj/grub-pc/grub-mkimage \ --output=$(CURDIR)/obj/grub-rescue-pc/grub-rescue-cdrom.iso \ $(CURDIR)/obj/grub-rescue-pc/rescue-disk # save space for floppy image rm -rf obj/grub-rescue-pc/lib/grub/i386-pc/po pkgdatadir=$(CURDIR)/obj/grub-rescue-pc \ obj/grub-rescue-pc/grub-mkrescue \ --grub-mkimage=$(CURDIR)/obj/grub-pc/grub-mkimage \ --output=$(CURDIR)/obj/grub-rescue-pc/grub-rescue-floppy.img \ --diet \ $(CURDIR)/obj/grub-rescue-pc/rescue-disk touch $@ platform_subst = \ if [ -e debian/$(1) ]; then \ sed debian/$(1) \ -e "s/@PACKAGE@/$(2)/g" \ -e "s/@CPU_PLATFORM@/$$cpu_platform/g" \ -e "s/@DEFAULT_CMDLINE@/$(DEFAULT_CMDLINE)/g" \ -e "s/@DEFAULT_TIMEOUT@/$(DEFAULT_TIMEOUT)/g" \ -e "s/@DEFAULT_HIDDEN_TIMEOUT_BOOL@/$(DEFAULT_HIDDEN_TIMEOUT_BOOL)/g" \ >> debian/$(2).$(3); \ fi install/grub-pc install/grub-efi-ia32 install/grub-efi-amd64 install/grub-efi-ia64 install/grub-efi-arm install/grub-ieee1275 install/grub-coreboot install/grub-emu install/grub-uboot install/grub-yeeloong: dh_auto_install --destdir=debian/tmp-$(package) if [ "$@" = "install/grub-emu" ] ; then \ set -e ; \ for i in $(AUTOGEN_DEB_FILES) ; do \ > debian/$(package).$$i; \ $(call platform_subst,$(package).$$i.in,$(package),$$i); \ $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_CPU).in,$(package),$$i); \ $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_OS).in,$(package),$$i); \ $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package),$$i); \ [ -s debian/$(package).$$i ] || rm -f debian/$(package).$$i; \ > debian/$(package_dbg).$$i; \ $(call platform_subst,$(package_dbg).$$i.in,$(package_dbg),$$i); \ $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_CPU).in,$(package_dbg),$$i); \ $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_OS).in,$(package_dbg),$$i); \ $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package_dbg),$$i); \ [ -s debian/$(package_dbg).$$i ] || rm -f debian/$(package_dbg).$$i; \ done ; \ else \ set -e ; \ cpu_platform=$$(find debian/tmp-$(package)/usr/lib/grub \ -mindepth 1 -maxdepth 1 -type d -printf '%P\n') ; \ for i in $(AUTOGEN_DEB_FILES) ; do \ > debian/$(package).$$i; \ $(call platform_subst,$$i.in,$(package),$$i); \ $(call platform_subst,$(package).$$i.in,$(package),$$i); \ $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_CPU).in,$(package),$$i); \ $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_OS).in,$(package),$$i); \ $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package),$$i); \ [ -s debian/$(package).$$i ] || rm -f debian/$(package).$$i; \ > debian/$(package_bin).$$i; \ $(call platform_subst,$$i-bin.in,$(package_bin),$$i); \ $(call platform_subst,$(package_bin).$$i.in,$(package_bin),$$i); \ $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_CPU).in,$(package_bin),$$i); \ $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_OS).in,$(package_bin),$$i); \ $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package_bin),$$i); \ [ -s debian/$(package_bin).$$i ] || rm -f debian/$(package_bin).$$i; \ > debian/$(package_dbg).$$i; \ $(call platform_subst,$$i-dbg.in,$(package_dbg),$$i); \ $(call platform_subst,$(package_dbg).$$i.in,$(package_dbg),$$i); \ $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_CPU).in,$(package_dbg),$$i); \ $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_OS).in,$(package_dbg),$$i); \ $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package_dbg),$$i); \ [ -s debian/$(package_dbg).$$i ] || rm -f debian/$(package_dbg).$$i; \ done ; \ fi find debian/tmp-$(package)/usr/lib/grub -name modinfo.sh -print0 | \ xargs -0r chmod +x find debian/tmp-$(package)/usr/lib/grub -name gdb_grub -print0 | \ xargs -0r chmod -x find debian/tmp-$(package)/usr/lib/grub -name gmodule.pl -print0 | \ xargs -0r chmod -x mkdir -p debian/$(package_bin)/usr/share/lintian/overrides echo "$(package_bin): unstripped-binary-or-object *.mod" \ >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \ | sed -e "s%.*%$(package_bin): statically-linked-binary &%g" \ >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) cd debian/tmp-$(package) && find ./usr/lib/grub -name kernel.img \ | sed -e "s%.*%$(package_bin): statically-linked-binary &%g" \ >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \ | sed -e "s%.*%$(package_bin): unstripped-binary-or-object &%g" \ >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) if [ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ] ; then \ echo "$(package_bin): binary-from-other-architecture *.mod" \ >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \ cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \ | sed -e "s%.*%$(package_bin): binary-from-other-architecture &%g" \ >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \ fi if ([ "$@" = "install/grub-pc" ] || \ [ "$@" = "install/grub-ieee1275" ] || \ [ "$@" = "install/grub-coreboot" ] || \ [ "$@" = "install/grub-emu" ]) && \ [ "$(DEB_HOST_ARCH_OS)" = "linux" ] && \ [ "$(DEB_HOST_ARCH_CPU)" = "i386" ] ; then \ echo "$(package_bin): binary-from-other-architecture *efiemu64.o" \ >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \ fi mkdir -p debian/$(package_dbg)/usr/share/lintian/overrides echo "$(package_dbg): unstripped-binary-or-object *.module" \ >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) echo "$(package_dbg): statically-linked-binary *.image" \ >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec \ | sed -e "s%.*%$(package_dbg): statically-linked-binary &%g" \ >> $(CURDIR)/debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) if [ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ] ; then \ echo "$(package_dbg): binary-from-other-architecture *.module" \ >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) ; \ cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec \ | sed -e "s%.*%$(package_dbg): binary-from-other-architecture &%g" \ >> $(CURDIR)/debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) ; \ fi # Avoid failures later if we're building from a tree with no .po # files. mkdir -p debian/tmp-$(package)/usr/share/locale install/grub-common: set -e ; for i in $(AUTOGEN_DEB_FILES) ; do \ if [ -e debian/grub-common.$$i.in ] ; then \ cat debian/grub-common.$$i.in \ > debian/grub-common.$$i ; \ fi ; \ if [ -e debian/grub-common.$$i.$(DEB_HOST_ARCH_CPU).in ] ; then \ cat debian/grub-common.$$i.$(DEB_HOST_ARCH_CPU).in \ >> debian/grub-common.$$i ; \ fi ; \ if [ -e debian/grub-common.$$i.$(DEB_HOST_ARCH_OS).in ] ; then \ cat debian/grub-common.$$i.$(DEB_HOST_ARCH_OS).in \ >> debian/grub-common.$$i ; \ fi ; \ done ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes)) install -D -m 0755 debian/grub-common.pm-sleep \ $(CURDIR)/debian/$(package)/etc/pm/sleep.d/10_grub-common endif override_dh_install: dh_install -pgrub2 -pgrub-linuxbios -pgrub-efi -pgrub-rescue-pc -pgrub-firmware-qemu set -e; for package in grub-common grub2-common grub-theme-starfield grub-mount-udeb; do \ dh_install -p$$package --sourcedir=debian/tmp-grub-$(COMMON_PLATFORM); \ done rm -f debian/grub2-common/usr/share/info/dir* rm -f debian/grub-theme-starfield/usr/share/grub/themes/starfield/COPYING.CC-BY-SA-3.0 set -e; for package in grub-pc grub-efi-ia32 grub-efi-amd64 grub-efi-ia64 grub-efi-arm grub-ieee1275 grub-coreboot grub-uboot grub-yeeloong; do \ dh_install -p$$package --sourcedir=debian/tmp-$$package; \ dh_install -p$$package-bin --sourcedir=debian/tmp-$$package; \ dh_install -p$$package-dbg --sourcedir=debian/tmp-$$package; \ done dh_install -pgrub-emu --sourcedir=debian/tmp-grub-emu dh_install -pgrub-emu-dbg --sourcedir=debian/tmp-grub-emu sed -i \ -e "s/@DEFAULT_CMDLINE@/$(DEFAULT_CMDLINE)/g" \ -e "s/@DEFAULT_TIMEOUT@/$(DEFAULT_TIMEOUT)/g" \ debian/grub2-common/usr/share/grub/default/grub ifneq (,$(DEFAULT_HIDDEN_TIMEOUT)) perl -pi -e 's/^GRUB_TIMEOUT=.*/GRUB_HIDDEN_TIMEOUT=0\nGRUB_HIDDEN_TIMEOUT_QUIET=true\n$$&/' \ debian/grub2-common/usr/share/grub/default/grub endif ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes)) ifneq (,$(filter grub-pc,$(BUILD_PACKAGES))) patch debian/grub-pc/usr/lib/grub-legacy/update-grub \ < debian/legacy/update-grub.ubuntu.patch endif endif override_dh_installdocs: dh_installdocs -pgrub-common -pgrub-rescue-pc -pgrub-firmware-qemu -A AUTHORS NEWS README THANKS TODO dh_installdocs -Ngrub-common -Ngrub-rescue-pc -Ngrub-firmware-qemu --link-doc=grub-common ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes)) override_dh_installinit: dh_installinit -- start 99 2 3 4 5 . else override_dh_installinit: : endif override_dh_bugfiles: dh_bugfiles -A override_dh_strip: dh_strip -X/usr/bin/grub-emu override_dh_shlibdeps: dh_shlibdeps -X.module ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes)) LEGACY_DOC_CONFLICTS := grub-doc (<< 0.97-29ubuntu60), grub-legacy-doc (<< 0.97-29ubuntu60) else LEGACY_DOC_CONFLICTS := grub-doc (<< 0.97-32), grub-legacy-doc (<< 0.97-59) endif override_dh_gencontrol: dh_gencontrol -- \ -Vlegacy-doc-conflicts="$(LEGACY_DOC_CONFLICTS)" $(substvars) TARNAME := grub2_$(deb_version)_$(DEB_HOST_ARCH).tar.gz override_dh_builddeb: dh_builddeb -- -Zxz ifneq (,$(SB_PACKAGE)) debian/build-efi-images \ obj/grub-$(COMMON_PLATFORM)/grub-mkimage \ obj/$(SB_PACKAGE)/grub-core \ debian/grub2-images/$(deb_version) \ $(SB_PLATFORM) $(SB_EFI_NAME) echo $(deb_version) \ > debian/grub2-images/$(deb_version)/version cd debian/grub2-images && tar czvf ../../../$(TARNAME) . dpkg-distaddfile $(TARNAME) raw-uefi - endif override_dh_auto_clean: -rm -rf debian/stamps obj -rm -f contrib grub-core/contrib override_dh_clean: debian/legacy/update-grub debian/grub-extras dh_autoreconf_clean dh_clean chmod +x debian/{bug-script,grub.d/*,legacy/*,kernel/*} for i in $(AUTOGEN_DEB_FILES) ; do \ rm -f debian/grub-{pc,efi-*,ieee1275,coreboot,uboot,yeeloong,emu}{,-bin,-dbg}.$$i ; \ done rm -f debian/grub-common.maintscript rm -rf debian/tmp-*/ ifneq (,$(SB_PACKAGE)) rm -rf debian/grub2-images endif # make sure PO files are always up-to-date debconf-updatepo debian/legacy/update-grub: @echo "Missing $@. Try: \"bzr cat http://bzr.debian.org/bzr/pkg-grub/trunk/grub-legacy/debian/update-grub > $@\"" exit 1 debian/grub-extras: @echo "Missing $@. Try: \"mkdir -p $@; for extra in 915resolution ntldr-img; do bzr export $@/\$$extra http://bzr.savannah.nongnu.org/r/grub-extras/\$$extra; done\"" exit 1 .PHONY: $(patsubst %,configure/%,$(BUILD_PACKAGES)) $(patsubst %,build/%,$(BUILD_PACKAGES)) $(patsubst %,install/%,$(BUILD_PACKAGES))