2 # Copyright (C) 2006-2010 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 host tools
11 # subdirectories to descend into
13 ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN
),)
14 tools-
$(CONFIG_GCC_VERSION_4_3
)$(CONFIG_GCC_VERSION_4_4
)$(CONFIG_GCC_VERSION_4_5
) += gmp mpfr
15 tools-
$(CONFIG_GCC_VERSION_4_5
) += mpc libelf
17 tools-y
+= m4 autoconf automake bison pkg-config sed mklibs
18 tools-y
+= sstrip ipkg-utils genext2fs e2fsprogs mtd-utils mkimage
19 tools-y
+= firmware-utils patch-cmdline quilt yaffs2 flock
20 tools-
$(CONFIG_TARGET_orion_generic
) += wrt350nv2-builder upslug2
21 tools-
$(CONFIG_TARGET_x86
) += qemu
22 ifneq ($(CONFIG_TARGET_ar71xx
),)
23 tools-y
+= squashfs lzma-old
25 tools-y
+= squashfs4 lzma
26 tools-
$(CONFIG_CCACHE
) += ccache
28 ifdef CONFIG_GCC_USE_GRAPHITE
29 ifeq ($(CONFIG_GCC_USE_SYSTEM_PPL_CLOOG
),)
31 $(curdir
)/cloog
/compile
:= $(curdir
)/ppl
/install
35 # builddir dependencies
36 $(curdir
)/pkg-config
/compile
:= $(curdir
)/sed
/install
37 $(curdir
)/squashfs
/compile
:= $(curdir
)/lzma-old
/install
38 $(curdir
)/squashfs4
/compile
:= $(curdir
)/lzma
/install
39 $(curdir
)/quilt
/compile
:= $(curdir
)/sed
/install $(curdir
)/autoconf
/install
40 $(curdir
)/dtc
/compile
:= $(curdir
)/bison
/install
41 $(curdir
)/autoconf
/compile
:= $(curdir
)/m4
/install
42 $(curdir
)/automake
/compile
:= $(curdir
)/m4
/install $(curdir
)/autoconf
/install
43 $(curdir
)/mpc
/compile
:= $(curdir
)/gmp
/install
44 $(curdir
)/mpfr
/compile
:= $(curdir
)/gmp
/install
45 $(curdir
)/mtd-utils
/compile
:= $(curdir
)/e2fsprogs
/install
46 $(curdir
)/mkimage
/compile
:= $(curdir
)/sed
/install
47 $(curdir
)/qemu
/compile
:= $(curdir
)/e2fsprogs
/install
48 $(curdir
)/upslug2
/compile
:= $(curdir
)/automake
/install
50 $(curdir
)/builddirs
:= $(tools-y
) $(tools-dep
) $(tools-
)
51 $(curdir
)/builddirs-default
:= $(tools-y
)
55 @for
dir in
$(1); do
( \
59 mkdir
-p bin lib
include stamp
; \
64 $(STAGING_DIR
)/.prepared
: $(TMP_DIR
)/.build
$(STAGING_DIR_HOST
)/.prepared
65 $(call PrepareStaging
,$(STAGING_DIR
))
66 mkdir
-p
$(STAGING_DIR
)/host
/share
67 rm -rf
$(STAGING_DIR
)/host
/share
/aclocal
68 ln
-s
$(STAGING_DIR_HOST
)/share
/aclocal
$(STAGING_DIR
)/host
/share
/
69 mkdir
-p
$(BUILD_DIR
)/stamp
72 $(STAGING_DIR_HOST
)/.prepared
: $(TMP_DIR
)/.build
73 $(call PrepareStaging
,$(STAGING_DIR_HOST
))
74 mkdir
-p
$(BUILD_DIR_HOST
)/stamp
75 $(INSTALL_DATA
) $(TOPDIR
)/tools
/include/*.h
$(STAGING_DIR_HOST
)/include/
80 $(STAGING_DIR_HOST
)/bin
/$(1): $(STAGING_DIR
)/.prepared
81 @mkdir
-p
"$$(dir $$@)"; rm -f
"$$@"
82 @
export FILE
="$$$$(which $(2) 2>/dev/null | grep -v 'not found' | head -n1)"; [ -n
"$$$$FILE" ] ||
{ \
83 echo
"Command $(1) not found."; false
; \
84 }; ln
-s
"$$$$FILE" "$$@"
89 $(eval
$(call PrepareCommand
,find
,gfind find
))
90 $(eval
$(call PrepareCommand
,md5sum
,md5sum
$(SCRIPT_DIR
)/md5sum
))
91 $(eval
$(call PrepareCommand
,cp
,gcp cp
))
92 $(eval
$(call PrepareCommand
,stat
,gstat stat
))
94 $(curdir
)/cmddeps
= $(patsubst %,$(STAGING_DIR_HOST
)/bin
/%,find md5sum cp stat
)
95 $(curdir
)//prepare
= $(STAGING_DIR
)/.prepared
$(STAGING_DIR_HOST
)/.prepared
$($(curdir
)/cmddeps
)
96 $(curdir
)//compile
= $(STAGING_DIR
)/.prepared
$(STAGING_DIR_HOST
)/.prepared
$($(curdir
)/cmddeps
)
98 # prerequisites for the individual targets
99 $(curdir
)/ := .config prereq
100 $(curdir
)//install = $(1)/compile
102 $(eval
$(call stampfile
,$(curdir
),tools
,install,,CONFIG_CCACHE CONFIG_powerpc CONFIG_GCC_VERSION_4_3 CONFIG_GCC_USE_GRAPHITE CONFIG_TARGET_orion_generic
))
103 $(eval
$(call subdir
,$(curdir
)))