2 # Copyright (C) 2007-2009 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
7 # Main makefile for the toolchain
10 # 1) toolchain/binutils/install
11 # build & install binutils
12 # 2) toolchain/gcc/minimal/install
13 # build & install a minimal gcc, needed for steps 3 & 4
14 # 3) toolchain/kernel-headers/install
15 # install kernel headers, needed for step 4
16 # 4) toolchain/libc/headers/install
17 # build & install libc headers & support files, needed for step 5
18 # 5) toolchain/gcc/initial/install
19 # build & install an initial gcc, needed for step 6
20 # 6) toolchain/libc/install
21 # build & install the final libc
22 # 7) toolchain/gcc/final/install
23 # build & install the final gcc
24 # 8) toolchain/libc/utils/install
25 # build & install libc utilities
30 # subdirectories to descend into
31 $(curdir
)/builddirs
:= $(if
$(CONFIG_GDB
),gdb
) $(if
$(CONFIG_INSIGHT
),insight
) $(if
$(CONFIG_EXTERNAL_TOOLCHAIN
),wrapper
,kernel-headers binutils gcc
/minimal gcc
/initial gcc
/final
$(LIBC
)/headers
$(LIBC
))
32 ifdef CONFIG_USE_UCLIBC
33 $(curdir
)/builddirs
+= $(LIBC
)/utils
35 $(curdir
)/builddirs-compile
:=$($(curdir
)/builddirs-prepare
)
36 $(curdir
)/builddirs-install
:=$($(curdir
)/builddirs-compile
)
38 # builddir dependencies
39 ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN
),)
40 $(curdir
)/gcc
/minimal
/compile
:=$(curdir
)/binutils
/install
41 $(curdir
)/kernel-headers
/install:=$(curdir
)/gcc
/minimal
/install
42 $(curdir
)/gcc
/initial
/prepare
:=$(curdir
)/gcc
/minimal
/prepare
43 $(curdir
)/gcc
/final
/prepare
:=$(curdir
)/gcc
/initial
/prepare
45 $(curdir
)/$(LIBC
)/headers
/compile
:=$(curdir
)/kernel-headers
/install
46 $(curdir
)/gcc
/initial
/compile
:=$(curdir
)/$(LIBC
)/headers
/install
47 $(curdir
)/$(LIBC
)/compile
:=$(curdir
)/gcc
/initial
/install
48 $(curdir
)/gcc
/final
/compile
:=$(curdir
)/$(LIBC
)/install
49 $(curdir
)/$(LIBC
)/utils
/compile
:=$(curdir
)/gcc
/final
/install
50 $(curdir
)/$(LIBC
)/prepare
:=$(curdir
)/$(LIBC
)/headers
/prepare
51 $(curdir
)/$(LIBC
)/utils
/prepare
:=$(curdir
)/$(LIBC
)/headers
/prepare
56 $(TOOLCHAIN_DIR
)/info.mk
: .config
57 @for
dir in
$(TOOLCHAIN_DIR
); do
( \
58 $(if
$(QUIET
),,set
-x
;) \
63 mkdir
-p stamp lib usr
/include usr
/lib
; \
65 @grep GCC_VERSION
$@
>/dev
/null
2>&1 ||
$(INSTALL_DATA
) $(TOPDIR
)/toolchain
/info.mk
$@
70 # prerequisites for the individual targets
71 $(curdir
)/ := .config prereq
72 $(curdir
)//prepare
= $(STAGING_DIR
)/.prepared
$(TOOLCHAIN_DIR
)/info.mk
$(tools
/stamp-install
)
73 $(curdir
)//compile
= $(1)/prepare
74 $(curdir
)//install = $(1)/compile
77 $(TOOLCHAIN_DIR
)/stamp
/.gcc-initial_installed
:
80 $(eval
$(call stampfile
,$(curdir
),toolchain
,install,$(TOOLCHAIN_DIR
)/stamp
/.gcc-initial_installed
,,$(TOOLCHAIN_DIR
)))
81 $(eval
$(call subdir
,$(curdir
)))