Externals/cross-compiler - Tweaking, fixed stdint.h problem
[tpg/acess2.git] / Externals / cross-compiler / Makefile
1
2 -include ../../Makefile.cfg
3
4 GCC_ARCHIVE:=$(lastword $(sort $(wildcard gcc-*.tar.bz2)))
5 GCC_DIR:=$(GCC_ARCHIVE:%.tar.bz2=%)
6 BINUTILS_ARCHIVE:=$(lastword $(sort $(wildcard binutils-*.tar.bz2)))
7 BINUTILS_DIR:=$(BINUTILS_ARCHIVE:%.tar.bz2=%)
8
9 BINUTILS_CHANGES := config.sub bfd/config.bfd gas/configure.tgt ld/configure.tgt ld/emulparams/acess2_i386.sh ld/Makefile.in
10 GCC_CHANGES := config.sub gcc/config.gcc gcc/config/acess2.h libgcc/config.host 
11
12 ifeq ($(ARCH),x86)
13  BFDARCH:=i586
14 else ifeq ($(ARCH),x86_64)
15  BFDARCH:=x86_64
16 else
17  $(error Arch $(ARCH) is not supported by magic gcc makfile)
18 endif
19
20 PARLEVEL ?= 1
21
22 TARGET=$(BFDARCH)-pc-acess2
23 PREFIX=$(shell pwd)/cross
24
25 .PHONY: all clean binutils gcc include
26
27 all: include binutils gcc
28
29 include:
30         mkdir -p $(PREFIX)
31         rm -r $(PREFIX)/include
32         ln -s $(ACESSDIR)/Usermode/include $(PREFIX)/include
33         cd $(PREFIX) && (test \! -e usr && ln -s . usr); true
34
35 gcc: $(GCC_DIR) $(PREFIX)/bin/$(TARGET)-gcc
36
37 binutils: $(BINUTILS_DIR) $(PREFIX)/bin/$(TARGET)-ld
38
39 clean:
40         $(RM) -rf $(BINUTILS_DIR) $(GCC_DIR) build-$(ARCH)
41
42 $(BINUTILS_DIR) $(GCC_DIR): %: %.tar.bz2
43         tar -xf $<
44 $(warning $(BINUTILS_DIR) $(GCC_DIR))
45
46 $(GCC_DIR)/%: patches/gcc/%.patch
47         @echo [PATCH] $@
48         @tar -xf $(GCC_ARCHIVE) $@
49         @patch $@ $<
50 $(GCC_DIR)/%: patches/gcc/%
51         @echo [CP] $@
52         @cp $< $@
53
54 $(BINUTILS_DIR)/%: patches/binutils/%.patch
55         @echo [PATCH] $@
56         @tar -xf $(BINUTILS_ARCHIVE) $@
57         @patch $@ $<
58 $(BINUTILS_DIR)/%: patches/binutils/%
59         @echo [CP] $@
60         @cp $< $@
61
62 BDIR_GCC := build-$(ARCH)/gcc
63 BDIR_BINUTILS := build-$(ARCH)/binutils
64
65 $(BDIR_BINUTILS)/Makefile: $(addprefix $(BINUTILS_DIR)/,$(BINUTILS_CHANGES))
66         @mkdir -p $(BDIR_BINUTILS)
67         @cd $(BDIR_BINUTILS) && ../../$(BINUTILS_DIR)/configure --target=$(TARGET) --prefix=$(PREFIX) --disable-nls
68
69 $(PREFIX)/bin/$(TARGET)-ld: $(BDIR_BINUTILS)/Makefile
70         @cd $(BDIR_BINUTILS) && make all install -j $(PARLEVEL)
71
72 $(BDIR_GCC)/Makefile: Makefile $(addprefix $(GCC_DIR)/,$(GCC_CHANGES))
73         @mkdir -p $(BDIR_GCC)
74         @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=$(PREFIX)"
75
76 $(PREFIX)/bin/$(TARGET)-gcc: $(BDIR_GCC)/Makefile
77         @PATH=$(PREFIX)/bin:$$PATH make -C $(BDIR_GCC) all-gcc all-target-libgcc -j $(PARLEVEL)
78         @make -C $(BDIR_GCC) install-gcc install-target-libgcc -j $(PARLEVEL)
79
80

UCC git Repository :: git.ucc.asn.au