/
Makefile
90 lines (69 loc) · 3.02 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
85
86
87
88
#
#
#
-include ../config.mk
GCC_ARCHIVE:=$(lastword $(sort $(wildcard gcc-*.tar.bz2)))
GCC_DIR:=$(GCC_ARCHIVE:%.tar.bz2=%)
BINUTILS_ARCHIVE:=$(lastword $(sort $(wildcard binutils-*.tar.bz2)))
BINUTILS_DIR:=$(BINUTILS_ARCHIVE:%.tar.bz2=%)
ifeq ($(GCC_ARCHIVE),)
$(warning Unable to find a GCC archive matching gcc-*.tar.bz2)
$(error No archive found)
endif
ifeq ($(BINUTILS_ARCHIVE),)
$(warning Unable to find a binutils archive matching binutils-*.tar.bz2)
$(error No archive found)
endif
BINUTILS_CHANGES := config.sub bfd/config.bfd gas/configure.tgt ld/configure.tgt ld/emulparams/acess2_i386.sh ld/emulparams/acess2_amd64.sh ld/emulparams/acess2_arm.sh ld/Makefile.in
GCC_CHANGES := config.sub gcc/config.gcc gcc/config/acess2.h libgcc/config.host gcc/config/acess2.opt
# libstdc++-v3/crossconfig.m4 config/override.m4
TARGET=$(HOST)
GCC_TARGETS := gcc target-libgcc
# target-libstdc++-v3
PREFIX := $(OUTDIR)-BUILD
BDIR_GCC := build-$(ARCH)/gcc/
BDIR_BINUTILS := build-$(ARCH)/binutils/
.PHONY: all clean binutils gcc include
all: include binutils gcc
include:
mkdir -p $(PREFIX)
mkdir -p $(SYSROOT)/usr
ln -sf $(ACESSDIR)/Usermode/include $(SYSROOT)/usr/include
ln -sf $(ACESSDIR)/Usermode/Output/$(ARCH)/Libs $(SYSROOT)/usr/lib
gcc: $(GCC_DIR) $(PREFIX)/bin/$(TARGET)-gcc
binutils: $(BINUTILS_DIR) $(PREFIX)/bin/$(TARGET)-ld
clean:
$(RM) -rf $(BINUTILS_DIR) $(GCC_DIR) build-$(ARCH)
$(BINUTILS_DIR) $(GCC_DIR): %: %.tar.bz2
tar -xf $<
$(warning $(BINUTILS_DIR) $(GCC_DIR))
$(GCC_DIR)/%: patches/gcc/%.patch
@echo [PATCH] $@
@tar -xf $(GCC_ARCHIVE) $@
@patch $@ $<
$(GCC_DIR)/%: patches/gcc/%
@echo [CP] $@
@cp $< $@
$(BINUTILS_DIR)/%: patches/binutils/%.patch
@echo [PATCH] $@
@tar -xf $(BINUTILS_ARCHIVE) $@
@patch $@ $<
$(BINUTILS_DIR)/%: patches/binutils/%
@echo [CP] $@
@cp $< $@
$(GCC_DIR)/libstdc++-v3/configure: $(GCC_DIR)/libstdc++-v3/crossconfig.m4
cd $(GCC_DIR)/libstdc++-v3/ && autoconf
$(BDIR_BINUTILS)/Makefile: $(addprefix $(BINUTILS_DIR)/,$(BINUTILS_CHANGES))
@mkdir -p $(BDIR_BINUTILS)
@cd $(BDIR_BINUTILS) && ../../$(BINUTILS_DIR)/configure --target=$(TARGET) --prefix=$(PREFIX) --disable-nls "--with-sysroot=$(SYSROOT)" --enable-shared --without-docdir
$(PREFIX)/bin/$(TARGET)-ld: $(BDIR_BINUTILS)/Makefile
@make -C $(BDIR_BINUTILS) all -j $(PARLEVEL)
@make -C $(BDIR_BINUTILS) install
$(BDIR_GCC)/Makefile: Makefile $(addprefix $(GCC_DIR)/,$(GCC_CHANGES)) $(GCC_DIR)/libstdc++-v3/configure
@mkdir -p $(BDIR_GCC)
@cd $(BDIR_GCC) && PATH=$(PREFIX)/bin:$$PATH ../../$(GCC_DIR)/configure --target=$(TARGET) --prefix=$(PREFIX) --disable-nls --enable-langs=c,c++ --includedir=$(ACESSDIR)/Usermode/include "--with-sysroot=$(SYSROOT)" --without-docdir --enable-threads=posix
@echo "MAKEINFO = :" >> $(BDIR_GCC)/Makefile
$(PREFIX)/bin/$(TARGET)-gcc: $(BDIR_GCC)/Makefile
@PATH=$(PREFIX)/bin:$$PATH make -C $(BDIR_GCC) $(GCC_TARGETS:%=all-%) -j $(PARLEVEL)
@PATH=$(PREFIX)/bin:$$PATH make -C $(BDIR_GCC)libstdc++-v3/ all-target-libsupc++ -j $(PARLEVEL)
@PATH=$(PREFIX)/bin:$$PATH make -C $(BDIR_GCC) $(GCC_TARGETS:%=install-%)