diff --git a/Makefile b/Makefile index e2e315c..8c071da 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,18 @@ prepare: cd limine; \ make; \ fi + if [ ! -d toolchain/binutils-gdb ]; then \ + cd toolchain; \ + git clone git://sourceware.org/git/binutils-gdb.git --depth=1; \ + $(PWD)/scripts/build-binutils-gdb.sh; \ + cd ..; \ + fi + if [ ! -d toolchain/gcc ]; then \ + cd toolchain; \ + git clone https://gcc.gnu.org/git/gcc.git --depth=1; \ + $(PWD)/scripts/build-gcc.sh; \ + cd ..; \ + fi cleanall: make clean diff --git a/mk/arch/toolchain-x86_64.mk b/mk/arch/toolchain-x86_64.mk index 91e60ca..4f4ab31 100644 --- a/mk/arch/toolchain-x86_64.mk +++ b/mk/arch/toolchain-x86_64.mk @@ -1,3 +1,5 @@ -CC := x86_64-elf-gcc -LD := x86_64-elf-ld -AR := x86_64-elf-ar +PREFIX := $(ROOT)/toolchain/root/bin + +CC := $(PREFIX)/x86_64-elf-gcc +LD := $(PREFIX)/x86_64-elf-ld +AR := $(PREFIX)/x86_64-elf-ar diff --git a/mk/user/x86_64.mk b/mk/user/x86_64.mk index 79d58fb..9f65ffb 100644 --- a/mk/user/x86_64.mk +++ b/mk/user/x86_64.mk @@ -9,4 +9,5 @@ CFLAGS += -m64 \ -fno-stack-protector \ -fno-stack-check \ -fno-builtin \ + -fno-omit-frame-pointer \ -O0 \ diff --git a/scripts/build-binutils-gdb.sh b/scripts/build-binutils-gdb.sh new file mode 100755 index 0000000..c1fc3b0 --- /dev/null +++ b/scripts/build-binutils-gdb.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +PREFIX=$(pwd)/root + +mkdir build-bintuils-gdb +cd build-bintuils-gdb +../binutils-gdb/configure --prefix="$PREFIX" \ + --disable-nls \ + --disable-werror \ + --target=x86_64-elf +make -j$(nproc) +make install diff --git a/scripts/build-gcc.sh b/scripts/build-gcc.sh new file mode 100755 index 0000000..1e28a7c --- /dev/null +++ b/scripts/build-gcc.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +PREFIX=$(pwd)/root + +cd gcc +./contrib/download_prerequisites +cd .. +mkdir build-gcc +cd build-gcc +../gcc/configure --prefix="$PREFIX" \ + --disable-nls \ + --enable-languages=c \ + --target=x86_64-elf \ + --disable-bootstrap \ + --without-headers \ + --disable-shared \ + --disable-threads \ + --disable-libssp \ + --disable-libquadmath \ + --disable-libgomp \ + --disable-libatomic \ + --disable-libmudflap \ + --disable-multilib +make -j$(nproc) +make install