-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
84 lines (62 loc) · 2.57 KB
/
Makefile
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Makefile for cross tools
ifndef TOPDIR
$(error TOPDIR is not defined)
endif
.PHONY: all prune
all::
# TOPDIR and CROSSDIR from environment
SRCDIR=$(TOPDIR)
DISTDIR=$(CROSSDIR)/dist
BUILDDIR=$(CROSSDIR)/build
# BINUTILS for IA16
BINUTILS_VER=20230531
BINUTILS_DIST=binutils-ia16-$(BINUTILS_VER)
$(DISTDIR)/$(BINUTILS_DIST).zip:
mkdir -p $(DISTDIR)
cd $(DISTDIR) && wget https://github.com/tkchia/binutils-ia16/archive/refs/tags/$(BINUTILS_VER).zip -O $(BINUTILS_DIST).zip
$(BUILDDIR)/.binutils.src: $(DISTDIR)/$(BINUTILS_DIST).zip
mkdir -p $(BUILDDIR)
rm -rf $(BUILDDIR)/$(BINUTILS_DIST)
cd $(BUILDDIR) && unzip -q $(DISTDIR)/$(BINUTILS_DIST).zip
rm -rf $(BUILDDIR)/binutils-src
cd $(BUILDDIR) && mv $(BINUTILS_DIST) binutils-src
touch $(BUILDDIR)/.binutils.src
$(BUILDDIR)/.binutils.build: $(BUILDDIR)/.binutils.src
cd $(BUILDDIR) && rm -rf binutils-build
mkdir -p $(BUILDDIR)/binutils-build
cd $(BUILDDIR)/binutils-build && ../binutils-src/configure --target=ia16-elf --prefix="$(CROSSDIR)" --enable-x86-hpa-segelf --disable-gdb --disable-libdecnumber --disable-readline --disable-sim --disable-nls
$(MAKE) -C $(BUILDDIR)/binutils-build
touch $(BUILDDIR)/.binutils.build
$(CROSSDIR)/.binutils.install: $(BUILDDIR)/.binutils.build
$(MAKE) -C $(BUILDDIR)/binutils-build install
touch $(CROSSDIR)/.binutils.install
all:: $(CROSSDIR)/.binutils.install
# GCC for IA16
GCC_VER=20240218
GCC_DIST=gcc-ia16-$(GCC_VER)
$(DISTDIR)/$(GCC_DIST).zip:
mkdir -p $(DISTDIR)
cd $(DISTDIR) && wget https://github.com/tkchia/gcc-ia16/archive/refs/tags/$(GCC_VER).zip -O $(GCC_DIST).zip
$(BUILDDIR)/.gcc.src: $(DISTDIR)/$(GCC_DIST).zip
mkdir -p $(BUILDDIR)
rm -rf $(BUILDDIR)/$(GCC_DIST)
cd $(BUILDDIR) && unzip -q $(DISTDIR)/$(GCC_DIST).zip
rm -rf $(BUILDDIR)/gcc-src
cd $(BUILDDIR) && mv $(GCC_DIST) gcc-src
cd $(BUILDDIR)/gcc-src/contrib && patch download_prerequisites $(TOPDIR)/gcc-download_prerequisites.patch
cd $(BUILDDIR)/gcc-src && contrib/download_prerequisites
touch $(BUILDDIR)/.gcc.src
$(BUILDDIR)/.gcc.build: $(BUILDDIR)/.gcc.src $(BUILDDIR)/.binutils.build
cd $(BUILDDIR) && rm -rf gcc-build
mkdir $(BUILDDIR)/gcc-build
cd $(BUILDDIR)/gcc-build && ../gcc-src/configure --target=ia16-elf --prefix="$(CROSSDIR)" --without-headers --enable-languages=c --disable-libssp --without-isl
$(MAKE) -C $(BUILDDIR)/gcc-build
touch $(BUILDDIR)/.gcc.build
$(CROSSDIR)/.gcc.install: $(BUILDDIR)/.gcc.build
$(MAKE) -C $(BUILDDIR)/gcc-build install
touch $(CROSSDIR)/.gcc.install
all:: $(CROSSDIR)/.gcc.install
# Tools pruning (to save disk space)
prune:
-rm -rf $(DISTDIR)
-rm -rf $(BUILDDIR)