Bug#775722: grub2: fix mips64el build
YunQiang Su
wzssyqa at gmail.com
Mon Jan 19 10:18:47 UTC 2015
Package: src:grub2
Version: 2.02~beta2-20
With this patch, grub2 can be built on mips64el.
Can you review it ?
--
YunQiang Su
-------------- next part --------------
diff -Nru grub2-2.02~beta2/debian/control grub2-2.02~beta2/debian/control
--- grub2-2.02~beta2/debian/control 2015-01-03 20:21:00.000000000 +0800
+++ grub2-2.02~beta2/debian/control 2015-01-19 17:58:02.000000000 +0800
@@ -89,7 +89,7 @@
# Not Architecture: any because this package contains some things which are
# only built when there is a real platform (e.g. grub-install), and the rest
# of the package is not very useful in a utilities-only build.
-Architecture: any-i386 any-amd64 any-powerpc any-ppc64 any-ppc64el any-sparc any-sparc64 any-mipsel any-ia64 any-arm any-arm64
+Architecture: any-i386 any-amd64 any-powerpc any-ppc64 any-ppc64el any-sparc any-sparc64 any-mipsel any-mips64el any-mips64el any-ia64 any-arm any-arm64
Depends: grub-common (= ${binary:Version}), dpkg (>= 1.15.4) | install-info, ${shlibs:Depends}, ${misc:Depends}
Replaces: grub, grub-legacy, grub-common (<< 1.99-1), grub-pc (<< 2.00-4), grub-ieee1275 (<< 2.00-4), grub-efi (<< 1.99-1), grub-coreboot (<< 2.00-4), grub-linuxbios (<< 1.99-1), grub-efi-ia32 (<< 2.00-4), grub-efi-amd64 (<< 2.00-4), grub-efi-ia64 (<< 2.00-4), grub-ieee1275 (<< 2.00-4), grub-yeeloong (<< 2.00-4)
Conflicts: grub (<< 0.97-54), grub-legacy, ${legacy-doc-conflicts}
@@ -652,7 +652,7 @@
guest (i.e. PV-GRUB) to be present in the control domain filesystem.
Package: grub-yeeloong-bin
-Architecture: any-mipsel
+Architecture: any-mipsel any-mips64el
Depends: ${shlibs:Depends}, ${misc:Depends}, grub-common (= ${binary:Version})
Replaces: grub-common (<< 1.98+20100617-2), grub-yeeloong (<< 1.99-1)
Multi-Arch: foreign
@@ -673,7 +673,7 @@
Package: grub-yeeloong-dbg
Section: debug
-Architecture: any-mipsel
+Architecture: any-mipsel any-mips64el
Depends: ${misc:Depends}, grub-yeeloong-bin (= ${binary:Version}), grub-common (= ${binary:Version})
Multi-Arch: foreign
Description: GRand Unified Bootloader, version 2 (Yeeloong debug files)
@@ -681,7 +681,7 @@
need these if you are trying to debug GRUB using its GDB stub.
Package: grub-yeeloong
-Architecture: any-mipsel
+Architecture: any-mipsel any-mips64el
Depends: ${shlibs:Depends}, ${misc:Depends}, grub2-common (= ${binary:Version}), grub-yeeloong-bin (= ${binary:Version}), ucf
Replaces: grub-common (<< 1.98+20100617-2)
Multi-Arch: foreign
@@ -701,7 +701,7 @@
Package: grub-theme-starfield
# Could be Architecture: any, but in practice this package is useless in a
# utilities-only build.
-Architecture: any-i386 any-amd64 any-powerpc any-ppc64 any-ppc64el any-sparc any-sparc64 any-mipsel any-ia64 any-arm any-arm64
+Architecture: any-i386 any-amd64 any-powerpc any-ppc64 any-ppc64el any-sparc any-sparc64 any-mipsel any-mips64el any-ia64 any-arm any-arm64
Depends: ${misc:Depends}, grub-common (= ${binary:Version})
Multi-Arch: foreign
Description: GRand Unified Bootloader, version 2 (starfield theme)
diff -Nru grub2-2.02~beta2/debian/patches/mips32.diff grub2-2.02~beta2/debian/patches/mips32.diff
--- grub2-2.02~beta2/debian/patches/mips32.diff 1970-01-01 08:00:00.000000000 +0800
+++ grub2-2.02~beta2/debian/patches/mips32.diff 2015-01-19 17:58:02.000000000 +0800
@@ -0,0 +1,104 @@
+Index: grub2-2.02~beta2/configure.ac
+===================================================================
+--- grub2-2.02~beta2.orig/configure.ac 2015-01-15 02:03:29.000000000 +0800
++++ grub2-2.02~beta2/configure.ac 2015-01-15 02:12:50.793920793 +0800
+@@ -85,17 +85,23 @@
+ TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_srcdir)/include"
+ TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_builddir)/include"
+
++m32_option="-m32"
++m64_option="-m64"
+ case "$target_cpu" in
+ i[[3456]]86) target_cpu=i386 ;;
+ amd64) target_cpu=x86_64 ;;
+ sparc) target_cpu=sparc64 ;;
+- mipsel|mips64el)
++ mipsel|mips64el|mipsn32el)
+ target_cpu=mipsel;
+ machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPSEL=1";
++ m32_option="-mabi=32"
++ m64_option="-mabi=64"
+ ;;
+- mips|mips64)
++ mips|mips64|mipsn32)
+ target_cpu=mips;
+ machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPS=1";
++ m32_option="-mabi=32"
++ m64_option="-mabi=64"
+ ;;
+ arm*)
+ target_cpu=arm;
+@@ -179,7 +185,7 @@
+
+ if test x$platform != xemu ; then
+ case "$target_cpu" in
+- i386 | powerpc) target_m32=1 ;;
++ i386 | powerpc | mips | mipsel) target_m32=1 ;;
+ x86_64 | sparc64) target_m64=1 ;;
+ esac
+ fi
+@@ -352,8 +358,8 @@
+ unset ac_cv_c_bigendian
+
+ if test x"$target_cpu-$platform" = xsparc64-emu ; then
+- CFLAGS="$CFLAGS -m64"
+- HOST_CFLAGS="$HOST_CFLAGS -m64"
++ CFLAGS="$CFLAGS $m64_option"
++ HOST_CFLAGS="$HOST_CFLAGS $m64_option"
+ fi
+
+ AC_C_BIGENDIAN
+@@ -586,19 +592,19 @@
+
+ if test "x$target_m32" = x1; then
+ # Force 32-bit mode.
+- TARGET_CFLAGS="$TARGET_CFLAGS -m32"
+- TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m32"
+- TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m32"
+- TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
++ TARGET_CFLAGS="$TARGET_CFLAGS $m32_option"
++ TARGET_CCASFLAGS="$TARGET_CCASFLAGS $m32_option"
++ TARGET_CPPFLAGS="$TARGET_CPPFLAGS $m32_option"
++ TARGET_LDFLAGS="$TARGET_LDFLAGS $m32_option"
+ TARGET_MODULE_FORMAT="elf32"
+ fi
+
+ if test "x$target_m64" = x1; then
+ # Force 64-bit mode.
+- TARGET_CFLAGS="$TARGET_CFLAGS -m64"
+- TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m64"
+- TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m64"
+- TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
++ TARGET_CFLAGS="$TARGET_CFLAGS $m64_option"
++ TARGET_CCASFLAGS="$TARGET_CCASFLAGS $m64_option"
++ TARGET_CPPFLAGS="$TARGET_CPPFLAGS $m64_option"
++ TARGET_LDFLAGS="$TARGET_LDFLAGS $m64_option"
+ TARGET_MODULE_FORMAT="elf64"
+ fi
+
+@@ -721,21 +727,21 @@
+ fi
+ if test x"$efiemu_excuse" = x ; then
+ AC_CACHE_CHECK([whether options required for efiemu work], grub_cv_cc_efiemu, [
+- CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
++ CFLAGS="$m64_option -nostdlib -O2 -mcmodel=large -mno-red-zone"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+ [grub_cv_cc_efiemu=yes],
+ [grub_cv_cc_efiemu=no])
+ ])
+ if test x$grub_cv_cc_efiemu = xno; then
+- efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
++ efiemu_excuse="cannot compile with $m64_option -mcmodel=large -mno-red-zone -nostdlib"
+ fi
+ fi
+ if test x"$efiemu_excuse" = x ; then
+ AC_CACHE_CHECK([for efiemu64 linking format], [grub_cv_target_cc_efiemu64_link_format], [
+ grub_cv_target_cc_efiemu64_link_format=unknown
+ for format in -melf_x86_64 -melf_x86_64_fbsd -melf_x86_64_obsd -melf_x86_64_haiku -arch,x86_64; do
+- CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
+- LDFLAGS="-m64 -Wl,$format -nostdlib -static"
++ CFLAGS="$m64_option -nostdlib -O2 -mcmodel=large -mno-red-zone"
++ LDFLAGS="$m64_option -Wl,$format -nostdlib -static"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ asm (".globl start; start:");
+ asm (".globl _start; _start:");
diff -Nru grub2-2.02~beta2/debian/patches/series grub2-2.02~beta2/debian/patches/series
--- grub2-2.02~beta2/debian/patches/series 2015-01-03 20:21:00.000000000 +0800
+++ grub2-2.02~beta2/debian/patches/series 2015-01-19 17:58:02.000000000 +0800
@@ -64,3 +64,4 @@
insmod-xzio-and-lzopio-on-xen.patch
grub-install-extra-removable.patch
mkconfig_other_inits.patch
+mips32.diff
diff -Nru grub2-2.02~beta2/debian/rules grub2-2.02~beta2/debian/rules
--- grub2-2.02~beta2/debian/rules 2015-01-03 20:21:00.000000000 +0800
+++ grub2-2.02~beta2/debian/rules 2015-01-19 17:58:02.000000000 +0800
@@ -48,6 +48,10 @@
COMMON_PLATFORM := ieee1275
else ifeq (mipsel,$(DEB_HOST_ARCH_CPU))
COMMON_PLATFORM := yeeloong
+else ifeq (mips64el,$(DEB_HOST_ARCH_CPU))
+COMMON_PLATFORM := yeeloong
+else ifeq (mipsn32el,$(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))
More information about the Pkg-grub-devel
mailing list