summaryrefslogtreecommitdiff
path: root/util/cbfstool/Makefile.mk
diff options
context:
space:
mode:
Diffstat (limited to 'util/cbfstool/Makefile.mk')
-rw-r--r--util/cbfstool/Makefile.mk284
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