diff options
Diffstat (limited to 'util/cbfstool/Makefile.mk')
-rw-r--r-- | util/cbfstool/Makefile.mk | 284 |
1 files changed, 284 insertions, 0 deletions
diff --git a/util/cbfstool/Makefile.mk b/util/cbfstool/Makefile.mk new file mode 100644 index 0000000000..8577874044 --- /dev/null +++ b/util/cbfstool/Makefile.mk @@ -0,0 +1,284 @@ +## SPDX-License-Identifier: GPL-2.0-only +compressionobj := +compressionobj += compress.o +# LZ4 +compressionobj += lz4.o +compressionobj += lz4hc.o +compressionobj += lz4frame.o +compressionobj += xxhash.o +compressionobj += lz4_wrapper.o +# LZMA +compressionobj += lzma.o +compressionobj += LzFind.o +compressionobj += LzmaDec.o +compressionobj += LzmaEnc.o + +cbfsobj := +cbfsobj += cbfstool.o +cbfsobj += common.o +cbfsobj += cbfs_image.o +cbfsobj += cbfs-mkstage.o +cbfsobj += cbfs-mkpayload.o +cbfsobj += elfheaders.o +cbfsobj += rmodule.o +cbfsobj += xdr.o +cbfsobj += partitioned_file.o +cbfsobj += platform_fixups.o +# COMMONLIB +cbfsobj += cbfs_private.o +cbfsobj += fsp_relocate.o +# FMAP +cbfsobj += fmap.o +cbfsobj += kv_pair.o +cbfsobj += valstr.o +# linux as payload +cbfsobj += linux_trampoline.o +cbfsobj += cbfs-payload-linux.o +# compression algorithms +cbfsobj += $(compressionobj) + +fmapobj := +fmapobj += fmaptool.o +fmapobj += cbfs_sections.o +fmapobj += fmap_from_fmd.o +fmapobj += fmd.o +fmapobj += fmd_parser.o +fmapobj += fmd_scanner.o +# FMAP +fmapobj += fmap.o +fmapobj += kv_pair.o +fmapobj += valstr.o + +rmodobj := +rmodobj += rmodtool.o +rmodobj += rmodule.o +rmodobj += common.o +rmodobj += elfheaders.o +rmodobj += xdr.o + +ifwiobj := +ifwiobj += ifwitool.o +ifwiobj += common.o + +ifitobj := +ifitobj += ifittool.o +ifitobj += common.o +ifitobj += fit.o +ifitobj += cbfs_image.o +# Make it link .... +ifitobj += xdr.o +ifitobj += elfheaders.o +ifitobj += partitioned_file.o +ifitobj += cbfs-mkstage.o +ifitobj += cbfs-mkpayload.o +ifitobj += rmodule.o +# FMAP +ifitobj += fmap.o +ifitobj += kv_pair.o +ifitobj += valstr.o +# compression algorithms +ifitobj += $(compressionobj) + + +cbfscompobj := +cbfscompobj += $(compressionobj) +cbfscompobj += cbfscomptool.o + +amdcompobj := +amdcompobj += amdcompress.o +amdcompobj += elfheaders.o +amdcompobj += common.o +amdcompobj += xdr.o + +elogobj := +elogobj := elogtool.o +elogobj += eventlog.o +elogobj += valstr.o +elogobj += elog.o +elogobj += common.o +elogobj += flashrom.o + +include $(top)/util/cbfstool/fpt_formats/Makefile.mk +cse_fpt_obj := +cse_fpt_obj += cse_fpt.o +cse_fpt_obj += common.o +cse_fpt_obj += cse_helpers.o +cse_fpt_obj += $(foreach var, $(fpt_formats_obj), $(var)) + +include $(top)/util/cbfstool/bpdt_formats/Makefile.mk +cse_serger_obj := +cse_serger_obj += cse_serger.o +cse_serger_obj += common.o +cse_serger_obj += cse_helpers.o +cse_serger_obj += $(foreach var, $(bpdt_formats_obj), $(var)) + +TOOLCFLAGS ?= -Werror -Wall -Wextra -Wshadow +TOOLCFLAGS += -Wcast-qual -Wmissing-prototypes -Wredundant-decls -Wshadow +TOOLCFLAGS += -Wstrict-prototypes -Wwrite-strings +TOOLCFLAGS += -O2 +TOOLCPPFLAGS ?= -D_DEFAULT_SOURCE # memccpy() from string.h +TOOLCPPFLAGS += -D_BSD_SOURCE -D_SVID_SOURCE # _DEFAULT_SOURCE for older glibc +TOOLCPPFLAGS += -D_GNU_SOURCE # memmem() from string.h +TOOLCPPFLAGS += -I$(top)/util/cbfstool/flashmap +TOOLCPPFLAGS += -I$(top)/util/cbfstool +TOOLCPPFLAGS += -I$(objutil)/cbfstool +TOOLCPPFLAGS += -I$(top)/src/commonlib/include -I$(top)/src/commonlib/bsd/include +TOOLCPPFLAGS += -include $(top)/src/commonlib/bsd/include/commonlib/bsd/compiler.h +TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/include +TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/2lib/include +TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/host/include +TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/host/lib/include +# UEFI header file support. It's not pretty, but that's what we currently +# have right now. +TOOLCPPFLAGS += -I$(top)/src +TOOLCPPFLAGS += -I$(top)/src/vendorcode/intel/edk2/uefi_2.4/MdePkg/Include + +TOOLLDFLAGS ?= + +ifeq ($(shell uname -s | cut -c-7 2>/dev/null), MINGW32) +HOSTCFLAGS += -fms-extensions +TOOLCFLAGS += -mno-ms-bitfields +endif +ifeq ($(shell uname -o 2>/dev/null), Cygwin) +TOOLCFLAGS+=-std=gnu11 +TOOLCPPFLAGS+=-D_GNU_SOURCE +else +TOOLCFLAGS+=-std=c11 +endif + +LZ4CFLAGS ?= -Wno-strict-prototypes + +VBOOT_HOSTLIB = $(VBOOT_HOST_BUILD)/libvboot_host.a + +$(VBOOT_HOSTLIB): + printf " MAKE $(subst $(objutil)/,,$(@))\n" + unset CFLAGS LDFLAGS; $(MAKE) -C $(VBOOT_SOURCE) \ + BUILD=$(VBOOT_HOST_BUILD) \ + CC="$(HOSTCC)" \ + PKG_CONFIG="true" \ + USE_FLASHROM=0 \ + V=$(V) \ + DEBUG= \ + hostlib + +$(objutil)/cbfstool/%.o: $(objutil)/cbfstool/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< + +$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< + +$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/flashmap/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< + +$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lzma/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< + +$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lzma/C/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< + +$(objutil)/cbfstool/%.o: $(top)/src/commonlib/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< + +$(objutil)/cbfstool/%.o: $(top)/src/commonlib/bsd/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< + +$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lz4/lib/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) $(LZ4CFLAGS) -c -o $@ $< + +$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/fpt_formats/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< + +$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/bpdt_formats/%.c + printf " HOSTCC $(subst $(objutil)/,,$(@))\n" + $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $< + +$(objutil)/cbfstool/cbfstool: $(addprefix $(objutil)/cbfstool/,$(cbfsobj)) $(VBOOT_HOSTLIB) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" + $(HOSTCC) -v $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cbfsobj)) $(VBOOT_HOSTLIB) + +$(objutil)/cbfstool/fmaptool: $(addprefix $(objutil)/cbfstool/,$(fmapobj)) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" + $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(fmapobj)) + +$(objutil)/cbfstool/rmodtool: $(addprefix $(objutil)/cbfstool/,$(rmodobj)) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" + $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(rmodobj)) + +$(objutil)/cbfstool/ifwitool: $(addprefix $(objutil)/cbfstool/,$(ifwiobj)) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" + $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(ifwiobj)) + +$(objutil)/cbfstool/ifittool: $(addprefix $(objutil)/cbfstool/,$(ifitobj)) $(VBOOT_HOSTLIB) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" + $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(ifitobj)) $(VBOOT_HOSTLIB) + +$(objutil)/cbfstool/cbfs-compression-tool: $(addprefix $(objutil)/cbfstool/,$(cbfscompobj)) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" + $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cbfscompobj)) + +$(objutil)/cbfstool/amdcompress: $(addprefix $(objutil)/cbfstool/,$(amdcompobj)) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" + $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(amdcompobj)) -lz + +$(objutil)/cbfstool/elogtool: $(addprefix $(objutil)/cbfstool/,$(elogobj)) $(VBOOT_HOSTLIB) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" + $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(elogobj)) $(VBOOT_HOSTLIB) + +$(objutil)/cbfstool/cse_fpt: $(addprefix $(objutil)/cbfstool/,$(cse_fpt_obj)) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" + $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cse_fpt_obj)) + +$(objutil)/cbfstool/cse_serger: $(addprefix $(objutil)/cbfstool/,$(cse_serger_obj)) + printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" + $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cse_serger_obj)) + +# Yacc source is superset of header +$(objutil)/cbfstool/fmd.o: TOOLCFLAGS += -Wno-redundant-decls +$(objutil)/cbfstool/fmd_parser.o: TOOLCFLAGS += -Wno-redundant-decls +# Lex generates unneeded functions and declarations +$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-redundant-decls +$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-unused-function +# Tolerate lzma sdk warnings +$(objutil)/cbfstool/LzmaEnc.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual +# Tolerate commonlib warnings +$(objutil)/cbfstool/cbfs_private.o: TOOLCFLAGS += -Wno-sign-compare +# Tolerate lz4 warnings +$(objutil)/cbfstool/lz4.o: TOOLCFLAGS += -Wno-missing-prototypes +$(objutil)/cbfstool/lz4_wrapper.o: TOOLCFLAGS += -Wno-attributes + +$(objutil)/cbfstool/fmd.o: $(objutil)/cbfstool/fmd_parser.h +$(objutil)/cbfstool/fmd.o: $(objutil)/cbfstool/fmd_scanner.h +$(objutil)/cbfstool/fmd_parser.o: $(objutil)/cbfstool/fmd.o +$(objutil)/cbfstool/fmd_scanner.o: $(objutil)/cbfstool/fmd.o +$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-sign-compare + +$(objutil)/cbfstool/%: $(top)/util/cbfstool/%_shipped + mkdir -p $(dir $@) + cp $< $@ + +ifeq ($(CONFIG_FMD_GENPARSER),y) +TOOLLEX := lex +TOOLYACC := bison + +# the .c rule also creates .h +$(top)/util/cbfstool/fmd_scanner.h_shipped: $(top)/util/cbfstool/fmd_scanner.c_shipped +$(top)/util/cbfstool/fmd_scanner.c_shipped: $(top)/util/cbfstool/fmd_scanner.l + echo " LEX util/cbfstool/fmd_scanner.[ch]" + $(TOOLLEX) -L -o $@ --header-file=$(patsubst %.c_shipped,%.h_shipped,$@) $< + +# the .c rule also creates .h +$(top)/util/cbfstool/fmd_parser.h_shipped: $(top)/util/cbfstool/fmd_parser.c_shipped +$(top)/util/cbfstool/fmd_parser.c_shipped: $(top)/util/cbfstool/fmd_parser.y + echo " YACC util/cbfstool/fmd_parser.[ch]" + $(TOOLYACC) -l -o $@ --defines=$(patsubst %.c_shipped,%.h_shipped,$@) $< + +endif # CONFIG_FMD_GENPARSER |