]> git.proxmox.com Git - grub2.git/blob - debian/rules
Fix reversed sense of DEB_BUILD_OPTIONS=nocheck handling.
[grub2.git] / debian / rules
1 #!/usr/bin/make -f
2 SHELL := bash
3
4 deb_version := $(shell dpkg-parsechangelog | sed -ne "s/^Version: \(.*\)/\1/p")
5 upstream_version := $(shell echo $(deb_version) | sed -e "s/-[^-]*$$//")
6
7 package := grub2
8
9 DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null)
10
11 DEB_STRIP_EXCLUDE := /usr/bin/grub-emu
12
13 include /usr/share/cdbs/1/rules/debhelper.mk
14 include /usr/share/cdbs/1/rules/patchsys-quilt.mk
15
16 CFLAGS := -g -Wall
17
18 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
19 CFLAGS += -O0
20 else
21 CFLAGS += -O2
22 endif
23
24 ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
25 with_check := yes
26 else
27 with_check := no
28 endif
29
30 CC := gcc-4.4
31
32 # Enable external modules from grub-extras.
33 export GRUB_CONTRIB := $(CURDIR)/debian/grub-extras
34
35 CONFIGURE = ../../configure CC=$(CC) TARGET_CC=$(CC) \
36 --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --includedir="\$${prefix}/include" \
37 --mandir="\$${prefix}/share/man" --infodir="\$${prefix}/share/info" --sysconfdir=/etc --localstatedir=/var \
38 --libexecdir="\$${prefix}/lib/$(package)" --srcdir=$(CURDIR) \
39 --enable-grub-mkfont --disable-grub-fstest
40
41 # autogen.sh runs util/import_gcry.py after autoconf et al, so
42 # conf/gcry.rmk's timestamp will be later and we need to disregard it.
43 AUTOGEN_FILES = configure $(filter-out conf/gcry.mk,$(wildcard conf/*.mk)) debian/grub-extras/*/conf/*.mk
44 AUTOGEN_DEB_FILES = docs examples manpages config templates postinst postrm dirs install
45
46 $(AUTOGEN_FILES): autogen.sh configure.ac $(filter-out conf/gcry.rmk,$(wildcard conf/*.rmk)) debian/grub-extras/*/conf/*.rmk
47 sed -i configure.ac -e "s/^AC_INIT.*/AC_INIT(\[GRUB\],\[$(deb_version)\],\[bug-grub@gnu.org\])/"
48 ./autogen.sh
49
50 REAL_PACKAGES = grub-common grub-emu grub-pc grub-coreboot grub-efi-ia32 grub-efi-amd64 grub-ieee1275 grub-firmware-qemu grub-yeeloong
51
52 $(patsubst %,configure/%,$(REAL_PACKAGES)) :: configure/% : build/stamps/configure-%
53 $(patsubst %,build/%,$(REAL_PACKAGES) grub-rescue-pc) :: build/% : build/stamps/build-%
54
55 build/stamps/configure-grub-pc build/stamps/configure-grub-ieee1275 build/stamps/configure-grub-coreboot build/stamps/configure-grub-emu build/stamps/configure-grub-yeeloong: $(AUTOGEN_FILES)
56 mkdir -p build/stamps $(subst build/stamps/configure-,build/,$@)
57 cd $(subst build/stamps/configure-,build/,$@) && $(CONFIGURE) --with-platform=$(subst build/stamps/configure-grub-,,$@)
58 touch $@
59
60 # This name scheme leaves room for things like ia64 or amd32 someday
61 build/stamps/configure-grub-efi-ia32: $(AUTOGEN_FILES)
62 mkdir -p build/stamps $(subst build/stamps/configure-,build/,$@)
63 cd $(subst build/stamps/configure-,build/,$@) && $(CONFIGURE) --with-platform=efi --target=i386-pe --program-prefix=""
64 touch $@
65 build/stamps/configure-grub-efi-amd64: $(AUTOGEN_FILES)
66 mkdir -p build/stamps $(subst build/stamps/configure-,build/,$@)
67 cd $(subst build/stamps/configure-,build/,$@) && $(CONFIGURE) --with-platform=efi --target=amd64-pe --program-prefix=""
68 touch $@
69
70 build/stamps/configure-grub-firmware-qemu: $(AUTOGEN_FILES)
71 mkdir -p build/stamps $(subst build/stamps/configure-,build/,$@)
72 cd $(subst build/stamps/configure-,build/,$@) && $(CONFIGURE) --with-platform=qemu
73 touch $@
74
75 build/stamps/configure-grub-common: $(AUTOGEN_FILES)
76 mkdir -p build/stamps $(subst build/stamps/configure-,build/,$@)
77 cd $(subst build/stamps/configure-,build/,$@) && $(CONFIGURE)
78 touch $@
79
80 build/stamps/build-grub-common build/stamps/build-grub-efi-ia32 build/stamps/build-grub-efi-amd64 build/stamps/build-grub-ieee1275 build/stamps/build-grub-coreboot build/stamps/build-grub-emu build/stamps/build-grub-yeeloong: build/stamps/build-%: build/stamps/configure-%
81 $(MAKE) -C $(subst build/stamps/build-,build/,$@)
82 touch $@
83
84 build/stamps/build-grub-pc: build/stamps/configure-grub-pc
85 $(MAKE) -C $(subst build/stamps/build-,build/,$@)
86 ifeq ($(with_check), yes)
87 $(MAKE) -C $(subst build/stamps/build-,build/,$@) check
88 endif
89 touch $@
90
91 build/stamps/build-grub-firmware-qemu: build/stamps/configure-grub-firmware-qemu
92 $(MAKE) -C $(subst build/stamps/build-,build/,$@)
93 grub_dir=`mktemp -d` ; \
94 grub_memdisk=`mktemp` ; \
95 trap "rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM ; \
96 mkdir -p $${grub_dir}/boot/grub ; \
97 cp debian/grub-firmware-qemu_grub.cfg $${grub_dir}/boot/grub/grub.cfg ; \
98 tar -cf - -C $${grub_dir} boot > $${grub_memdisk} ; \
99 $(CURDIR)/$(subst build/stamps/build-,build/,$@)/grub-mkimage \
100 -O i386-qemu \
101 -d $(CURDIR)/$(subst build/stamps/build-,build/,$@) \
102 $(CURDIR)/$(subst build/stamps/build-,build/,$@)/*.mod \
103 -m $${grub_memdisk} \
104 -o $(CURDIR)/$(subst build/stamps/build-,build/,$@)/grub.bin
105 touch $@
106
107 build/stamps/build-grub-rescue-pc: build/stamps/build-grub-pc
108 mkdir -p build/grub-rescue-pc
109 cp -a build/grub-pc/grub-mkrescue build/grub-rescue-pc/grub-mkrescue
110 mkdir -p build/grub-rescue-pc/rescue-disk/boot/grub
111 cp docs/grub.cfg build/grub-rescue-pc/rescue-disk/boot/grub/
112 sed -i 's,^prefix=.*,prefix=$(CURDIR)/build/grub-rescue-pc,' \
113 build/grub-rescue-pc/grub-mkrescue
114 mkdir -p build/grub-rescue-pc/lib/grub
115 rm -rf build/grub-rescue-pc/lib/grub/i386-pc
116 cp -a build/grub-pc build/grub-rescue-pc/lib/grub/i386-pc
117 $(CURDIR)/build/grub-rescue-pc/grub-mkrescue \
118 --grub-mkimage=$(CURDIR)/build/grub-pc/grub-mkimage \
119 --output=$(CURDIR)/build/grub-rescue-pc/grub-rescue-cdrom.iso \
120 $(CURDIR)/build/grub-rescue-pc/rescue-disk
121 # save space for floppy image
122 rm -rf build/grub-rescue-pc/lib/grub/i386-pc/po
123 $(CURDIR)/build/grub-rescue-pc/grub-mkrescue \
124 --grub-mkimage=$(CURDIR)/build/grub-pc/grub-mkimage \
125 --output=$(CURDIR)/build/grub-rescue-pc/grub-rescue-floppy.img \
126 --diet \
127 $(CURDIR)/build/grub-rescue-pc/rescue-disk
128 touch $@
129
130 install/grub-pc install/grub-efi-ia32 install/grub-efi-amd64 install/grub-ieee1275 install/grub-coreboot install/grub-emu install/grub-yeeloong::
131 $(MAKE) -C $(subst install/,build/,$@) install DESTDIR=$(CURDIR)/debian/$(subst install/,,$@)/
132
133 # shipped with grub-common
134 rm -rf $(CURDIR)/debian/$(subst install/,,$@)/etc/grub.d
135 rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/{sbin,share/man/man8}/{grub-dumpbios,grub-probe,grub-mkconfig,grub-mkdevicemap,grub-ofpathname}{,.8}
136 rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/{bin,share/man/man1}/{grub-bin2h,grub-mkelfimage,grub-mkfont,grub-mkimage,grub-editenv,grub-mkrescue,grub-mkrelpath,grub-script-check,grub-mkpasswd-pbkdf2}{,.1}
137 rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/lib/grub/{grub-mkconfig_lib,update-grub_lib}
138 rm -rf $(CURDIR)/debian/$(subst install/,,$@)/usr/share/{grub,info,locale}/
139 rm -rf $(CURDIR)/debian/$(subst install/,,$@)/usr/include
140
141 if [ "$@" = "install/grub-emu" ] ; then \
142 rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/{sbin,share/man/man8}/{grub-reboot,grub-set-default}{,.8} ; \
143 fi
144
145 if [ "$@" != "install/grub-emu" ] ; then \
146 for i in $(AUTOGEN_DEB_FILES) ; do \
147 sed debian/$$i.in \
148 -e "s/@PACKAGE@/$(subst install/,,$@)/g" \
149 > debian/$(subst install/,,$@).$$i ; \
150 done ; \
151 fi
152
153 # grub-pc is a bit special. It includes a few overlays for autogen files.
154 if [ "$@" = "install/grub-pc" ] ; then \
155 for i in templates install dirs ; do \
156 cat debian/grub-pc.$$i.in >> debian/grub-pc.$$i ; \
157 done ; \
158 fi
159
160 mkdir -p $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides
161 echo "$(subst install/,,$@): unstripped-binary-or-object *.mod" \
162 >> $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides/$(subst install/,,$@)
163 cd $(CURDIR)/debian/$(subst install/,,$@) && find ./usr/lib/grub -name kernel.img \
164 | sed -e "s%.*%$(subst install/,,$@): statically-linked-binary &%g" \
165 >> $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides/$(subst install/,,$@)
166 cd $(CURDIR)/debian/$(subst install/,,$@) && find ./usr/lib/grub -name kernel.img \
167 | sed -e "s%.*%$(subst install/,,$@): unstripped-binary-or-object &%g" \
168 >> $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides/$(subst install/,,$@)
169 if [ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ] ; then \
170 echo "$(subst install/,,$@): binary-from-other-architecture *.mod" \
171 >> $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides/$(subst install/,,$@) ; \
172 cd $(CURDIR)/debian/$(subst install/,,$@) && find ./usr/lib/grub -name kernel.img \
173 | sed -e "s%.*%$(subst install/,,$@): binary-from-other-architecture &%g" \
174 >> $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides/$(subst install/,,$@) ; \
175 fi
176 if [ "$@" = "install/grub-pc" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ] ; then \
177 echo "$(subst install/,,$@): binary-from-other-architecture *efiemu64.o" \
178 >> $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides/$(subst install/,,$@) ; \
179 fi
180
181 install/grub-common::
182 $(MAKE) -C $(subst install/,build/,$@) install DESTDIR=$(CURDIR)/debian/$(subst install/,,$@)/
183 rm -rf $(CURDIR)/debian/$(subst install/,,$@)/usr/lib/grub/{i386,powerpc,sparc64,mipsel}-*
184 rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/{sbin,share/man/man8}/{update-grub,grub-install,grub-setup,grub-reboot,grub-set-default}{,.8}
185 rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/share/info/dir*
186
187 clean:: debian/legacy/update-grub debian/grub-extras
188 chmod +x debian/{script,grub.d/*,legacy/*}
189
190 sed -i configure.ac -e "s/^AC_INIT.*/AC_INIT(\[GRUB\],\[0\],\[bug-grub@gnu.org\]) dnl version is filled by debian\/rules/"
191
192 for i in $(AUTOGEN_DEB_FILES) ; do \
193 rm -f debian/grub-{pc,efi-*,ieee1275,coreboot,yeeloong}.$$i ; \
194 done
195 -rm -rf build
196
197 # make sure PO files are always up-to-date
198 debconf-updatepo
199
200 debian/legacy/update-grub:
201 @echo "Missing $@. Try: \"bzr cat http://bzr.debian.org/bzr/pkg-grub/trunk/grub-legacy/debian/update-grub > $@\""
202 exit 1
203
204 debian/grub-extras:
205 @echo "Missing $@. Try: \"mkdir -p $@; for extra in 915resolution ntldr-img zfs; do bzr export $@/\$$extra http://bzr.savannah.nongnu.org/r/grub-extras/\$$extra; done\""
206 exit 1