[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MULTIBOOT2 SPEC PATCH v4 13/27] multiboot2: Build arch specific boot co

From: Hans Ulrich Niedermann
Subject: [MULTIBOOT2 SPEC PATCH v4 13/27] multiboot2: Build arch specific boot code
Date: Fri, 15 May 2020 05:43:36 +0200

Choose the arch specific bootcode for i386 or mips, depending
on what --host is being built for.

Before this, boot_i386.S and boot_mips.S were both in the docs,
but boot_mips.S was the boot code always built regardless of the
actual system being built for.

If the --host system is neither i386 (or x86_64 which is switched
into 32bit mode) or mips, the example kernel build will be skipped.

The mips definitions for kernel_ccasflags and kernel_cflags are
completely untested.

Signed-off-by: Hans Ulrich Niedermann <address@hidden>

diff --git a/.gitignore b/.gitignore
index 631ff668d..e27a3e0e2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,9 @@
diff --git a/ b/
index d8e08597d..830b1f57e 100644
--- a/
+++ b/
@@ -25,13 +25,37 @@ AM_INIT_AUTOMAKE([1.10.1])
-dnl Build the example Multiboot2 kernel.
+dnl Build the example Multiboot2 kernel (if possible on this host)
+case "$host_cpu" in #(
+  i[[3456]]86)
+    kernel_boot_arch=i386
+    ;; #(
+  x86_64)
+    kernel_boot_arch=i386
+    kernel_ccasflags="-m32"
+    kernel_cflags="-m32"
+    ;; #(
+  mips*)
+    kernel_boot_arch=mips
+    kernel_ccasflags="-mabi=32"
+    kernel_cflags="-mabi=32"
+    ;;
 AC_ARG_ENABLE([example-kernel], [dnl
                [build the example Multiboot2 kernel])])
-               [test "x$enable_example_kernel" = xyes])
+               [test "x$enable_example_kernel" = xyes &&
+                test "x$kernel_boot_arch" != "xunsupported"])
 CFLAGS="-nostdlib $CFLAGS"
diff --git a/doc/ b/doc/
index 08fdbf342..b19fc24bf 100644
--- a/doc/
+++ b/doc/
@@ -9,8 +9,9 @@ pkginclude_HEADERS = multiboot2.h
 # The example kernel is built if you specify --enable-example-kernel.
 noinst_PROGRAMS = kernel
-kernel_SOURCES = boot_mips.S kernel.c multiboot2.h
-kernel_CFLAGS = -fno-builtin -nostdinc -O -g -Wall \
+kernel_SOURCES = boot_$(kernel_boot_arch).S kernel.c multiboot2.h
+kernel_CCASFLAGS = $(kernel_ccasflags)
+kernel_CFLAGS = $(kernel_cflags) -fno-builtin -nostdinc -O -g -Wall \
        -imacros $(top_builddir)/config.h
 kernel_LDFLAGS = -nostdlib -Wl,-N -Wl,-Ttext -Wl,80100000 -Wl,--build-id=none

reply via email to

[Prev in Thread] Current Thread [Next in Thread]