]>
Commit | Line | Data |
---|---|---|
c38e4ead | 1 | #!/usr/bin/make -f |
255820f9 | 2 | SHELL := bash |
e8dabbb1 RM |
3 | |
4 | deb_version := $(shell dpkg-parsechangelog | sed -ne "s/^Version: \(.*\)/\1/p") | |
5 | upstream_version := $(shell echo $(deb_version) | sed -e "s/-[^-]*$$//") | |
6 | ||
255820f9 | 7 | package := grub2 |
c38e4ead | 8 | |
d487f29e CW |
9 | DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH 2>/dev/null) |
10 | DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null) | |
0f88b19a | 11 | DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null) |
b7cfd0a3 | 12 | |
fcf28609 | 13 | HOST_CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS) |
0b29b4e0 CW |
14 | # -O3 (default on Ubuntu ppc64el) introduces various -Werror failures, and |
15 | # isn't worth it here. | |
16 | HOST_CFLAGS := -Wall -Wno-error=unused-result $(shell dpkg-buildflags --get CFLAGS | perl -pe 's/-O3\b/-O2/') | |
fcf28609 | 17 | HOST_LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) |
1238ab3a | 18 | |
15c5f083 | 19 | export DEB_HOST_ARCH |
cbcad076 | 20 | unexport CFLAGS |
fcf28609 | 21 | export HOST_CPPFLAGS |
cbcad076 | 22 | export HOST_CFLAGS |
fcf28609 | 23 | export HOST_LDFLAGS |
f309d9d1 | 24 | export TARGET_CPPFLAGS := -Wno-unused-but-set-variable |
fe0d2f25 | 25 | export TARGET_LDFLAGS := -no-pie |
cbcad076 | 26 | |
d68bc482 JPAG |
27 | ifneq (,$(filter sparc sparc64,$(DEB_HOST_ARCH_CPU))) |
28 | export TARGET_CCASFLAGS := -fno-PIE | |
29 | endif | |
30 | ||
e7217dd2 CW |
31 | ifeq (,$(shell which qemu-system-i386 2>/dev/null)) |
32 | with_check := no | |
4e1666a5 CW |
33 | else |
34 | with_check := yes | |
e7217dd2 CW |
35 | endif |
36 | ||
7981cb3a | 37 | CC := gcc-8 |
b99f120b | 38 | |
a97ee384 CW |
39 | confflags = \ |
40 | PACKAGE_VERSION="$(deb_version)" PACKAGE_STRING="GRUB $(deb_version)" \ | |
41 | CC=$(CC) TARGET_CC=$(CC) \ | |
42 | --enable-grub-mkfont \ | |
43 | --disable-grub-emu-usb | |
539388ac | 44 | substvars = |
d5d38884 | 45 | |
48dbe1e3 | 46 | AUTOGEN_DEB_FILES = config templates preinst postinst postrm dirs install links maintscript bash-completion |
b4fcdb85 | 47 | |
4e1666a5 | 48 | BUILD_PACKAGES := $(strip $(shell dh_listpackages)) |
51cc7f7b IC |
49 | # REAL_PACKAGES build an actual grub variant (and therefore have both configure |
50 | # and build stages). EXTRA_PACKAGES do not build grub but may depend on a | |
51 | # REAL_PACKAGE (and therefore only have a build stage) | |
14910ac2 | 52 | REAL_PACKAGES = grub-common grub-emu grub-pc grub-coreboot grub-efi-ia32 grub-efi-amd64 grub-efi-ia64 grub-efi-arm grub-efi-arm64 grub-ieee1275 grub-firmware-qemu grub-uboot grub-xen grub-yeeloong |
60bd0628 | 53 | EXTRA_PACKAGES = grub-rescue-pc grub-xen-host |
f77681ba | 54 | |
9ab89a40 CW |
55 | ifneq (,$(filter i386 amd64,$(DEB_HOST_ARCH_CPU))) |
56 | COMMON_PLATFORM := pc | |
3d7a403d | 57 | else ifneq (,$(filter powerpc ppc64 ppc64el sparc sparc64,$(DEB_HOST_ARCH_CPU))) |
9ab89a40 CW |
58 | COMMON_PLATFORM := ieee1275 |
59 | else ifeq (mipsel,$(DEB_HOST_ARCH_CPU)) | |
60 | COMMON_PLATFORM := yeeloong | |
c78ea29a | 61 | else ifeq (ia64,$(DEB_HOST_ARCH_CPU)) |
12b3b38c | 62 | COMMON_PLATFORM := efi-ia64 |
9af8d269 CW |
63 | else ifeq (arm,$(DEB_HOST_ARCH_CPU)) |
64 | COMMON_PLATFORM := uboot | |
eab14eb3 CW |
65 | else ifeq (arm64,$(DEB_HOST_ARCH_CPU)) |
66 | COMMON_PLATFORM := efi-arm64 | |
9ab89a40 | 67 | else |
14910ac2 CW |
68 | COMMON_PLATFORM := none |
69 | BUILD_PACKAGES += grub-none | |
9ab89a40 CW |
70 | endif |
71 | ||
537c70e5 CW |
72 | ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes)) |
73 | DEFAULT_CMDLINE := quiet splash | |
67f530b7 | 74 | DEFAULT_TIMEOUT := 10 |
f36bde6c CW |
75 | ifeq ($(DEB_HOST_ARCH_CPU),ppc64el) |
76 | FLICKER_FREE_BOOT := no | |
77 | else | |
539388ac | 78 | FLICKER_FREE_BOOT := yes |
f36bde6c | 79 | endif |
539388ac | 80 | confflags += --enable-ubuntu-recovery |
55409bb1 JS |
81 | else ifeq (yes,$(shell dpkg-vendor --derives-from Tanglu && echo yes)) |
82 | DEFAULT_CMDLINE := quiet splash | |
83 | DEFAULT_TIMEOUT := 10 | |
539388ac CW |
84 | FLICKER_FREE_BOOT := yes |
85 | else | |
86 | DEFAULT_CMDLINE := quiet | |
87 | DEFAULT_TIMEOUT := 5 | |
88 | FLICKER_FREE_BOOT := no | |
89 | endif | |
90 | ||
91 | ifeq ($(FLICKER_FREE_BOOT),yes) | |
55409bb1 JS |
92 | DEFAULT_HIDDEN_TIMEOUT := 0 |
93 | DEFAULT_HIDDEN_TIMEOUT_BOOL := true | |
94 | confflags += \ | |
95 | --enable-quiet-boot \ | |
96 | --enable-quick-boot \ | |
97 | --enable-gfxpayload-dynamic \ | |
98 | --enable-vt-handoff | |
539388ac | 99 | substvars += \ |
55409bb1 JS |
100 | -Vlsb-base-depends="lsb-base (>= 3.0-6)" \ |
101 | -Vgfxpayload-depends="grub-gfxpayload-lists [any-i386 any-amd64]" | |
537c70e5 | 102 | else |
84c4b591 | 103 | DEFAULT_HIDDEN_TIMEOUT := |
b4ada2ef | 104 | DEFAULT_HIDDEN_TIMEOUT_BOOL := false |
537c70e5 CW |
105 | endif |
106 | ||
bd2c77be PH |
107 | # Secure Boot |
108 | debian/stamps/build-grub-efi-ia32 install/grub-efi-ia32: export SB_PLATFORM := i386-efi | |
109 | debian/stamps/build-grub-efi-ia32 install/grub-efi-ia32: export SB_EFI_NAME := ia32 | |
110 | debian/stamps/build-grub-efi-amd64 install/grub-efi-amd64: export SB_PLATFORM := x86_64-efi | |
111 | debian/stamps/build-grub-efi-amd64 install/grub-efi-amd64: export SB_EFI_NAME := x64 | |
112 | debian/stamps/build-grub-efi-arm64 install/grub-efi-arm64: export SB_PLATFORM := arm64-efi | |
113 | debian/stamps/build-grub-efi-arm64 install/grub-efi-arm64: export SB_EFI_NAME := aa64 | |
9a1aa2c7 CW |
114 | SB_PACKAGE := |
115 | ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes)) | |
116 | ifeq ($(DEB_HOST_ARCH),amd64) | |
117 | SB_PACKAGE := grub-efi-amd64 | |
9a1aa2c7 | 118 | endif |
0b814ed1 | 119 | ifeq ($(DEB_HOST_ARCH),arm64) |
120 | SB_PACKAGE := grub-efi-arm64 | |
0b814ed1 | 121 | endif |
9a1aa2c7 CW |
122 | endif |
123 | ||
49a4f5cd LB |
124 | # Downstream distributions that want to support SB and build images, but do not |
125 | # rebuild grub, need a programmatic way to get the vendor, as it's used by build-efi-images | |
126 | # to create the monolithic Grub image and thus is needed to create the partitions on the EFI | |
127 | # media. Add it to the control file user metadata: XB-Efi-Vendor: $vendor | |
128 | SB_EFI_VENDOR ?= $(shell dpkg-vendor --query vendor | tr '[:upper:]' '[:lower:]') | |
129 | ||
4e1666a5 | 130 | %: |
48dbe1e3 | 131 | dh $@ --with=bash_completion --parallel |
4e1666a5 | 132 | |
d487f29e | 133 | override_dh_auto_configure: $(patsubst %,configure/%,$(BUILD_PACKAGES)) |
4e1666a5 | 134 | |
d487f29e | 135 | override_dh_auto_build: $(patsubst %,build/%,$(BUILD_PACKAGES)) |
4e1666a5 CW |
136 | |
137 | override_dh_auto_install: $(patsubst %,install/%,$(BUILD_PACKAGES)) | |
138 | ||
0cc922db | 139 | $(patsubst %,configure/%,$(REAL_PACKAGES)) :: configure/% : debian/stamps/configure-% |
51cc7f7b | 140 | $(patsubst %,build/%,$(REAL_PACKAGES) $(EXTRA_PACKAGES)) :: build/% : debian/stamps/build-% |
f77681ba | 141 | |
0cc922db CW |
142 | debian/stamps/configure-%: package = $(subst debian/stamps/configure-,,$@) |
143 | debian/stamps/configure-%: export DH_OPTIONS = -p$(package) -Bobj/$(package) | |
4e1666a5 | 144 | |
0cc922db CW |
145 | debian/stamps/build-%: package = $(subst debian/stamps/build-,,$@) |
146 | debian/stamps/build-%: export DH_OPTIONS = -p$(package) -Bobj/$(package) | |
4e1666a5 CW |
147 | |
148 | install/%: package = $(subst install/,,$@) | |
b88ffb1a | 149 | install/%: package_bin = $(package)-bin |
00b51c62 | 150 | install/%: package_dbg = $(package)-dbg |
b88ffb1a | 151 | install/grub-emu: package_bin = grub-emu |
00b51c62 | 152 | install/grub-emu: package_dbg = grub-emu-dbg |
0cc922db | 153 | install/%: export DH_OPTIONS = -p$(package) -Bobj/$(patsubst grub-common,grub-$(COMMON_PLATFORM),$(package)) |
4e1666a5 | 154 | |
0cc922db CW |
155 | debian/stamps/autogen: autogen.sh configure.ac Makefile.util.def grub-core/Makefile.core.def |
156 | mkdir -p debian/stamps | |
86dc003b CW |
157 | rm -rf debian/grub-extras-enabled |
158 | mkdir debian/grub-extras-enabled | |
159 | set -e; for extra in 915resolution ntldr-img; do \ | |
112116c2 | 160 | cp -a debian/grub-extras/$$extra debian/grub-extras-enabled/; \ |
86dc003b CW |
161 | done |
162 | env -u DH_OPTIONS GRUB_CONTRIB=$(CURDIR)/debian/grub-extras-enabled \ | |
163 | dh_autoreconf -- ./autogen.sh | |
ffbf5114 | 164 | touch $@ |
a7a060ef | 165 | |
0cc922db | 166 | debian/stamps/configure-grub-common: debian/stamps/configure-grub-$(COMMON_PLATFORM) |
14910ac2 | 167 | touch $@ |
9ab89a40 | 168 | |
0cc922db | 169 | debian/stamps/build-grub-common: debian/stamps/build-grub-$(COMMON_PLATFORM) |
14910ac2 | 170 | touch $@ |
9ab89a40 | 171 | |
14910ac2 | 172 | debian/stamps/configure-grub-none 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 |
0cc922db | 173 | mkdir -p debian/stamps obj/$(package) |
4e1666a5 | 174 | dh_auto_configure -- $(confflags) --with-platform=$(subst grub-,,$(package)) |
f77681ba | 175 | touch $@ |
d5d38884 | 176 | |
12b3b38c | 177 | # This name scheme leaves room for things like amd32 someday |
0cc922db CW |
178 | debian/stamps/configure-grub-efi-ia32: debian/stamps/autogen |
179 | mkdir -p debian/stamps obj/$(package) | |
4e1666a5 | 180 | dh_auto_configure -- $(confflags) --with-platform=efi --target=i386-pe --program-prefix="" |
f77681ba | 181 | touch $@ |
0cc922db CW |
182 | debian/stamps/configure-grub-efi-amd64: debian/stamps/autogen |
183 | mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@) | |
4e1666a5 | 184 | dh_auto_configure -- $(confflags) --with-platform=efi --target=amd64-pe --program-prefix="" |
f77681ba | 185 | touch $@ |
00cc2530 | 186 | debian/stamps/configure-grub-efi-ia64 debian/stamps/configure-grub-efi-arm debian/stamps/configure-grub-efi-arm64: debian/stamps/autogen |
eab14eb3 CW |
187 | mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@) |
188 | dh_auto_configure -- $(confflags) --with-platform=efi | |
189 | touch $@ | |
f77681ba | 190 | |
09fc936b | 191 | debian/stamps/configure-grub-xen-i386 debian/stamps/configure-grub-xen-amd64: debian/stamps/autogen |
361324dd CW |
192 | mkdir -p debian/stamps obj/$(package) |
193 | dh_auto_configure -- $(confflags) --with-platform=xen --target=$(subst debian/stamps/configure-grub-xen-,,$@) --program-prefix="" | |
194 | touch $@ | |
09fc936b CW |
195 | debian/stamps/configure-grub-xen-pvh-i386: debian/stamps/autogen |
196 | mkdir -p debian/stamps obj/$(package) | |
197 | dh_auto_configure -- $(confflags) --with-platform=xen_pvh --target=i386 --program-prefix="" | |
198 | touch $@ | |
199 | debian/stamps/configure-grub-xen: debian/stamps/configure-grub-xen-i386 debian/stamps/configure-grub-xen-amd64 debian/stamps/configure-grub-xen-pvh-i386 | |
f77ad618 | 200 | touch $@ |
361324dd | 201 | |
0cc922db CW |
202 | debian/stamps/configure-grub-firmware-qemu: debian/stamps/autogen |
203 | mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@) | |
4e1666a5 | 204 | dh_auto_configure -- $(confflags) --with-platform=qemu |
f77681ba CW |
205 | touch $@ |
206 | ||
09fc936b | 207 | debian/stamps/build-grub-none debian/stamps/build-grub-efi-ia64 debian/stamps/build-grub-efi-arm debian/stamps/build-grub-coreboot debian/stamps/build-grub-emu debian/stamps/build-grub-uboot debian/stamps/build-grub-xen-i386 debian/stamps/build-grub-xen-amd64 debian/stamps/build-grub-xen-pvh-i386 debian/stamps/build-grub-yeeloong: debian/stamps/build-%: debian/stamps/configure-% |
4e1666a5 | 208 | dh_auto_build |
f77681ba CW |
209 | touch $@ |
210 | ||
bd2c77be PH |
211 | debian/stamps/build-grub-efi-ia32 debian/stamps/build-grub-efi-amd64 debian/stamps/build-grub-efi-arm64: debian/stamps/build-%: debian/stamps/configure-% debian/stamps/build-grub-$(COMMON_PLATFORM) |
212 | dh_auto_build | |
213 | debian/build-efi-images \ | |
214 | obj/grub-$(COMMON_PLATFORM)/grub-mkimage \ | |
215 | obj/$(package)/grub-core \ | |
216 | obj/monolithic/$(package) \ | |
49a4f5cd | 217 | $(SB_PLATFORM) $(SB_EFI_NAME) $(SB_EFI_VENDOR) |
bd2c77be PH |
218 | touch $@ |
219 | ||
60bd0628 | 220 | debian/stamps/build-grub-xen-host-i386: PVBOOT_ARCH := i386 |
09fc936b | 221 | debian/stamps/build-grub-xen-host-i386: debian/stamps/build-grub-xen-i386 |
60bd0628 | 222 | debian/stamps/build-grub-xen-host-amd64: PVBOOT_ARCH := x86_64 |
09fc936b CW |
223 | debian/stamps/build-grub-xen-host-amd64: debian/stamps/build-grub-xen-amd64 |
224 | debian/stamps/build-grub-xen-host-i386 debian/stamps/build-grub-xen-host-amd64: | |
60bd0628 IC |
225 | target=$(subst debian/stamps/build-grub-xen-host-,,$@) ; \ |
226 | obj_dir=$(CURDIR)/obj/grub-xen-$${target} ; \ | |
227 | grub_dir=`mktemp -d` ; \ | |
228 | grub_memdisk=`mktemp` ; \ | |
229 | trap "rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM ; \ | |
230 | mkdir -p $${grub_dir}/boot/grub ; \ | |
231 | mkdir -p $(CURDIR)/obj/$(package) ; \ | |
232 | sed -e "s/@@PVBOOT_ARCH@@/$(PVBOOT_ARCH)/g" \ | |
233 | <debian/grub-xen-host_grub.cfg \ | |
234 | >$${grub_dir}/grub.cfg ; \ | |
235 | tar -cf - -C $${grub_dir} grub.cfg > $${grub_memdisk} ; \ | |
236 | $${obj_dir}/grub-mkimage \ | |
237 | -O $(PVBOOT_ARCH)-xen \ | |
238 | -c $(CURDIR)/debian/grub-xen-host_grub-bootstrap.cfg \ | |
239 | -d $${obj_dir}/grub-core \ | |
240 | $${obj_dir}/grub-core/*.mod \ | |
241 | -m $${grub_memdisk} \ | |
242 | -o $(CURDIR)/obj/$(package)/grub-$(PVBOOT_ARCH)-xen.bin | |
243 | touch $@ | |
244 | ||
09fc936b CW |
245 | debian/stamps/build-grub-xen-host-pvh-i386: debian/stamps/build-grub-xen-pvh-i386 |
246 | target=$(subst debian/stamps/build-grub-xen-host-,,$@) ; \ | |
247 | obj_dir=$(CURDIR)/obj/grub-xen-$${target} ; \ | |
248 | grub_dir=`mktemp -d` ; \ | |
249 | grub_memdisk=`mktemp` ; \ | |
250 | trap "rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM ; \ | |
251 | mkdir -p $${grub_dir}/boot/grub ; \ | |
252 | mkdir -p $(CURDIR)/obj/$(package) ; \ | |
253 | cp -a debian/grub-xen-host_grub-pvh.cfg $${grub_dir}/grub.cfg ; \ | |
254 | tar -cf - -C $${grub_dir} grub.cfg > $${grub_memdisk} ; \ | |
255 | $${obj_dir}/grub-mkimage \ | |
256 | -O i386-xen_pvh \ | |
257 | -c $(CURDIR)/debian/grub-xen-host_grub-bootstrap.cfg \ | |
258 | -d $${obj_dir}/grub-core \ | |
259 | $${obj_dir}/grub-core/*.mod \ | |
260 | -m $${grub_memdisk} \ | |
261 | -o $(CURDIR)/obj/$(package)/grub-i386-xen_pvh.bin | |
262 | touch $@ | |
263 | ||
264 | debian/stamps/build-grub-xen-host: debian/stamps/build-grub-xen-host-i386 debian/stamps/build-grub-xen-host-amd64 debian/stamps/build-grub-xen-host-pvh-i386 | |
60bd0628 IC |
265 | touch $@ |
266 | ||
0cc922db | 267 | debian/stamps/build-grub-pc: debian/stamps/configure-grub-pc |
4e1666a5 | 268 | dh_auto_build |
fb9f1b3b | 269 | ifeq ($(with_check), yes) |
63992cb6 | 270 | LC_MESSAGES=C.UTF-8 LC_CTYPE=C.UTF-8 PATH="$$PATH:/sbin:/usr/sbin" VERBOSE=1 dh_auto_test --max-parallel=1 |
fb9f1b3b | 271 | endif |
f77681ba | 272 | touch $@ |
0b43720d | 273 | |
7d36f5f2 CW |
274 | debian/stamps/build-grub-ieee1275: debian/stamps/configure-grub-ieee1275 |
275 | dh_auto_build | |
32bfd055 | 276 | ifneq (,$(filter powerpc ppc64 ppc64el,$(DEB_HOST_ARCH_CPU))) |
7d36f5f2 CW |
277 | $(CC) $(HOST_CFLAGS) debian/prep-bootdev.c -o debian/prep-bootdev -lparted |
278 | endif | |
279 | touch $@ | |
280 | ||
09fc936b | 281 | debian/stamps/build-grub-xen: debian/stamps/build-grub-xen-i386 debian/stamps/build-grub-xen-amd64 debian/stamps/build-grub-xen-pvh-i386 |
f77ad618 | 282 | touch $@ |
361324dd | 283 | |
0cc922db | 284 | debian/stamps/build-grub-firmware-qemu: debian/stamps/configure-grub-firmware-qemu |
4e1666a5 | 285 | dh_auto_build |
09ee8c4a | 286 | grub_dir=`mktemp -d` ; \ |
287 | grub_memdisk=`mktemp` ; \ | |
bb033db1 | 288 | trap "rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM ; \ |
09ee8c4a | 289 | mkdir -p $${grub_dir}/boot/grub ; \ |
290 | cp debian/grub-firmware-qemu_grub.cfg $${grub_dir}/boot/grub/grub.cfg ; \ | |
291 | tar -cf - -C $${grub_dir} boot > $${grub_memdisk} ; \ | |
0cc922db | 292 | obj/$(package)/grub-mkimage \ |
57a0c61e | 293 | -O i386-qemu \ |
0cc922db CW |
294 | -d $(CURDIR)/obj/$(package)/grub-core \ |
295 | $(CURDIR)/obj/$(package)/grub-core/*.mod \ | |
09ee8c4a | 296 | -m $${grub_memdisk} \ |
0cc922db | 297 | -o $(CURDIR)/obj/$(package)/grub.bin |
f77681ba | 298 | touch $@ |
d8ce8ba4 | 299 | |
0cc922db | 300 | debian/stamps/build-grub-rescue-pc: debian/stamps/build-grub-pc |
0cc922db CW |
301 | mkdir -p obj/grub-rescue-pc/rescue-disk/boot/grub |
302 | cp docs/grub.cfg obj/grub-rescue-pc/rescue-disk/boot/grub/ | |
aec1769d CW |
303 | rm -rf obj/grub-rescue-pc/grub-core |
304 | cp -a obj/grub-pc/grub-core obj/grub-rescue-pc/grub-core | |
305 | cp -a obj/grub-pc/unicode.pf2 obj/grub-rescue-pc/ | |
0cc922db | 306 | pkgdatadir=$(CURDIR)/obj/grub-rescue-pc \ |
aec1769d CW |
307 | obj/grub-pc/grub-mkrescue \ |
308 | --directory=$(CURDIR)/obj/grub-rescue-pc/grub-core \ | |
309 | --locale-directory=$(CURDIR)/obj/grub-rescue-pc/grub-core/po \ | |
0cc922db CW |
310 | --output=$(CURDIR)/obj/grub-rescue-pc/grub-rescue-cdrom.iso \ |
311 | $(CURDIR)/obj/grub-rescue-pc/rescue-disk | |
0bf6faa1 | 312 | # save space for floppy image |
aec1769d | 313 | rm -rf obj/grub-rescue-pc/grub-core/po obj/grub-rescue-pc/unicode.pf2 |
0cc922db | 314 | pkgdatadir=$(CURDIR)/obj/grub-rescue-pc \ |
aec1769d CW |
315 | obj/grub-pc/grub-mkrescue \ |
316 | --directory=$(CURDIR)/obj/grub-rescue-pc/grub-core \ | |
317 | --locale-directory=$(CURDIR)/obj/grub-rescue-pc/grub-core/po \ | |
0cc922db | 318 | --output=$(CURDIR)/obj/grub-rescue-pc/grub-rescue-floppy.img \ |
3388a9d0 | 319 | --compress=xz \ |
496cca85 CW |
320 | -no-pad \ |
321 | $(CURDIR)/obj/grub-rescue-pc/rescue-disk | |
9ef1395f CW |
322 | touch $@ |
323 | ||
b88ffb1a CW |
324 | platform_subst = \ |
325 | if [ -e debian/$(1) ]; then \ | |
4fbb3d8f CW |
326 | debian/platform-subst \ |
327 | PACKAGE="$(2)" \ | |
328 | DEFAULT_CMDLINE="$(DEFAULT_CMDLINE)" \ | |
329 | DEFAULT_TIMEOUT="$(DEFAULT_TIMEOUT)" \ | |
330 | DEFAULT_HIDDEN_TIMEOUT_BOOL="$(DEFAULT_HIDDEN_TIMEOUT_BOOL)" \ | |
331 | debian/$(1) >> debian/$(2).$(3); \ | |
b88ffb1a CW |
332 | fi |
333 | ||
14910ac2 CW |
334 | install/grub-none: |
335 | dh_auto_install --destdir=debian/tmp-$(package) | |
336 | ||
337 | # Avoid failures later if we're building from a tree with no .po | |
338 | # files. | |
339 | mkdir -p debian/tmp-$(package)/usr/share/locale | |
340 | ||
eab14eb3 | 341 | install/grub-pc install/grub-efi-ia32 install/grub-efi-amd64 install/grub-efi-ia64 install/grub-efi-arm install/grub-efi-arm64 install/grub-ieee1275 install/grub-coreboot install/grub-emu install/grub-uboot install/grub-xen install/grub-yeeloong: |
f77ad618 CW |
342 | set -e ; \ |
343 | if [ "$@" = "install/grub-xen" ] ; then \ | |
361324dd CW |
344 | dh_auto_install -Bobj/grub-xen-i386 --destdir=debian/tmp-$(package); \ |
345 | dh_auto_install -Bobj/grub-xen-amd64 --destdir=debian/tmp-$(package); \ | |
09fc936b | 346 | dh_auto_install -Bobj/grub-xen-pvh-i386 --destdir=debian/tmp-$(package); \ |
361324dd CW |
347 | else \ |
348 | dh_auto_install --destdir=debian/tmp-$(package); \ | |
349 | fi | |
15f9f1fa | 350 | |
bd2c77be PH |
351 | set -e ; \ |
352 | if [ -d "obj/monolithic/$(package)" ] ; then \ | |
6f7b90eb CW |
353 | install -m 0755 -d debian/$(package_bin)/usr/lib/grub/$(SB_PLATFORM)/monolithic ; \ |
354 | install -m 0644 -t debian/$(package_bin)/usr/lib/grub/$(SB_PLATFORM)/monolithic obj/monolithic/$(package)/*.efi ; \ | |
355 | debian/signing-template.generate "$(package)" ; \ | |
bd2c77be PH |
356 | fi |
357 | ||
4fbb3d8f CW |
358 | set -e ; \ |
359 | for i in $(AUTOGEN_DEB_FILES) ; do \ | |
360 | > debian/$(package).$$i; \ | |
0bdbd559 CW |
361 | if [ "$@" != "install/grub-emu" ] ; then \ |
362 | $(call platform_subst,$$i.in,$(package),$$i); \ | |
363 | fi ; \ | |
4fbb3d8f CW |
364 | $(call platform_subst,$(package).$$i.in,$(package),$$i); \ |
365 | $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_CPU).in,$(package),$$i); \ | |
366 | $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_OS).in,$(package),$$i); \ | |
367 | $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package),$$i); \ | |
368 | [ -s debian/$(package).$$i ] || rm -f debian/$(package).$$i; \ | |
369 | if [ "$@" != "install/grub-emu" ] ; then \ | |
b88ffb1a CW |
370 | > debian/$(package_bin).$$i; \ |
371 | $(call platform_subst,$$i-bin.in,$(package_bin),$$i); \ | |
372 | $(call platform_subst,$(package_bin).$$i.in,$(package_bin),$$i); \ | |
ebfc068d | 373 | $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_CPU).in,$(package_bin),$$i); \ |
b88ffb1a | 374 | $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_OS).in,$(package_bin),$$i); \ |
660b2e45 | 375 | $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package_bin),$$i); \ |
b88ffb1a | 376 | [ -s debian/$(package_bin).$$i ] || rm -f debian/$(package_bin).$$i; \ |
4fbb3d8f CW |
377 | fi ; \ |
378 | > debian/$(package_dbg).$$i; \ | |
0bdbd559 CW |
379 | if [ "$@" != "install/grub-emu" ] ; then \ |
380 | $(call platform_subst,$$i-dbg.in,$(package_dbg),$$i); \ | |
381 | fi ; \ | |
4fbb3d8f CW |
382 | $(call platform_subst,$(package_dbg).$$i.in,$(package_dbg),$$i); \ |
383 | $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_CPU).in,$(package_dbg),$$i); \ | |
384 | $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_OS).in,$(package_dbg),$$i); \ | |
385 | $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package_dbg),$$i); \ | |
386 | [ -s debian/$(package_dbg).$$i ] || rm -f debian/$(package_dbg).$$i; \ | |
387 | done | |
642638e0 | 388 | |
92892e10 | 389 | find debian/tmp-$(package)/usr/lib/grub -name modinfo.sh -print0 | \ |
8507da99 | 390 | xargs -0r chmod +x |
92892e10 CW |
391 | find debian/tmp-$(package)/usr/lib/grub -name gdb_grub -print0 | \ |
392 | xargs -0r chmod -x | |
393 | find debian/tmp-$(package)/usr/lib/grub -name gmodule.pl -print0 | \ | |
394 | xargs -0r chmod -x | |
8507da99 | 395 | |
fa8a2a01 | 396 | mkdir -p debian/$(package_bin)/usr/share/lintian/overrides |
b88ffb1a | 397 | echo "$(package_bin): unstripped-binary-or-object *.mod" \ |
fa8a2a01 | 398 | >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) |
b88ffb1a CW |
399 | cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \ |
400 | | sed -e "s%.*%$(package_bin): statically-linked-binary &%g" \ | |
90da22a7 | 401 | >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) |
a9539a64 CW |
402 | cd debian/tmp-$(package) && find ./usr/lib/grub -name kernel.img \ |
403 | | sed -e "s%.*%$(package_bin): statically-linked-binary &%g" \ | |
90da22a7 | 404 | >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) |
b88ffb1a CW |
405 | cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \ |
406 | | sed -e "s%.*%$(package_bin): unstripped-binary-or-object &%g" \ | |
90da22a7 | 407 | >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) |
361324dd | 408 | if ([ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ]) || \ |
1534c3f0 CW |
409 | ([ "$@" != "install/grub-emu" ] && [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" = "amd64:32" ]) || \ |
410 | [ "$@" = "install/grub-xen" ]; then \ | |
b88ffb1a | 411 | echo "$(package_bin): binary-from-other-architecture *.mod" \ |
fa8a2a01 | 412 | >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \ |
b88ffb1a CW |
413 | cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \ |
414 | | sed -e "s%.*%$(package_bin): binary-from-other-architecture &%g" \ | |
90da22a7 | 415 | >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \ |
6bc215e1 | 416 | fi |
98a54f5c CW |
417 | if ([ "$@" = "install/grub-pc" ] || \ |
418 | [ "$@" = "install/grub-ieee1275" ] || \ | |
419 | [ "$@" = "install/grub-coreboot" ] || \ | |
10006331 | 420 | [ "$@" = "install/grub-xen" ] || \ |
98a54f5c | 421 | [ "$@" = "install/grub-emu" ]) && \ |
660b2e45 | 422 | [ "$(DEB_HOST_ARCH_OS)" = "linux" ] && \ |
1534c3f0 | 423 | [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" != "amd64:64" ] ; then \ |
b88ffb1a | 424 | echo "$(package_bin): binary-from-other-architecture *efiemu64.o" \ |
fa8a2a01 | 425 | >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \ |
c5615a1d | 426 | fi |
0daae717 | 427 | |
fa8a2a01 | 428 | mkdir -p debian/$(package_dbg)/usr/share/lintian/overrides |
00b51c62 | 429 | echo "$(package_dbg): unstripped-binary-or-object *.module" \ |
fa8a2a01 | 430 | >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) |
00b51c62 | 431 | echo "$(package_dbg): statically-linked-binary *.image" \ |
fa8a2a01 | 432 | >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) |
00b51c62 CW |
433 | cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec \ |
434 | | sed -e "s%.*%$(package_dbg): statically-linked-binary &%g" \ | |
90da22a7 | 435 | >> $(CURDIR)/debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) |
361324dd | 436 | if ([ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ]) || \ |
1534c3f0 | 437 | ([ "$@" != "install/grub-emu" ] && [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" = "amd64:32" ]) || \ |
361324dd | 438 | [ "$@" = "install/grub-xen" ] ; then \ |
00b51c62 | 439 | echo "$(package_dbg): binary-from-other-architecture *.module" \ |
fa8a2a01 | 440 | >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) ; \ |
00b51c62 CW |
441 | cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec \ |
442 | | sed -e "s%.*%$(package_dbg): binary-from-other-architecture &%g" \ | |
90da22a7 | 443 | >> $(CURDIR)/debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) ; \ |
00b51c62 CW |
444 | fi |
445 | ||
6fc99271 CW |
446 | # Avoid failures later if we're building from a tree with no .po |
447 | # files. | |
448 | mkdir -p debian/tmp-$(package)/usr/share/locale | |
449 | ||
48dbe1e3 CW |
450 | common_subst = \ |
451 | if [ -e debian/grub-common.$(1) ]; then \ | |
452 | sed 's/@COMMON_PLATFORM@/$(COMMON_PLATFORM)/g' \ | |
453 | debian/grub-common.$(1) >> debian/grub-common.$(2).new; \ | |
454 | fi | |
455 | ||
4e1666a5 | 456 | install/grub-common: |
d487f29e | 457 | set -e ; for i in $(AUTOGEN_DEB_FILES) ; do \ |
48dbe1e3 CW |
458 | > debian/grub-common.$$i.new; \ |
459 | $(call common_subst,$$i.in,$$i); \ | |
460 | $(call common_subst,$$i.$(DEB_HOST_ARCH_CPU).in,$$i); \ | |
461 | $(call common_subst,$$i.$(DEB_HOST_ARCH_OS).in,$$i); \ | |
462 | if [ -s debian/grub-common.$$i.new ] ; then \ | |
463 | mv debian/grub-common.$$i.new debian/grub-common.$$i; \ | |
464 | else \ | |
465 | rm -f debian/grub-common.$$i.new; \ | |
466 | fi; \ | |
d487f29e | 467 | done |
a2dac38e CW |
468 | ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes)) |
469 | install -D -m 0755 debian/grub-common.pm-sleep \ | |
470 | $(CURDIR)/debian/$(package)/etc/pm/sleep.d/10_grub-common | |
471 | endif | |
dfa71bad | 472 | |
ab16fcc4 CW |
473 | NON_PLATFORM_PACKAGES = $(filter grub2 grub-linuxbios grub-efi grub-rescue-pc grub-firmware-qemu grub-xen-host,$(BUILD_PACKAGES)) |
474 | COMMON_PLATFORM_PACKAGES = $(filter grub-common grub2-common grub-theme-starfield grub-mount-udeb,$(BUILD_PACKAGES)) | |
475 | PLATFORM_PACKAGES = $(filter grub-pc grub-efi-ia32 grub-efi-amd64 grub-efi-ia64 grub-efi-arm grub-efi-arm64 grub-ieee1275 grub-coreboot grub-uboot grub-xen grub-yeeloong,$(BUILD_PACKAGES)) | |
476 | ||
d487f29e | 477 | override_dh_install: |
ab16fcc4 CW |
478 | ifneq (,$(NON_PLATFORM_PACKAGES)) |
479 | dh_install $(patsubst %,-p%,$(NON_PLATFORM_PACKAGES)) | |
480 | endif | |
481 | dh_install $(patsubst %,-p%,$(COMMON_PLATFORM_PACKAGES)) --sourcedir=debian/tmp-grub-$(COMMON_PLATFORM) | |
3177d4fb | 482 | rm -f debian/grub2-common/usr/share/info/dir* |
22e9b524 | 483 | rm -f debian/grub-theme-starfield/usr/share/grub/themes/starfield/COPYING.CC-BY-SA-3.0 |
ab16fcc4 CW |
484 | ifneq (,$(PLATFORM_PACKAGES)) |
485 | set -e; for package in $(PLATFORM_PACKAGES); do \ | |
d487f29e | 486 | dh_install -p$$package --sourcedir=debian/tmp-$$package; \ |
b88ffb1a | 487 | dh_install -p$$package-bin --sourcedir=debian/tmp-$$package; \ |
00b51c62 | 488 | dh_install -p$$package-dbg --sourcedir=debian/tmp-$$package; \ |
d487f29e | 489 | done |
ab16fcc4 CW |
490 | endif |
491 | ifneq (,$(filter grub-emu,$(BUILD_PACKAGES))) | |
b88ffb1a | 492 | dh_install -pgrub-emu --sourcedir=debian/tmp-grub-emu |
00b51c62 | 493 | dh_install -pgrub-emu-dbg --sourcedir=debian/tmp-grub-emu |
ab16fcc4 | 494 | endif |
14910ac2 | 495 | ifneq (,$(filter grub2-common,$(BUILD_PACKAGES))) |
67f530b7 CW |
496 | sed -i \ |
497 | -e "s/@DEFAULT_CMDLINE@/$(DEFAULT_CMDLINE)/g" \ | |
498 | -e "s/@DEFAULT_TIMEOUT@/$(DEFAULT_TIMEOUT)/g" \ | |
537c70e5 | 499 | debian/grub2-common/usr/share/grub/default/grub |
84c4b591 CW |
500 | ifneq (,$(DEFAULT_HIDDEN_TIMEOUT)) |
501 | perl -pi -e 's/^GRUB_TIMEOUT=.*/GRUB_HIDDEN_TIMEOUT=0\nGRUB_HIDDEN_TIMEOUT_QUIET=true\n$$&/' \ | |
502 | debian/grub2-common/usr/share/grub/default/grub | |
503 | endif | |
ab16fcc4 | 504 | endif |
3bb94bbb CW |
505 | ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes)) |
506 | ifneq (,$(filter grub-pc,$(BUILD_PACKAGES))) | |
507 | patch debian/grub-pc/usr/lib/grub-legacy/update-grub \ | |
508 | < debian/legacy/update-grub.ubuntu.patch | |
509 | endif | |
510 | endif | |
9ab89a40 | 511 | |
4e1666a5 | 512 | override_dh_installdocs: |
ab16fcc4 | 513 | dh_installdocs $(patsubst %,-p%,$(filter grub-common grub-rescue-pc grub-firmware-qemu grub-xen-host,$(BUILD_PACKAGES))) -A AUTHORS NEWS README THANKS TODO |
a010d4da LB |
514 | dh_installdocs $(patsubst %,-p%,$(filter grub-efi-%-signed-template,$(BUILD_PACKAGES))) |
515 | dh_installdocs --remaining-packages --link-doc=grub-common | |
4e1666a5 | 516 | |
539388ac | 517 | ifeq ($(FLICKER_FREE_BOOT),yes) |
a2dac38e CW |
518 | override_dh_installinit: |
519 | dh_installinit -- start 99 2 3 4 5 . | |
520 | else | |
521 | override_dh_installinit: | |
522 | : | |
523 | endif | |
524 | ||
3ea00869 | 525 | override_dh_bugfiles: |
15c5f083 | 526 | dh_bugfiles $(patsubst %,-N%,$(filter grub-efi-%-signed-template,$(BUILD_PACKAGES))) -A |
3ea00869 | 527 | |
4e1666a5 CW |
528 | override_dh_strip: |
529 | dh_strip -X/usr/bin/grub-emu | |
e8dabbb1 | 530 | |
bbeb59fe CW |
531 | override_dh_shlibdeps: |
532 | dh_shlibdeps -X.module | |
533 | ||
f58e49e2 | 534 | ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes)) |
2d0dbeff | 535 | LEGACY_DOC_BR := grub-doc (<< 0.97-29ubuntu60), grub-legacy-doc (<< 0.97-29ubuntu60) |
f58e49e2 | 536 | else |
2d0dbeff | 537 | LEGACY_DOC_BR := grub-doc (<< 0.97-32), grub-legacy-doc (<< 0.97-59) |
f58e49e2 CW |
538 | endif |
539 | ||
540 | override_dh_gencontrol: | |
49a4f5cd | 541 | dh_gencontrol -- -Vlegacy-doc-br="$(LEGACY_DOC_BR)" -V"efi:Vendor=$(SB_EFI_VENDOR)" $(substvars) |
f58e49e2 | 542 | |
fa6c7410 CW |
543 | TARNAME := grub2_$(deb_version)_$(DEB_HOST_ARCH).tar.gz |
544 | ||
364bdc04 | 545 | override_dh_builddeb: |
303b237f | 546 | dh_builddeb |
9a1aa2c7 | 547 | ifneq (,$(SB_PACKAGE)) |
bd2c77be PH |
548 | echo $(deb_version) > obj/monolithic/$(SB_PACKAGE)/version |
549 | tar -c -f ../$(TARNAME) -a -C obj/monolithic/$(SB_PACKAGE) -v . | |
fa6c7410 CW |
550 | dpkg-distaddfile $(TARNAME) raw-uefi - |
551 | endif | |
364bdc04 | 552 | |
4e1666a5 | 553 | override_dh_auto_clean: |
86dc003b | 554 | -rm -rf debian/grub-extras-enabled debian/stamps obj |
f13e3647 | 555 | -rm -f contrib grub-core/contrib |
e8dabbb1 | 556 | |
22b1212a | 557 | override_dh_clean: |
136f47b9 | 558 | dh_autoreconf_clean |
4e1666a5 CW |
559 | dh_clean |
560 | ||
3ea00869 | 561 | chmod +x debian/{bug-script,grub.d/*,legacy/*,kernel/*} |
4e1666a5 | 562 | |
3166d82e | 563 | for i in $(AUTOGEN_DEB_FILES) ; do \ |
d91572cd | 564 | rm -f debian/grub-{pc,efi-*,ieee1275,coreboot,uboot,xen,yeeloong,emu}{,-bin,-dbg}.$$i ; \ |
1bc87b90 | 565 | done |
48dbe1e3 | 566 | rm -f debian/grub-common.bash-completion debian/grub-common.maintscript |
d487f29e | 567 | rm -rf debian/tmp-*/ |
1a67e2a2 | 568 | |
34e32c28 | 569 | # make sure PO files are always up-to-date |
570 | debconf-updatepo | |
571 | ||
4e1666a5 | 572 | .PHONY: $(patsubst %,configure/%,$(BUILD_PACKAGES)) $(patsubst %,build/%,$(BUILD_PACKAGES)) $(patsubst %,install/%,$(BUILD_PACKAGES)) |