blob: 066ef3495c6b23f228e2dfd641ae879336a32939 [file] [log] [blame]
Patrick Georgic88d16b2017-01-11 15:26:58 +01001compressionobj :=
2compressionobj += compress.o
3# LZ4
4compressionobj += lz4.o
5compressionobj += lz4hc.o
6compressionobj += lz4frame.o
7compressionobj += xxhash.o
8compressionobj += lz4_wrapper.o
9# LZMA
10compressionobj += lzma.o
11compressionobj += LzFind.o
12compressionobj += LzmaDec.o
13compressionobj += LzmaEnc.o
14
Patrick Georgi0588d192009-08-12 15:00:51 +000015cbfsobj :=
Stefan Reinauer2e200cd2012-10-30 14:02:45 -070016cbfsobj += cbfstool.o
Patrick Georgib7b56dd82009-09-14 13:29:27 +000017cbfsobj += common.o
Hung-Te Lineab2c812013-01-29 01:56:17 +080018cbfsobj += cbfs_image.o
Patrick Georgib7b56dd82009-09-14 13:29:27 +000019cbfsobj += cbfs-mkstage.o
20cbfsobj += cbfs-mkpayload.o
Ronald G. Minnicha8a133d2013-12-30 13:16:18 -080021cbfsobj += elfheaders.o
Aaron Durbin4be16742015-09-15 17:00:23 -050022cbfsobj += rmodule.o
Ronald G. Minnichaa2f7392013-12-03 11:13:35 -080023cbfsobj += xdr.o
Sol Bouchere3260a02015-03-25 13:40:08 -070024cbfsobj += partitioned_file.o
Julius Werner09f29212015-09-29 13:51:35 -070025# COMMONLIB
26cbfsobj += cbfs.o
Furquan Shaikhb0c2fe02016-05-09 12:23:01 -070027cbfsobj += fsp_relocate.o
Julius Werner09f29212015-09-29 13:51:35 -070028cbfsobj += mem_pool.o
29cbfsobj += region.o
Patrick Georgi89f20342015-10-01 15:54:04 +020030# CRYPTOLIB
31cbfsobj += 2sha_utility.o
32cbfsobj += 2sha1.o
33cbfsobj += 2sha256.o
34cbfsobj += 2sha512.o
Sol Bouchere3260a02015-03-25 13:40:08 -070035# FMAP
36cbfsobj += fmap.o
37cbfsobj += kv_pair.o
38cbfsobj += valstr.o
Patrick Georgide36d332013-08-27 20:22:21 +020039# linux as payload
40cbfsobj += linux_trampoline.o
41cbfsobj += cbfs-payload-linux.o
Patrick Georgic88d16b2017-01-11 15:26:58 +010042# compression algorithms
43cbfsobj += $(compressionobj)
Patrick Georgi0588d192009-08-12 15:00:51 +000044
Sol Boucher69b88bf2015-02-26 11:47:19 -080045fmapobj :=
46fmapobj += fmaptool.o
Sol Boucher023e8292015-03-18 10:13:48 -070047fmapobj += cbfs_sections.o
Sol Boucher69b88bf2015-02-26 11:47:19 -080048fmapobj += fmap_from_fmd.o
49fmapobj += fmd.o
50fmapobj += fmd_parser.o
51fmapobj += fmd_scanner.o
52# FMAP
53fmapobj += fmap.o
54fmapobj += kv_pair.o
55fmapobj += valstr.o
56
Sol Boucher0e539312015-03-05 15:38:03 -080057rmodobj :=
Aaron Durbin4fde5a62014-03-07 15:11:53 -060058rmodobj += rmodtool.o
59rmodobj += rmodule.o
60rmodobj += common.o
61rmodobj += elfheaders.o
62rmodobj += xdr.o
63
Furquan Shaikh233f1b62016-05-19 16:12:16 -070064ifwiobj :=
65ifwiobj += ifwitool.o
66ifwiobj += common.o
67
Philipp Deppenwiese5ada0022018-11-20 13:54:49 +010068ifitobj :=
69ifitobj += ifittool.o
70ifitobj += common.o
71ifitobj += fit.o
72ifitobj += cbfs_image.o
73# Make it link ....
74ifitobj += xdr.o
75ifitobj += elfheaders.o
76ifitobj += partitioned_file.o
77ifitobj += cbfs-mkstage.o
78ifitobj += cbfs-mkpayload.o
79ifitobj += rmodule.o
80# COMMONLIB
81ifitobj += cbfs.o
82ifitobj += mem_pool.o
83ifitobj += region.o
84# CRYPTOLIB
85ifitobj += 2sha_utility.o
86ifitobj += 2sha1.o
87ifitobj += 2sha256.o
88ifitobj += 2sha512.o
89# FMAP
90ifitobj += fmap.o
91ifitobj += kv_pair.o
92ifitobj += valstr.o
93# compression algorithms
94ifitobj += $(compressionobj)
95
96
Patrick Georgic88d16b2017-01-11 15:26:58 +010097cbfscompobj :=
98cbfscompobj += $(compressionobj)
99cbfscompobj += cbfscomptool.o
100
Marshall Dawson30cf1552019-03-19 14:48:33 -0600101amdcompobj :=
102amdcompobj += amdcompress.o
103amdcompobj += elfheaders.o
104amdcompobj += common.o
105amdcompobj += xdr.o
106
Stefan Reinauer354c11d2015-09-15 17:41:07 -0700107TOOLCFLAGS ?= -Werror -Wall -Wextra
Sol Boucher0e539312015-03-05 15:38:03 -0800108TOOLCFLAGS += -Wcast-qual -Wmissing-prototypes -Wredundant-decls -Wshadow
109TOOLCFLAGS += -Wstrict-prototypes -Wwrite-strings
Patrick Georgi8474e7d2017-01-11 17:17:18 +0100110TOOLCFLAGS += -O2
Sol Boucher69b88bf2015-02-26 11:47:19 -0800111TOOLCPPFLAGS ?= -D_DEFAULT_SOURCE # memccpy() from string.h
Jonathan A. Kollasch9d6a17b2015-07-06 08:29:00 -0500112TOOLCPPFLAGS += -D_XOPEN_SOURCE=700 # strdup() from string.h
Sol Boucher69b88bf2015-02-26 11:47:19 -0800113TOOLCPPFLAGS += -I$(top)/util/cbfstool/flashmap
Patrick Georgi7b321452015-05-19 16:43:05 +0200114TOOLCPPFLAGS += -I$(top)/util/cbfstool
115TOOLCPPFLAGS += -I$(objutil)/cbfstool
Paul Kocialkowski34ce4382015-09-24 19:00:47 +0200116TOOLCPPFLAGS += -I$(top)/src/commonlib/include
Nico Huberd44221f2018-10-04 23:42:42 +0200117TOOLCPPFLAGS += -include $(top)/src/commonlib/include/commonlib/compiler.h
Paul Kocialkowski61486b52016-07-24 12:14:38 +0200118TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/include
119TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/2lib/include
Aaron Durbin8a414a02015-10-01 17:02:45 -0500120# UEFI header file support. It's not pretty, but that's what we currently
121# have right now.
122TOOLCPPFLAGS += -I$(top)/src
123TOOLCPPFLAGS += -I$(top)/src/vendorcode/intel/edk2/uefi_2.4/MdePkg/Include
124
Paul Menzel6548ae92015-05-03 09:35:32 +0200125TOOLLDFLAGS ?=
Werner Zeh8c3780a2015-10-02 09:56:32 +0200126HOSTCFLAGS += -fms-extensions
Sol Boucher0e539312015-03-05 15:38:03 -0800127
Zheng Baoc31cdd82012-10-22 16:39:24 +0800128ifeq ($(shell uname -s | cut -c-7 2>/dev/null), MINGW32)
Patrick Georgicdeb1c42015-09-16 16:19:26 +0200129TOOLCFLAGS += -mno-ms-bitfields
Zheng Baoc31cdd82012-10-22 16:39:24 +0800130endif
Stefan Reinauer354c11d2015-09-15 17:41:07 -0700131ifeq ($(shell uname -o 2>/dev/null), Cygwin)
Julius Werner3833f0f2019-12-11 22:01:32 -0800132TOOLCFLAGS+=-std=gnu11
Stefan Reinauer354c11d2015-09-15 17:41:07 -0700133TOOLCPPFLAGS+=-D_GNU_SOURCE
134else
Julius Werner3833f0f2019-12-11 22:01:32 -0800135TOOLCFLAGS+=-std=c11
Stefan Reinauer354c11d2015-09-15 17:41:07 -0700136endif
Zheng Baoc31cdd82012-10-22 16:39:24 +0800137
Patrick Georgi7b321452015-05-19 16:43:05 +0200138$(objutil)/cbfstool/%.o: $(objutil)/cbfstool/%.c
139 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
140 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
141
Patrick Georgia2acbc72010-04-16 22:48:57 +0000142$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/%.c
143 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
Sol Boucher0e539312015-03-05 15:38:03 -0800144 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
Patrick Georgi0588d192009-08-12 15:00:51 +0000145
Sol Boucher69b88bf2015-02-26 11:47:19 -0800146$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/flashmap/%.c
147 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
148 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
149
Stefan Reinaueraa3f7ba2013-03-28 16:51:45 -0700150$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lzma/%.c
151 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
Sol Boucher0e539312015-03-05 15:38:03 -0800152 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
Patrick Georgib7b56dd82009-09-14 13:29:27 +0000153
Stefan Reinauer2e200cd2012-10-30 14:02:45 -0700154$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lzma/C/%.c
Zheng Baoa182cbd2012-12-14 15:44:59 +0800155 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
Sol Boucher0e539312015-03-05 15:38:03 -0800156 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
Patrick Georgib7b56dd82009-09-14 13:29:27 +0000157
Paul Kocialkowski61486b52016-07-24 12:14:38 +0200158$(objutil)/cbfstool/%.o: $(VBOOT_SOURCE)/firmware/2lib/%.c
Patrick Georgi89f20342015-10-01 15:54:04 +0200159 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
160 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
161
Aaron Durbin8a414a02015-10-01 17:02:45 -0500162$(objutil)/cbfstool/%.o: $(top)/src/commonlib/%.c
163 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
164 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
165
Julius Werner09f29212015-09-29 13:51:35 -0700166$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lz4/lib/%.c
167 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
Nico Huberd44221f2018-10-04 23:42:42 +0200168 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
Julius Werner09f29212015-09-29 13:51:35 -0700169
Patrick Georgi913e1712014-07-15 12:28:12 +0200170$(objutil)/cbfstool/cbfstool: $(addprefix $(objutil)/cbfstool/,$(cbfsobj))
Stefan Reinaueraa3f7ba2013-03-28 16:51:45 -0700171 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
Paul Menzel6548ae92015-05-03 09:35:32 +0200172 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cbfsobj))
Aaron Durbin4fde5a62014-03-07 15:11:53 -0600173
Sol Boucher69b88bf2015-02-26 11:47:19 -0800174$(objutil)/cbfstool/fmaptool: $(addprefix $(objutil)/cbfstool/,$(fmapobj))
175 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
176 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(fmapobj))
177
Patrick Georgi913e1712014-07-15 12:28:12 +0200178$(objutil)/cbfstool/rmodtool: $(addprefix $(objutil)/cbfstool/,$(rmodobj))
Aaron Durbin4fde5a62014-03-07 15:11:53 -0600179 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
Paul Menzel6548ae92015-05-03 09:35:32 +0200180 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(rmodobj))
Sol Boucher0e539312015-03-05 15:38:03 -0800181
Furquan Shaikh233f1b62016-05-19 16:12:16 -0700182$(objutil)/cbfstool/ifwitool: $(addprefix $(objutil)/cbfstool/,$(ifwiobj))
183 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
184 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(ifwiobj))
185
Philipp Deppenwiese5ada0022018-11-20 13:54:49 +0100186$(objutil)/cbfstool/ifittool: $(addprefix $(objutil)/cbfstool/,$(ifitobj))
187 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
188 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(ifitobj))
189
Patrick Georgic88d16b2017-01-11 15:26:58 +0100190$(objutil)/cbfstool/cbfs-compression-tool: $(addprefix $(objutil)/cbfstool/,$(cbfscompobj))
191 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
192 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cbfscompobj))
193
Marshall Dawson30cf1552019-03-19 14:48:33 -0600194$(objutil)/cbfstool/amdcompress: $(addprefix $(objutil)/cbfstool/,$(amdcompobj))
195 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
196 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(amdcompobj)) -lz
197
Sol Boucher69b88bf2015-02-26 11:47:19 -0800198# Yacc source is superset of header
Kyösti Mälkkic8771492015-05-09 08:06:02 +0300199$(objutil)/cbfstool/fmd.o: TOOLCFLAGS += -Wno-redundant-decls
Sol Boucher69b88bf2015-02-26 11:47:19 -0800200$(objutil)/cbfstool/fmd_parser.o: TOOLCFLAGS += -Wno-redundant-decls
Kyösti Mälkkic8771492015-05-09 08:06:02 +0300201# Lex generates unneeded functions and declarations
202$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-redundant-decls
Sol Boucher69b88bf2015-02-26 11:47:19 -0800203$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-unused-function
Sol Boucher0e539312015-03-05 15:38:03 -0800204# Tolerate lzma sdk warnings
205$(objutil)/cbfstool/LzmaEnc.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual
Patrick Georgi89f20342015-10-01 15:54:04 +0200206# Tolerate vboot warnings
207$(objutil)/cbfstool/2sha_utility.o: TOOLCFLAGS += -Wno-sign-compare
208$(objutil)/cbfstool/2sha1.o: TOOLCFLAGS += -Wno-cast-qual
Aaron Durbin272a1f02015-12-15 18:00:30 -0600209# Tolerate commonlib warnings
210$(objutil)/cbfstool/region.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual
211$(objutil)/cbfstool/cbfs.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual
212$(objutil)/cbfstool/mem_pool.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual
Julius Werner09f29212015-09-29 13:51:35 -0700213# Tolerate lz4 warnings
214$(objutil)/cbfstool/lz4.o: TOOLCFLAGS += -Wno-missing-prototypes
Nico Huber591dbfe2019-12-14 20:44:47 +0100215$(objutil)/cbfstool/lz4_wrapper.o: TOOLCFLAGS += -Wno-attributes
Sol Boucher69b88bf2015-02-26 11:47:19 -0800216
Patrick Georgi7b321452015-05-19 16:43:05 +0200217$(objutil)/cbfstool/fmd.o: $(objutil)/cbfstool/fmd_parser.h
218$(objutil)/cbfstool/fmd.o: $(objutil)/cbfstool/fmd_scanner.h
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300219$(objutil)/cbfstool/fmd_parser.o: $(objutil)/cbfstool/fmd.o
220$(objutil)/cbfstool/fmd_scanner.o: $(objutil)/cbfstool/fmd.o
Patrick Georgi2b807342016-06-28 20:45:34 +0200221$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-sign-compare
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300222
Patrick Georgi7b321452015-05-19 16:43:05 +0200223$(objutil)/cbfstool/%: $(top)/util/cbfstool/%_shipped
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300224 mkdir -p $(dir $@)
225 cp $< $@
226
Sol Boucher69b88bf2015-02-26 11:47:19 -0800227ifeq ($(CONFIG_FMD_GENPARSER),y)
228TOOLLEX := lex
229TOOLYACC := yacc
230
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300231# the .c rule also creates .h
232$(top)/util/cbfstool/fmd_scanner.h_shipped: $(top)/util/cbfstool/fmd_scanner.c_shipped
233$(top)/util/cbfstool/fmd_scanner.c_shipped: $(top)/util/cbfstool/fmd_scanner.l
Sol Boucher69b88bf2015-02-26 11:47:19 -0800234 echo " LEX util/cbfstool/fmd_scanner.[ch]"
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300235 $(TOOLLEX) -t --header-file=$(top)/util/cbfstool/fmd_scanner.h_shipped $< >$(top)/util/cbfstool/fmd_scanner.c_shipped
236
237# the .c rule also creates .h
238$(top)/util/cbfstool/fmd_parser.h_shipped: $(top)/util/cbfstool/fmd_parser.c_shipped
239$(top)/util/cbfstool/fmd_parser.c_shipped: $(top)/util/cbfstool/fmd_parser.y
Sol Boucher69b88bf2015-02-26 11:47:19 -0800240 echo " YACC util/cbfstool/fmd_parser.[ch]"
241 $(TOOLYACC) -d $<
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300242 mv -f y.tab.c $(top)/util/cbfstool/fmd_parser.c_shipped
243 mv -f y.tab.h $(top)/util/cbfstool/fmd_parser.h_shipped
244
245endif # CONFIG_FMD_GENPARSER