1efee1709Swdenk# 2f9328639SMarian Balakowicz# (C) Copyright 2000-2006 3efee1709Swdenk# Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4efee1709Swdenk# 51a459660SWolfgang Denk# SPDX-License-Identifier: GPL-2.0+ 6efee1709Swdenk# 7efee1709Swdenk 830ff8918SMarek VasutTOOLSUBDIRS = kernel-doc 9efee1709Swdenk 10efee1709Swdenk# 11a98ae78fSFrançois Revol# Include this after HOSTOS HOSTARCH check 12a98ae78fSFrançois Revol# so that we can act intelligently. 13a98ae78fSFrançois Revol# 14a98ae78fSFrançois Revolinclude $(TOPDIR)/config.mk 15a98ae78fSFrançois Revol 16a98ae78fSFrançois Revol# 172f8d396bSPeter Tyser# toolchains targeting win32 generate .exe files 182f8d396bSPeter Tyser# 192f8d396bSPeter Tyserifneq (,$(findstring WIN32 ,$(shell $(HOSTCC) -E -dM -xc /dev/null))) 202f8d396bSPeter TyserSFX = .exe 21efee1709Swdenkelse 22efee1709SwdenkSFX = 23efee1709Swdenkendif 24efee1709Swdenk 25c7c0d542SMike Frysinger# Enable all the config-independent tools 26c7c0d542SMike Frysingerifneq ($(HOST_TOOLS_ALL),) 27c7c0d542SMike FrysingerCONFIG_LCD_LOGO = y 28570d7d50SMike FrysingerCONFIG_CMD_LOADS = y 29c7c0d542SMike FrysingerCONFIG_CMD_NET = y 3060b74bdeSDaniel SchwierzeckCONFIG_XWAY_SWAP_BYTES = y 31c7c0d542SMike FrysingerCONFIG_NETCONSOLE = y 32c7c0d542SMike FrysingerCONFIG_SHA1_CHECK_UB_IMG = y 33c7c0d542SMike Frysingerendif 34c7c0d542SMike Frysinger 352ad6e27dSMike Frysinger# Merge all the different vars for envcrc into one 362ad6e27dSMike FrysingerENVCRC-$(CONFIG_ENV_IS_EMBEDDED) = y 372ad6e27dSMike FrysingerENVCRC-$(CONFIG_ENV_IS_IN_DATAFLASH) = y 382ad6e27dSMike FrysingerENVCRC-$(CONFIG_ENV_IS_IN_EEPROM) = y 392ad6e27dSMike FrysingerENVCRC-$(CONFIG_ENV_IS_IN_FLASH) = y 402ad6e27dSMike FrysingerENVCRC-$(CONFIG_ENV_IS_IN_ONENAND) = y 412ad6e27dSMike FrysingerENVCRC-$(CONFIG_ENV_IS_IN_NAND) = y 422ad6e27dSMike FrysingerENVCRC-$(CONFIG_ENV_IS_IN_NVRAM) = y 432ad6e27dSMike FrysingerENVCRC-$(CONFIG_ENV_IS_IN_SPI_FLASH) = y 442ad6e27dSMike FrysingerCONFIG_BUILD_ENVCRC ?= $(ENVCRC-y) 452ad6e27dSMike Frysinger 46ee3584a5SPeter Tyser# Generated executable files 4714821d7dSPrafulla WadaskarBIN_FILES-$(CONFIG_LCD_LOGO) += bmp_logo$(SFX) 4814821d7dSPrafulla WadaskarBIN_FILES-$(CONFIG_VIDEO_LOGO) += bmp_logo$(SFX) 492ad6e27dSMike FrysingerBIN_FILES-$(CONFIG_BUILD_ENVCRC) += envcrc$(SFX) 50123c48a2SPeter TyserBIN_FILES-$(CONFIG_CMD_NET) += gen_eth_addr$(SFX) 5114821d7dSPrafulla WadaskarBIN_FILES-$(CONFIG_CMD_LOADS) += img2srec$(SFX) 5260b74bdeSDaniel SchwierzeckBIN_FILES-$(CONFIG_XWAY_SWAP_BYTES) += xway-swap-bytes$(SFX) 53a6337e6fSDavid WagnerBIN_FILES-y += mkenvimage$(SFX) 5414821d7dSPrafulla WadaskarBIN_FILES-y += mkimage$(SFX) 5581e35203SChander KashyapBIN_FILES-$(CONFIG_SMDK5250) += mksmdk5250spl$(SFX) 56deb0757cSOtavio SalvadorBIN_FILES-$(CONFIG_MX23) += mxsboot$(SFX) 57f29f7e02SMarek VasutBIN_FILES-$(CONFIG_MX28) += mxsboot$(SFX) 581cd300deSPeter TyserBIN_FILES-$(CONFIG_NETCONSOLE) += ncb$(SFX) 5914821d7dSPrafulla WadaskarBIN_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1$(SFX) 60d131ad68SLuka PerkovBIN_FILES-$(CONFIG_KIRKWOOD) += kwboot$(SFX) 616c887b2aSSimon GlassBIN_FILES-y += proftool(SFX) 62ee3584a5SPeter Tyser 63fb8b33c1SPeter Tyser# Source files which exist outside the tools directory 642ad6e27dSMike FrysingerEXT_OBJ_FILES-$(CONFIG_BUILD_ENVCRC) += common/env_embedded.o 6514821d7dSPrafulla WadaskarEXT_OBJ_FILES-y += common/image.o 6653fbb7e8SSimon GlassEXT_OBJ_FILES-$(CONFIG_FIT) += common/image-fit.o 673e569a6bSSimon GlassEXT_OBJ_FILES-y += common/image-sig.o 6878acc472SPeter TyserEXT_OBJ_FILES-y += lib/crc32.o 6978acc472SPeter TyserEXT_OBJ_FILES-y += lib/md5.o 7078acc472SPeter TyserEXT_OBJ_FILES-y += lib/sha1.o 71ee3584a5SPeter Tyser 72ee3584a5SPeter Tyser# Source files located in the tools directory 73335ffe7eSPeter TyserOBJ_FILES-$(CONFIG_LCD_LOGO) += bmp_logo.o 74335ffe7eSPeter TyserOBJ_FILES-$(CONFIG_VIDEO_LOGO) += bmp_logo.o 75d984fed0SScott WoodNOPED_OBJ_FILES-y += default_image.o 766c887b2aSSimon GlassNOPED_OBJ_FILES-y += proftool.o 772ad6e27dSMike FrysingerOBJ_FILES-$(CONFIG_BUILD_ENVCRC) += envcrc.o 78d984fed0SScott WoodNOPED_OBJ_FILES-y += fit_image.o 7914821d7dSPrafulla WadaskarOBJ_FILES-$(CONFIG_CMD_NET) += gen_eth_addr.o 8014821d7dSPrafulla WadaskarOBJ_FILES-$(CONFIG_CMD_LOADS) += img2srec.o 8160b74bdeSDaniel SchwierzeckOBJ_FILES-$(CONFIG_XWAY_SWAP_BYTES) += xway-swap-bytes.o 824962e38eSStefano BabicNOPED_OBJ_FILES-y += aisimage.o 83d984fed0SScott WoodNOPED_OBJ_FILES-y += kwbimage.o 845d898a00SShaohui XieNOPED_OBJ_FILES-y += pblimage.o 858edcde5eSStefano BabicNOPED_OBJ_FILES-y += imximage.o 86604f23ddSSimon GlassNOPED_OBJ_FILES-y += image-host.o 873decb14aSJohn RigbyNOPED_OBJ_FILES-y += omapimage.o 88a6337e6fSDavid WagnerNOPED_OBJ_FILES-y += mkenvimage.o 89d984fed0SScott WoodNOPED_OBJ_FILES-y += mkimage.o 9081e35203SChander KashyapOBJ_FILES-$(CONFIG_SMDK5250) += mkexynosspl.o 91deb0757cSOtavio SalvadorOBJ_FILES-$(CONFIG_MX23) += mxsboot.o 92f29f7e02SMarek VasutOBJ_FILES-$(CONFIG_MX28) += mxsboot.o 931cd300deSPeter TyserOBJ_FILES-$(CONFIG_NETCONSOLE) += ncb.o 94d984fed0SScott WoodNOPED_OBJ_FILES-y += os_support.o 9514821d7dSPrafulla WadaskarOBJ_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1.o 967816f2cfSHeiko SchocherNOPED_OBJ_FILES-y += ublimage.o 97d131ad68SLuka PerkovOBJ_FILES-$(CONFIG_KIRKWOOD) += kwboot.o 98ee3584a5SPeter Tyser 99ee3584a5SPeter Tyser# Don't build by default 100ee3584a5SPeter Tyser#ifeq ($(ARCH),ppc) 101ee3584a5SPeter Tyser#BIN_FILES-y += mpc86x_clk$(SFX) 102ee3584a5SPeter Tyser#OBJ_FILES-y += mpc86x_clk.o 103ee3584a5SPeter Tyser#endif 104ee3584a5SPeter Tyser 105ee3584a5SPeter Tyser# Flattened device tree objects 106ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt.o 107ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_ro.o 108ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_rw.o 109ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_strerror.o 110ee3584a5SPeter TyserLIBFDT_OBJ_FILES-y += fdt_wip.o 111ee3584a5SPeter Tyser 11219c402afSSimon Glass# RSA objects 11329ce737dSSimon GlassRSA_OBJ_FILES-$(CONFIG_FIT_SIGNATURE) += rsa-sign.o 11419c402afSSimon Glass 115335ffe7eSPeter Tyser# Generated LCD/video logo 116ee3584a5SPeter TyserLOGO_H = $(OBJTREE)/include/bmp_logo.h 117c270730fSChe-Liang ChiouLOGO_DATA_H = $(OBJTREE)/include/bmp_logo_data.h 118335ffe7eSPeter TyserLOGO-$(CONFIG_LCD_LOGO) += $(LOGO_H) 119c270730fSChe-Liang ChiouLOGO-$(CONFIG_LCD_LOGO) += $(LOGO_DATA_H) 120335ffe7eSPeter TyserLOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_H) 121c270730fSChe-Liang ChiouLOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_DATA_H) 122ee3584a5SPeter Tyser 12396903daeSOtavio Salvador# Generic logo 124ee3584a5SPeter Tyserifeq ($(LOGO_BMP),) 125ee3584a5SPeter TyserLOGO_BMP= logos/denx.bmp 12696903daeSOtavio Salvador 12796903daeSOtavio Salvador# Use board logo and fallback to vendor 12896903daeSOtavio Salvadorifneq ($(wildcard logos/$(BOARD).bmp),) 12996903daeSOtavio SalvadorLOGO_BMP= logos/$(BOARD).bmp 13096903daeSOtavio Salvadorelse 13196903daeSOtavio Salvadorifneq ($(wildcard logos/$(VENDOR).bmp),) 13296903daeSOtavio SalvadorLOGO_BMP= logos/$(VENDOR).bmp 133ee3584a5SPeter Tyserendif 134ee3584a5SPeter Tyserendif 13596903daeSOtavio Salvador 13696903daeSOtavio Salvadorendif # !LOGO_BMP 137ee3584a5SPeter Tyser 138f9328639SMarian Balakowicz# now $(obj) is defined 139d984fed0SScott WoodHOSTSRCS += $(addprefix $(SRCTREE)/,$(EXT_OBJ_FILES-y:.o=.c)) 140d984fed0SScott WoodHOSTSRCS += $(addprefix $(SRCTREE)/tools/,$(OBJ_FILES-y:.o=.c)) 1410de71d50SPeter TyserHOSTSRCS += $(addprefix $(SRCTREE)/lib/libfdt/,$(LIBFDT_OBJ_FILES-y:.o=.c)) 14219c402afSSimon GlassHOSTSRCS += $(addprefix $(SRCTREE)/lib/rsa/,$(RSA_OBJ_FILES-y:.o=.c)) 143afcbce07SWolfgang DenkBINS := $(addprefix $(obj),$(sort $(BIN_FILES-y))) 144ee3584a5SPeter TyserLIBFDT_OBJS := $(addprefix $(obj),$(LIBFDT_OBJ_FILES-y)) 14519c402afSSimon GlassRSA_OBJS := $(addprefix $(obj),$(RSA_OBJ_FILES-y)) 146f9328639SMarian Balakowicz 1473e569a6bSSimon Glass# We cannot check CONFIG_FIT_SIGNATURE here since it is not set on the host 1483e569a6bSSimon GlassFIT_SIG_OBJ_FILES := image-sig.o 1493e569a6bSSimon GlassFIT_SIG_OBJS := $(addprefix $(obj),$(FIT_SIG_OBJ_FILES)) 1503e569a6bSSimon Glass 151d984fed0SScott WoodHOSTOBJS := $(addprefix $(obj),$(OBJ_FILES-y)) 152d984fed0SScott WoodNOPEDOBJS := $(addprefix $(obj),$(NOPED_OBJ_FILES-y)) 153d984fed0SScott Wood 154efee1709Swdenk# 155efee1709Swdenk# Use native tools and options 1562f8d396bSPeter Tyser# Define __KERNEL_STRICT_NAMES to prevent typedef overlaps 157*2db1c3fcSYork Sun# Define _GNU_SOURCE to obtain the getline prototype from stdio.h 158efee1709Swdenk# 159669dfc2eSSimon GlassHOSTCPPFLAGS = -include $(SRCTREE)/include/libfdt_env.h \ 160669dfc2eSSimon Glass -idirafter $(SRCTREE)/include \ 161f9328639SMarian Balakowicz -idirafter $(OBJTREE)/include2 \ 162f9328639SMarian Balakowicz -idirafter $(OBJTREE)/include \ 1630de71d50SPeter Tyser -I $(SRCTREE)/lib/libfdt \ 16440b8d909SPeter Tyser -I $(SRCTREE)/tools \ 16514d0a02aSWolfgang Denk -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) \ 16614d0a02aSWolfgang Denk -DUSE_HOSTCC \ 167*2db1c3fcSYork Sun -D__KERNEL_STRICT_NAMES \ 168*2db1c3fcSYork Sun -D_GNU_SOURCE 1698cf30809SBartlomiej Sieka 170efee1709Swdenk 171335ffe7eSPeter Tyserall: $(obj).depend $(BINS) $(LOGO-y) subdirs 172efee1709Swdenk 17314821d7dSPrafulla Wadaskar$(obj)bin2header$(SFX): $(obj)bin2header.o 174d984fed0SScott Wood $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 175d984fed0SScott Wood $(HOSTSTRIP) $@ 176efee1709Swdenk 177f9328639SMarian Balakowicz$(obj)bmp_logo$(SFX): $(obj)bmp_logo.o 178d984fed0SScott Wood $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 179d984fed0SScott Wood $(HOSTSTRIP) $@ 180efee1709Swdenk 1816c887b2aSSimon Glass$(obj)proftool(SFX): $(obj)proftool.o 1826c887b2aSSimon Glass $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 1836c887b2aSSimon Glass $(HOSTSTRIP) $@ 1846c887b2aSSimon Glass 18514821d7dSPrafulla Wadaskar$(obj)envcrc$(SFX): $(obj)crc32.o $(obj)env_embedded.o $(obj)envcrc.o $(obj)sha1.o 186d984fed0SScott Wood $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 18714821d7dSPrafulla Wadaskar 18814821d7dSPrafulla Wadaskar$(obj)gen_eth_addr$(SFX): $(obj)gen_eth_addr.o 189d984fed0SScott Wood $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 190d984fed0SScott Wood $(HOSTSTRIP) $@ 19114821d7dSPrafulla Wadaskar 19214821d7dSPrafulla Wadaskar$(obj)img2srec$(SFX): $(obj)img2srec.o 193d984fed0SScott Wood $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 194d984fed0SScott Wood $(HOSTSTRIP) $@ 19514821d7dSPrafulla Wadaskar 19660b74bdeSDaniel Schwierzeck$(obj)xway-swap-bytes$(SFX): $(obj)xway-swap-bytes.o 197d984fed0SScott Wood $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 198d984fed0SScott Wood $(HOSTSTRIP) $@ 1993e38691eSwdenk 2008b6a4952SVladimir Yakovlev$(obj)mkenvimage$(SFX): $(obj)crc32.o $(obj)mkenvimage.o \ 2018b6a4952SVladimir Yakovlev $(obj)os_support.o 202a6337e6fSDavid Wagner $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 20330de1014SDavid Wagner $(HOSTSTRIP) $@ 204a6337e6fSDavid Wagner 2054962e38eSStefano Babic$(obj)mkimage$(SFX): $(obj)aisimage.o \ 2064962e38eSStefano Babic $(obj)crc32.o \ 20789a4d6b1SPrafulla Wadaskar $(obj)default_image.o \ 20889a4d6b1SPrafulla Wadaskar $(obj)fit_image.o \ 20953fbb7e8SSimon Glass $(obj)image-fit.o \ 21089a4d6b1SPrafulla Wadaskar $(obj)image.o \ 211604f23ddSSimon Glass $(obj)image-host.o \ 2123e569a6bSSimon Glass $(FIT_SIG_OBJS) \ 2138edcde5eSStefano Babic $(obj)imximage.o \ 214aa0c7a86SPrafulla Wadaskar $(obj)kwbimage.o \ 2155d898a00SShaohui Xie $(obj)pblimage.o \ 21689a4d6b1SPrafulla Wadaskar $(obj)md5.o \ 21789a4d6b1SPrafulla Wadaskar $(obj)mkimage.o \ 21889a4d6b1SPrafulla Wadaskar $(obj)os_support.o \ 2193decb14aSJohn Rigby $(obj)omapimage.o \ 22089a4d6b1SPrafulla Wadaskar $(obj)sha1.o \ 2217816f2cfSHeiko Schocher $(obj)ublimage.o \ 22219c402afSSimon Glass $(LIBFDT_OBJS) \ 22319c402afSSimon Glass $(RSA_OBJS) 22419c402afSSimon Glass $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ $(HOSTLIBS) 225d984fed0SScott Wood $(HOSTSTRIP) $@ 22614821d7dSPrafulla Wadaskar 22781e35203SChander Kashyap$(obj)mk$(BOARD)spl$(SFX): $(obj)mkexynosspl.o 22881e35203SChander Kashyap $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 22981e35203SChander Kashyap $(HOSTSTRIP) $@ 23081e35203SChander Kashyap 231f9328639SMarian Balakowicz$(obj)mpc86x_clk$(SFX): $(obj)mpc86x_clk.o 232d984fed0SScott Wood $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 233d984fed0SScott Wood $(HOSTSTRIP) $@ 234ef1464ccSwdenk 235f29f7e02SMarek Vasut$(obj)mxsboot$(SFX): $(obj)mxsboot.o 236f29f7e02SMarek Vasut $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 237f29f7e02SMarek Vasut $(HOSTSTRIP) $@ 238f29f7e02SMarek Vasut 23914821d7dSPrafulla Wadaskar$(obj)ncb$(SFX): $(obj)ncb.o 240d984fed0SScott Wood $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 241d984fed0SScott Wood $(HOSTSTRIP) $@ 2420a823aa2SHarald Welte 24314821d7dSPrafulla Wadaskar$(obj)ubsha1$(SFX): $(obj)os_support.o $(obj)sha1.o $(obj)ubsha1.o 244d984fed0SScott Wood $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 2452f8d396bSPeter Tyser 246d131ad68SLuka Perkov$(obj)kwboot$(SFX): $(obj)kwboot.o 247d131ad68SLuka Perkov $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^ 248d131ad68SLuka Perkov $(HOSTSTRIP) $@ 249d131ad68SLuka Perkov 250b0d4d721SPeter Tyser# Some of the tool objects need to be accessed from outside the tools directory 25191081e01SWolfgang Denk$(obj)%.o: $(SRCTREE)/common/%.c 252d984fed0SScott Wood $(HOSTCC) -g $(HOSTCFLAGS_NOPED) -c -o $@ $< 253b0d4d721SPeter Tyser 25491081e01SWolfgang Denk$(obj)%.o: $(SRCTREE)/lib/%.c 255d984fed0SScott Wood $(HOSTCC) -g $(HOSTCFLAGS) -c -o $@ $< 256eedcd078Swdenk 2570de71d50SPeter Tyser$(obj)%.o: $(SRCTREE)/lib/libfdt/%.c 258d984fed0SScott Wood $(HOSTCC) -g $(HOSTCFLAGS_NOPED) -c -o $@ $< 2598cf30809SBartlomiej Sieka 26019c402afSSimon Glass$(obj)%.o: $(SRCTREE)/lib/rsa/%.c 26119c402afSSimon Glass $(HOSTCC) -g $(HOSTCFLAGS_NOPED) -c -o $@ $< 26219c402afSSimon Glass 263efee1709Swdenksubdirs: 264e0ac62d7Swdenkifeq ($(TOOLSUBDIRS),) 265e0ac62d7Swdenk @: 266e0ac62d7Swdenkelse 267efee1709Swdenk @for dir in $(TOOLSUBDIRS) ; do \ 268efee1709Swdenk $(MAKE) \ 269efee1709Swdenk HOSTOS=$(HOSTOS) \ 270efee1709Swdenk HOSTARCH=$(HOSTARCH) \ 271efee1709Swdenk -C $$dir || exit 1 ; \ 272efee1709Swdenk done 273e0ac62d7Swdenkendif 274e0ac62d7Swdenk 275f9328639SMarian Balakowicz$(LOGO_H): $(obj)bmp_logo $(LOGO_BMP) 276c270730fSChe-Liang Chiou $(obj)./bmp_logo --gen-info $(LOGO_BMP) > $@ 277c270730fSChe-Liang Chiou 278c270730fSChe-Liang Chiou$(LOGO_DATA_H): $(obj)bmp_logo $(LOGO_BMP) 279c270730fSChe-Liang Chiou $(obj)./bmp_logo --gen-data $(LOGO_BMP) > $@ 280efee1709Swdenk 281efee1709Swdenk######################################################################### 282efee1709Swdenk 283f9328639SMarian Balakowicz# defines $(obj).depend target 284f9328639SMarian Balakowiczinclude $(SRCTREE)/rules.mk 285efee1709Swdenk 286f9328639SMarian Balakowiczsinclude $(obj).depend 287efee1709Swdenk 288efee1709Swdenk######################################################################### 289