xref: /OK3568_Linux_fs/u-boot/tools/Makefile (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# (C) Copyright 2000-2006
3*4882a593Smuzhiyun# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun# SPDX-License-Identifier:	GPL-2.0+
6*4882a593Smuzhiyun#
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun# Enable all the config-independent tools
9*4882a593Smuzhiyunifneq ($(HOST_TOOLS_ALL),)
10*4882a593SmuzhiyunCONFIG_LCD_LOGO = y
11*4882a593SmuzhiyunCONFIG_CMD_LOADS = y
12*4882a593SmuzhiyunCONFIG_CMD_NET = y
13*4882a593SmuzhiyunCONFIG_XWAY_SWAP_BYTES = y
14*4882a593SmuzhiyunCONFIG_NETCONSOLE = y
15*4882a593SmuzhiyunCONFIG_SHA1_CHECK_UB_IMG = y
16*4882a593SmuzhiyunCONFIG_ARCH_SUNXI = y
17*4882a593Smuzhiyunendif
18*4882a593Smuzhiyun
19*4882a593Smuzhiyunsubdir-$(HOST_TOOLS_ALL) += easylogo
20*4882a593Smuzhiyunsubdir-$(HOST_TOOLS_ALL) += gdb
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun# Merge all the different vars for envcrc into one
23*4882a593SmuzhiyunENVCRC-$(CONFIG_ENV_IS_EMBEDDED) = y
24*4882a593SmuzhiyunENVCRC-$(CONFIG_ENV_IS_IN_EEPROM) = y
25*4882a593SmuzhiyunENVCRC-$(CONFIG_ENV_IS_IN_FLASH) = y
26*4882a593SmuzhiyunENVCRC-$(CONFIG_ENV_IS_IN_ONENAND) = y
27*4882a593SmuzhiyunENVCRC-$(CONFIG_ENV_IS_IN_NAND) = y
28*4882a593SmuzhiyunENVCRC-$(CONFIG_ENV_IS_IN_NVRAM) = y
29*4882a593SmuzhiyunENVCRC-$(CONFIG_ENV_IS_IN_SPI_FLASH) = y
30*4882a593SmuzhiyunCONFIG_BUILD_ENVCRC ?= $(ENVCRC-y)
31*4882a593Smuzhiyun
32*4882a593Smuzhiyunhostprogs-$(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER) += atmel_pmecc_params
33*4882a593Smuzhiyun
34*4882a593Smuzhiyunhostprogs-$(CONFIG_LCD_LOGO) += bmp_logo
35*4882a593Smuzhiyunhostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo
36*4882a593SmuzhiyunHOSTCFLAGS_bmp_logo.o := -pedantic
37*4882a593Smuzhiyun
38*4882a593Smuzhiyunhostprogs-$(CONFIG_BUILD_ENVCRC) += envcrc
39*4882a593Smuzhiyunenvcrc-objs := envcrc.o lib/crc32.o env/embedded.o lib/sha1.o
40*4882a593Smuzhiyun
41*4882a593Smuzhiyunhostprogs-$(CONFIG_CMD_NET) += gen_eth_addr
42*4882a593SmuzhiyunHOSTCFLAGS_gen_eth_addr.o := -pedantic
43*4882a593Smuzhiyun
44*4882a593Smuzhiyunhostprogs-$(CONFIG_CMD_NET) += gen_ethaddr_crc
45*4882a593Smuzhiyungen_ethaddr_crc-objs := gen_ethaddr_crc.o lib/crc8.o
46*4882a593SmuzhiyunHOSTCFLAGS_gen_ethaddr_crc.o := -pedantic
47*4882a593Smuzhiyun
48*4882a593Smuzhiyunhostprogs-$(CONFIG_CMD_LOADS) += img2srec
49*4882a593SmuzhiyunHOSTCFLAGS_img2srec.o := -pedantic
50*4882a593Smuzhiyun
51*4882a593Smuzhiyunhostprogs-$(CONFIG_XWAY_SWAP_BYTES) += xway-swap-bytes
52*4882a593SmuzhiyunHOSTCFLAGS_xway-swap-bytes.o := -pedantic
53*4882a593Smuzhiyun
54*4882a593Smuzhiyunhostprogs-y += mkenvimage
55*4882a593Smuzhiyunmkenvimage-objs := mkenvimage.o os_support.o lib/crc32.o
56*4882a593Smuzhiyun
57*4882a593Smuzhiyunhostprogs-y += dumpimage mkimage
58*4882a593Smuzhiyunhostprogs-$(CONFIG_FIT_SIGNATURE) += fit_info fit_check_sign
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun# Rockchip pack tools
61*4882a593Smuzhiyunifdef CONFIG_ARCH_ROCKCHIP
62*4882a593Smuzhiyunhostprogs-y += resource_tool
63*4882a593Smuzhiyunhostprogs-y += bmp2gray16
64*4882a593Smuzhiyun
65*4882a593Smuzhiyunresource_tool-objs := rockchip/resource_tool.o
66*4882a593Smuzhiyunbmp2gray16-objs := rockchip/bmp2gray16.o
67*4882a593Smuzhiyunendif
68*4882a593Smuzhiyun
69*4882a593SmuzhiyunFIT_SIG_OBJS-$(CONFIG_FIT_SIGNATURE) := common/image-sig.o
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun# The following files are synced with upstream DTC.
72*4882a593Smuzhiyun# Use synced versions from scripts/dtc/libfdt/.
73*4882a593SmuzhiyunLIBFDT_SRCS_SYNCED := fdt.c fdt_wip.c fdt_sw.c fdt_rw.c \
74*4882a593Smuzhiyun		fdt_strerror.c fdt_empty_tree.c fdt_addresses.c fdt_overlay.c
75*4882a593Smuzhiyun# The following files are locally modified for U-Boot (unfotunately).
76*4882a593Smuzhiyun# Use U-Boot own versions from lib/libfdt/.
77*4882a593SmuzhiyunLIBFDT_SRCS_UNSYNCED := fdt_ro.c fdt_region.c
78*4882a593Smuzhiyun
79*4882a593SmuzhiyunLIBFDT_OBJS := $(addprefix libfdt/, $(patsubst %.c, %.o, $(LIBFDT_SRCS_SYNCED))) \
80*4882a593Smuzhiyun	       $(addprefix lib/libfdt/, $(patsubst %.c, %.o, $(LIBFDT_SRCS_UNSYNCED)))
81*4882a593Smuzhiyun
82*4882a593SmuzhiyunRSA_OBJS-$(CONFIG_FIT_SIGNATURE) := $(addprefix lib/rsa/, \
83*4882a593Smuzhiyun					rsa-sign.o rsa-verify.o rsa-checksum.o \
84*4882a593Smuzhiyun					rsa-mod-exp.o)
85*4882a593Smuzhiyun
86*4882a593SmuzhiyunROCKCHIP_OBS = lib/rc4.o rkcommon.o rkimage.o rknand.o rksd.o rkspi.o
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun# common objs for dumpimage and mkimage
89*4882a593Smuzhiyundumpimage-mkimage-objs := aisimage.o \
90*4882a593Smuzhiyun			atmelimage.o \
91*4882a593Smuzhiyun			$(FIT_SIG_OBJS-y) \
92*4882a593Smuzhiyun			common/bootm.o \
93*4882a593Smuzhiyun			lib/crc32.o \
94*4882a593Smuzhiyun			default_image.o \
95*4882a593Smuzhiyun			lib/fdtdec_common.o \
96*4882a593Smuzhiyun			lib/fdtdec.o \
97*4882a593Smuzhiyun			fit_common.o \
98*4882a593Smuzhiyun			fit_image.o \
99*4882a593Smuzhiyun			common/image-fit.o \
100*4882a593Smuzhiyun			image-host.o \
101*4882a593Smuzhiyun			common/image.o \
102*4882a593Smuzhiyun			imagetool.o \
103*4882a593Smuzhiyun			imximage.o \
104*4882a593Smuzhiyun			kwbimage.o \
105*4882a593Smuzhiyun			lib/md5.o \
106*4882a593Smuzhiyun			lpc32xximage.o \
107*4882a593Smuzhiyun			mxsimage.o \
108*4882a593Smuzhiyun			omapimage.o \
109*4882a593Smuzhiyun			os_support.o \
110*4882a593Smuzhiyun			pblimage.o \
111*4882a593Smuzhiyun			pbl_crc32.o \
112*4882a593Smuzhiyun			vybridimage.o \
113*4882a593Smuzhiyun			$(ROCKCHIP_OBS) \
114*4882a593Smuzhiyun			socfpgaimage.o \
115*4882a593Smuzhiyun			lib/sha1.o \
116*4882a593Smuzhiyun			lib/sha256.o \
117*4882a593Smuzhiyun			common/hash.o \
118*4882a593Smuzhiyun			ublimage.o \
119*4882a593Smuzhiyun			zynqimage.o \
120*4882a593Smuzhiyun			zynqmpimage.o \
121*4882a593Smuzhiyun			$(LIBFDT_OBJS) \
122*4882a593Smuzhiyun			gpimage.o \
123*4882a593Smuzhiyun			gpimage-common.o \
124*4882a593Smuzhiyun			$(RSA_OBJS-y)
125*4882a593Smuzhiyun
126*4882a593Smuzhiyundumpimage-objs := $(dumpimage-mkimage-objs) dumpimage.o
127*4882a593Smuzhiyunmkimage-objs   := $(dumpimage-mkimage-objs) mkimage.o
128*4882a593Smuzhiyunfit_info-objs   := $(dumpimage-mkimage-objs) fit_info.o
129*4882a593Smuzhiyunfit_check_sign-objs   := $(dumpimage-mkimage-objs) fit_check_sign.o
130*4882a593Smuzhiyun
131*4882a593Smuzhiyunifneq ($(CONFIG_MX23)$(CONFIG_MX28),)
132*4882a593Smuzhiyun# Add CONFIG_MXS into host CFLAGS, so we can check whether or not register
133*4882a593Smuzhiyun# the mxsimage support within tools/mxsimage.c .
134*4882a593SmuzhiyunHOSTCFLAGS_mxsimage.o += -DCONFIG_MXS
135*4882a593Smuzhiyunendif
136*4882a593Smuzhiyun
137*4882a593Smuzhiyunifdef CONFIG_FIT_SIGNATURE
138*4882a593Smuzhiyun# This affects include/image.h, but including the board config file
139*4882a593Smuzhiyun# is tricky, so manually define this options here.
140*4882a593SmuzhiyunHOST_EXTRACFLAGS	+= -DCONFIG_FIT_SIGNATURE
141*4882a593Smuzhiyunendif
142*4882a593Smuzhiyun
143*4882a593Smuzhiyunifdef CONFIG_SYS_U_BOOT_OFFS
144*4882a593SmuzhiyunHOSTCFLAGS_kwbimage.o += -DCONFIG_SYS_U_BOOT_OFFS=$(CONFIG_SYS_U_BOOT_OFFS)
145*4882a593Smuzhiyunendif
146*4882a593Smuzhiyun
147*4882a593Smuzhiyunifneq ($(CONFIG_ARMADA_38X)$(CONFIG_ARMADA_39X),)
148*4882a593SmuzhiyunHOSTCFLAGS_kwbimage.o += -DCONFIG_KWB_SECURE
149*4882a593Smuzhiyunendif
150*4882a593Smuzhiyun
151*4882a593Smuzhiyun# MXSImage needs LibSSL
152*4882a593Smuzhiyunifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_ARMADA_38X)$(CONFIG_ARMADA_39X)$(CONFIG_FIT_SIGNATURE),)
153*4882a593SmuzhiyunHOSTLOADLIBES_mkimage += \
154*4882a593Smuzhiyun	$(shell pkg-config --libs libssl libcrypto 2> /dev/null || echo "-lssl -lcrypto")
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun# OS X deprecate openssl in favour of CommonCrypto, supress deprecation
157*4882a593Smuzhiyun# warnings on those systems
158*4882a593Smuzhiyunifeq ($(HOSTOS),darwin)
159*4882a593SmuzhiyunHOSTCFLAGS_mxsimage.o += -Wno-deprecated-declarations
160*4882a593SmuzhiyunHOSTCFLAGS_image-sig.o += -Wno-deprecated-declarations
161*4882a593SmuzhiyunHOSTCFLAGS_rsa-sign.o += -Wno-deprecated-declarations
162*4882a593Smuzhiyunendif
163*4882a593Smuzhiyunendif
164*4882a593Smuzhiyun
165*4882a593SmuzhiyunHOSTCFLAGS_fit_image.o += -DMKIMAGE_DTC=\"$(CONFIG_MKIMAGE_DTC_PATH)\"
166*4882a593Smuzhiyun
167*4882a593SmuzhiyunHOSTLOADLIBES_dumpimage := $(HOSTLOADLIBES_mkimage)
168*4882a593SmuzhiyunHOSTLOADLIBES_fit_info := $(HOSTLOADLIBES_mkimage)
169*4882a593SmuzhiyunHOSTLOADLIBES_fit_check_sign := $(HOSTLOADLIBES_mkimage)
170*4882a593Smuzhiyun
171*4882a593Smuzhiyunhostprogs-$(CONFIG_EXYNOS5250) += mkexynosspl
172*4882a593Smuzhiyunhostprogs-$(CONFIG_EXYNOS5420) += mkexynosspl
173*4882a593SmuzhiyunHOSTCFLAGS_mkexynosspl.o := -pedantic
174*4882a593Smuzhiyun
175*4882a593Smuzhiyunifdtool-objs := $(LIBFDT_OBJS) ifdtool.o
176*4882a593Smuzhiyunhostprogs-$(CONFIG_X86) += ifdtool
177*4882a593Smuzhiyun
178*4882a593Smuzhiyunhostprogs-$(CONFIG_MX23) += mxsboot
179*4882a593Smuzhiyunhostprogs-$(CONFIG_MX28) += mxsboot
180*4882a593SmuzhiyunHOSTCFLAGS_mxsboot.o := -pedantic
181*4882a593Smuzhiyun
182*4882a593Smuzhiyunhostprogs-$(CONFIG_ARCH_SUNXI) += mksunxiboot
183*4882a593Smuzhiyunhostprogs-$(CONFIG_ARCH_SUNXI) += sunxi-spl-image-builder
184*4882a593Smuzhiyunsunxi-spl-image-builder-objs := sunxi-spl-image-builder.o lib/bch.o
185*4882a593Smuzhiyun
186*4882a593Smuzhiyunhostprogs-$(CONFIG_NETCONSOLE) += ncb
187*4882a593Smuzhiyunhostprogs-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1
188*4882a593Smuzhiyun
189*4882a593Smuzhiyunubsha1-objs := os_support.o ubsha1.o lib/sha1.o
190*4882a593Smuzhiyun
191*4882a593SmuzhiyunHOSTCFLAGS_ubsha1.o := -pedantic
192*4882a593Smuzhiyun
193*4882a593Smuzhiyunhostprogs-$(CONFIG_KIRKWOOD) += kwboot
194*4882a593Smuzhiyunhostprogs-$(CONFIG_ARCH_MVEBU) += kwboot
195*4882a593Smuzhiyunhostprogs-y += proftool
196*4882a593Smuzhiyunhostprogs-$(CONFIG_STATIC_RELA) += relocate-rela
197*4882a593Smuzhiyun
198*4882a593Smuzhiyunhostprogs-y += fdtgrep
199*4882a593Smuzhiyunfdtgrep-objs += $(LIBFDT_OBJS) fdtgrep.o
200*4882a593Smuzhiyun
201*4882a593Smuzhiyunhostprogs-$(CONFIG_MIPS) += mips-relocs
202*4882a593Smuzhiyun
203*4882a593Smuzhiyun# We build some files with extra pedantic flags to try to minimize things
204*4882a593Smuzhiyun# that won't build on some weird host compiler -- though there are lots of
205*4882a593Smuzhiyun# exceptions for files that aren't complaint.
206*4882a593SmuzhiyunHOSTCFLAGS_crc32.o := -pedantic
207*4882a593SmuzhiyunHOSTCFLAGS_crc8.o := -pedantic
208*4882a593SmuzhiyunHOSTCFLAGS_md5.o := -pedantic
209*4882a593SmuzhiyunHOSTCFLAGS_sha1.o := -pedantic
210*4882a593SmuzhiyunHOSTCFLAGS_sha256.o := -pedantic
211*4882a593Smuzhiyun
212*4882a593Smuzhiyunquiet_cmd_wrap = WRAP    $@
213*4882a593Smuzhiyuncmd_wrap = echo "\#include <../$(patsubst $(obj)/%,%,$@)>" >$@
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun$(obj)/lib/%.c $(obj)/common/%.c $(obj)/env/%.c:
216*4882a593Smuzhiyun	$(call cmd,wrap)
217*4882a593Smuzhiyun
218*4882a593Smuzhiyunclean-dirs := lib common
219*4882a593Smuzhiyun
220*4882a593Smuzhiyunalways := $(hostprogs-y)
221*4882a593Smuzhiyun
222*4882a593Smuzhiyun# Generated LCD/video logo
223*4882a593SmuzhiyunLOGO_H = $(objtree)/include/bmp_logo.h
224*4882a593SmuzhiyunLOGO_DATA_H = $(objtree)/include/bmp_logo_data.h
225*4882a593SmuzhiyunLOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H)
226*4882a593SmuzhiyunLOGO-$(CONFIG_LCD_LOGO) += $(LOGO_DATA_H)
227*4882a593SmuzhiyunLOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H)
228*4882a593SmuzhiyunLOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_DATA_H)
229*4882a593Smuzhiyun
230*4882a593Smuzhiyun# Generic logo
231*4882a593Smuzhiyunifeq ($(LOGO_BMP),)
232*4882a593SmuzhiyunLOGO_BMP= $(srctree)/$(src)/logos/denx.bmp
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun# Use board logo and fallback to vendor
235*4882a593Smuzhiyunifneq ($(wildcard $(srctree)/$(src)/logos/$(BOARD).bmp),)
236*4882a593SmuzhiyunLOGO_BMP= $(srctree)/$(src)/logos/$(BOARD).bmp
237*4882a593Smuzhiyunelse
238*4882a593Smuzhiyunifneq ($(wildcard $(srctree)/$(src)/logos/$(VENDOR).bmp),)
239*4882a593SmuzhiyunLOGO_BMP= $(srctree)/$(src)/logos/$(VENDOR).bmp
240*4882a593Smuzhiyunendif
241*4882a593Smuzhiyunendif
242*4882a593Smuzhiyun
243*4882a593Smuzhiyunendif # !LOGO_BMP
244*4882a593Smuzhiyun
245*4882a593Smuzhiyun#
246*4882a593Smuzhiyun# Use native tools and options
247*4882a593Smuzhiyun# Define __KERNEL_STRICT_NAMES to prevent typedef overlaps
248*4882a593Smuzhiyun# Define _GNU_SOURCE to obtain the getline prototype from stdio.h
249*4882a593Smuzhiyun#
250*4882a593SmuzhiyunHOST_EXTRACFLAGS += -include $(srctree)/include/compiler.h \
251*4882a593Smuzhiyun		$(patsubst -I%,-idirafter%, $(filter -I%, $(UBOOTINCLUDE))) \
252*4882a593Smuzhiyun		-I$(srctree)/scripts/dtc/libfdt \
253*4882a593Smuzhiyun		-I$(srctree)/tools \
254*4882a593Smuzhiyun		-DUSE_HOSTCC \
255*4882a593Smuzhiyun		-D__KERNEL_STRICT_NAMES \
256*4882a593Smuzhiyun		-D_GNU_SOURCE
257*4882a593Smuzhiyun
258*4882a593Smuzhiyun__build:	$(LOGO-y)
259*4882a593Smuzhiyun
260*4882a593Smuzhiyun$(LOGO_H):	$(obj)/bmp_logo $(LOGO_BMP)
261*4882a593Smuzhiyun	$(obj)/bmp_logo --gen-info $(LOGO_BMP) > $@
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun$(LOGO_DATA_H):	$(obj)/bmp_logo $(LOGO_BMP)
264*4882a593Smuzhiyun	$(obj)/bmp_logo --gen-data $(LOGO_BMP) > $@
265*4882a593Smuzhiyun
266*4882a593Smuzhiyun# Let clean descend into subdirs
267*4882a593Smuzhiyunsubdir- += env
268*4882a593Smuzhiyun
269*4882a593Smuzhiyunifneq ($(CROSS_BUILD_TOOLS),)
270*4882a593Smuzhiyunoverride HOSTCC = $(CC)
271*4882a593Smuzhiyun
272*4882a593Smuzhiyunquiet_cmd_crosstools_strip = STRIP   $^
273*4882a593Smuzhiyun      cmd_crosstools_strip = $(STRIP) $^; touch $@
274*4882a593Smuzhiyun$(obj)/.strip: $(call objectify,$(filter $(always),$(hostprogs-y)))
275*4882a593Smuzhiyun	$(call cmd,crosstools_strip)
276*4882a593Smuzhiyun
277*4882a593Smuzhiyunalways += .strip
278*4882a593Smuzhiyunendif
279*4882a593Smuzhiyunclean-files += .strip
280