1## SPDX-License-Identifier: GPL-2.0-only 2compressionobj := 3compressionobj += compress.o 4# LZ4 5compressionobj += lz4.o 6compressionobj += lz4hc.o 7compressionobj += lz4frame.o 8compressionobj += xxhash.o 9compressionobj += lz4_wrapper.o 10# LZMA 11compressionobj += lzma.o 12compressionobj += LzFind.o 13compressionobj += LzmaDec.o 14compressionobj += LzmaEnc.o 15 16cbfsobj := 17cbfsobj += cbfstool.o 18cbfsobj += common.o 19cbfsobj += cbfs_image.o 20cbfsobj += cbfs-mkstage.o 21cbfsobj += cbfs-mkpayload.o 22cbfsobj += elfheaders.o 23cbfsobj += rmodule.o 24cbfsobj += xdr.o 25cbfsobj += partitioned_file.o 26cbfsobj += platform_fixups.o 27# COMMONLIB 28cbfsobj += cbfs_private.o 29cbfsobj += fsp_relocate.o 30# FMAP 31cbfsobj += fmap.o 32cbfsobj += kv_pair.o 33cbfsobj += valstr.o 34# linux as payload 35cbfsobj += linux_trampoline.o 36cbfsobj += cbfs-payload-linux.o 37# compression algorithms 38cbfsobj += $(compressionobj) 39 40fmapobj := 41fmapobj += fmaptool.o 42fmapobj += cbfs_sections.o 43fmapobj += fmap_from_fmd.o 44fmapobj += fmd.o 45fmapobj += fmd_parser.o 46fmapobj += fmd_scanner.o 47# FMAP 48fmapobj += fmap.o 49fmapobj += kv_pair.o 50fmapobj += valstr.o 51 52rmodobj := 53rmodobj += rmodtool.o 54rmodobj += rmodule.o 55rmodobj += common.o 56rmodobj += elfheaders.o 57rmodobj += xdr.o 58 59ifwiobj := 60ifwiobj += ifwitool.o 61ifwiobj += common.o 62 63ifitobj := 64ifitobj += ifittool.o 65ifitobj += common.o 66ifitobj += fit.o 67ifitobj += cbfs_image.o 68# Make it link .... 69ifitobj += xdr.o 70ifitobj += elfheaders.o 71ifitobj += partitioned_file.o 72ifitobj += cbfs-mkstage.o 73ifitobj += cbfs-mkpayload.o 74ifitobj += rmodule.o 75# FMAP 76ifitobj += fmap.o 77ifitobj += kv_pair.o 78ifitobj += valstr.o 79# compression algorithms 80ifitobj += $(compressionobj) 81 82 83cbfscompobj := 84cbfscompobj += $(compressionobj) 85cbfscompobj += cbfscomptool.o 86 87amdcompobj := 88amdcompobj += amdcompress.o 89amdcompobj += elfheaders.o 90amdcompobj += common.o 91amdcompobj += xdr.o 92 93elogobj := 94elogobj := elogtool.o 95elogobj += eventlog.o 96elogobj += valstr.o 97elogobj += elog.o 98elogobj += common.o 99elogobj += flashrom.o 100 101include $(top)/util/cbfstool/fpt_formats/Makefile.mk 102cse_fpt_obj := 103cse_fpt_obj += cse_fpt.o 104cse_fpt_obj += common.o 105cse_fpt_obj += cse_helpers.o 106cse_fpt_obj += $(foreach var, $(fpt_formats_obj), $(var)) 107 108include $(top)/util/cbfstool/bpdt_formats/Makefile.mk 109cse_serger_obj := 110cse_serger_obj += cse_serger.o 111cse_serger_obj += common.o 112cse_serger_obj += cse_helpers.o 113cse_serger_obj += $(foreach var, $(bpdt_formats_obj), $(var)) 114 115TOOLCFLAGS ?= -Werror -Wall -Wextra -Wshadow 116TOOLCFLAGS += -Wcast-qual -Wmissing-prototypes -Wredundant-decls -Wshadow 117TOOLCFLAGS += -Wstrict-prototypes -Wwrite-strings 118TOOLCFLAGS += -O2 119TOOLCPPFLAGS ?= -D_DEFAULT_SOURCE # memccpy() from string.h 120TOOLCPPFLAGS += -D_BSD_SOURCE -D_SVID_SOURCE # _DEFAULT_SOURCE for older glibc 121TOOLCPPFLAGS += -D_GNU_SOURCE # memmem() from string.h 122TOOLCPPFLAGS += -I$(top)/util/cbfstool/flashmap 123TOOLCPPFLAGS += -I$(top)/util/cbfstool 124TOOLCPPFLAGS += -I$(objutil)/cbfstool 125TOOLCPPFLAGS += -I$(top)/src/commonlib/include -I$(top)/src/commonlib/bsd/include 126TOOLCPPFLAGS += -include $(top)/src/commonlib/bsd/include/commonlib/bsd/compiler.h 127TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/include 128TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/2lib/include 129TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/host/include 130TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/host/lib/include 131# UEFI header file support. It's not pretty, but that's what we currently 132# have right now. 133TOOLCPPFLAGS += -I$(top)/src 134TOOLCPPFLAGS += -I$(top)/src/vendorcode/intel/edk2/uefi_2.4/MdePkg/Include 135 136TOOLLDFLAGS ?= 137 138ifeq ($(shell uname -s | cut -c-7 2>/dev/null), MINGW32) 139HOSTCFLAGS += -fms-extensions 140TOOLCFLAGS += -mno-ms-bitfields 141endif 142ifeq ($(shell uname -o 2>/dev/null), Cygwin) 143TOOLCFLAGS+=-std=gnu11 144TOOLCPPFLAGS+=-D_GNU_SOURCE 145else 146TOOLCFLAGS+=-std=c11 147endif 148 149LZ4CFLAGS ?= -Wno-strict-prototypes 150 151VBOOT_HOSTLIB = $(VBOOT_HOST_BUILD)/libvboot_host.a 152 153$(VBOOT_HOSTLIB): 154 printf " MAKE $(subst $(objutil)/,,$(@))\n" 155 unset CFLAGS LDFLAGS; $(MAKE) -C $(VBOOT_SOURCE) \ 156 BUILD=$(VBOOT_HOST_BUILD) \ 157 CC="$(HOSTCC)" \ 158 PKG_CONFIG="true" \ 159 USE_FLASHROM=0 \ 160 V=$(V) \ 161 DEBUG= \ 162 hostlib 163 164$(objutil)/cbfstool/%.o: $(objutil)/cbfstool/%.c 165 printf " HOSTCC $(subst $(objutil)/,,$(@))\n" 166 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< 167 168$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/%.c 169 printf " HOSTCC $(subst $(objutil)/,,$(@))\n" 170 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< 171 172$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/flashmap/%.c 173 printf " HOSTCC $(subst $(objutil)/,,$(@))\n" 174 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< 175 176$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lzma/%.c 177 printf " HOSTCC $(subst $(objutil)/,,$(@))\n" 178 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< 179 180$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lzma/C/%.c 181 printf " HOSTCC $(subst $(objutil)/,,$(@))\n" 182 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< 183 184$(objutil)/cbfstool/%.o: $(top)/src/commonlib/%.c 185 printf " HOSTCC $(subst $(objutil)/,,$(@))\n" 186 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< 187 188$(objutil)/cbfstool/%.o: $(top)/src/commonlib/bsd/%.c 189 printf " HOSTCC $(subst $(objutil)/,,$(@))\n" 190 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< 191 192$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lz4/lib/%.c 193 printf " HOSTCC $(subst $(objutil)/,,$(@))\n" 194 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) $(LZ4CFLAGS) -c -o $@ $< 195 196$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/fpt_formats/%.c 197 printf " HOSTCC $(subst $(objutil)/,,$(@))\n" 198 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< 199 200$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/bpdt_formats/%.c 201 printf " HOSTCC $(subst $(objutil)/,,$(@))\n" 202 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< 203 204$(objutil)/cbfstool/cbfstool: $(addprefix $(objutil)/cbfstool/,$(cbfsobj)) $(VBOOT_HOSTLIB) 205 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" 206 $(HOSTCC) -v $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cbfsobj)) $(VBOOT_HOSTLIB) 207 208$(objutil)/cbfstool/fmaptool: $(addprefix $(objutil)/cbfstool/,$(fmapobj)) 209 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" 210 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(fmapobj)) 211 212$(objutil)/cbfstool/rmodtool: $(addprefix $(objutil)/cbfstool/,$(rmodobj)) 213 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" 214 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(rmodobj)) 215 216$(objutil)/cbfstool/ifwitool: $(addprefix $(objutil)/cbfstool/,$(ifwiobj)) 217 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" 218 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(ifwiobj)) 219 220$(objutil)/cbfstool/ifittool: $(addprefix $(objutil)/cbfstool/,$(ifitobj)) $(VBOOT_HOSTLIB) 221 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" 222 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(ifitobj)) $(VBOOT_HOSTLIB) 223 224$(objutil)/cbfstool/cbfs-compression-tool: $(addprefix $(objutil)/cbfstool/,$(cbfscompobj)) 225 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" 226 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cbfscompobj)) 227 228$(objutil)/cbfstool/amdcompress: $(addprefix $(objutil)/cbfstool/,$(amdcompobj)) 229 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" 230 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(amdcompobj)) -lz 231 232$(objutil)/cbfstool/elogtool: $(addprefix $(objutil)/cbfstool/,$(elogobj)) $(VBOOT_HOSTLIB) 233 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" 234 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(elogobj)) $(VBOOT_HOSTLIB) 235 236$(objutil)/cbfstool/cse_fpt: $(addprefix $(objutil)/cbfstool/,$(cse_fpt_obj)) 237 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" 238 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cse_fpt_obj)) 239 240$(objutil)/cbfstool/cse_serger: $(addprefix $(objutil)/cbfstool/,$(cse_serger_obj)) 241 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" 242 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cse_serger_obj)) 243 244# Yacc source is superset of header 245$(objutil)/cbfstool/fmd.o: TOOLCFLAGS += -Wno-redundant-decls 246$(objutil)/cbfstool/fmd_parser.o: TOOLCFLAGS += -Wno-redundant-decls 247# Lex generates unneeded functions and declarations 248$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-redundant-decls 249$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-unused-function 250# Tolerate lzma sdk warnings 251$(objutil)/cbfstool/LzmaEnc.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual 252# Tolerate commonlib warnings 253$(objutil)/cbfstool/cbfs_private.o: TOOLCFLAGS += -Wno-sign-compare 254# Tolerate lz4 warnings 255$(objutil)/cbfstool/lz4.o: TOOLCFLAGS += -Wno-missing-prototypes 256$(objutil)/cbfstool/lz4_wrapper.o: TOOLCFLAGS += -Wno-attributes 257 258$(objutil)/cbfstool/fmd.o: $(objutil)/cbfstool/fmd_parser.h 259$(objutil)/cbfstool/fmd.o: $(objutil)/cbfstool/fmd_scanner.h 260$(objutil)/cbfstool/fmd_parser.o: $(objutil)/cbfstool/fmd.o 261$(objutil)/cbfstool/fmd_scanner.o: $(objutil)/cbfstool/fmd.o 262$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-sign-compare 263 264$(objutil)/cbfstool/%: $(top)/util/cbfstool/%_shipped 265 mkdir -p $(dir $@) 266 cp $< $@ 267 268ifeq ($(CONFIG_FMD_GENPARSER),y) 269TOOLLEX := lex 270TOOLYACC := bison 271 272# the .c rule also creates .h 273$(top)/util/cbfstool/fmd_scanner.h_shipped: $(top)/util/cbfstool/fmd_scanner.c_shipped 274$(top)/util/cbfstool/fmd_scanner.c_shipped: $(top)/util/cbfstool/fmd_scanner.l 275 echo " LEX util/cbfstool/fmd_scanner.[ch]" 276 $(TOOLLEX) -L -o $@ --header-file=$(patsubst %.c_shipped,%.h_shipped,$@) $< 277 278# the .c rule also creates .h 279$(top)/util/cbfstool/fmd_parser.h_shipped: $(top)/util/cbfstool/fmd_parser.c_shipped 280$(top)/util/cbfstool/fmd_parser.c_shipped: $(top)/util/cbfstool/fmd_parser.y 281 echo " YACC util/cbfstool/fmd_parser.[ch]" 282 $(TOOLYACC) -l -o $@ --defines=$(patsubst %.c_shipped,%.h_shipped,$@) $< 283 284endif # CONFIG_FMD_GENPARSER 285