blob: 9633ca48bee2e664f97f95727f7bc76dc8f37f4d [file] [log] [blame]
Patrick Georgi0588d192009-08-12 15:00:51 +00001cbfsobj :=
Stefan Reinauer2e200cd2012-10-30 14:02:45 -07002cbfsobj += cbfstool.o
Patrick Georgib7b56dd82009-09-14 13:29:27 +00003cbfsobj += common.o
4cbfsobj += compress.o
Hung-Te Lineab2c812013-01-29 01:56:17 +08005cbfsobj += cbfs_image.o
Patrick Georgib7b56dd82009-09-14 13:29:27 +00006cbfsobj += cbfs-mkstage.o
7cbfsobj += cbfs-mkpayload.o
Ronald G. Minnicha8a133d2013-12-30 13:16:18 -08008cbfsobj += elfheaders.o
Aaron Durbin4be16742015-09-15 17:00:23 -05009cbfsobj += rmodule.o
Ronald G. Minnichaa2f7392013-12-03 11:13:35 -080010cbfsobj += xdr.o
Aaron Durbin6b0d0d62012-12-14 17:16:21 -060011cbfsobj += fit.o
Sol Bouchere3260a02015-03-25 13:40:08 -070012cbfsobj += partitioned_file.o
Aaron Durbin8a414a02015-10-01 17:02:45 -050013cbfsobj += fsp1_1_relocate.o
Stefan Reinauer2e200cd2012-10-30 14:02:45 -070014# LZMA
15cbfsobj += lzma.o
16cbfsobj += LzFind.o
17cbfsobj += LzmaDec.o
18cbfsobj += LzmaEnc.o
Patrick Georgi89f20342015-10-01 15:54:04 +020019# CRYPTOLIB
20cbfsobj += 2sha_utility.o
21cbfsobj += 2sha1.o
22cbfsobj += 2sha256.o
23cbfsobj += 2sha512.o
Sol Bouchere3260a02015-03-25 13:40:08 -070024# FMAP
25cbfsobj += fmap.o
26cbfsobj += kv_pair.o
27cbfsobj += valstr.o
Patrick Georgide36d332013-08-27 20:22:21 +020028# linux as payload
29cbfsobj += linux_trampoline.o
30cbfsobj += cbfs-payload-linux.o
Patrick Georgi0588d192009-08-12 15:00:51 +000031
Sol Boucher69b88bf2015-02-26 11:47:19 -080032fmapobj :=
33fmapobj += fmaptool.o
Sol Boucher023e8292015-03-18 10:13:48 -070034fmapobj += cbfs_sections.o
Sol Boucher69b88bf2015-02-26 11:47:19 -080035fmapobj += fmap_from_fmd.o
36fmapobj += fmd.o
37fmapobj += fmd_parser.o
38fmapobj += fmd_scanner.o
39# FMAP
40fmapobj += fmap.o
41fmapobj += kv_pair.o
42fmapobj += valstr.o
43
Sol Boucher0e539312015-03-05 15:38:03 -080044rmodobj :=
Aaron Durbin4fde5a62014-03-07 15:11:53 -060045rmodobj += rmodtool.o
46rmodobj += rmodule.o
47rmodobj += common.o
48rmodobj += elfheaders.o
49rmodobj += xdr.o
50
Stefan Reinauer354c11d2015-09-15 17:41:07 -070051TOOLCFLAGS ?= -Werror -Wall -Wextra
Sol Boucher0e539312015-03-05 15:38:03 -080052TOOLCFLAGS += -Wcast-qual -Wmissing-prototypes -Wredundant-decls -Wshadow
53TOOLCFLAGS += -Wstrict-prototypes -Wwrite-strings
Sol Boucher69b88bf2015-02-26 11:47:19 -080054TOOLCPPFLAGS ?= -D_DEFAULT_SOURCE # memccpy() from string.h
Jonathan A. Kollasch9d6a17b2015-07-06 08:29:00 -050055TOOLCPPFLAGS += -D_XOPEN_SOURCE=700 # strdup() from string.h
Sol Boucher69b88bf2015-02-26 11:47:19 -080056TOOLCPPFLAGS += -I$(top)/util/cbfstool/flashmap
Patrick Georgi7b321452015-05-19 16:43:05 +020057TOOLCPPFLAGS += -I$(top)/util/cbfstool
58TOOLCPPFLAGS += -I$(objutil)/cbfstool
Paul Kocialkowski34ce4382015-09-24 19:00:47 +020059TOOLCPPFLAGS += -I$(top)/src/commonlib/include
Patrick Georgi89f20342015-10-01 15:54:04 +020060TOOLCPPFLAGS += -DNEED_VB2_SHA_LIBRARY
61TOOLCPPFLAGS += -I$(top)/3rdparty/vboot/firmware/include
62TOOLCPPFLAGS += -I$(top)/3rdparty/vboot/firmware/2lib/include
Aaron Durbin8a414a02015-10-01 17:02:45 -050063# UEFI header file support. It's not pretty, but that's what we currently
64# have right now.
65TOOLCPPFLAGS += -I$(top)/src
66TOOLCPPFLAGS += -I$(top)/src/vendorcode/intel/edk2/uefi_2.4/MdePkg/Include
67
Paul Menzel6548ae92015-05-03 09:35:32 +020068TOOLLDFLAGS ?=
Werner Zeh8c3780a2015-10-02 09:56:32 +020069HOSTCFLAGS += -fms-extensions
Sol Boucher0e539312015-03-05 15:38:03 -080070
Zheng Baoc31cdd82012-10-22 16:39:24 +080071ifeq ($(shell uname -s | cut -c-7 2>/dev/null), MINGW32)
Patrick Georgicdeb1c42015-09-16 16:19:26 +020072TOOLCFLAGS += -mno-ms-bitfields
Zheng Baoc31cdd82012-10-22 16:39:24 +080073endif
Stefan Reinauer354c11d2015-09-15 17:41:07 -070074ifeq ($(shell uname -o 2>/dev/null), Cygwin)
75TOOLCFLAGS+=-std=gnu99
76TOOLCPPFLAGS+=-D_GNU_SOURCE
77else
78TOOLCFLAGS+=-std=c99
79endif
Zheng Baoc31cdd82012-10-22 16:39:24 +080080
Patrick Georgi7b321452015-05-19 16:43:05 +020081$(objutil)/cbfstool/%.o: $(objutil)/cbfstool/%.c
82 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
83 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
84
Patrick Georgia2acbc72010-04-16 22:48:57 +000085$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/%.c
86 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
Sol Boucher0e539312015-03-05 15:38:03 -080087 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
Patrick Georgi0588d192009-08-12 15:00:51 +000088
Sol Boucher69b88bf2015-02-26 11:47:19 -080089$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/flashmap/%.c
90 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
91 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
92
Stefan Reinaueraa3f7ba2013-03-28 16:51:45 -070093$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lzma/%.c
94 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
Sol Boucher0e539312015-03-05 15:38:03 -080095 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
Patrick Georgib7b56dd82009-09-14 13:29:27 +000096
Stefan Reinauer2e200cd2012-10-30 14:02:45 -070097$(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lzma/C/%.c
Zheng Baoa182cbd2012-12-14 15:44:59 +080098 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
Sol Boucher0e539312015-03-05 15:38:03 -080099 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
Patrick Georgib7b56dd82009-09-14 13:29:27 +0000100
Patrick Georgi89f20342015-10-01 15:54:04 +0200101$(objutil)/cbfstool/%.o: $(top)/3rdparty/vboot/firmware/2lib/%.c
102 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
103 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
104
Aaron Durbin8a414a02015-10-01 17:02:45 -0500105$(objutil)/cbfstool/%.o: $(top)/src/commonlib/%.c
106 printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
107 $(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
108
Patrick Georgi913e1712014-07-15 12:28:12 +0200109$(objutil)/cbfstool/cbfstool: $(addprefix $(objutil)/cbfstool/,$(cbfsobj))
Stefan Reinaueraa3f7ba2013-03-28 16:51:45 -0700110 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
Paul Menzel6548ae92015-05-03 09:35:32 +0200111 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cbfsobj))
Aaron Durbin4fde5a62014-03-07 15:11:53 -0600112
Sol Boucher69b88bf2015-02-26 11:47:19 -0800113$(objutil)/cbfstool/fmaptool: $(addprefix $(objutil)/cbfstool/,$(fmapobj))
114 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
115 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(fmapobj))
116
Patrick Georgi913e1712014-07-15 12:28:12 +0200117$(objutil)/cbfstool/rmodtool: $(addprefix $(objutil)/cbfstool/,$(rmodobj))
Aaron Durbin4fde5a62014-03-07 15:11:53 -0600118 printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
Paul Menzel6548ae92015-05-03 09:35:32 +0200119 $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(rmodobj))
Sol Boucher0e539312015-03-05 15:38:03 -0800120
Sol Boucher69b88bf2015-02-26 11:47:19 -0800121# Yacc source is superset of header
Kyösti Mälkkic8771492015-05-09 08:06:02 +0300122$(objutil)/cbfstool/fmd.o: TOOLCFLAGS += -Wno-redundant-decls
Sol Boucher69b88bf2015-02-26 11:47:19 -0800123$(objutil)/cbfstool/fmd_parser.o: TOOLCFLAGS += -Wno-redundant-decls
Kyösti Mälkkic8771492015-05-09 08:06:02 +0300124# Lex generates unneeded functions and declarations
125$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-redundant-decls
Sol Boucher69b88bf2015-02-26 11:47:19 -0800126$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-unused-function
Sol Boucher0e539312015-03-05 15:38:03 -0800127# Tolerate lzma sdk warnings
128$(objutil)/cbfstool/LzmaEnc.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual
Patrick Georgi89f20342015-10-01 15:54:04 +0200129# Tolerate vboot warnings
130$(objutil)/cbfstool/2sha_utility.o: TOOLCFLAGS += -Wno-sign-compare
131$(objutil)/cbfstool/2sha1.o: TOOLCFLAGS += -Wno-cast-qual
Sol Boucher69b88bf2015-02-26 11:47:19 -0800132
Patrick Georgi7b321452015-05-19 16:43:05 +0200133$(objutil)/cbfstool/fmd.o: $(objutil)/cbfstool/fmd_parser.h
134$(objutil)/cbfstool/fmd.o: $(objutil)/cbfstool/fmd_scanner.h
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300135$(objutil)/cbfstool/fmd_parser.o: $(objutil)/cbfstool/fmd.o
136$(objutil)/cbfstool/fmd_scanner.o: $(objutil)/cbfstool/fmd.o
137
Patrick Georgi7b321452015-05-19 16:43:05 +0200138$(objutil)/cbfstool/%: $(top)/util/cbfstool/%_shipped
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300139 mkdir -p $(dir $@)
140 cp $< $@
141
Sol Boucher69b88bf2015-02-26 11:47:19 -0800142ifeq ($(CONFIG_FMD_GENPARSER),y)
143TOOLLEX := lex
144TOOLYACC := yacc
145
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300146# the .c rule also creates .h
147$(top)/util/cbfstool/fmd_scanner.h_shipped: $(top)/util/cbfstool/fmd_scanner.c_shipped
148$(top)/util/cbfstool/fmd_scanner.c_shipped: $(top)/util/cbfstool/fmd_scanner.l
Sol Boucher69b88bf2015-02-26 11:47:19 -0800149 echo " LEX util/cbfstool/fmd_scanner.[ch]"
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300150 $(TOOLLEX) -t --header-file=$(top)/util/cbfstool/fmd_scanner.h_shipped $< >$(top)/util/cbfstool/fmd_scanner.c_shipped
151
152# the .c rule also creates .h
153$(top)/util/cbfstool/fmd_parser.h_shipped: $(top)/util/cbfstool/fmd_parser.c_shipped
154$(top)/util/cbfstool/fmd_parser.c_shipped: $(top)/util/cbfstool/fmd_parser.y
Sol Boucher69b88bf2015-02-26 11:47:19 -0800155 echo " YACC util/cbfstool/fmd_parser.[ch]"
156 $(TOOLYACC) -d $<
Kyösti Mälkkid32b2732015-05-15 09:27:34 +0300157 mv -f y.tab.c $(top)/util/cbfstool/fmd_parser.c_shipped
158 mv -f y.tab.h $(top)/util/cbfstool/fmd_parser.h_shipped
159
160endif # CONFIG_FMD_GENPARSER