diff --git a/Fennix.code-workspace b/Fennix.code-workspace index fb9ed31a..78524d8b 100644 --- a/Fennix.code-workspace +++ b/Fennix.code-workspace @@ -11,7 +11,8 @@ "git.openRepositoryInParentFolders": "always", "C_Cpp.autoAddFileAssociations": false, "conventionalCommits.scopes": [ - "initrd" + "initrd", + "tools" ] } } diff --git a/tools/Makefile b/tools/Makefile index ea309c34..25ec7709 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -5,18 +5,21 @@ 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 + +QEMU_CLONE_PATH = /tmp/qemu +GCC_CLONE_PATH = /tmp/gcc +BINUTILS_CLONE_PATH = /tmp/binutils-gdb default: $(error Please specify a target) -all: do_tools do_limine __clone_all do_binutils do_gcc do_qemu +all: do_tools do_limine __clone_qemu __clone_all_no_qemu do_binutils do_gcc do_qemu clean: rm -f rep ep - rm -rf binutils-gdb - rm -rf gcc - rm -rf qemu + rm -rf $(BINUTILS_CLONE_PATH) + rm -rf $(GCC_CLONE_PATH) + rm -rf $(QEMU_CLONE_PATH) do_tools: gcc -w ReadEthernetPackets.c -o rep @@ -32,11 +35,11 @@ else endif __clone_qemu: -ifeq ("$(wildcard ./qemu)", "") - git clone --depth 1 -b ${QEMU_TAG} --single-branch https://gitlab.com/qemu-project/qemu.git qemu +ifeq ("$(wildcard $(QEMU_CLONE_PATH))", "") + git clone --depth 1 -b ${QEMU_TAG} --single-branch https://gitlab.com/qemu-project/qemu.git $(QEMU_CLONE_PATH) else $(info > TOOLS: Reseting qemu...) - cd qemu && \ + cd $(QEMU_CLONE_PATH) && \ git fetch origin && \ git reset --hard ${QEMU_TAG} && \ git clean -dfx @@ -46,11 +49,11 @@ endif .PHONY: all clean __clone_binutils __clone_gcc __prep_cross __patch_cross __patch_cross_binutils __patch_cross_gcc __clone_binutils: -ifeq ("$(wildcard ./binutils-gdb)", "") - git clone --depth 1 -b $(BINUTILS_TAG) --single-branch git://sourceware.org/git/binutils-gdb.git binutils-gdb +ifeq ("$(wildcard $(BINUTILS_CLONE_PATH))", "") + git clone --depth 1 -b $(BINUTILS_TAG) --single-branch git://sourceware.org/git/binutils-gdb.git $(BINUTILS_CLONE_PATH) else $(info > TOOLS: Reseting binutils-gdb...) - cd binutils-gdb && \ + cd $(BINUTILS_CLONE_PATH) && \ git fetch origin && \ git reset --hard $(BINUTILS_TAG) && \ git clean -dfx @@ -58,60 +61,43 @@ else endif __clone_gcc: -ifeq ("$(wildcard ./gcc)", "") - git clone --depth 1 -b $(GCC_TAG) --single-branch git://gcc.gnu.org/git/gcc.git gcc +ifeq ("$(wildcard $(GCC_CLONE_PATH))", "") + git clone --depth 1 -b $(GCC_TAG) --single-branch git://gcc.gnu.org/git/gcc.git $(GCC_CLONE_PATH) else $(info > TOOLS: Reseting gcc...) - cd gcc && \ + cd $(GCC_CLONE_PATH) && \ git fetch origin && \ git reset --hard $(GCC_TAG) && \ git clean -dfx $(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 + cd $(BINUTILS_CLONE_PATH) && git apply $(CURDIR)/binutils-gdb.patch $(info > TOOLS: Running automake for binutils-gdb/ld) - cd binutils-gdb/ld && automake + cd $(BINUTILS_CLONE_PATH)/ld && automake __patch_cross_gcc: __clone_gcc $(info > TOOLS: Patching gcc) - cd gcc && git apply ../gcc.patch - cd gcc && ./contrib/download_prerequisites + cd $(GCC_CLONE_PATH) && git apply $(CURDIR)/gcc.patch + cd $(GCC_CLONE_PATH) && ./contrib/download_prerequisites $(info > TOOLS: Running autoconf for gcc/libstdc++-v3) - cd gcc/libstdc++-v3 && autoconf + cd $(GCC_CLONE_PATH)/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 + cd $(QEMU_CLONE_PATH) && git apply $(CURDIR)/qemu.patch -__patch_cross: __patch_cross_binutils __patch_cross_gcc __patch_cross_grub +__patch_cross: __patch_cross_binutils __patch_cross_gcc __prep_cross: mkdir -p cross - mkdir -p binutils-gdb/__build - mkdir -p gcc/__build + mkdir -p $(BINUTILS_CLONE_PATH)/__build + mkdir -p $(GCC_CLONE_PATH)/__build -__clone_all_no_qemu: __clone_grub __clone_binutils __clone_gcc - -__clone_all: __clone_qemu __clone_all_no_qemu +__clone_all_no_qemu: __clone_binutils __clone_gcc cross_dev: $(MAKE) __clone_binutils @@ -131,190 +117,84 @@ 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 && \ + cd $(BINUTILS_CLONE_PATH) && \ git add . && \ - git diff --cached > ../binutils-gdb.patch + git diff --cached > $(CURDIR)/binutils-gdb.patch # gcc - cd gcc && \ + cd $(GCC_CLONE_PATH) && \ git add . && \ - git diff --cached > ../gcc.patch + git diff --cached > $(CURDIR)/gcc.patch # qemu - cd qemu && \ + cd $(QEMU_CLONE_PATH) && \ git add . && \ - git diff --cached > ../qemu.patch -# grub - cd grub && \ - git add . && \ - git diff --cached > ../grub.patch + git diff --cached > $(CURDIR)/qemu.patch + +__do_binutils: + mkdir -p $(BINUTILS_CLONE_PATH)/__build + $(MAKE) __patch_cross_binutils + $(MAKE) __prep_cross + cd $(BINUTILS_CLONE_PATH)/__build && \ + ../configure --target=$(BUILD_TARGET) --prefix="$(CROSS_DIR)" --quiet \ + --disable-nls \ + --with-sysroot \ + --disable-werror \ + --disable-shared \ + --enable-static \ + --enable-static-link \ + --disable-shared-plugins \ + --disable-dynamicplugin \ + --disable-tls \ + --disable-pie \ + && \ + make --quiet all -j$(shell nproc) && \ + make --quiet install + +__do_gcc: + mkdir -p $(GCC_CLONE_PATH)/__build + $(MAKE) __patch_cross_gcc + $(MAKE) __prep_cross + cd $(GCC_CLONE_PATH)/__build && \ + ../configure --target=$(BUILD_TARGET) --prefix="$(CROSS_DIR)" --quiet \ + --disable-nls \ + --enable-default-pie \ + --enable-languages=c,c++ \ + --without-headers \ + --disable-shared \ + --enable-static \ + --enable-static-link \ + --disable-tls \ + --disable-pie \ + && \ + make --quiet all-gcc -j$(shell nproc) && \ + make --quiet all-target-libgcc -j$(shell nproc) && \ + make --quiet install-gcc -j$(shell nproc) && \ + make --quiet install-target-libgcc -j$(shell nproc) + +do_binutils: + $(MAKE) __do_binutils BUILD_TARGET="x86_64-fennix" + $(MAKE) __do_binutils BUILD_TARGET="i386-fennix" + $(MAKE) __do_binutils BUILD_TARGET="arm-fennix" + $(MAKE) __do_binutils BUILD_TARGET="aarch64-fennix" + +do_gcc: + $(MAKE) __do_gcc BUILD_TARGET="x86_64-fennix" + $(MAKE) __do_gcc BUILD_TARGET="i386-fennix" + $(MAKE) __do_gcc BUILD_TARGET="arm-fennix" + $(MAKE) __do_gcc BUILD_TARGET="aarch64-fennix" do_qemu: $(MAKE) __patch_cross_qemu $(MAKE) __prep_cross - cd qemu && \ + cd $(QEMU_CLONE_PATH) && \ bash ./configure --target-list=x86_64-softmmu,i386-softmmu,arm-softmmu,aarch64-softmmu \ --prefix="$(CROSS_DIR)" \ - --enable-gtk --disable-tools \ - --disable-gio --disable-virtfs --disable-vnc \ - --disable-opengl && \ - 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 \ - --with-sysroot --enable-shared --disable-werror && \ - make --quiet all -j$(shell nproc) && \ + --enable-gtk \ + --disable-tools \ + --disable-gio \ + --disable-virtfs \ + --disable-vnc \ + --disable-opengl \ + && \ + make --quiet -j$(shell nproc) && \ 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 \ - --with-sysroot --enable-shared --disable-werror && \ - make --quiet all -j$(shell nproc) && \ - 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 \ - --with-sysroot --enable-shared --disable-werror && \ - make --quiet all -j$(shell nproc) && \ - 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 \ - --with-sysroot --enable-shared --disable-werror && \ - make --quiet all -j$(shell nproc) && \ - make --quiet install - -__reset_binutils: - $(MAKE) __patch_cross_binutils - $(MAKE) __prep_cross - -do_binutils: - $(MAKE) __reset_binutils - $(MAKE) __do_binutils_x86_64 - $(MAKE) __reset_binutils - $(MAKE) __do_binutils_i386 - $(MAKE) __reset_binutils - $(MAKE) __do_binutils_arm - $(MAKE) __reset_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 \ - --enable-languages=c,c++ --enable-shared --without-headers && \ - make --quiet all-gcc -j$(shell nproc) && \ - make --quiet all-target-libgcc -j$(shell nproc) && \ - make --quiet install-gcc -j$(shell nproc) && \ - 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 \ - --enable-languages=c,c++ --enable-shared --without-headers && \ - make --quiet all-gcc -j$(shell nproc) && \ - make --quiet all-target-libgcc -j$(shell nproc) && \ - make --quiet install-gcc -j$(shell nproc) && \ - 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 \ - --enable-languages=c,c++ --enable-shared --without-headers && \ - make --quiet all-gcc -j$(shell nproc) && \ - make --quiet all-target-libgcc -j$(shell nproc) && \ - make --quiet install-gcc -j$(shell nproc) && \ - make --quiet install-target-libgcc -j$(shell nproc) - -__do_gcc_aarch64: - cd gcc/__build && \ - ../configure --target=aarch64-fennix --quiet \ - --prefix="$(CROSS_DIR)" --disable-nls --enable-default-pie \ - --enable-languages=c,c++ --enable-shared --without-headers && \ - make --quiet all-gcc -j$(shell nproc) && \ - make --quiet all-target-libgcc -j$(shell nproc) && \ - make --quiet install-gcc -j$(shell nproc) && \ - make --quiet install-target-libgcc -j$(shell nproc) - -__reset_gcc: - $(MAKE) __patch_cross_gcc - $(MAKE) __prep_cross - -do_gcc: - $(MAKE) __reset_gcc - $(MAKE) __do_gcc_x86_64 - $(MAKE) __reset_gcc - $(MAKE) __do_gcc_i386 - $(MAKE) __reset_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 deleted file mode 100644 index 94515aa7..00000000 --- a/tools/grub.patch +++ /dev/null @@ -1,9 +0,0 @@ -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