summaryrefslogtreecommitdiffstats
path: root/scripts/buildtools.mk
blob: 6160d015fff4f2bc8429b93c82815a7f5f30d5a4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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)