Makefile revision 204433
1254721Semaste#
2254721Semaste# Device Tree Compiler
3353358Sdim#
4353358Sdim
5353358Sdim#
6254721Semaste# Version information will be constructed in this order:
7254721Semaste# EXTRAVERSION might be "-rc", for example.
8254721Semaste# LOCAL_VERSION is likely from command line.
9254721Semaste# CONFIG_LOCALVERSION from some future config system.
10254721Semaste#
11254721SemasteVERSION = 1
12254721SemastePATCHLEVEL = 2
13314564SdimSUBLEVEL = 0
14254721SemasteEXTRAVERSION =
15254721SemasteLOCAL_VERSION =
16321369SdimCONFIG_LOCALVERSION =
17353358Sdim
18321369SdimCPPFLAGS = -I libfdt
19321369SdimCFLAGS = -Wall -g -Os -fPIC -Wpointer-arith -Wcast-qual
20314564Sdim
21353358SdimBISON = bison
22254721SemasteLEX = flex
23254721Semaste
24254721SemasteINSTALL = /usr/bin/install
25353358SdimDESTDIR =
26341825SdimPREFIX = $(HOME)
27254721SemasteBINDIR = $(PREFIX)/bin
28254721SemasteLIBDIR = $(PREFIX)/lib
29341825SdimINCLUDEDIR = $(PREFIX)/include
30341825Sdim
31341825SdimHOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
32341825Sdim	    sed -e 's/\(cygwin\).*/cygwin/')
33341825Sdim
34254721Semasteifeq ($(HOSTOS),darwin)
35341825SdimSHAREDLIB_EXT=dylib
36341825SdimSHAREDLIB_LINK_OPTIONS=-dynamiclib -Wl,-install_name -Wl,
37254721Semasteelse
38341825SdimSHAREDLIB_EXT=so
39341825SdimSHAREDLIB_LINK_OPTIONS=-shared -Wl,--version-script=$(LIBFDT_version) -Wl,-soname,
40341825Sdimendif
41314564Sdim
42254721Semaste#
43314564Sdim# Overall rules
44314564Sdim#
45254721Semasteifdef V
46314564SdimVECHO = :
47314564Sdimelse
48341825SdimVECHO = echo "	"
49341825SdimARFLAGS = rc
50341825Sdim.SILENT:
51314564Sdimendif
52353358Sdim
53314564SdimNODEPTARGETS = clean
54314564Sdimifeq ($(MAKECMDGOALS),)
55314564SdimDEPTARGETS = all
56314564Sdimelse
57314564SdimDEPTARGETS = $(filter-out $(NODEPTARGETS),$(MAKECMDGOALS))
58314564Sdimendif
59314564Sdim
60353358Sdim#
61314564Sdim# Rules for versioning
62254721Semaste#
63314564Sdim
64314564SdimDTC_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
65254721SemasteVERSION_FILE = version_gen.h
66314564Sdim
67314564SdimCONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
68353358Sdim	  else if [ -x /bin/bash ]; then echo /bin/bash; \
69314564Sdim	  else echo sh; fi ; fi)
70314564Sdim
71314564Sdimnullstring :=
72254721Semastespace	:= $(nullstring) # end of line
73314564Sdim
74314564Sdimlocalver_config = $(subst $(space),, $(string) \
75254721Semaste			      $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
76314564Sdim
77254721Semastelocalver_cmd = $(subst $(space),, $(string) \
78353358Sdim			      $(patsubst "%",%,$(LOCALVERSION)))
79314564Sdim
80353358Sdimlocalver_scm = $(shell $(CONFIG_SHELL) ./scripts/setlocalversion)
81314564Sdimlocalver_full  = $(localver_config)$(localver_cmd)$(localver_scm)
82254721Semaste
83314564Sdimdtc_version = $(DTC_VERSION)$(localver_full)
84254721Semaste
85314564Sdim# Contents of the generated version file.
86254721Semastedefine filechk_version
87314564Sdim	(echo "#define DTC_VERSION \"DTC $(dtc_version)\""; )
88254721Semasteendef
89314564Sdim
90254721Semastedefine filechk
91314564Sdim	set -e;					\
92314564Sdim	echo '	CHK $@';			\
93353358Sdim	mkdir -p $(dir $@);			\
94314564Sdim	$(filechk_$(1)) < $< > $@.tmp;		\
95314564Sdim	if [ -r $@ ] && cmp -s $@ $@.tmp; then	\
96353358Sdim		rm -f $@.tmp;			\
97314564Sdim	else					\
98314564Sdim		echo '	UPD $@';		\
99314564Sdim		mv -f $@.tmp $@;		\
100254721Semaste	fi;
101314564Sdimendef
102314564Sdim
103353358Sdim
104314564Sdiminclude Makefile.convert-dtsv0
105314564Sdiminclude Makefile.dtc
106353358Sdiminclude Makefile.ftdump
107314564Sdim
108314564SdimBIN += convert-dtsv0
109314564SdimBIN += dtc
110254721SemasteBIN += ftdump
111341825Sdim
112314564Sdim
113353358Sdimall: $(BIN) libfdt
114314564Sdim
115314564Sdim
116353358Sdimifneq ($(DEPTARGETS),)
117314564Sdim-include $(DTC_OBJS:%.o=%.d)
118314564Sdim-include $(CONVERT_OBJS:%.o=%.d)
119314564Sdim-include $(FTDUMP_OBJS:%.o=%.d)
120254721Semasteendif
121314564Sdim
122314564Sdim
123353358Sdim
124314564Sdim#
125314564Sdim# Rules for libfdt
126353358Sdim#
127314564SdimLIBFDT_objdir = libfdt
128314564SdimLIBFDT_srcdir = libfdt
129314564SdimLIBFDT_archive = $(LIBFDT_objdir)/libfdt.a
130314564SdimLIBFDT_lib = $(LIBFDT_objdir)/libfdt.$(SHAREDLIB_EXT)
131353358SdimLIBFDT_include = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_INCLUDES))
132314564SdimLIBFDT_version = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_VERSION))
133314564Sdim
134314564Sdiminclude $(LIBFDT_srcdir)/Makefile.libfdt
135314564Sdim
136353358Sdim.PHONY: libfdt
137314564Sdimlibfdt: $(LIBFDT_archive) $(LIBFDT_lib)
138314564Sdim
139314564Sdim$(LIBFDT_archive): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS))
140254721Semaste$(LIBFDT_lib): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS))
141353358Sdim
142314564Sdimlibfdt_clean:
143353358Sdim	@$(VECHO) CLEAN "(libfdt)"
144314564Sdim	rm -f $(addprefix $(LIBFDT_objdir)/,$(STD_CLEANFILES))
145254721Semaste	rm -f $(LIBFDT_objdir)/*.so
146314564Sdim
147254721Semasteifneq ($(DEPTARGETS),)
148314564Sdim-include $(LIBFDT_OBJS:%.o=$(LIBFDT_objdir)/%.d)
149314564Sdimendif
150254721Semaste
151314564Sdim# This stops make from generating the lex and bison output during
152314564Sdim# auto-dependency computation, but throwing them away as an
153353358Sdim# intermediate target and building them again "for real"
154314564Sdim.SECONDARY: $(DTC_GEN_SRCS) $(CONVERT_GEN_SRCS)
155314564Sdim
156314564Sdiminstall: all
157254721Semaste	@$(VECHO) INSTALL
158314564Sdim	$(INSTALL) -d $(DESTDIR)$(BINDIR)
159314564Sdim	$(INSTALL) $(BIN) $(DESTDIR)$(BINDIR)
160353358Sdim	$(INSTALL) -d $(DESTDIR)$(LIBDIR)
161314564Sdim	$(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)
162314564Sdim	$(INSTALL) -m 644 $(LIBFDT_archive) $(DESTDIR)$(LIBDIR)
163314564Sdim	$(INSTALL) -d $(DESTDIR)$(INCLUDEDIR)
164314564Sdim	$(INSTALL) -m 644 $(LIBFDT_include) $(DESTDIR)$(INCLUDEDIR)
165314564Sdim
166254721Semaste$(VERSION_FILE): Makefile FORCE
167314564Sdim	$(call filechk,version)
168314564Sdim
169353358Sdim
170314564Sdimdtc: $(DTC_OBJS)
171314564Sdim
172314564Sdimconvert-dtsv0: $(CONVERT_OBJS)
173254721Semaste	@$(VECHO) LD $@
174314564Sdim	$(LINK.c) -o $@ $^
175353358Sdim
176353358Sdimftdump:	$(FTDUMP_OBJS)
177353358Sdim
178353358Sdim
179353358Sdim#
180353358Sdim# Testsuite rules
181353358Sdim#
182353358SdimTESTS_PREFIX=tests/
183353358Sdiminclude tests/Makefile.tests
184353358Sdim
185353358Sdim#
186353358Sdim# Clean rules
187353358Sdim#
188353358SdimSTD_CLEANFILES = *~ *.o *.so *.d *.a *.i *.s core a.out vgcore.* \
189353358Sdim	*.tab.[ch] *.lex.c *.output
190314564Sdim
191314564Sdimclean: libfdt_clean tests_clean
192353358Sdim	@$(VECHO) CLEAN
193314564Sdim	rm -f $(STD_CLEANFILES)
194314564Sdim	rm -f $(VERSION_FILE)
195314564Sdim	rm -f $(BIN)
196309124Sdim
197314564Sdim#
198314564Sdim# Generic compile rules
199353358Sdim#
200314564Sdim%: %.o
201314564Sdim	@$(VECHO) LD $@
202314564Sdim	$(LINK.c) -o $@ $^
203314564Sdim
204314564Sdim%.o: %.c
205254721Semaste	@$(VECHO) CC $@
206314564Sdim	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
207314564Sdim
208353358Sdim%.o: %.S
209314564Sdim	@$(VECHO) AS $@
210314564Sdim	$(CC) $(CPPFLAGS) $(AFLAGS) -D__ASSEMBLY__ -o $@ -c $<
211314564Sdim
212314564Sdim%.d: %.c
213353358Sdim	@$(VECHO) DEP $<
214314564Sdim	$(CC) $(CPPFLAGS) -MM -MG -MT "$*.o $@" $< > $@
215314564Sdim
216314564Sdim%.d: %.S
217254721Semaste	@$(VECHO) DEP $<
218341825Sdim	$(CC) $(CPPFLAGS) -MM -MG -MT "$*.o $@" $< > $@
219341825Sdim
220314564Sdim%.i:	%.c
221353358Sdim	@$(VECHO) CPP $@
222314564Sdim	$(CC) $(CPPFLAGS) -E $< > $@
223314564Sdim
224314564Sdim%.s:	%.c
225314564Sdim	@$(VECHO) CC -S $@
226314564Sdim	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -S $<
227314564Sdim
228360784Sdim%.a:
229360784Sdim	@$(VECHO) AR $@
230360784Sdim	$(AR) $(ARFLAGS) $@ $^
231314564Sdim
232353358Sdim$(LIBFDT_lib):
233314564Sdim	@$(VECHO) LD $@
234314564Sdim	$(CC) $(LDFLAGS) -fPIC $(SHAREDLIB_LINK_OPTIONS)$(notdir $@) -o $(LIBFDT_objdir)/libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT) $^
235314564Sdim	ln -sf libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT) $(LIBFDT_objdir)/libfdt.$(SHAREDLIB_EXT)
236314564Sdim
237314564Sdim%.lex.c: %.l
238314564Sdim	@$(VECHO) LEX $@
239254721Semaste	$(LEX) -o$@ $<
240341825Sdim
241341825Sdim%.tab.c %.tab.h %.output: %.y
242314564Sdim	@$(VECHO) BISON $@
243353358Sdim	$(BISON) -d $<
244314564Sdim
245314564SdimFORCE:
246314564Sdim