blob: b6fb38cebb9e73c2511cc20b0774507fe6aa9826 [file] [log] [blame]
Sol Boucher0e539312015-03-05 15:38:03 -08001obj ?= .
Peter Stuge1d862de2009-04-14 00:08:34 +00002
Alexandru Gagniuc4a7b1152014-01-27 17:17:29 -06003HOSTCC ?= $(CC)
Sol Boucher0e539312015-03-05 15:38:03 -08004
Stefan Taunerd0398f12015-04-26 21:41:41 +02005CFLAGS += -g3
Sol Boucher0e539312015-03-05 15:38:03 -08006CFLAGS += -std=c99 -Werror -Wall -Wextra
7CFLAGS += -Wcast-qual -Wmissing-prototypes -Wredundant-decls -Wshadow
8CFLAGS += -Wstrict-prototypes -Wwrite-strings
Sol Boucher69b88bf2015-02-26 11:47:19 -08009CPPFLAGS += -D_DEFAULT_SOURCE # memccpy() from string.h
Sol Boucher0e539312015-03-05 15:38:03 -080010CPPFLAGS += -D_POSIX_C_SOURCE=200809L # strdup() from string.h
Sol Boucher69b88bf2015-02-26 11:47:19 -080011CPPFLAGS += -Iflashmap
Paul Menzel6548ae92015-05-03 09:35:32 +020012LDFLAGS += -g3
Stefan Reinauer3a5c2772009-05-26 12:22:10 +000013
Aaron Durbin4fde5a62014-03-07 15:11:53 -060014CBFSTOOL_BINARY:=$(obj)/cbfstool
Sol Boucher0e539312015-03-05 15:38:03 -080015CBFSTOOL_COMMON:=common.o cbfs_image.o compress.o fit.o
Aaron Durbin4fde5a62014-03-07 15:11:53 -060016CBFSTOOL_COMMON+=elfheaders.o cbfs-mkstage.o cbfs-mkpayload.o xdr.o
Sol Bouchere3260a02015-03-25 13:40:08 -070017CBFSTOOL_COMMON+=partitioned_file.o linux_trampoline.o cbfs-payload-linux.o
Aaron Durbin4be16742015-09-15 17:00:23 -050018CBFSTOOL_COMMON+=rmodule.o
Stefan Reinauer2e200cd2012-10-30 14:02:45 -070019# LZMA
Aaron Durbin4fde5a62014-03-07 15:11:53 -060020CBFSTOOL_COMMON+=lzma/lzma.o
21CBFSTOOL_COMMON+=lzma/C/LzFind.o lzma/C/LzmaDec.o lzma/C/LzmaEnc.o
Sol Bouchere3260a02015-03-25 13:40:08 -070022# FMAP
23CBFSTOOL_COMMON+=flashmap/fmap.o
24CBFSTOOL_COMMON+=flashmap/kv_pair.o flashmap/valstr.o
Peter Stuge1d862de2009-04-14 00:08:34 +000025
Aaron Durbin4fde5a62014-03-07 15:11:53 -060026CBFSTOOL_COMMON:=$(addprefix $(obj)/,$(CBFSTOOL_COMMON))
Peter Stuge1d862de2009-04-14 00:08:34 +000027
Sol Boucher69b88bf2015-02-26 11:47:19 -080028FMAPTOOL_BINARY:=$(obj)/fmaptool
Sol Boucher023e8292015-03-18 10:13:48 -070029FMAPTOOL_COMMON:=cbfs_sections.o fmap_from_fmd.o
30FMAPTOOL_COMMON+=fmd.o fmd_parser.o fmd_scanner.o
Sol Boucher69b88bf2015-02-26 11:47:19 -080031# FMAP
32FMAPTOOL_COMMON+=flashmap/fmap.o
33FMAPTOOL_COMMON+=flashmap/kv_pair.o flashmap/valstr.o
34
35FMAPTOOL_COMMON:=$(addprefix $(obj)/,$(FMAPTOOL_COMMON))
Aaron Durbin4fde5a62014-03-07 15:11:53 -060036
37RMODTOOL_BINARY:=$(obj)/rmodtool
Sol Boucher0e539312015-03-05 15:38:03 -080038RMODTOOL_COMMON:=rmodule.o common.o elfheaders.o xdr.o
Aaron Durbin4fde5a62014-03-07 15:11:53 -060039
40RMODTOOL_COMMON:=$(addprefix $(obj)/,$(RMODTOOL_COMMON))
41
Sol Boucher69b88bf2015-02-26 11:47:19 -080042FMAPTESTS_BINARY:=$(obj)/flashmap_tests
43FMAPTESTS_COMMON:=flashmap/fmap.o flashmap/valstr.o flashmap/kv_pair.o
44
45FMAPTESTS_COMMON:=$(addprefix $(obj)/,$(FMAPTESTS_COMMON))
46
47GENERATED:=fmd_parser.c fmd_parser.h fmd_scanner.c fmd_scanner.h
48
Sol Boucher0e539312015-03-05 15:38:03 -080049.PHONY: all
Sol Boucher69b88bf2015-02-26 11:47:19 -080050all: .dependencies $(CBFSTOOL_BINARY) $(FMAPTOOL_BINARY) $(RMODTOOL_BINARY)
Stefan Reinauer746d1742012-08-15 16:02:52 -070051
Sol Boucher0e539312015-03-05 15:38:03 -080052$(obj)/%: $(obj)/%.o
53 mkdir -p $(dir $@)
Paul Menzel6548ae92015-05-03 09:35:32 +020054 $(HOSTCC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
Patrick Georgib7b56dd82009-09-14 13:29:27 +000055$(obj)/%.o: %.c
Sol Boucher0e539312015-03-05 15:38:03 -080056 mkdir -p $(dir $@)
57 $(HOSTCC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
Patrick Georgi8d6e24c2015-05-19 16:41:21 +020058
59fmd_scanner.h: fmd_scanner.c
60fmd_scanner.c: fmd_scanner.l
Sol Boucher69b88bf2015-02-26 11:47:19 -080061 $(LEX) $(LFLAGS) -t --header-file=$*.h $< >$*.c
Patrick Georgi8d6e24c2015-05-19 16:41:21 +020062
63fmd_parser.h: fmd_parser.c
64fmd_parser.c: fmd_parser.y
Sol Boucher69b88bf2015-02-26 11:47:19 -080065 $(YACC) $(YFLAGS) -d $<
66 mv -f y.tab.c $*.c
67 mv -f y.tab.h $*.h
Peter Stuge1d862de2009-04-14 00:08:34 +000068
Sol Boucher0e539312015-03-05 15:38:03 -080069.PHONY: clean
Patrick Georgib7b56dd82009-09-14 13:29:27 +000070clean:
Sol Boucher0e539312015-03-05 15:38:03 -080071 $(RM) $(CBFSTOOL_COMMON) $(CBFSTOOL_BINARY).o $(CBFSTOOL_BINARY)
Sol Boucher69b88bf2015-02-26 11:47:19 -080072 $(RM) $(FMAPTOOL_COMMON) $(FMAPTOOL_BINARY).o $(FMAPTOOL_BINARY)
Sol Boucher0e539312015-03-05 15:38:03 -080073 $(RM) $(RMODTOOL_COMMON) $(RMODTOOL_BINARY).o $(RMODTOOL_BINARY)
Sol Boucher69b88bf2015-02-26 11:47:19 -080074 $(RM) $(FMAPTESTS_COMMON) $(FMAPTESTS_BINARY).o $(FMAPTESTS_BINARY)
Sol Boucher0e539312015-03-05 15:38:03 -080075.PHONY: distclean
76distclean: clean
77 $(RM) .dependencies
Sol Boucher69b88bf2015-02-26 11:47:19 -080078.PHONY: maintainer-clean
79maintainer-clean: distclean
80 $(RM) $(GENERATED)
Peter Stuge1d862de2009-04-14 00:08:34 +000081
Sol Boucher69b88bf2015-02-26 11:47:19 -080082tags: $(GENERATED)
Patrick Georgib7b56dd82009-09-14 13:29:27 +000083 ctags *.[ch]
Peter Stuge1d862de2009-04-14 00:08:34 +000084
Sol Boucher69b88bf2015-02-26 11:47:19 -080085.dependencies: $(GENERATED)
Sol Boucher0e539312015-03-05 15:38:03 -080086 @$(HOSTCC) $(CPPFLAGS) $(CFLAGS) -MM -MG *.c > $@
Sol Boucher69b88bf2015-02-26 11:47:19 -080087 @$(HOSTCC) $(CPPFLAGS) $(CFLAGS) -MM flashmap/*.c >> $@
Sol Boucher0e539312015-03-05 15:38:03 -080088 @$(HOSTCC) $(CPPFLAGS) $(CFLAGS) -MM lzma/*.c >> $@
89 @$(HOSTCC) $(CPPFLAGS) $(CFLAGS) -MM lzma/C/*.c >> $@
90 @sed -i 's|.*:.*|$$(obj)/&|' $@
Aaron Durbin4fde5a62014-03-07 15:11:53 -060091
Sol Boucher0e539312015-03-05 15:38:03 -080092$(CBFSTOOL_BINARY): $(CBFSTOOL_COMMON)
Sol Boucher69b88bf2015-02-26 11:47:19 -080093$(FMAPTOOL_BINARY): $(FMAPTOOL_COMMON)
Sol Boucher0e539312015-03-05 15:38:03 -080094$(RMODTOOL_BINARY): $(RMODTOOL_COMMON)
Stefan Reinauer746d1742012-08-15 16:02:52 -070095
Sol Boucher69b88bf2015-02-26 11:47:19 -080096# This target must be built manually
97$(FMAPTESTS_BINARY): $(FMAPTESTS_COMMON)
98
99# Yacc source is superset of header
100$(obj)/fmd_parser.o: CFLAGS += -Wno-redundant-decls
Kyösti Mälkkic8771492015-05-09 08:06:02 +0300101# Lex generates unneeded functions and declarations
102$(obj)/fmd_scanner.o: CFLAGS += -Wno-redundant-decls
Sol Boucher69b88bf2015-02-26 11:47:19 -0800103$(obj)/fmd_scanner.o: CFLAGS += -Wno-unused-function
Sol Boucher0e539312015-03-05 15:38:03 -0800104# Tolerate lzma sdk warnings
105$(obj)/lzma/C/LzmaEnc.o: CFLAGS += -Wno-sign-compare -Wno-cast-qual
Stefan Reinauer746d1742012-08-15 16:02:52 -0700106
107-include .dependencies