blob: f38c8258a666f6a3eeffbfbc7dc90f4a9ba63696 [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
Sol Bouchere3260a02015-03-25 13:40:08 -070030# FMAP
31cbfsobj += fmap.o
32cbfsobj += kv_pair.o
33cbfsobj += valstr.o
Patrick Georgide36d332013-08-27 20:22:21 +020034# linux as payload
35cbfsobj += linux_trampoline.o
36cbfsobj += cbfs-payload-linux.o
Patrick Georgic88d16b2017-01-11 15:26:58 +010037# compression algorithms
38cbfsobj += $(compressionobj)
Patrick Georgi0588d192009-08-12 15:00:51 +000039
Sol Boucher69b88bf2015-02-26 11:47:19 -080040fmapobj :=
41fmapobj += fmaptool.o
Sol Boucher023e8292015-03-18 10:13:48 -070042fmapobj += cbfs_sections.o
Sol Boucher69b88bf2015-02-26 11:47:19 -080043fmapobj += 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
Sol Boucher0e539312015-03-05 15:38:03 -080052rmodobj :=
Aaron Durbin4fde5a62014-03-07 15:11:53 -060053rmodobj += rmodtool.o
54rmodobj += rmodule.o
55rmodobj += common.o
56rmodobj += elfheaders.o
57rmodobj += xdr.o
58
Furquan Shaikh233f1b62016-05-19 16:12:16 -070059ifwiobj :=
60ifwiobj += ifwitool.o
61ifwiobj += common.o
62
Philipp Deppenwiese5ada0022018-11-20 13:54:49 +010063ifitobj :=
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# COMMONLIB
76ifitobj += cbfs.o
77ifitobj += mem_pool.o
78ifitobj += region.o
Philipp Deppenwiese5ada0022018-11-20 13:54:49 +010079# FMAP
80ifitobj += fmap.o
81ifitobj += kv_pair.o
82ifitobj += valstr.o
83# compression algorithms
84ifitobj += $(compressionobj)
85
86
Patrick Georgic88d16b2017-01-11 15:26:58 +010087cbfscompobj :=
88cbfscompobj += $(compressionobj)
89cbfscompobj += cbfscomptool.o
90
Marshall Dawson30cf1552019-03-19 14:48:33 -060091amdcompobj :=
92amdcompobj += amdcompress.o
93amdcompobj += elfheaders.o
94amdcompobj += common.o
95amdcompobj += xdr.o
96
Stefan Reinauer354c11d2015-09-15 17:41:07 -070097TOOLCFLAGS ?= -Werror -Wall -Wextra
Sol Boucher0e539312015-03-05 15:38:03 -080098TOOLCFLAGS += -Wcast-qual -Wmissing-prototypes -Wredundant-decls -Wshadow
99TOOLCFLAGS += -Wstrict-prototypes -Wwrite-strings
Patrick Georgi8474e7d2017-01-11 17:17:18 +0100100TOOLCFLAGS += -O2
Sol Boucher69b88bf2015-02-26 11:47:19 -0800101TOOLCPPFLAGS ?= -D_DEFAULT_SOURCE # memccpy() from string.h
Julius Wernerd6900a92020-01-29 11:34:44 -0800102TOOLCPPFLAGS += -D_BSD_SOURCE -D_SVID_SOURCE # _DEFAULT_SOURCE for older glibc
Jonathan A. Kollasch9d6a17b2015-07-06 08:29:00 -0500103TOOLCPPFLAGS += -D_XOPEN_SOURCE=700 # strdup() from string.h
Sol Boucher69b88bf2015-02-26 11:47:19 -0800104TOOLCPPFLAGS += -I$(top)/util/cbfstool/flashmap
Patrick Georgi7b321452015-05-19 16:43:05 +0200105TOOLCPPFLAGS += -I$(top)/util/cbfstool
106TOOLCPPFLAGS += -I$(objutil)/cbfstool
Julius Werner98eeb962019-12-11 15:47:42 -0800107TOOLCPPFLAGS += -I$(top)/src/commonlib/include -I$(top)/src/commonlib/bsd/include
108TOOLCPPFLAGS += -include $(top)/src/commonlib/bsd/include/commonlib/bsd/compiler.h
Paul Kocialkowski61486b52016-07-24 12:14:38 +0200109TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/include
110TOOLCPPFLAGS += -I$(VBOOT_SOURCE)/firmware/2lib/include
Aaron Durbin8a414a02015-10-01 17:02:45 -0500111# UEFI header file support. It's not pretty, but that's what we currently
112# have right now.
113TOOLCPPFLAGS += -I$(top)/src
114TOOLCPPFLAGS += -I$(top)/src/vendorcode/intel/edk2/uefi_2.4/MdePkg/Include
115
Paul Menzel6548ae92015-05-03 09:35:32 +0200116TOOLLDFLAGS ?=
Werner Zeh8c3780a2015-10-02 09:56:32 +0200117HOSTCFLAGS += -fms-extensions
Sol Boucher0e539312015-03-05 15:38:03 -0800118
Zheng Baoc31cdd82012-10-22 16:39:24 +0800119ifeq ($(shell uname -s | cut -c-7 2>/dev/null), MINGW32)
Patrick Georgicdeb1c42015-09-16 16:19:26 +0200120TOOLCFLAGS += -mno-ms-bitfields
Zheng Baoc31cdd82012-10-22 16:39:24 +0800121endif
Stefan Reinauer354c11d2015-09-15 17:41:07 -0700122ifeq ($(shell uname -o 2>/dev/null), Cygwin)
Julius Werner3833f0f2019-12-11 22:01:32 -0800123TOOLCFLAGS+=-std=gnu11
Stefan Reinauer354c11d2015-09-15 17:41:07 -0700124TOOLCPPFLAGS+=-D_GNU_SOURCE
125else
Julius Werner3833f0f2019-12-11 22:01:32 -0800126TOOLCFLAGS+=-std=c11
Stefan Reinauer354c11d2015-09-15 17:41:07 -0700127endif
Zheng Baoc31cdd82012-10-22 16:39:24 +0800128
Yu-Ping Wu0beddb52020-03-09 10:58:37 +0800129VBOOT_HOSTLIB = $(VBOOT_HOST_BUILD)/libvboot_host.a
130
131$(VBOOT_HOSTLIB):
132 printf " MAKE $(subst $(objutil)/,,$(@))\n"
133 unset CFLAGS LDFLAGS; $(MAKE) -C $(VBOOT_SOURCE) \
134 BUILD=$(VBOOT_HOST_BUILD) \
135 CC="$(HOSTCC)" \
136 $(if $(HOSTPKGCONFIG), PKG_CONFIG="$(HOSTPKGCONFIG)") \
137 V=$(V) \
138 hostlib
139
Patrick Georgi7b321452015-05-19 16:43:05 +0200140$(objutil)/cbfstool/%.o: $(objutil)/cbfstool/%.c
141 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
142 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
143
Patrick Georgia2acbc72010-04-16 22:48:57 +0000144$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/%.c
145 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
Sol Boucher0e539312015-03-05 15:38:03 -0800146 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
Patrick Georgi0588d192009-08-12 15:00:51 +0000147
Sol Boucher69b88bf2015-02-26 11:47:19 -0800148$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/flashmap/%.c
149 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
150 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
151
Stefan Reinaueraa3f7ba2013-03-28 16:51:45 -0700152$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lzma/%.c
153 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
Sol Boucher0e539312015-03-05 15:38:03 -0800154 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
Patrick Georgib7b56dd82009-09-14 13:29:27 +0000155
Stefan Reinauer2e200cd2012-10-30 14:02:45 -0700156$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lzma/C/%.c
Zheng Baoa182cbd2012-12-14 15:44:59 +0800157 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
Sol Boucher0e539312015-03-05 15:38:03 -0800158 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
Patrick Georgib7b56dd82009-09-14 13:29:27 +0000159
Aaron Durbin8a414a02015-10-01 17:02:45 -0500160$(objutil)/cbfstool/%.o: $(top)/src/commonlib/%.c
161 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
162 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
163
Julius Werner98eeb962019-12-11 15:47:42 -0800164$(objutil)/cbfstool/%.o: $(top)/src/commonlib/bsd/%.c
165 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
166 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
167
Julius Werner09f29212015-09-29 13:51:35 -0700168$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lz4/lib/%.c
169 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
Nico Huberd44221f2018-10-04 23:42:42 +0200170 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
Julius Werner09f29212015-09-29 13:51:35 -0700171
Yu-Ping Wu0beddb52020-03-09 10:58:37 +0800172$(objutil)/cbfstool/cbfstool: $(addprefix $(objutil)/cbfstool/,$(cbfsobj)) $(VBOOT_HOSTLIB)
Stefan Reinaueraa3f7ba2013-03-28 16:51:45 -0700173 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
Yu-Ping Wu0beddb52020-03-09 10:58:37 +0800174 $(HOSTCC) -v $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cbfsobj)) $(VBOOT_HOSTLIB)
Aaron Durbin4fde5a62014-03-07 15:11:53 -0600175
Sol Boucher69b88bf2015-02-26 11:47:19 -0800176$(objutil)/cbfstool/fmaptool: $(addprefix $(objutil)/cbfstool/,$(fmapobj))
177 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
178 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(fmapobj))
179
Patrick Georgi913e1712014-07-15 12:28:12 +0200180$(objutil)/cbfstool/rmodtool: $(addprefix $(objutil)/cbfstool/,$(rmodobj))
Aaron Durbin4fde5a62014-03-07 15:11:53 -0600181 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
Paul Menzel6548ae92015-05-03 09:35:32 +0200182 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(rmodobj))
Sol Boucher0e539312015-03-05 15:38:03 -0800183
Furquan Shaikh233f1b62016-05-19 16:12:16 -0700184$(objutil)/cbfstool/ifwitool: $(addprefix $(objutil)/cbfstool/,$(ifwiobj))
185 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
186 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(ifwiobj))
187
Yu-Ping Wu0beddb52020-03-09 10:58:37 +0800188$(objutil)/cbfstool/ifittool: $(addprefix $(objutil)/cbfstool/,$(ifitobj)) $(VBOOT_HOSTLIB)
Philipp Deppenwiese5ada0022018-11-20 13:54:49 +0100189 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
Yu-Ping Wu0beddb52020-03-09 10:58:37 +0800190 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(ifitobj)) $(VBOOT_HOSTLIB)
Philipp Deppenwiese5ada0022018-11-20 13:54:49 +0100191
Patrick Georgic88d16b2017-01-11 15:26:58 +0100192$(objutil)/cbfstool/cbfs-compression-tool: $(addprefix $(objutil)/cbfstool/,$(cbfscompobj))
193 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
194 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cbfscompobj))
195
Marshall Dawson30cf1552019-03-19 14:48:33 -0600196$(objutil)/cbfstool/amdcompress: $(addprefix $(objutil)/cbfstool/,$(amdcompobj))
197 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
198 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(amdcompobj)) -lz
199
Sol Boucher69b88bf2015-02-26 11:47:19 -0800200# Yacc source is superset of header
Kyösti Mälkkic8771492015-05-09 08:06:02 +0300201$(objutil)/cbfstool/fmd.o: TOOLCFLAGS += -Wno-redundant-decls
Sol Boucher69b88bf2015-02-26 11:47:19 -0800202$(objutil)/cbfstool/fmd_parser.o: TOOLCFLAGS += -Wno-redundant-decls
Kyösti Mälkkic8771492015-05-09 08:06:02 +0300203# Lex generates unneeded functions and declarations
204$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-redundant-decls
Sol Boucher69b88bf2015-02-26 11:47:19 -0800205$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-unused-function
Sol Boucher0e539312015-03-05 15:38:03 -0800206# Tolerate lzma sdk warnings
207$(objutil)/cbfstool/LzmaEnc.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual
Aaron Durbin272a1f02015-12-15 18:00:30 -0600208# Tolerate commonlib warnings
209$(objutil)/cbfstool/region.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual
210$(objutil)/cbfstool/cbfs.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual
211$(objutil)/cbfstool/mem_pool.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual
Julius Werner09f29212015-09-29 13:51:35 -0700212# Tolerate lz4 warnings
213$(objutil)/cbfstool/lz4.o: TOOLCFLAGS += -Wno-missing-prototypes
Nico Huber591dbfe2019-12-14 20:44:47 +0100214$(objutil)/cbfstool/lz4_wrapper.o: TOOLCFLAGS += -Wno-attributes
Sol Boucher69b88bf2015-02-26 11:47:19 -0800215
Patrick Georgi7b321452015-05-19 16:43:05 +0200216$(objutil)/cbfstool/fmd.o: $(objutil)/cbfstool/fmd_parser.h
217$(objutil)/cbfstool/fmd.o: $(objutil)/cbfstool/fmd_scanner.h
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300218$(objutil)/cbfstool/fmd_parser.o: $(objutil)/cbfstool/fmd.o
219$(objutil)/cbfstool/fmd_scanner.o: $(objutil)/cbfstool/fmd.o
Patrick Georgi2b807342016-06-28 20:45:34 +0200220$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-sign-compare
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300221
Patrick Georgi7b321452015-05-19 16:43:05 +0200222$(objutil)/cbfstool/%: $(top)/util/cbfstool/%_shipped
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300223 mkdir -p $(dir $@)
224 cp $< $@
225
Sol Boucher69b88bf2015-02-26 11:47:19 -0800226ifeq ($(CONFIG_FMD_GENPARSER),y)
227TOOLLEX := lex
228TOOLYACC := yacc
229
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300230# the .c rule also creates .h
231$(top)/util/cbfstool/fmd_scanner.h_shipped: $(top)/util/cbfstool/fmd_scanner.c_shipped
232$(top)/util/cbfstool/fmd_scanner.c_shipped: $(top)/util/cbfstool/fmd_scanner.l
Sol Boucher69b88bf2015-02-26 11:47:19 -0800233 echo " LEX util/cbfstool/fmd_scanner.[ch]"
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300234 $(TOOLLEX) -t --header-file=$(top)/util/cbfstool/fmd_scanner.h_shipped $< >$(top)/util/cbfstool/fmd_scanner.c_shipped
235
236# the .c rule also creates .h
237$(top)/util/cbfstool/fmd_parser.h_shipped: $(top)/util/cbfstool/fmd_parser.c_shipped
238$(top)/util/cbfstool/fmd_parser.c_shipped: $(top)/util/cbfstool/fmd_parser.y
Sol Boucher69b88bf2015-02-26 11:47:19 -0800239 echo " YACC util/cbfstool/fmd_parser.[ch]"
240 $(TOOLYACC) -d $<
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300241 mv -f y.tab.c $(top)/util/cbfstool/fmd_parser.c_shipped
242 mv -f y.tab.h $(top)/util/cbfstool/fmd_parser.h_shipped
243
244endif # CONFIG_FMD_GENPARSER