Makefile revision 204431
1#
2# Device Tree Compiler
3#
4
5#
6# Version information will be constructed in this order:
7# EXTRAVERSION might be "-rc", for example.
8# LOCAL_VERSION is likely from command line.
9# CONFIG_LOCALVERSION from some future config system.
10#
11VERSION = 1
12PATCHLEVEL = 2
13SUBLEVEL = 0
14EXTRAVERSION =
15LOCAL_VERSION =
16CONFIG_LOCALVERSION =
17
18CPPFLAGS = -I libfdt
19CFLAGS = -Wall -g -Os -Wpointer-arith -Wcast-qual
20
21BISON = bison
22LEX = flex
23
24INSTALL = /usr/bin/install
25DESTDIR =
26PREFIX = $(HOME)
27BINDIR = $(PREFIX)/bin
28LIBDIR = $(PREFIX)/lib
29INCLUDEDIR = $(PREFIX)/include
30
31#
32# Overall rules
33#
34ifdef V
35VECHO = :
36else
37VECHO = echo "	"
38ARFLAGS = rc
39.SILENT:
40endif
41
42NODEPTARGETS = clean
43ifeq ($(MAKECMDGOALS),)
44DEPTARGETS = all
45else
46DEPTARGETS = $(filter-out $(NODEPTARGETS),$(MAKECMDGOALS))
47endif
48
49all: dtc ftdump convert-dtsv0 libfdt
50
51install: all
52	@$(VECHO) INSTALL
53	$(INSTALL) -d $(DESTDIR)$(BINDIR)
54	$(INSTALL) -m 755 dtc $(DESTDIR)$(BINDIR)
55	$(INSTALL) -d $(DESTDIR)$(LIBDIR)
56	$(INSTALL) -m 644 $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)
57	$(INSTALL) -d $(DESTDIR)$(INCLUDEDIR)
58	$(INSTALL) -m 644 $(LIBFDT_include) $(DESTDIR)$(INCLUDEDIR)
59
60#
61# Rules for versioning
62#
63
64DTC_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
65VERSION_FILE = version_gen.h
66
67CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
68	  else if [ -x /bin/bash ]; then echo /bin/bash; \
69	  else echo sh; fi ; fi)
70
71nullstring :=
72space	:= $(nullstring) # end of line
73
74localver_config = $(subst $(space),, $(string) \
75			      $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
76
77localver_cmd = $(subst $(space),, $(string) \
78			      $(patsubst "%",%,$(LOCALVERSION)))
79
80localver_scm = $(shell $(CONFIG_SHELL) ./scripts/setlocalversion)
81localver_full  = $(localver_config)$(localver_cmd)$(localver_scm)
82
83dtc_version = $(DTC_VERSION)$(localver_full)
84
85# Contents of the generated version file.
86define filechk_version
87	(echo "#define DTC_VERSION \"DTC $(dtc_version)\""; )
88endef
89
90define filechk
91	set -e;					\
92	echo '	CHK $@';			\
93	mkdir -p $(dir $@);			\
94	$(filechk_$(1)) < $< > $@.tmp;		\
95	if [ -r $@ ] && cmp -s $@ $@.tmp; then	\
96		rm -f $@.tmp;			\
97	else					\
98		echo '	UPD $@';		\
99		mv -f $@.tmp $@;		\
100	fi;
101endef
102
103$(VERSION_FILE): Makefile FORCE
104	$(call filechk,version)
105
106#
107# Rules for dtc proper
108#
109include Makefile.dtc
110
111BIN += dtc
112
113# This stops make from generating the lex and bison output during
114# auto-dependency computation, but throwing them away as an
115# intermediate target and building them again "for real"
116.SECONDARY: $(DTC_GEN_SRCS)
117
118dtc: $(DTC_OBJS)
119
120ifneq ($(DEPTARGETS),)
121-include $(DTC_OBJS:%.o=%.d)
122endif
123#
124# Rules for ftdump & convert-dtsv0
125#
126BIN += ftdump convert-dtsv0
127
128ftdump:	ftdump.o
129
130convert-dtsv0: convert-dtsv0-lexer.lex.o srcpos.o
131	@$(VECHO) LD $@
132	$(LINK.c) -o $@ $^
133
134ifneq ($(DEPTARGETS),)
135-include ftdump.d
136endif
137#
138# Rules for libfdt
139#
140LIBFDT_objdir = libfdt
141LIBFDT_srcdir = libfdt
142LIBFDT_lib = $(LIBFDT_objdir)/libfdt.a
143LIBFDT_include = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_INCLUDES))
144
145include $(LIBFDT_srcdir)/Makefile.libfdt
146
147.PHONY: libfdt
148libfdt: $(LIBFDT_lib)
149
150$(LIBFDT_lib): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS))
151
152libfdt_clean:
153	@$(VECHO) CLEAN "(libfdt)"
154	rm -f $(addprefix $(LIBFDT_objdir)/,$(STD_CLEANFILES))
155
156ifneq ($(DEPTARGETS),)
157-include $(LIBFDT_OBJS:%.o=$(LIBFDT_objdir)/%.d)
158endif
159
160#
161# Testsuite rules
162#
163TESTS_PREFIX=tests/
164include tests/Makefile.tests
165
166#
167# Clean rules
168#
169STD_CLEANFILES = *~ *.o *.d *.a *.i *.s core a.out vgcore.* \
170	*.tab.[ch] *.lex.c *.output
171
172clean: libfdt_clean tests_clean
173	@$(VECHO) CLEAN
174	rm -f $(STD_CLEANFILES)
175	rm -f $(VERSION_FILE)
176	rm -f $(BIN)
177
178#
179# Generic compile rules
180#
181%: %.o
182	@$(VECHO) LD $@
183	$(LINK.c) -o $@ $^
184
185%.o: %.c
186	@$(VECHO) CC $@
187	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
188
189%.o: %.S
190	@$(VECHO) AS $@
191	$(CC) $(CPPFLAGS) $(AFLAGS) -D__ASSEMBLY__ -o $@ -c $<
192
193%.d: %.c
194	@$(VECHO) DEP $<
195	$(CC) $(CPPFLAGS) -MM -MG -MT "$*.o $@" $< > $@
196
197%.d: %.S
198	@$(VECHO) DEP $<
199	$(CC) $(CPPFLAGS) -MM -MG -MT "$*.o $@" $< > $@
200
201%.i:	%.c
202	@$(VECHO) CPP $@
203	$(CC) $(CPPFLAGS) -E $< > $@
204
205%.s:	%.c
206	@$(VECHO) CC -S $@
207	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -S $<
208
209%.a:
210	@$(VECHO) AR $@
211	$(AR) $(ARFLAGS) $@ $^
212
213%.lex.c: %.l
214	@$(VECHO) LEX $@
215	$(LEX) -o$@ $<
216
217%.tab.c %.tab.h %.output: %.y
218	@$(VECHO) BISON $@
219	$(BISON) -d $<
220
221FORCE:
222