summaryrefslogtreecommitdiffstats
path: root/scripts/buildtools.mk
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2024-03-11 21:40:28 -0400
committerJon Santmyer <jon@jonsantmyer.com>2024-03-11 21:40:28 -0400
commit50392995d6e7f3a10fb74bb2f9073a4790f8933c (patch)
treec89b067b3bacf35e092af5c31fb6e6a08921f31c /scripts/buildtools.mk
downloadjove-env-50392995d6e7f3a10fb74bb2f9073a4790f8933c.tar.gz
jove-env-50392995d6e7f3a10fb74bb2f9073a4790f8933c.tar.bz2
jove-env-50392995d6e7f3a10fb74bb2f9073a4790f8933c.zip
simple env with basic test init programHEADmaster
Diffstat (limited to 'scripts/buildtools.mk')
-rw-r--r--scripts/buildtools.mk63
1 files changed, 63 insertions, 0 deletions
diff --git a/scripts/buildtools.mk b/scripts/buildtools.mk
new file mode 100644
index 0000000..6160d01
--- /dev/null
+++ b/scripts/buildtools.mk
@@ -0,0 +1,63 @@
+BINUTILS_VERSION := 2.41
+GCC_VERSION := 13.2.0
+TOOLCHAIN := x86_64-jove
+
+TOOLDIR := $(PWD)/tools
+SCRIPTDIR := $(PWD)/scripts
+TOOL_SRCDIR := $(TOOLDIR)/src
+TOOL_BUILDDIR := $(TOOLDIR)/build
+SYSROOT_DIR := $(PWD)/sysroot
+
+BINUTILS_ARCHIVE := binutils-$(BINUTILS_VERSION).tar.gz
+BINUTILS_URL := https://ftp.gnu.org/gnu/binutils/$(BINUTILS_ARCHIVE)
+BINUTILS_PATCHFILE := $(SCRIPTDIR)/binutils-$(BINUTILS_VERSION).diff
+BINUTILS_SRCDIR := $(TOOL_SRCDIR)/binutils-$(BINUTILS_VERSION)
+BINUTILS_BUILDDIR := $(TOOL_BUILDDIR)/binutils
+
+GCC_ARCHIVE := gcc-$(GCC_VERSION).tar.gz
+GCC_URL := https://ftp.gnu.org/gnu/gcc/gcc-$(GCC_VERSION)/$(GCC_ARCHIVE)
+GCC_PATCHFILE := $(SCRIPTDIR)/gcc-$(GCC_VERSION).diff
+GCC_SRCDIR := $(TOOL_SRCDIR)/gcc-$(GCC_VERSION)
+GCC_BUILDDIR := $(TOOL_BUILDDIR)/gcc
+
+all: $(TOOLDIR) $(BINUTILS_BUILDDIR) $(GCC_BUILDDIR)
+
+.ONESHELL:
+$(BINUTILS_BUILDDIR): $(BINUTILS_SRCDIR)
+ mkdir -p $(BINUTILS_BUILDDIR)
+ cd $(BINUTILS_BUILDDIR)
+ $(BINUTILS_SRCDIR)/configure --target=$(TOOLCHAIN) --prefix="$(TOOLDIR)" --with-sysroot=$(SYSROOT_DIR) --disable-nls --disable-werror
+ make -j4
+ make install
+
+.PHONY: $(GCC_BUILDDIR)
+.ONESHELL:
+$(GCC_BUILDDIR): $(GCC_SRCDIR)
+ mkdir -p $(GCC_BUILDDIR)
+ cd $(GCC_BUILDDIR)
+ $(GCC_SRCDIR)/configure --target=$(TOOLCHAIN) --prefix="$(TOOLDIR)" --disable-nls --enable-languages=c --with-sysroot=$(SYSROOT_DIR)
+ make all-gcc -j4
+ make all-target-libgcc -j4
+ make install-gcc
+ make install-target-libgcc
+
+$(BINUTILS_SRCDIR): $(TOOLDIR)/$(BINUTILS_ARCHIVE)
+ tar -xzvf $(TOOLDIR)/$(BINUTILS_ARCHIVE) -C $(TOOL_SRCDIR)
+ patch --directory=$(BINUTILS_SRCDIR) --strip=1 < $(BINUTILS_PATCHFILE)
+ cd $(BINUTILS_SRCDIR)/ld && automake
+
+$(GCC_SRCDIR): $(TOOLDIR)/$(GCC_ARCHIVE)
+ tar -xzvf $(TOOLDIR)/$(GCC_ARCHIVE) -C $(TOOL_SRCDIR)
+ patch --directory=$(GCC_SRCDIR) --strip=1 < $(GCC_PATCHFILE)
+ cd $(GCC_SRCDIR) && ./contrib/download_prerequisites
+
+$(TOOLDIR)/$(BINUTILS_ARCHIVE):
+ wget $(BINUTILS_URL) -O $(TOOLDIR)/$(BINUTILS_ARCHIVE)
+
+$(TOOLDIR)/$(GCC_ARCHIVE):
+ wget $(GCC_URL) -O $(TOOLDIR)/$(GCC_ARCHIVE)
+
+$(TOOLDIR):
+ mkdir -p $(TOOLDIR)
+ mkdir -p $(TOOL_SRCDIR)
+ mkdir -p $(TOOL_BUILDDIR)