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
14 ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN
),)
16 ifdef CONFIG_GCC_USE_GRAPHITE
20 ifneq ($(CONFIG_SDK
)$(CONFIG_PACKAGE_kmod-b43
)$(CONFIG_PACKAGE_b43legacy-firmware
)$(CONFIG_BRCMSMAC_USE_FW_FROM_WL
),)
24 tools-y
+= autoconf autoconf-archive automake bc bison cmake cpio dosfstools
25 tools-y
+= e2fsprogs fakeroot findutils firmware-utils flex gengetopt
26 tools-y
+= libressl libtool lzma m4 make-ext4fs meson missing-macros mkimage
27 tools-y
+= mklibs mtd-utils mtools ninja padjffs2 patch-image
28 tools-y
+= patchelf pkgconf quilt squashfskit4 sstrip xxd zip zlib zstd
29 tools-
$(BUILD_B43_TOOLS
) += b43-tools
30 tools-
$(BUILD_ISL
) += isl
31 tools-
$(BUILD_TOOLCHAIN
) += expat gmp mpc mpfr
32 tools-
$(CONFIG_TARGET_apm821xx
)$(CONFIG_TARGET_gemini
) += genext2fs
33 tools-
$(CONFIG_TARGET_ath79
) += lzma-old squashfs
34 tools-
$(CONFIG_TARGET_mxs
) += elftosb sdimage
35 tools-
$(CONFIG_TARGET_tegra
) += cbootimage cbootimage-configs
36 tools-
$(CONFIG_USES_MINOR
) += kernel2minor
37 tools-
$(CONFIG_USE_SPARSE
) += sparse
38 tools-
$(CONFIG_USE_LLVM_BUILD
) += llvm-bpf
40 # builddir dependencies
41 $(curdir
)/autoconf
/compile
:= $(curdir
)/m4
/compile
42 $(curdir
)/automake
/compile
:= $(curdir
)/m4
/compile
$(curdir
)/autoconf
/compile
$(curdir
)/pkgconf
/compile
$(curdir
)/xz
/compile
43 $(curdir
)/b43-tools
/compile
:= $(curdir
)/bison
/compile
44 $(curdir
)/bc
/compile
:= $(curdir
)/bison
/compile
$(curdir
)/libtool
/compile
45 $(curdir
)/bison
/compile
:= $(curdir
)/flex
/compile
46 $(curdir
)/cbootimage
/compile
+= $(curdir
)/automake
/compile
47 $(curdir
)/cmake
/compile
+= $(curdir
)/libressl
/compile
$(curdir
)/ninja
/compile
48 $(curdir
)/dosfstools
/compile
:= $(curdir
)/autoconf
/compile
$(curdir
)/automake
/compile
49 $(curdir
)/expat
/compile
:= $(curdir
)/cmake
/compile
50 $(curdir
)/e2fsprogs
/compile
:= $(curdir
)/libtool
/compile
51 $(curdir
)/fakeroot
/compile
:= $(curdir
)/libtool
/compile
52 $(curdir
)/findutils
/compile
:= $(curdir
)/bison
/compile
53 $(curdir
)/firmware-utils
/compile
+= $(curdir
)/libressl
/compile
$(curdir
)/zlib
/compile
54 $(curdir
)/flex
/compile
:= $(curdir
)/libtool
/compile
55 $(curdir
)/gengetopt
/compile
:= $(curdir
)/libtool
/compile
56 $(curdir
)/gmp
/compile
:= $(curdir
)/libtool
/compile
57 $(curdir
)/isl
/compile
:= $(curdir
)/gmp
/compile
58 $(curdir
)/libressl
/compile
:= $(curdir
)/pkgconf
/compile
59 $(curdir
)/libtool
/compile
:= $(curdir
)/m4
/compile
$(curdir
)/autoconf
/compile
$(curdir
)/automake
/compile
$(curdir
)/missing-macros
/compile
60 $(curdir
)/lzma-old
/compile
:= $(curdir
)/zlib
/compile
61 $(curdir
)/llvm-bpf
/compile
:= $(curdir
)/cmake
/compile
62 $(curdir
)/make-ext4fs
/compile
:= $(curdir
)/zlib
/compile
63 $(curdir
)/meson
/compile
:= $(curdir
)/ninja
/compile
64 $(curdir
)/missing-macros
/compile
:= $(curdir
)/autoconf
/compile
65 $(curdir
)/mkimage
/compile
+= $(curdir
)/bison
/compile
$(curdir
)/libressl
/compile
66 $(curdir
)/mklibs
/compile
:= $(curdir
)/libtool
/compile
67 $(curdir
)/mpc
/compile
:= $(curdir
)/mpfr
/compile
$(curdir
)/gmp
/compile
68 $(curdir
)/mpfr
/compile
:= $(curdir
)/gmp
/compile
69 $(curdir
)/mtd-utils
/compile
:= $(curdir
)/libtool
/compile
$(curdir
)/e2fsprogs
/compile
$(curdir
)/zlib
/compile
70 $(curdir
)/padjffs2
/compile
:= $(curdir
)/findutils
/compile
71 $(curdir
)/patchelf
/compile
:= $(curdir
)/libtool
/compile
72 $(curdir
)/pkgconf
/compile
:= $(curdir
)/meson
/compile
73 $(curdir
)/quilt
/compile
:= $(curdir
)/autoconf
/compile
$(curdir
)/findutils
/compile
74 $(curdir
)/sdcc
/compile
:= $(curdir
)/bison
/compile
75 $(curdir
)/squashfs
/compile
:= $(curdir
)/lzma-old
/compile
76 $(curdir
)/squashfskit4
/compile
:= $(curdir
)/xz
/compile
$(curdir
)/zlib
/compile
77 $(curdir
)/zlib
/compile
:= $(curdir
)/cmake
/compile
78 $(curdir
)/zstd
/compile
:= $(curdir
)/meson
/compile
80 ifneq ($(HOST_OS
),Linux
)
81 $(curdir
)/squashfskit4
/compile
+= $(curdir
)/coreutils
/compile
84 ifeq ($(HOST_OS
),Darwin
)
87 $(curdir
)/elfutils
/compile
:= $(curdir
)/zlib
/compile
91 ifneq ($(CONFIG_CCACHE
)$(CONFIG_SDK
),)
92 $(foreach tool
, $(filter-out xz zstd pkgconf patch ninja meson libressl cmake
,$(tools-y
)), $(eval
$(curdir
)/$(tool
)/compile
+= $(curdir
)/ccache
/compile
))
94 $(curdir
)/ccache
/compile
:= $(curdir
)/cmake
/compile
$(curdir
)/zstd
/compile
97 # in case there is no patch tool on the host we need to make patch tool a
98 # dependency for tools which have patches directory
99 $(foreach tool
, $(tools-y
), $(if
$(wildcard $(curdir
)/$(tool
)/patches
),$(eval
$(curdir
)/$(tool
)/compile
+= $(curdir
)/patch
/compile
)))
101 $(foreach tool
, $(filter-out xz
,$(tools-y
)), $(eval
$(curdir
)/$(tool
)/compile
+= $(curdir
)/xz
/compile
))
103 # make any tool depend on tar, xz and patch to ensure that archives can be unpacked and patched properly
104 tools-core
:= tar xz patch
106 $(foreach tool
, $(tools-y
), $(eval
$(curdir
)/$(tool
)/compile
+= $(patsubst %,$(curdir
)/%/compile
,$(tools-core
))))
107 tools-y
+= $(tools-core
)
109 # make core tools depend on sed and flock
110 $(foreach tool
, $(filter-out xz
,$(tools-core
)), $(eval
$(curdir
)/$(tool
)/compile
+= $(curdir
)/sed
/compile
))
111 $(curdir
)/xz
/compile
+= $(curdir
)/flock
/compile
113 $(curdir
)/sed
/compile
:= $(curdir
)/flock
/compile
$(curdir
)/xz
/compile
116 $(curdir
)/autoremove
:= 1
117 $(curdir
)/builddirs
:= $(tools-y
) $(tools-dep
) $(tools-
)
118 $(curdir
)/builddirs-default
:= $(tools-y
)
121 $(curdir
)/builddirs-check
:=$($(curdir
)/builddirs
)
122 $(curdir
)/builddirs-download
:=$($(curdir
)/builddirs
)
125 ifndef DUMP_TARGET_DB
126 define PrepareStaging
127 @for
dir in
$(1); do
( \
128 $(if
$(QUIET
),,set
-x
;) \
131 mkdir
-p bin lib stamp usr
/include usr
/lib
; \
139 $(STAGING_DIR
)/.prepared
: $(TMP_DIR
)/.build
140 $(call PrepareStaging
,$(STAGING_DIR
))
141 mkdir
-p
$(BUILD_DIR
)/stamp
144 $(STAGING_DIR_HOST
)/.prepared
: $(TMP_DIR
)/.build
145 $(call PrepareStaging
,$(STAGING_DIR_HOST
))
146 mkdir
-p
$(BUILD_DIR_HOST
)/stamp
$(STAGING_DIR_HOST
)/include/sys
147 $(INSTALL_DATA
) $(TOPDIR
)/tools
/include/*.h
$(STAGING_DIR_HOST
)/include/
148 $(INSTALL_DATA
) $(TOPDIR
)/tools
/include/sys
/*.h
$(STAGING_DIR_HOST
)/include/sys
/
149 ifneq ($(HOST_OS
),Linux
)
150 mkdir
-p
$(STAGING_DIR_HOST
)/include/asm
151 $(INSTALL_DATA
) $(TOPDIR
)/tools
/include/asm
/*.h
$(STAGING_DIR_HOST
)/include/asm
/
153 ln
-snf lib
$(STAGING_DIR_HOST
)/lib64
158 $(curdir
)//prepare
= $(STAGING_DIR
)/.prepared
$(STAGING_DIR_HOST
)/.prepared
$(BIN_DIR
)
159 $(curdir
)//compile
= $(STAGING_DIR
)/.prepared
$(STAGING_DIR_HOST
)/.prepared
$(BIN_DIR
)
161 # prerequisites for the individual targets
162 $(curdir
)/ := .config prereq
164 $(curdir
)/install: $(curdir
)/compile
166 tools_enabled
= $(foreach tool
,$(sort $(tools-y
) $(tools-
)),$(if
$(filter $(tool
),$(tools-y
)),y
,n
))
167 $(eval
$(call stampfile
,$(curdir
),tools
,compile
,,_
$(subst $(space
),,$(tools_enabled
)),$(STAGING_DIR_HOST
)))
168 $(eval
$(call stampfile
,$(curdir
),tools
,check,$(TMP_DIR
)/.build
,,$(STAGING_DIR_HOST
)))
169 $(eval
$(call subdir
,$(curdir
)))