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_BRCMSMAC_USE_FW_FROM_WL
),)
23 ifneq ($(CONFIG_SDK
)$(CONFIG_TARGET_INITRAMFS_COMPRESSION_BZIP2
),)
26 ifneq ($(CONFIG_SDK
)$(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZ4
),)
29 ifneq ($(CONFIG_SDK
)$(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZO
),)
34 tools-y
+= autoconf-archive
46 tools-y
+= firmware-utils
54 tools-y
+= make-ext4fs
56 tools-y
+= missing-macros
63 tools-y
+= patch-image
73 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
),y
) += liblzo
74 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(BUILD_B43_TOOLS
),y
) += b43-tools
75 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(BUILD_BZIP2_TOOLS
),y
) += bzip2
76 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(BUILD_ISL
),y
) += isl
77 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(BUILD_LZ4_TOOLS
),y
) += lz4
78 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(BUILD_LZO_TOOLS
),y
) += lzop
79 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(BUILD_TOOLCHAIN
),y
) += gmp mpc mpfr
80 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(CONFIG_TARGET_apm821xx
)$(CONFIG_TARGET_gemini
),y
) += genext2fs
81 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(CONFIG_TARGET_ath79
),y
) += lzma-old squashfs3-lzma
82 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(CONFIG_TARGET_mxs
),y
) += elftosb sdimage
83 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(CONFIG_TARGET_realtek
),y
) += 7z
84 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(CONFIG_TARGET_tegra
),y
) += cbootimage cbootimage-configs
85 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(CONFIG_USES_MINOR
),y
) += kernel2minor
86 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(CONFIG_USE_SPARSE
),y
) += sparse
87 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(CONFIG_USE_LLVM_BUILD
),y
) += llvm-bpf
88 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(CONFIG_USE_MOLD
),y
) += mold
90 # builddir dependencies
91 $(curdir
)/autoconf
/compile
:= $(curdir
)/m4
/compile
92 $(curdir
)/automake
/compile
:= $(curdir
)/autoconf
/compile
$(curdir
)/pkgconf
/compile
$(curdir
)/xz
/compile
93 $(curdir
)/b43-tools
/compile
:= $(curdir
)/bison
/compile
94 $(curdir
)/bc
/compile
:= $(curdir
)/bison
/compile
$(curdir
)/libtool
/compile
95 $(curdir
)/bison
/compile
:= $(curdir
)/flex
/compile
96 $(curdir
)/cbootimage
/compile
+= $(curdir
)/automake
/compile
97 $(curdir
)/cmake
/compile
+= $(curdir
)/libressl
/compile
$(curdir
)/ninja
/compile
$(curdir
)/expat
/compile
$(curdir
)/xz
/compile
$(curdir
)/zlib
/compile
$(curdir
)/zstd
/compile
98 $(curdir
)/dosfstools
/compile
:= $(curdir
)/automake
/compile
99 $(curdir
)/e2fsprogs
/compile
:= $(curdir
)/libtool
/compile
100 $(curdir
)/elfutils
/compile
:= $(curdir
)/m4
/compile
$(curdir
)/zlib
/compile
$(curdir
)/gnulib
/compile
$(curdir
)/libtool
/compile
101 $(curdir
)/fakeroot
/compile
:= $(curdir
)/libtool
/compile
102 $(curdir
)/findutils
/compile
:= $(curdir
)/bison
/compile
103 $(curdir
)/firmware-utils
/compile
+= $(curdir
)/cmake
/compile
104 $(curdir
)/flex
/compile
:= $(curdir
)/libtool
/compile
105 $(curdir
)/genext2fs
/compile
:= $(curdir
)/libtool
/compile
106 $(curdir
)/gengetopt
/compile
:= $(curdir
)/libtool
/compile
107 $(curdir
)/gmp
/compile
:= $(curdir
)/libtool
/compile
108 $(curdir
)/isl
/compile
:= $(curdir
)/gmp
/compile
109 $(curdir
)/liblzo
/compile
:= $(curdir
)/cmake
/compile
110 $(curdir
)/libressl
/compile
:= $(curdir
)/pkgconf
/compile
111 $(curdir
)/libtool
/compile
:= $(curdir
)/automake
/compile
$(curdir
)/gnulib
/compile
$(curdir
)/missing-macros
/compile
112 $(curdir
)/lz4
/compile
:= $(curdir
)/meson
/compile
113 $(curdir
)/lzma-old
/compile
:= $(curdir
)/zlib
/compile
114 $(curdir
)/lzop
/compile
:= $(curdir
)/cmake
/compile
$(curdir
)/liblzo
/compile
115 $(curdir
)/llvm-bpf
/compile
:= $(curdir
)/cmake
/compile
116 $(curdir
)/make-ext4fs
/compile
:= $(curdir
)/zlib
/compile
117 $(curdir
)/meson
/compile
:= $(curdir
)/ninja
/compile
118 $(curdir
)/missing-macros
/compile
:= $(curdir
)/autoconf
/compile
119 $(curdir
)/mkimage
/compile
+= $(curdir
)/bison
/compile
$(curdir
)/libressl
/compile
120 $(curdir
)/mklibs
/compile
:= $(curdir
)/libtool
/compile
121 $(curdir
)/mold
/compile
:= $(curdir
)/cmake
/compile
$(curdir
)/zlib
/compile
$(curdir
)/zstd
/compile
122 $(curdir
)/mpc
/compile
:= $(curdir
)/mpfr
/compile
$(curdir
)/gmp
/compile
123 $(curdir
)/mpfr
/compile
:= $(curdir
)/gmp
/compile
124 $(curdir
)/mtd-utils
/compile
:= $(curdir
)/libtool
/compile
$(curdir
)/e2fsprogs
/compile
$(curdir
)/zlib
/compile
125 $(curdir
)/padjffs2
/compile
:= $(curdir
)/findutils
/compile
126 $(curdir
)/patchelf
/compile
:= $(curdir
)/libtool
/compile
127 $(curdir
)/pkgconf
/compile
:= $(curdir
)/meson
/compile
128 $(curdir
)/quilt
/compile
:= $(curdir
)/autoconf
/compile
$(curdir
)/findutils
/compile
129 $(curdir
)/sdcc
/compile
:= $(curdir
)/bison
/compile
130 $(curdir
)/squashfs3-lzma
/compile
:= $(curdir
)/lzma-old
/compile
131 $(curdir
)/squashfs4
/compile
:= $(curdir
)/xz
/compile
$(curdir
)/zlib
/compile
132 $(curdir
)/util-linux
/compile
:= $(curdir
)/bison
/compile
133 $(curdir
)/zstd
/compile
:= $(curdir
)/meson
/compile
135 ifneq ($(HOST_OS
),Linux
)
136 $(curdir
)/coreutils
/compile
+= $(curdir
)/automake
/compile
$(curdir
)/bison
/compile
$(curdir
)/gnulib
/compile
137 $(curdir
)/squashfs4
/compile
+= $(curdir
)/coreutils
/compile
140 ifeq ($(HOST_OS
),Darwin
)
143 $(curdir
)/dwarves
/compile
+= $(curdir
)/elfutils
/compile
144 tools-
$(if
$(CONFIG_BUILD_ALL_HOST_TOOLS
)$(CONFIG_DWARVES
),y
) += dwarves
147 ifneq ($(CONFIG_CCACHE
)$(CONFIG_SDK
),)
148 $(foreach tool
, $(filter-out zstd zlib xz pkgconf patch ninja meson libressl expat cmake
,$(tools-y
)), $(eval
$(curdir
)/$(tool
)/compile
+= $(curdir
)/ccache
/compile
))
150 $(curdir
)/ccache
/compile
:= $(curdir
)/cmake
/compile
153 # in case there is no patch tool on the host we need to make patch tool a
154 # dependency for tools which have patches directory
155 $(foreach tool
, $(tools-y
), $(if
$(wildcard $(curdir
)/$(tool
)/patches
),$(eval
$(curdir
)/$(tool
)/compile
+= $(curdir
)/patch
/compile
)))
157 $(foreach tool
, $(filter-out xz
,$(tools-y
)), $(eval
$(curdir
)/$(tool
)/compile
+= $(curdir
)/xz
/compile
))
159 # make any tool depend on the following to ensure that archives can be unpacked and patched properly
160 tools-core
+= libdeflate
165 $(foreach tool
, $(tools-y
), $(eval
$(curdir
)/$(tool
)/compile
+= $(patsubst %,$(curdir
)/%/compile
,$(tools-core
))))
166 tools-y
+= $(tools-core
)
168 # make core tools depend on sed and flock
169 $(foreach tool
, $(filter-out xz
,$(tools-core
)), $(eval
$(curdir
)/$(tool
)/compile
+= $(curdir
)/sed
/compile
))
170 $(curdir
)/xz
/compile
+= $(curdir
)/flock
/compile
172 $(curdir
)/sed
/compile
:= $(curdir
)/flock
/compile
$(curdir
)/xz
/compile
175 $(curdir
)/autoremove
:= 1
176 $(curdir
)/builddirs
:= $(tools-y
) $(tools-dep
) $(tools-
)
177 $(curdir
)/builddirs-default
:= $(tools-y
)
180 $(curdir
)/builddirs-check
:=$($(curdir
)/builddirs
)
181 $(curdir
)/builddirs-download
:=$($(curdir
)/builddirs
)
184 ifndef DUMP_TARGET_DB
185 define PrepareStaging
186 @for
dir in
$(1); do
( \
187 $(if
$(QUIET
),,set
-x
;) \
190 mkdir
-p bin lib stamp usr
/include usr
/lib
; \
198 $(STAGING_DIR
)/.prepared
: $(TMP_DIR
)/.build
199 $(call PrepareStaging
,$(STAGING_DIR
))
200 mkdir
-p
$(BUILD_DIR
)/stamp
203 $(STAGING_DIR_HOST
)/.prepared
: $(TMP_DIR
)/.build
204 $(call PrepareStaging
,$(STAGING_DIR_HOST
))
205 mkdir
-p
$(BUILD_DIR_HOST
)/stamp
$(STAGING_DIR_HOST
)/include/sys
206 $(INSTALL_DATA
) $(TOPDIR
)/tools
/include/*.h
$(STAGING_DIR_HOST
)/include/
207 $(INSTALL_DATA
) $(TOPDIR
)/tools
/include/sys
/*.h
$(STAGING_DIR_HOST
)/include/sys
/
208 ifneq ($(HOST_OS
),Linux
)
209 mkdir
-p
$(STAGING_DIR_HOST
)/include/asm
210 $(INSTALL_DATA
) $(TOPDIR
)/tools
/include/asm
/*.h
$(STAGING_DIR_HOST
)/include/asm
/
212 ln
-snf lib
$(STAGING_DIR_HOST
)/lib64
217 $(curdir
)//prepare
= $(STAGING_DIR
)/.prepared
$(STAGING_DIR_HOST
)/.prepared
$(BIN_DIR
)
218 $(curdir
)//compile
= $(STAGING_DIR
)/.prepared
$(STAGING_DIR_HOST
)/.prepared
$(BIN_DIR
)
220 # prerequisites for the individual targets
221 $(curdir
)/ := .config prereq
223 $(curdir
)/install: $(curdir
)/compile
225 tools_enabled
= $(foreach tool
,$(sort $(tools-y
) $(tools-
)),$(if
$(filter $(tool
),$(tools-y
)),y
,n
))
226 $(eval
$(call stampfile
,$(curdir
),tools
,compile
,,_
$(subst $(space
),,$(tools_enabled
)),$(STAGING_DIR_HOST
)))
227 $(eval
$(call stampfile
,$(curdir
),tools
,check,$(TMP_DIR
)/.build
,,$(STAGING_DIR_HOST
)))
228 $(eval
$(call subdir
,$(curdir
)))