xref: /aosp_15_r20/external/coreboot/util/cbfstool/Makefile.mk (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
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