1# 2# (C) Copyright 2000-2006 3# Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4# 5# SPDX-License-Identifier: GPL-2.0+ 6# 7 8# 9# toolchains targeting win32 generate .exe files 10# 11ifneq (,$(findstring WIN32 ,$(shell $(HOSTCC) -E -dM -xc /dev/null))) 12SFX = .exe 13else 14SFX = 15endif 16 17# Enable all the config-independent tools 18ifneq ($(HOST_TOOLS_ALL),) 19CONFIG_LCD_LOGO = y 20CONFIG_CMD_LOADS = y 21CONFIG_CMD_NET = y 22CONFIG_XWAY_SWAP_BYTES = y 23CONFIG_NETCONSOLE = y 24CONFIG_SHA1_CHECK_UB_IMG = y 25endif 26 27subdir-$(HOST_TOOLS_ALL) += easylogo 28subdir-$(HOST_TOOLS_ALL) += gdb 29 30# Merge all the different vars for envcrc into one 31ENVCRC-$(CONFIG_ENV_IS_EMBEDDED) = y 32ENVCRC-$(CONFIG_ENV_IS_IN_DATAFLASH) = y 33ENVCRC-$(CONFIG_ENV_IS_IN_EEPROM) = y 34ENVCRC-$(CONFIG_ENV_IS_IN_FLASH) = y 35ENVCRC-$(CONFIG_ENV_IS_IN_ONENAND) = y 36ENVCRC-$(CONFIG_ENV_IS_IN_NAND) = y 37ENVCRC-$(CONFIG_ENV_IS_IN_NVRAM) = y 38ENVCRC-$(CONFIG_ENV_IS_IN_SPI_FLASH) = y 39CONFIG_BUILD_ENVCRC ?= $(ENVCRC-y) 40 41hostprogs-$(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER) += atmel_pmecc_params$(SFX) 42 43# TODO: CONFIG_CMD_LICENSE does not work 44hostprogs-$(CONFIG_CMD_LICENSE) += bin2header$(SFX) 45hostprogs-$(CONFIG_LCD_LOGO) += bmp_logo$(SFX) 46hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo$(SFX) 47HOSTCFLAGS_bmp_logo$(SFX).o := -pedantic 48 49hostprogs-$(CONFIG_BUILD_ENVCRC) += envcrc$(SFX) 50envcrc$(SFX)-objs := envcrc.o lib/crc32.o common/env_embedded.o lib/sha1.o 51 52hostprogs-$(CONFIG_CMD_NET) += gen_eth_addr$(SFX) 53HOSTCFLAGS_gen_eth_addr$(SFX).o := -pedantic 54 55hostprogs-$(CONFIG_CMD_LOADS) += img2srec$(SFX) 56HOSTCFLAGS_img2srec$(SFX).o := -pedantic 57 58hostprogs-$(CONFIG_XWAY_SWAP_BYTES) += xway-swap-bytes$(SFX) 59HOSTCFLAGS_xway-swap-bytes$(SFX).o := -pedantic 60 61hostprogs-y += mkenvimage$(SFX) 62mkenvimage$(SFX)-objs := mkenvimage.o os_support.o lib/crc32.o 63 64hostprogs-y += dumpimage$(SFX) mkimage$(SFX) 65hostprogs-$(CONFIG_FIT_SIGNATURE) += fit_info$(SFX) fit_check_sign$(SFX) 66 67FIT_SIG_OBJS-$(CONFIG_FIT_SIGNATURE) := common/image-sig.o 68# Flattened device tree objects 69LIBFDT_OBJS := $(addprefix lib/libfdt/, \ 70 fdt.o fdt_ro.o fdt_rw.o fdt_strerror.o fdt_wip.o) 71RSA_OBJS-$(CONFIG_FIT_SIGNATURE) := $(addprefix lib/rsa/, \ 72 rsa-sign.o rsa-verify.o rsa-checksum.o) 73 74# common objs for dumpimage and mkimage 75dumpimage-mkimage-objs := aisimage.o \ 76 atmelimage.o \ 77 $(FIT_SIG_OBJS-y) \ 78 lib/crc32.o \ 79 default_image.o \ 80 lib/fdtdec.o \ 81 fit_common.o \ 82 fit_image.o \ 83 gpimage.o \ 84 gpimage-common.o \ 85 common/image-fit.o \ 86 image-host.o \ 87 common/image.o \ 88 imagetool.o \ 89 imximage.o \ 90 kwbimage.o \ 91 lib/md5.o \ 92 mxsimage.o \ 93 omapimage.o \ 94 os_support.o \ 95 pblimage.o \ 96 pbl_crc32.o \ 97 lib/sha1.o \ 98 lib/sha256.o \ 99 ublimage.o \ 100 $(LIBFDT_OBJS) \ 101 $(RSA_OBJS-y) 102 103dumpimage$(SFX)-objs := $(dumpimage-mkimage-objs) dumpimage.o 104mkimage$(SFX)-objs := $(dumpimage-mkimage-objs) mkimage.o 105fit_info$(SFX)-objs := $(dumpimage-mkimage-objs) fit_info.o 106fit_check_sign$(SFX)-objs := $(dumpimage-mkimage-objs) fit_check_sign.o 107 108# TODO(sjg@chromium.org): Is this correct on Mac OS? 109 110ifneq ($(CONFIG_MX23)$(CONFIG_MX28),) 111# Add CONFIG_MXS into host CFLAGS, so we can check whether or not register 112# the mxsimage support within tools/mxsimage.c . 113HOSTCFLAGS_mxsimage.o += -DCONFIG_MXS 114endif 115 116ifdef CONFIG_FIT_SIGNATURE 117# This affects include/image.h, but including the board config file 118# is tricky, so manually define this options here. 119HOST_EXTRACFLAGS += -DCONFIG_FIT_SIGNATURE 120endif 121 122# MXSImage needs LibSSL 123ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),) 124HOSTLOADLIBES_mkimage$(SFX) += -lssl -lcrypto 125endif 126 127HOSTLOADLIBES_dumpimage$(SFX) := $(HOSTLOADLIBES_mkimage$(SFX)) 128HOSTLOADLIBES_fit_info$(SFX) := $(HOSTLOADLIBES_mkimage$(SFX)) 129HOSTLOADLIBES_fit_check_sign$(SFX) := $(HOSTLOADLIBES_mkimage$(SFX)) 130 131hostprogs-$(CONFIG_EXYNOS5250) += mkexynosspl$(SFX) 132hostprogs-$(CONFIG_EXYNOS5420) += mkexynosspl$(SFX) 133HOSTCFLAGS_mkexynosspl$(SFX).o := -pedantic 134 135hostprogs-$(CONFIG_MX23) += mxsboot$(SFX) 136hostprogs-$(CONFIG_MX28) += mxsboot$(SFX) 137HOSTCFLAGS_mxsboot$(SFX).o := -pedantic 138 139hostprogs-$(CONFIG_SUNXI) += mksunxiboot$(SFX) 140 141hostprogs-$(CONFIG_NETCONSOLE) += ncb$(SFX) 142hostprogs-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1$(SFX) 143 144ubsha1$(SFX)-objs := os_support.o ubsha1.o lib/sha1.o 145 146HOSTCFLAGS_ubsha1.o := -pedantic 147 148hostprogs-$(CONFIG_KIRKWOOD) += kwboot$(SFX) 149hostprogs-y += proftool$(SFX) 150hostprogs-$(CONFIG_STATIC_RELA) += relocate-rela$(SFX) 151 152# We build some files with extra pedantic flags to try to minimize things 153# that won't build on some weird host compiler -- though there are lots of 154# exceptions for files that aren't complaint. 155HOSTCFLAGS_crc32.o := -pedantic 156HOSTCFLAGS_md5.o := -pedantic 157HOSTCFLAGS_sha1.o := -pedantic 158HOSTCFLAGS_sha256.o := -pedantic 159 160# Don't build by default 161#hostprogs-$(CONFIG_PPC) += mpc86x_clk$(SFX) 162#HOSTCFLAGS_mpc86x_clk$(SFX).o := -pedantic 163 164quiet_cmd_wrap = WRAP $@ 165cmd_wrap = echo "\#include <$(srctree)/$(patsubst $(obj)/%,%,$@)>" >$@ 166 167$(obj)/lib/%.c $(obj)/common/%.c: 168 $(call cmd,wrap) 169 170clean-dirs := lib common 171 172always := $(hostprogs-y) 173 174# Generated LCD/video logo 175LOGO_H = $(objtree)/include/bmp_logo.h 176LOGO_DATA_H = $(objtree)/include/bmp_logo_data.h 177LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H) 178LOGO-$(CONFIG_LCD_LOGO) += $(LOGO_DATA_H) 179LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H) 180LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_DATA_H) 181 182# Generic logo 183ifeq ($(LOGO_BMP),) 184LOGO_BMP= $(srctree)/$(src)/logos/denx.bmp 185 186# Use board logo and fallback to vendor 187ifneq ($(wildcard $(srctree)/$(src)/logos/$(BOARD).bmp),) 188LOGO_BMP= $(srctree)/$(src)/logos/$(BOARD).bmp 189else 190ifneq ($(wildcard $(srctree)/$(src)/logos/$(VENDOR).bmp),) 191LOGO_BMP= $(srctree)/$(src)/logos/$(VENDOR).bmp 192endif 193endif 194 195endif # !LOGO_BMP 196 197# 198# Use native tools and options 199# Define __KERNEL_STRICT_NAMES to prevent typedef overlaps 200# Define _GNU_SOURCE to obtain the getline prototype from stdio.h 201# 202HOST_EXTRACFLAGS += -include $(srctree)/include/libfdt_env.h \ 203 -include $(srctree)/include/sha256.h \ 204 $(patsubst -I%,-idirafter%, $(UBOOTINCLUDE)) \ 205 -I$(srctree)/lib/libfdt \ 206 -I$(srctree)/tools \ 207 -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) \ 208 -DUSE_HOSTCC \ 209 -D__KERNEL_STRICT_NAMES \ 210 -D_GNU_SOURCE 211 212__build: $(LOGO-y) 213 214$(LOGO_H): $(obj)/bmp_logo $(LOGO_BMP) 215 $(obj)/bmp_logo --gen-info $(LOGO_BMP) > $@ 216 217$(LOGO_DATA_H): $(obj)/bmp_logo $(LOGO_BMP) 218 $(obj)/bmp_logo --gen-data $(LOGO_BMP) > $@ 219 220# Let clean descend into subdirs 221subdir- += env 222 223ifneq ($(CROSS_BUILD_TOOLS),) 224HOSTCC = $(CC) 225 226quiet_cmd_crosstools_strip = STRIP $^ 227 cmd_crosstools_strip = $(STRIP) $^; touch $@ 228$(obj)/.strip: $(call objectify,$(filter $(always),$(hostprogs-y))) 229 $(call cmd,crosstools_strip) 230 231always += .strip 232endif 233clean-files += .strip 234