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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
# This file is part of the OpenADK project. OpenADK is copyrighted
# material, please see the LICENCE file in the top-level directory.
# Steps to build toolchains
# 1) build and install binutils
# 2) build and install mpfr, mpc, libelf and gmp
# 3) build and install initial gcc
# 4) install kernel-headers
# 5) build and install full libc
# 6) build and install full gcc
# 7) build and install gdb debugger
include $(ADK_TOPDIR)/rules.mk
TARGETS:=binutils gmp mpfr mpc libelf gcc
ifeq ($(ADK_TARGET_LIB_GLIBC),y)
TARGETS+=glibc
CLIB:=glibc
endif
ifeq ($(ADK_TARGET_LIB_UCLIBC_NG),y)
TARGETS+=uclibc-ng
CLIB:=uclibc-ng
endif
ifeq ($(ADK_TARGET_LIB_MUSL),y)
TARGETS+=musl
CLIB:=musl
endif
ifeq ($(ADK_TARGET_LIB_NEWLIB),y)
TARGETS+=newlib
CLIB:=newlib
endif
ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
TARGETS+=elf2flt
ELF2FLT:=elf2flt-install
endif
# disable gdb for some architectures
ifeq ($(ADK_TARGET_ARCH_ARC)$(ADK_TARGET_ARCH_METAG)$(ADK_TARGET_ARCH_OR1K),)
TARGETS+=gdb
GDB:=gdb-install
endif
ifeq (${ADK_PRELINK},y)
TARGETS+=prelink-cross
endif
DOWNLOAD:=kernel-headers-download $(patsubst %,%-download,$(TARGETS))
TARGETS_INSTALL:=$(patsubst %,%-install,$(TARGETS))
FINAL:=$(patsubst %,%-final,gcc)
TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
install: $(TARGETS_INSTALL)
clean: $(TARGETS_CLEAN)
download: $(DOWNLOAD)
final: $(FINAL)
gcc-configure: binutils-install gmp-install mpfr-install mpc-install libelf-install
ifeq ($(ADK_TARGET_LIB_NEWLIB),y)
$(CLIB)-install: gcc-configure
else
$(CLIB)-install: gcc-configure kernel-headers-configure
endif
gcc-install: $(ELF2FLT) $(CLIB)-install
gcc-final: gcc-install $(GDB)
%-download:
$(START_TRACE) "toolchain/$(patsubst %-download,%,$@)/download.. "
$(MAKE) -C $(patsubst %-download,%,$@) fetch
$(CMD_TRACE) " done"
$(END_TRACE)
%-prepare:
$(START_TRACE) "toolchain/$(patsubst %-prepare,%,$@)/prepare.. "
@if test x"$(patsubst %-prepare,%,$@)" = x"$(CLIB)"; then \
$(MAKE) -C $(patsubst %-prepare,%,$@) prepare \
$(MAKE_TRACE); \
else \
$(MAKE) -C $(patsubst %-prepare,%,$@) prepare \
CC='$(HOST_CC)' CFLAGS='$(HOST_CFLAGS)' $(MAKE_TRACE); \
fi
$(CMD_TRACE) " done"
$(END_TRACE)
%-configure: %-prepare
$(START_TRACE) "toolchain/$(patsubst %-configure,%,$@)/configure.. "
@if test x"$(patsubst %-configure,%,$@)" = x"$(CLIB)"; then \
$(MAKE) -C $(patsubst %-configure,%,$@) configure \
$(MAKE_TRACE); \
else \
$(MAKE) -C $(patsubst %-configure,%,$@) configure \
CC='$(HOST_CC)' CFLAGS='$(HOST_CFLAGS)' $(MAKE_TRACE); \
fi
$(CMD_TRACE) " done"
$(END_TRACE)
%-compile: %-configure
$(START_TRACE) "toolchain/$(patsubst %-compile,%,$@)/compile.. "
@if test x"$(patsubst %-compile,%,$@)" = x"$(CLIB)"; then \
$(MAKE) -C $(patsubst %-compile,%,$@) compile \
$(MAKE_TRACE); \
else \
$(MAKE) -C $(patsubst %-compile,%,$@) compile \
CC='$(HOST_CC)' CFLAGS='$(HOST_CFLAGS)' CXXFLAGS='$(HOST_STATIC_CXXFLAGS)' $(MAKE_TRACE); \
fi
$(CMD_TRACE) " done"
$(END_TRACE)
%-install: %-compile
$(START_TRACE) "toolchain/$(patsubst %-install,%,$@)/install.. "
@if test x"$(patsubst %-install,%,$@)" = x"$(CLIB)"; then \
$(MAKE) -C $(patsubst %-install,%,$@) install \
$(MAKE_TRACE); \
else \
$(MAKE) -C $(patsubst %-install,%,$@) install \
CC='$(HOST_CC)' CFLAGS='$(HOST_CFLAGS)' CXXFLAGS='$(HOST_STATIC_CXXFLAGS)' $(MAKE_TRACE); \
fi
$(CMD_TRACE) " done"
$(END_TRACE)
%-final: %-install
$(START_TRACE) "toolchain/$(patsubst %-final,%,$@)/final.. "
@$(MAKE) -C $(patsubst %-final,%,$@) final $(MAKE_TRACE)
$(CMD_TRACE) " done"
$(END_TRACE)
%-clean:
$(START_TRACE) "toolchain/$(patsubst %-clean,%,$@)/clean.. "
@$(MAKE) -C $(patsubst %-clean,%,$@) clean $(MAKE_TRACE)
$(CMD_TRACE) " done"
$(END_TRACE)
|