x86: grub2: search for the "kernel" filesystem on all disks
[openwrt/openwrt.git] / package / boot / grub2 / Makefile
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # Copyright (C) 2006-2021 OpenWrt.org
4
5 include $(TOPDIR)/rules.mk
6 include $(INCLUDE_DIR)/kernel.mk
7
8 PKG_NAME:=grub
9 PKG_CPE_ID:=cpe:/a:gnu:grub2
10 PKG_VERSION:=2.06
11 PKG_RELEASE:=$(AUTORELEASE)
12
13 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
14 PKG_SOURCE_URL:=@GNU/grub
15 PKG_HASH:=b79ea44af91b93d17cd3fe80bdae6ed43770678a9a5ae192ccea803ebb657ee1
16
17 HOST_BUILD_PARALLEL:=1
18 PKG_BUILD_DEPENDS:=grub2/host
19
20 ifneq ($(BUILD_VARIANT),none)
21 PKG_ASLR_PIE:=0
22 PKG_SSP:=0
23 endif
24
25 PKG_FLAGS:=nonshared
26
27 include $(INCLUDE_DIR)/host-build.mk
28 include $(INCLUDE_DIR)/package.mk
29
30 define Package/grub2/Default
31 CATEGORY:=Boot Loaders
32 SECTION:=boot
33 TITLE:=GRand Unified Bootloader ($(1))
34 URL:=http://www.gnu.org/software/grub/
35 DEPENDS:=@TARGET_x86
36 VARIANT:=$(1)
37 endef
38
39 Package/grub2=$(call Package/grub2/Default,pc)
40 Package/grub2-efi=$(call Package/grub2/Default,efi)
41
42 define Package/grub2-editenv
43 CATEGORY:=Utilities
44 SECTION:=utils
45 SUBMENU:=Boot Loaders
46 TITLE:=Grub2 Environment editor
47 URL:=http://www.gnu.org/software/grub/
48 DEPENDS:=@TARGET_x86
49 VARIANT:=none
50 endef
51
52 define Package/grub2-editenv/description
53 Edit grub2 environment files.
54 endef
55
56 define Package/grub2-bios-setup
57 CATEGORY:=Utilities
58 SECTION:=utils
59 SUBMENU:=Boot Loaders
60 TITLE:=Grub2 BIOS boot setup tool
61 URL:=http://www.gnu.org/software/grub/
62 DEPENDS:=@TARGET_x86
63 VARIANT:=none
64 endef
65
66 define Package/grub2-bios-setup/description
67 Set up images to bootable.
68 endef
69
70 HOST_BUILD_PREFIX := $(STAGING_DIR_HOST)
71
72 CONFIGURE_VARS += \
73 grub_build_mkfont_excuse="don't want fonts"
74
75 CONFIGURE_ARGS += \
76 --target=$(REAL_GNU_TARGET_NAME) \
77 --disable-werror \
78 --disable-nls \
79 --disable-device-mapper \
80 --disable-libzfs \
81 --disable-liblzma \
82 --disable-grub-mkfont \
83 --with-platform=$(BUILD_VARIANT)
84
85 HOST_CONFIGURE_VARS += \
86 grub_build_mkfont_excuse="don't want fonts"
87
88 HOST_CONFIGURE_ARGS += \
89 --disable-grub-mkfont \
90 --target=$(REAL_GNU_TARGET_NAME) \
91 --sbindir="$(STAGING_DIR_HOST)/bin" \
92 --disable-werror \
93 --disable-libzfs \
94 --disable-nls \
95 --with-platform=none
96
97 HOST_MAKE_FLAGS += \
98 TARGET_RANLIB=$(TARGET_RANLIB) \
99 LIBLZMA=$(STAGING_DIR_HOST)/lib/liblzma.a
100
101
102 ifneq ($(BUILD_VARIANT),none)
103 TARGET_CFLAGS := $(filter-out -O2 -O3 -fno-plt,$(TARGET_CFLAGS))
104 MAKE_PATH := grub-core
105 endif
106
107 define Host/Configure
108 $(SED) 's,(RANLIB),(TARGET_RANLIB),' $(HOST_BUILD_DIR)/grub-core/Makefile.in
109 $(Host/Configure/Default)
110 endef
111
112 define Package/grub2/install
113 $(INSTALL_DIR) $(STAGING_DIR_IMAGE)/grub2
114 $(CP) $(PKG_BUILD_DIR)/grub-core/boot.img $(STAGING_DIR_IMAGE)/grub2/
115 $(CP) $(PKG_BUILD_DIR)/grub-core/cdboot.img $(STAGING_DIR_IMAGE)/grub2/
116 sed 's#msdos1#gpt1#g' ./files/grub-early.cfg >$(PKG_BUILD_DIR)/grub-early.cfg
117 $(STAGING_DIR_HOST)/bin/grub-mkimage \
118 -d $(PKG_BUILD_DIR)/grub-core \
119 -p /boot/grub \
120 -O i386-pc \
121 -c $(PKG_BUILD_DIR)/grub-early.cfg \
122 -o $(STAGING_DIR_IMAGE)/grub2/gpt-core.img \
123 at_keyboard biosdisk boot chain configfile fat linux ls part_gpt reboot search serial vga
124 $(STAGING_DIR_HOST)/bin/grub-mkimage \
125 -d $(PKG_BUILD_DIR)/grub-core \
126 -p /boot/grub \
127 -O i386-pc \
128 -c ./files/grub-early.cfg \
129 -o $(STAGING_DIR_IMAGE)/grub2/generic-core.img \
130 at_keyboard biosdisk boot chain configfile ext2 linux ls part_msdos reboot search serial vga
131 $(STAGING_DIR_HOST)/bin/grub-mkimage \
132 -d $(PKG_BUILD_DIR)/grub-core \
133 -p /boot/grub \
134 -O i386-pc \
135 -c ./files/grub-early.cfg \
136 -o $(STAGING_DIR_IMAGE)/grub2/eltorito.img \
137 at_keyboard biosdisk boot chain configfile iso9660 linux ls part_msdos reboot search serial test vga
138 $(STAGING_DIR_HOST)/bin/grub-mkimage \
139 -d $(PKG_BUILD_DIR)/grub-core \
140 -p /boot/grub \
141 -O i386-pc \
142 -c ./files/grub-early.cfg \
143 -o $(STAGING_DIR_IMAGE)/grub2/legacy-core.img \
144 biosdisk boot chain configfile ext2 linux ls part_msdos reboot search serial vga
145 endef
146
147 define Package/grub2-efi/install
148 sed 's#msdos1#gpt1#g' ./files/grub-early.cfg >$(PKG_BUILD_DIR)/grub-early.cfg
149 $(STAGING_DIR_HOST)/bin/grub-mkimage \
150 -d $(PKG_BUILD_DIR)/grub-core \
151 -p /boot/grub \
152 -O $(CONFIG_ARCH)-efi \
153 -c $(PKG_BUILD_DIR)/grub-early.cfg \
154 -o $(STAGING_DIR_IMAGE)/grub2/boot$(if $(CONFIG_x86_64),x64,ia32).efi \
155 at_keyboard boot chain configfile fat linux ls part_gpt reboot serial efi_gop efi_uga
156 $(STAGING_DIR_HOST)/bin/grub-mkimage \
157 -d $(PKG_BUILD_DIR)/grub-core \
158 -p /boot/grub \
159 -O $(CONFIG_ARCH)-efi \
160 -c ./files/grub-early.cfg \
161 -o $(STAGING_DIR_IMAGE)/grub2/iso-boot$(if $(CONFIG_x86_64),x64,ia32).efi \
162 at_keyboard boot chain configfile fat iso9660 linux ls part_msdos part_gpt reboot serial test efi_gop efi_uga
163 endef
164
165 define Package/grub2-editenv/install
166 $(INSTALL_DIR) $(1)/usr/sbin
167 $(INSTALL_BIN) $(PKG_BUILD_DIR)/grub-editenv $(1)/usr/sbin/
168 endef
169
170 define Package/grub2-bios-setup/install
171 $(INSTALL_DIR) $(1)/usr/sbin
172 $(INSTALL_BIN) $(PKG_BUILD_DIR)/grub-bios-setup $(1)/usr/sbin/
173 endef
174
175 $(eval $(call HostBuild))
176 $(eval $(call BuildPackage,grub2))
177 $(eval $(call BuildPackage,grub2-efi))
178 $(eval $(call BuildPackage,grub2-editenv))
179 $(eval $(call BuildPackage,grub2-bios-setup))