From 3fa7acb116d0cb6cdaca3da61a7766685ba315f1 Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Mon, 13 Jan 2025 16:47:06 +0200 Subject: [PATCH] build: add support for GRUB in the build process Signed-off-by: EnderIce2 --- tools/Makefile | 85 ++++++++++++++++++++++++++++++++++++++++++++++-- tools/grub.patch | 9 +++++ 2 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 tools/grub.patch diff --git a/tools/Makefile b/tools/Makefile index 0dfc7f66..ea309c34 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -5,6 +5,7 @@ export PATH := $(CROSS_DIR):$(PATH) BINUTILS_TAG = binutils-2_43_1 GCC_TAG = releases/gcc-14.2.0 QEMU_TAG = v9.2.0 +GRUB_TAG = grub-2.12 default: $(error Please specify a target) @@ -68,6 +69,18 @@ else $(info > TOOLS: Operation completed for gcc) endif +__clone_grub: +ifeq ("$(wildcard ./grub)", "") + git clone --depth 1 -b $(GRUB_TAG) https://git.savannah.gnu.org/git/grub.git grub +else + $(info > TOOLS: Reseting grub...) + cd grub && \ + git fetch origin && \ + git reset --hard $(GRUB_TAG) && \ + git clean -dfx + $(info > TOOLS: Operation completed for grub) +endif + __patch_cross_binutils: __clone_binutils $(info > TOOLS: Patching binutils-gcc) cd binutils-gdb && git apply ../binutils-gdb.patch @@ -81,18 +94,22 @@ __patch_cross_gcc: __clone_gcc $(info > TOOLS: Running autoconf for gcc/libstdc++-v3) cd gcc/libstdc++-v3 && autoconf +__patch_cross_grub: __clone_grub + $(info > TOOLS: Patching grub) + cd grub && git apply ../grub.patch + __patch_cross_qemu: __clone_qemu $(info > TOOLS: Patching qemu) cd qemu && git apply ../qemu.patch -__patch_cross: __patch_cross_binutils __patch_cross_gcc +__patch_cross: __patch_cross_binutils __patch_cross_gcc __patch_cross_grub __prep_cross: mkdir -p cross mkdir -p binutils-gdb/__build mkdir -p gcc/__build -__clone_all_no_qemu: __clone_binutils __clone_gcc +__clone_all_no_qemu: __clone_grub __clone_binutils __clone_gcc __clone_all: __clone_qemu __clone_all_no_qemu @@ -114,6 +131,9 @@ endif ifeq ("$(wildcard ./qemu.patch.bk)", "") mv qemu.patch qemu.patch.bk endif +ifeq ("$(wildcard ./grub.patch.bk)", "") + mv grub.patch grub.patch.bk +endif # binutils-gdb cd binutils-gdb && \ git add . && \ @@ -126,6 +146,10 @@ endif cd qemu && \ git add . && \ git diff --cached > ../qemu.patch +# grub + cd grub && \ + git add . && \ + git diff --cached > ../grub.patch do_qemu: $(MAKE) __patch_cross_qemu @@ -139,6 +163,7 @@ do_qemu: make --quiet -j$(shell nproc) && make --quiet install __do_binutils_x86_64: + mkdir -p binutils-gdb/__build cd binutils-gdb/__build && \ ../configure --target=x86_64-fennix \ --prefix="$(CROSS_DIR)" --disable-nls --quiet \ @@ -147,6 +172,7 @@ __do_binutils_x86_64: make --quiet install __do_binutils_i386: + mkdir -p binutils-gdb/__build cd binutils-gdb/__build && \ ../configure --target=i386-fennix \ --prefix="$(CROSS_DIR)" --disable-nls --quiet \ @@ -155,6 +181,7 @@ __do_binutils_i386: make --quiet install __do_binutils_arm: + mkdir -p binutils-gdb/__build cd binutils-gdb/__build && \ ../configure --target=arm-fennix \ --prefix="$(CROSS_DIR)" --disable-nls --quiet \ @@ -163,6 +190,7 @@ __do_binutils_arm: make --quiet install __do_binutils_aarch64: + mkdir -p binutils-gdb/__build cd binutils-gdb/__build && \ ../configure --target=aarch64-fennix \ --prefix="$(CROSS_DIR)" --disable-nls --quiet \ @@ -185,6 +213,7 @@ do_binutils: $(MAKE) __do_binutils_aarch64 __do_gcc_x86_64: + mkdir -p gcc/__build cd gcc/__build && \ ../configure --target=x86_64-fennix --quiet \ --prefix="$(CROSS_DIR)" --disable-nls --enable-default-pie \ @@ -195,6 +224,7 @@ __do_gcc_x86_64: make --quiet install-target-libgcc -j$(shell nproc) __do_gcc_i386: + mkdir -p gcc/__build cd gcc/__build && \ ../configure --target=i386-fennix --quiet \ --prefix="$(CROSS_DIR)" --disable-nls --enable-default-pie \ @@ -205,6 +235,7 @@ __do_gcc_i386: make --quiet install-target-libgcc -j$(shell nproc) __do_gcc_arm: + mkdir -p gcc/__build cd gcc/__build && \ ../configure --target=arm-fennix --quiet \ --prefix="$(CROSS_DIR)" --disable-nls --enable-default-pie \ @@ -237,3 +268,53 @@ do_gcc: $(MAKE) __do_gcc_arm $(MAKE) __reset_gcc $(MAKE) __do_gcc_aarch64 + +__do_grub_x86_64: + cd grub && ./bootstrap + mkdir -p grub/__build + cd grub/__build && \ + ../configure --target=x86_64-linux \ + --disable-nls && \ + make all -j$(shell nproc) && \ + make install + +__do_grub_i386: + cd grub && ./bootstrap + mkdir -p grub/__build + cd grub/__build && \ + ../configure --target=i386-linux \ + --disable-nls && \ + make all -j$(shell nproc) && \ + make install + +__do_grub_arm: + cd grub && ./bootstrap + mkdir -p grub/__build + cd grub/__build && \ + ../configure --target=arm-linux \ + --disable-nls && \ + make all -j$(shell nproc) && \ + make install + +__do_grub_aarch64: + cd grub && ./bootstrap + mkdir -p grub/__build + cd grub/__build && \ + ../configure --target=aarch64-linux \ + --disable-nls && \ + make all -j$(shell nproc) && \ + make install + +__reset_grub: + $(MAKE) __patch_cross_grub + $(MAKE) __prep_cross + +do_grub: + $(MAKE) __reset_grub + $(MAKE) __do_grub_x86_64 + $(MAKE) __reset_grub + $(MAKE) __do_grub_i386 + $(MAKE) __reset_grub + $(MAKE) __do_grub_arm + $(MAKE) __reset_grub + $(MAKE) __do_grub_aarch64 diff --git a/tools/grub.patch b/tools/grub.patch new file mode 100644 index 00000000..94515aa7 --- /dev/null +++ b/tools/grub.patch @@ -0,0 +1,9 @@ +diff --git a/.gitignore b/.gitignore +index 2105d87..58fe53f 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -281,3 +281,4 @@ widthspec.bin + /xfs_test + /xzcompress_test + /zfs_test ++/__build