diff options
author | Sol Boucher <solb@chromium.org> | 2015-02-26 11:47:19 -0800 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2015-05-08 19:55:42 +0200 |
commit | 69b88bf1276d2cb0309e2fc96df9d33a893138e3 (patch) | |
tree | 2dc297765cb1f858e5f2f6865481eeafdad8e897 /util/cbfstool/Makefile.inc | |
parent | 5f7e4f019e258a49fff78e90509d1fda280fc147 (diff) | |
download | coreboot-69b88bf1276d2cb0309e2fc96df9d33a893138e3.tar.xz |
fmaptool: Introduce the fmd ("flashmap descriptor") language and compiler
This adds a compiler for a language whose textual representation of flashmap
regions will be used to describe the layout of flash chips that contain more
than just a single CBFS. Direct integration with cbfstool (via a new
command-line switch for the create action) is forthcoming but will be added
separately.
BUG=chromium:461875
TEST=Use Chromium OS's cros_bundle_firmware script on the fmap.dts file for
panther. Using the latter file as a reference, write a corresponding
fmap.fmd file and feed it through fmaptool. Run both binary output files
though the flashmap project's own flashmap_decode utility. Observe only
the expected differences.
BRANCH=None
Change-Id: I06b32d138dbef0a4e5ed43c81bd31c796fd5d669
Signed-off-by: Sol Boucher <solb@chromium.org>
Original-Commit-Id: 005ab67eb594e21489cf31036aedaea87e0c7142
Original-Change-Id: Ia08f28688efdbbfc70c255916b8eb7eb0eb07fb2
Original-Signed-off-by: Sol Boucher <solb@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/255031
Original-Reviewed-by: Julius Werner <jwerner@chromium.org>
Original-Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
Reviewed-on: http://review.coreboot.org/9942
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'util/cbfstool/Makefile.inc')
-rw-r--r-- | util/cbfstool/Makefile.inc | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/util/cbfstool/Makefile.inc b/util/cbfstool/Makefile.inc index 5bf0b70736..7fba6beb9c 100644 --- a/util/cbfstool/Makefile.inc +++ b/util/cbfstool/Makefile.inc @@ -17,6 +17,17 @@ cbfsobj += LzmaEnc.o cbfsobj += linux_trampoline.o cbfsobj += cbfs-payload-linux.o +fmapobj := +fmapobj += fmaptool.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 @@ -27,7 +38,9 @@ rmodobj += xdr.o TOOLCFLAGS ?= -std=c99 -Werror -Wall -Wextra TOOLCFLAGS += -Wcast-qual -Wmissing-prototypes -Wredundant-decls -Wshadow TOOLCFLAGS += -Wstrict-prototypes -Wwrite-strings -TOOLCPPFLAGS ?= -D_POSIX_C_SOURCE=200809L # strdup() from string.h +TOOLCPPFLAGS ?= -D_DEFAULT_SOURCE # memccpy() from string.h +TOOLCPPFLAGS += -D_POSIX_C_SOURCE=200809L # strdup() from string.h +TOOLCPPFLAGS += -I$(top)/util/cbfstool/flashmap TOOLLDFLAGS ?= ifeq ($(shell uname -s | cut -c-7 2>/dev/null), MINGW32) @@ -38,6 +51,10 @@ $(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 $@ $< @@ -50,9 +67,35 @@ $(objutil)/cbfstool/cbfstool: $(addprefix $(objutil)/cbfstool/,$(cbfsobj)) printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n" $(HOSTCC) $(TOOLLDFLAGS) -o $@ $(addprefix $(objutil)/cbfstool/,$(cbfsobj)) +$(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)) +# Yacc source is superset of header +$(objutil)/cbfstool/fmd_parser.o: TOOLCFLAGS += -Wno-redundant-decls +# Lex generates unneeded functions +$(objutil)/cbfstool/fmd_scanner.o: TOOLCFLAGS += -Wno-unused-function # Tolerate lzma sdk warnings $(objutil)/cbfstool/LzmaEnc.o: TOOLCFLAGS += -Wno-sign-compare -Wno-cast-qual + +ifeq ($(CONFIG_FMD_GENPARSER),y) +TOOLLEX := lex +TOOLYACC := yacc + +$(objutil)/cbfstool/fmd.o: $(top)/util/cbfstool/fmd_parser.c +$(objutil)/cbfstool/fmd.o: $(top)/util/cbfstool/fmd_scanner.c +$(objutil)/cbfstool/fmd_parser.o: $(objutil)/cbfstool/fmd.o +$(objutil)/cbfstool/fmd_scanner.o: $(objutil)/cbfstool/fmd.o +$(top)/util/cbfstool/fmd_scanner.c $(top)/util/cbfstool/fmd_scanner.h: $(top)/util/cbfstool/fmd_scanner.l + echo " LEX util/cbfstool/fmd_scanner.[ch]" + $(TOOLLEX) -t --header-file=$(top)/util/cbfstool/fmd_scanner.h $< >$(top)/util/cbfstool/fmd_scanner.c +$(top)/util/cbfstool/fmd_parser.c $(top)/util/cbfstool/fmd_parser.h: $(top)/util/cbfstool/fmd_parser.y + echo " YACC util/cbfstool/fmd_parser.[ch]" + $(TOOLYACC) -d $< + mv -f y.tab.c $(top)/util/cbfstool/fmd_parser.c + mv -f y.tab.h $(top)/util/cbfstool/fmd_parser.h +endif |