2 # Copyright (C) 2006-2011 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
)$(CONFIG_GCC_LLVM
),)
14 tools-y
+= gmp mpfr mpc libelf
16 tools-y
+= m4 libtool autoconf automake flex bison pkg-config sed mklibs
17 tools-y
+= sstrip ipkg-utils genext2fs e2fsprogs mtd-utils mkimage
18 tools-y
+= firmware-utils patch-image patch quilt yaffs2 flock padjffs2
19 tools-y
+= mm-macros xorg-macros xfce-macros missing-macros xz cmake scons bc
20 tools-
$(CONFIG_TARGET_orion_generic
) += wrt350nv2-builder upslug2
21 tools-
$(CONFIG_powerpc
) += upx
22 tools-
$(CONFIG_TARGET_x86
) += qemu
23 tools-
$(CONFIG_TARGET_imx23
) += elftosb
24 tools-
$(CONFIG_TARGET_brcm2708
) += mtools dosfstools
25 ifneq ($(CONFIG_TARGET_ar71xx
),)
26 tools-y
+= lzma-old squashfs
28 tools-y
+= lzma squashfs4
29 ifneq ($(CONFIG_PACKAGE_kmod-b43
)$(CONFIG_PACKAGE_kmod-b43legacy
)$(CONFIG_BRCMSMAC_USE_FW_FROM_WL
),)
33 ifneq ($(CONFIG_PACKAGE_firmwarehotplug
),)
37 ifdef CONFIG_GCC_USE_GRAPHITE
38 ifeq ($(CONFIG_GCC_USE_SYSTEM_PPL_CLOOG
),)
40 $(curdir
)/cloog
/compile
:= $(curdir
)/ppl
/install
44 # builddir dependencies
45 $(curdir
)/bison
/compile
:= $(curdir
)/flex
/install
46 $(curdir
)/flex
/compile
:= $(curdir
)/m4
/install
47 $(curdir
)/pkg-config
/compile
:= $(curdir
)/sed
/install
48 $(curdir
)/libtool
/compile
:= $(curdir
)/sed
/install
49 $(curdir
)/squashfs
/compile
:= $(curdir
)/lzma-old
/install
50 $(curdir
)/squashfs4
/compile
:= $(curdir
)/xz
/install
51 $(curdir
)/quilt
/compile
:= $(curdir
)/sed
/install $(curdir
)/autoconf
/install
52 $(curdir
)/dtc
/compile
:= $(curdir
)/bison
/install
53 $(curdir
)/autoconf
/compile
:= $(curdir
)/m4
/install $(curdir
)/libtool
/install
54 $(curdir
)/automake
/compile
:= $(curdir
)/m4
/install $(curdir
)/autoconf
/install $(curdir
)/pkg-config
/install $(curdir
)/xz
/install
55 $(curdir
)/gmp
/compile
:= $(curdir
)/automake
/install
56 $(curdir
)/mpc
/compile
:= $(curdir
)/mpfr
/install $(curdir
)/gmp
/install
57 $(curdir
)/mpfr
/compile
:= $(curdir
)/gmp
/install
58 $(curdir
)/ppl
/compile
:= $(curdir
)/gmp
/install
59 $(curdir
)/cloog
/compile
:= $(curdir
)/ppl
/install
60 $(curdir
)/mtd-utils
/compile
:= $(curdir
)/e2fsprogs
/install $(curdir
)/xz
/install
61 $(curdir
)/mkimage
/compile
:= $(curdir
)/sed
/install
62 $(curdir
)/mklibs
/compile
:= $(curdir
)/automake
/install
63 $(curdir
)/qemu
/compile
:= $(curdir
)/e2fsprogs
/install
64 $(curdir
)/upslug2
/compile
:= $(curdir
)/automake
/install
65 $(curdir
)/mm-macros
/compile
:= $(curdir
)/automake
/install
66 $(curdir
)/xorg-macros
/compile
:= $(curdir
)/automake
/install
67 $(curdir
)/xfce-macros
/compile
:= $(curdir
)/automake
/install
68 $(curdir
)/missing-macros
/compile
:= $(curdir
)/automake
/install
69 $(curdir
)/e2fsprogs
/compile
:= $(curdir
)/automake
/install
70 $(curdir
)/libelf
/compile
:= $(curdir
)/automake
/install
71 $(curdir
)/sdcc
/compile
:= $(curdir
)/bison
/install
72 $(curdir
)/b43-tools
/compile
:= $(curdir
)/bison
/install
74 ifneq ($(CONFIG_CCACHE
),)
75 $(foreach tool
, $(tools-y
), $(eval
$(curdir
)/$(tool
)/compile
+= $(curdir
)/ccache
/install))
79 $(curdir
)/builddirs
:= $(tools-y
) $(tools-dep
) $(tools-
)
80 $(curdir
)/builddirs-default
:= $(tools-y
)
84 @for
dir in
$(1); do
( \
85 $(if
$(QUIET
),,set
-x
;) \
88 mkdir
-p bin lib
include stamp
; \
93 $(STAGING_DIR
)/.prepared
: $(TMP_DIR
)/.build
94 $(call PrepareStaging
,$(STAGING_DIR
))
95 mkdir
-p
$(BUILD_DIR
)/stamp
98 $(STAGING_DIR_HOST
)/.prepared
: $(TMP_DIR
)/.build
99 $(call PrepareStaging
,$(STAGING_DIR_HOST
))
100 mkdir
-p
$(BUILD_DIR_HOST
)/stamp
$(STAGING_DIR_HOST
)/include/sys
101 $(INSTALL_DATA
) $(TOPDIR
)/tools
/include/*.h
$(STAGING_DIR_HOST
)/include/
102 $(INSTALL_DATA
) $(TOPDIR
)/tools
/include/sys
/*.h
$(STAGING_DIR_HOST
)/include/sys
/
103 ln
-sf lib
$(STAGING_DIR_HOST
)/lib64
107 define PrepareCommand
108 $(STAGING_DIR_HOST
)/bin
/$(1): $(STAGING_DIR
)/.prepared
109 @mkdir
-p
"$$(dir $$@)"; rm -f
"$$@"
110 @
export FILE
="$$$$(which $(2) 2>/dev/null | grep -v 'not found' | head -n1)"; [ -n
"$$$$FILE" ] ||
{ \
111 echo
"Command $(1) not found."; false
; \
112 }; ln
-s
"$$$$FILE" "$$@"
117 $(STAGING_DIR_HOST
)/bin
/stat
: $(STAGING_DIR
)/.prepared
119 @if stat
--version
> /dev
/null
2>&1; then \
120 ln
-s
`which stat` $@
; \
121 elif gstat
--version
> /dev
/null
2>&1; then \
122 ln
-s
`which gstat` $@
; \
123 elif gnustat
--version
> /dev
/null
2>&1; then \
124 ln
-s
`which gnustat` $@
; \
126 echo
"GNU stat not found"; \
130 $(eval
$(call PrepareCommand
,find
,gfind find
))
131 $(eval
$(call PrepareCommand
,md5sum
,gmd5sum md5sum
$(SCRIPT_DIR
)/md5sum
))
132 $(eval
$(call PrepareCommand
,cp
,gcp cp
))
133 $(eval
$(call PrepareCommand
,seq
,gseq seq
))
134 $(eval
$(call PrepareCommand
,python
,python2 python2.7 python
))
135 $(eval
$(call PrepareCommand
,awk
,gawk awk
))
136 $(eval
$(call PrepareCommand
,getopt
,gnugetopt
/usr
/local
/bin
/getopt getopt
))
137 $(eval
$(call PrepareCommand
,grep
,ggrep grep
))
138 $(eval
$(call PrepareCommand
,tar,gtar
tar))
139 $(eval
$(call PrepareCommand
,diff
,gdiff diff
))
141 $(curdir
)/cmddeps
= $(patsubst %,$(STAGING_DIR_HOST
)/bin
/%,find md5sum cp stat seq python awk getopt grep
tar diff
)
142 $(curdir
)//prepare
= $(STAGING_DIR
)/.prepared
$(STAGING_DIR_HOST
)/.prepared
$($(curdir
)/cmddeps
)
143 $(curdir
)//compile
= $(STAGING_DIR
)/.prepared
$(STAGING_DIR_HOST
)/.prepared
$($(curdir
)/cmddeps
)
145 # prerequisites for the individual targets
146 $(curdir
)/ := .config prereq
147 $(curdir
)//install = $(1)/compile
149 $(eval
$(call stampfile
,$(curdir
),tools
,install,,CONFIG_CCACHE CONFIG_powerpc CONFIG_GCC_VERSION_4_5 CONFIG_GCC_USE_GRAPHITE CONFIG_TARGET_orion_generic
))
150 $(eval
$(call subdir
,$(curdir
)))