fix bulktoolchain build
[openadk.git] / toolchain / Makefile
blob1e36c6b5f33c295d04cbf947782312e60ebfb149
1 # This file is part of the OpenADK project. OpenADK is copyrighted
2 # material, please see the LICENCE file in the top-level directory.
4 # Steps to build toolchains
5 # 1) build and install binutils
6 # 2) build and install mpfr, mpc and gmp
7 # 3) build and install gcc c compiler
8 # 4) install kernel-headers
9 # 5) install libc headers
10 # 6) build and install full gcc
11 # 7) build and install full libc
12 # 8) build and install gdb debugger
14 include $(TOPDIR)/rules.mk
16 TARGETS:=binutils gmp mpfr mpc gcc
17 ifeq ($(ADK_TARGET_LIB_GLIBC),y)
18 TARGETS+=glibc-ports glibc
19 LIBC:=glibc
20 endif
21 ifeq ($(ADK_TARGET_LIB_EGLIBC),y)
22 TARGETS+=eglibc
23 LIBC:=eglibc
24 endif
25 ifeq ($(ADK_TARGET_LIB_UCLIBC),y)
26 TARGETS+=uClibc
27 LIBC:=uClibc
28 endif
29 TARGETS+=gdb
31 DOWNLOAD:=kernel-headers-download $(patsubst %,%-download,$(TARGETS))
32 TARGETS_INSTALL:=$(patsubst %,%-install,$(TARGETS))
33 TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
35 install: $(TARGETS_INSTALL)
36 clean: $(TARGETS_CLEAN)
37 download: $(DOWNLOAD)
39 gcc-prepare: binutils-install gmp-install mpfr-install mpc-install
40 ifeq ($(ADK_TARGET_LIB_GLIBC),y)
41 $(LIBC)-prepare: gcc-prepare kernel-headers-prepare glibc-ports-prepare
42 else
43 $(LIBC)-prepare: gcc-prepare kernel-headers-prepare
44 endif
45 gcc-configure: $(LIBC)-prepare
46 $(LIBC)-compile: gcc-configure
47 gcc-compile: $(LIBC)-install
49 $(STAGING_HOST_DIR):
50 @mkdir -p $(STAGING_HOST_DIR)/lib
51 @mkdir -p $(STAGING_HOST_DIR)/include
52 @mkdir -p $(STAGING_HOST_DIR)/$(REAL_GNU_TARGET_NAME)
53 @ln -sf ../lib $(STAGING_HOST_DIR)/$(REAL_GNU_TARGET_NAME)/lib
55 $(TOOLCHAIN_BUILD_DIR):
56 @mkdir -p $(TOOLCHAIN_BUILD_DIR)
58 %-download:
59 $(TRACE) toolchain/$(patsubst %-download,%,$@)/download
60 $(MAKE) -C $(patsubst %-download,%,$@) fetch
62 %-prepare: $(STAGING_HOST_DIR) $(TOOLCHAIN_BUILD_DIR)
63 $(TRACE) toolchain/$(patsubst %-prepare,%,$@)/prepare
64 @if test x"$(patsubst %-prepare,%,$@)" = x"$(LIBC)"; then \
65 $(MAKE) -C $(patsubst %-prepare,%,$@) prepare \
66 $(MAKE_TRACE); \
67 else \
68 $(MAKE) -C $(patsubst %-prepare,%,$@) prepare \
69 CC='$(HOSTCC)' CFLAGS='$(HOSTCFLAGS)' \
70 $(MAKE_TRACE); \
73 %-configure: %-prepare
74 $(TRACE) toolchain/$(patsubst %-configure,%,$@)/configure
75 @if test x"$(patsubst %-configure,%,$@)" = x"$(LIBC)"; then \
76 $(MAKE) -C $(patsubst %-configure,%,$@) configure \
77 $(MAKE_TRACE); \
78 else \
79 $(MAKE) -C $(patsubst %-configure,%,$@) configure \
80 CC='$(HOSTCC)' CFLAGS='$(HOSTCFLAGS)' \
81 $(MAKE_TRACE); \
84 %-compile: %-configure
85 $(TRACE) toolchain/$(patsubst %-compile,%,$@)/compile
86 @if test x"$(patsubst %-compile,%,$@)" = x"$(LIBC)"; then \
87 $(MAKE) -C $(patsubst %-compile,%,$@) compile \
88 $(MAKE_TRACE); \
89 else \
90 $(MAKE) -C $(patsubst %-compile,%,$@) compile \
91 CC='$(HOSTCC)' CFLAGS='$(HOSTCFLAGS)' \
92 $(MAKE_TRACE); \
95 %-install: %-compile
96 $(TRACE) toolchain/$(patsubst %-install,%,$@)/install
97 @if test x"$(patsubst %-install,%,$@)" = x"$(LIBC)"; then \
98 $(MAKE) -C $(patsubst %-install,%,$@) install \
99 $(MAKE_TRACE); \
100 else \
101 $(MAKE) -C $(patsubst %-install,%,$@) install \
102 CC='$(HOSTCC)' CFLAGS='$(HOSTCFLAGS)' \
103 $(MAKE_TRACE); \
106 %-clean:
107 $(TRACE) toolchain/$(patsubst %-clean,%,$@)/clean
108 @$(MAKE) -C $(patsubst %-clean,%,$@) clean $(MAKE_TRACE)