build: add support for GRUB in the build process

Signed-off-by: EnderIce2 <enderice2@protonmail.com>
This commit is contained in:
EnderIce2 2025-01-13 16:47:06 +02:00
parent 749a1b1810
commit 3fa7acb116
No known key found for this signature in database
GPG Key ID: 2EE20AF089811A5A
2 changed files with 92 additions and 2 deletions

View File

@ -5,6 +5,7 @@ export PATH := $(CROSS_DIR):$(PATH)
BINUTILS_TAG = binutils-2_43_1 BINUTILS_TAG = binutils-2_43_1
GCC_TAG = releases/gcc-14.2.0 GCC_TAG = releases/gcc-14.2.0
QEMU_TAG = v9.2.0 QEMU_TAG = v9.2.0
GRUB_TAG = grub-2.12
default: default:
$(error Please specify a target) $(error Please specify a target)
@ -68,6 +69,18 @@ else
$(info > TOOLS: Operation completed for gcc) $(info > TOOLS: Operation completed for gcc)
endif 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 __patch_cross_binutils: __clone_binutils
$(info > TOOLS: Patching binutils-gcc) $(info > TOOLS: Patching binutils-gcc)
cd binutils-gdb && git apply ../binutils-gdb.patch 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) $(info > TOOLS: Running autoconf for gcc/libstdc++-v3)
cd gcc/libstdc++-v3 && autoconf 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 __patch_cross_qemu: __clone_qemu
$(info > TOOLS: Patching qemu) $(info > TOOLS: Patching qemu)
cd qemu && git apply ../qemu.patch 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: __prep_cross:
mkdir -p cross mkdir -p cross
mkdir -p binutils-gdb/__build mkdir -p binutils-gdb/__build
mkdir -p gcc/__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 __clone_all: __clone_qemu __clone_all_no_qemu
@ -114,6 +131,9 @@ endif
ifeq ("$(wildcard ./qemu.patch.bk)", "") ifeq ("$(wildcard ./qemu.patch.bk)", "")
mv qemu.patch qemu.patch.bk mv qemu.patch qemu.patch.bk
endif endif
ifeq ("$(wildcard ./grub.patch.bk)", "")
mv grub.patch grub.patch.bk
endif
# binutils-gdb # binutils-gdb
cd binutils-gdb && \ cd binutils-gdb && \
git add . && \ git add . && \
@ -126,6 +146,10 @@ endif
cd qemu && \ cd qemu && \
git add . && \ git add . && \
git diff --cached > ../qemu.patch git diff --cached > ../qemu.patch
# grub
cd grub && \
git add . && \
git diff --cached > ../grub.patch
do_qemu: do_qemu:
$(MAKE) __patch_cross_qemu $(MAKE) __patch_cross_qemu
@ -139,6 +163,7 @@ do_qemu:
make --quiet -j$(shell nproc) && make --quiet install make --quiet -j$(shell nproc) && make --quiet install
__do_binutils_x86_64: __do_binutils_x86_64:
mkdir -p binutils-gdb/__build
cd binutils-gdb/__build && \ cd binutils-gdb/__build && \
../configure --target=x86_64-fennix \ ../configure --target=x86_64-fennix \
--prefix="$(CROSS_DIR)" --disable-nls --quiet \ --prefix="$(CROSS_DIR)" --disable-nls --quiet \
@ -147,6 +172,7 @@ __do_binutils_x86_64:
make --quiet install make --quiet install
__do_binutils_i386: __do_binutils_i386:
mkdir -p binutils-gdb/__build
cd binutils-gdb/__build && \ cd binutils-gdb/__build && \
../configure --target=i386-fennix \ ../configure --target=i386-fennix \
--prefix="$(CROSS_DIR)" --disable-nls --quiet \ --prefix="$(CROSS_DIR)" --disable-nls --quiet \
@ -155,6 +181,7 @@ __do_binutils_i386:
make --quiet install make --quiet install
__do_binutils_arm: __do_binutils_arm:
mkdir -p binutils-gdb/__build
cd binutils-gdb/__build && \ cd binutils-gdb/__build && \
../configure --target=arm-fennix \ ../configure --target=arm-fennix \
--prefix="$(CROSS_DIR)" --disable-nls --quiet \ --prefix="$(CROSS_DIR)" --disable-nls --quiet \
@ -163,6 +190,7 @@ __do_binutils_arm:
make --quiet install make --quiet install
__do_binutils_aarch64: __do_binutils_aarch64:
mkdir -p binutils-gdb/__build
cd binutils-gdb/__build && \ cd binutils-gdb/__build && \
../configure --target=aarch64-fennix \ ../configure --target=aarch64-fennix \
--prefix="$(CROSS_DIR)" --disable-nls --quiet \ --prefix="$(CROSS_DIR)" --disable-nls --quiet \
@ -185,6 +213,7 @@ do_binutils:
$(MAKE) __do_binutils_aarch64 $(MAKE) __do_binutils_aarch64
__do_gcc_x86_64: __do_gcc_x86_64:
mkdir -p gcc/__build
cd gcc/__build && \ cd gcc/__build && \
../configure --target=x86_64-fennix --quiet \ ../configure --target=x86_64-fennix --quiet \
--prefix="$(CROSS_DIR)" --disable-nls --enable-default-pie \ --prefix="$(CROSS_DIR)" --disable-nls --enable-default-pie \
@ -195,6 +224,7 @@ __do_gcc_x86_64:
make --quiet install-target-libgcc -j$(shell nproc) make --quiet install-target-libgcc -j$(shell nproc)
__do_gcc_i386: __do_gcc_i386:
mkdir -p gcc/__build
cd gcc/__build && \ cd gcc/__build && \
../configure --target=i386-fennix --quiet \ ../configure --target=i386-fennix --quiet \
--prefix="$(CROSS_DIR)" --disable-nls --enable-default-pie \ --prefix="$(CROSS_DIR)" --disable-nls --enable-default-pie \
@ -205,6 +235,7 @@ __do_gcc_i386:
make --quiet install-target-libgcc -j$(shell nproc) make --quiet install-target-libgcc -j$(shell nproc)
__do_gcc_arm: __do_gcc_arm:
mkdir -p gcc/__build
cd gcc/__build && \ cd gcc/__build && \
../configure --target=arm-fennix --quiet \ ../configure --target=arm-fennix --quiet \
--prefix="$(CROSS_DIR)" --disable-nls --enable-default-pie \ --prefix="$(CROSS_DIR)" --disable-nls --enable-default-pie \
@ -237,3 +268,53 @@ do_gcc:
$(MAKE) __do_gcc_arm $(MAKE) __do_gcc_arm
$(MAKE) __reset_gcc $(MAKE) __reset_gcc
$(MAKE) __do_gcc_aarch64 $(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

9
tools/grub.patch Normal file
View File

@ -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