From 719919dd0dfc8a22186b3394bb6a8f951431f909 Mon Sep 17 00:00:00 2001 From: Joursoir Date: Mon, 26 Sep 2022 02:10:04 +0300 Subject: add cross-toolchain Add git submodules and use next versions: GNU binutils 2.39 GCC 12.2.0 --- .gitmodules | 6 ++++++ tools/toolchain/Makefile | 37 +++++++++++++++++++++++++++++++++++++ tools/toolchain/src/binutils | 1 + tools/toolchain/src/gcc | 1 + 4 files changed, 45 insertions(+) create mode 100644 .gitmodules create mode 100644 tools/toolchain/Makefile create mode 160000 tools/toolchain/src/binutils create mode 160000 tools/toolchain/src/gcc diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..ec7d90e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "tools/toolchain/src/binutils"] + path = tools/toolchain/src/binutils + url = git://sourceware.org/git/binutils-gdb.git +[submodule "tools/toolchain/src/binutils"] + path = tools/toolchain/src/gcc + url = git://gcc.gnu.org/git/gcc.git diff --git a/tools/toolchain/Makefile b/tools/toolchain/Makefile new file mode 100644 index 0000000..2e5ab33 --- /dev/null +++ b/tools/toolchain/Makefile @@ -0,0 +1,37 @@ +TARGET = i686-elf +TOOLS_PREFIX = $(PWD) +# The $TOOLS_PREFIX/bin dir MUST be in the PATH. GCC will use it. +PATH := "$(TOOLS_PREFIX)/bin:$(PATH)" +export PATH + +BINUTILS_OUT = src/binutils/out +GCC_OUT = src/gcc/out + +all: binutils gcc + bin/$(TARGET)-as --version + bin/$(TARGET)-gcc -### + +binutils: + mkdir $(BINUTILS_OUT) + (cd $(BINUTILS_OUT); ../configure --target=$(TARGET) --prefix="$(TOOLS_PREFIX)" \ + --with-sysroot \ + --disable-nls \ + --disable-gdb \ + --disable-werror) + $(MAKE) -C $(BINUTILS_OUT) + $(MAKE) -C $(BINUTILS_OUT) install + +gcc: + mkdir $(GCC_OUT) + (cd $(GCC_OUT); ../configure --target=$(TARGET) --prefix="$(TOOLS_PREFIX)" \ + --disable-nls \ + --enable-languages=c \ + --without-headers) + $(MAKE) -C $(GCC_OUT) all-gcc + $(MAKE) -C $(GCC_OUT) all-target-libgcc + $(MAKE) -C $(GCC_OUT) install-gcc + $(MAKE) -C $(GCC_OUT) install-target-libgcc + +clean: + -rm -r $(BINUTILS_OUT) $(GCC_OUT) + -rm -r bin $(TARGET) include lib libexec share diff --git a/tools/toolchain/src/binutils b/tools/toolchain/src/binutils new file mode 160000 index 0000000..b51c2fe --- /dev/null +++ b/tools/toolchain/src/binutils @@ -0,0 +1 @@ +Subproject commit b51c2fec1da205ea3e7354cbb3e253018d64873c diff --git a/tools/toolchain/src/gcc b/tools/toolchain/src/gcc new file mode 160000 index 0000000..2ee5e43 --- /dev/null +++ b/tools/toolchain/src/gcc @@ -0,0 +1 @@ +Subproject commit 2ee5e4300186a92ad73f1a1a64cb918dc76c8d67 -- cgit v1.2.3-18-g5258