4 deb_version
:= $(shell dpkg-parsechangelog | sed
-ne
"s/^Version: \(.*\)/\1/p")
5 upstream_version
:= $(shell echo
$(deb_version
) | sed
-e
"s/-[^-]*$$//")
9 DEB_HOST_ARCH_CPU ?
= $(shell dpkg-architecture
-qDEB_HOST_ARCH_CPU
2>/dev
/null
)
11 DEB_STRIP_EXCLUDE
:= /usr
/bin
/grub-emu
13 include /usr
/share
/cdbs
/1/rules
/debhelper.mk
14 include /usr
/share
/cdbs
/1/rules
/patchsys-quilt.mk
18 ifneq (,$(findstring noopt
,$(DEB_BUILD_OPTIONS
)))
24 ifeq (,$(findstring nocheck
,$(DEB_BUILD_OPTIONS
)))
32 # Enable external modules from grub-extras.
33 export GRUB_CONTRIB
:= $(CURDIR
)/debian
/grub-extras
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
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
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\])/"
50 REAL_PACKAGES
= grub-common grub-emu grub-pc grub-coreboot grub-efi-ia32 grub-efi-amd64 grub-ieee1275 grub-firmware-qemu grub-yeeloong
52 $(patsubst %,configure
/%,$(REAL_PACKAGES
)) :: configure
/% : build
/stamps
/configure-
%
53 $(patsubst %,build
/%,$(REAL_PACKAGES
) grub-rescue-pc
) :: build
/% : build
/stamps
/build-
%
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-
,,$@
)
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
=""
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
=""
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
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
)
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
/,$@
)
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
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 \
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
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 \
127 $(CURDIR
)/build
/grub-rescue-pc
/rescue-disk
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/,,$@
)/
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
141 if
[ "$@" = "install/grub-emu" ] ; then \
142 rm -f
$(CURDIR
)/debian
/$(subst install/,,$@
)/usr
/{sbin
,share
/man
/man8
}/{grub-reboot
,grub-set-default
}{,.8} ; \
145 if
[ "$@" != "install/grub-emu" ] ; then \
146 for i in
$(AUTOGEN_DEB_FILES
) ; do \
148 -e
"s/@PACKAGE@/$(subst install/,,$@)/g" \
149 > debian
/$(subst install/,,$@
).
$$i ; \
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 ; \
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/,,$@
) ; \
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/,,$@
) ; \
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*
187 clean:: debian
/legacy
/update-grub debian
/grub-extras
188 chmod
+x debian
/{script
,grub.d
/*,legacy
/*}
190 sed
-i configure.ac
-e
"s/^AC_INIT.*/AC_INIT(\[GRUB\],\[0\],\[bug-grub@gnu.org\]) dnl version is filled by debian\/rules/"
192 for i in
$(AUTOGEN_DEB_FILES
) ; do \
193 rm -f debian
/grub-
{pc,efi-
*,ieee1275
,coreboot
,yeeloong
}.
$$i ; \
197 # make sure PO files are always up-to-date
200 debian
/legacy
/update-grub
:
201 @echo
"Missing $@. Try: \"bzr cat http://bzr.debian.org/bzr/pkg-grub/trunk/grub-legacy/debian/update-grub > $@\""
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\""