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.
19 CFLAGS = -Wall -g -Os -fPIC -Wpointer-arith -Wcast-qual
24 INSTALL = /usr/bin/install
27 BINDIR = $(PREFIX)/bin
28 LIBDIR = $(PREFIX)/lib
29 INCLUDEDIR = $(PREFIX)/include
31 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
32 sed -e 's/\(cygwin\).*/cygwin/')
34 ifeq ($(HOSTOS),darwin)
36 SHAREDLIB_LINK_OPTIONS=-dynamiclib -Wl,-install_name -Wl,
39 SHAREDLIB_LINK_OPTIONS=-shared -Wl,--version-script=$(LIBFDT_version) -Wl,-soname,
54 ifeq ($(MAKECMDGOALS),)
57 DEPTARGETS = $(filter-out $(NODEPTARGETS),$(MAKECMDGOALS))
61 # Rules for versioning
64 DTC_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
65 VERSION_FILE = version_gen.h
67 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
68 else if [ -x /bin/bash ]; then echo /bin/bash; \
69 else echo sh; fi ; fi)
72 space := $(nullstring) # end of line
74 localver_config = $(subst $(space),, $(string) \
75 $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
77 localver_cmd = $(subst $(space),, $(string) \
78 $(patsubst "%",%,$(LOCALVERSION)))
80 localver_scm = $(shell $(CONFIG_SHELL) ./scripts/setlocalversion)
81 localver_full = $(localver_config)$(localver_cmd)$(localver_scm)
83 dtc_version = $(DTC_VERSION)$(localver_full)
85 # Contents of the generated version file.
86 define filechk_version
87 (echo "#define DTC_VERSION \"DTC $(dtc_version)\""; )
94 $(filechk_$(1)) < $< > $@.tmp; \
95 if [ -r $@ ] && cmp -s $@ $@.tmp; then \
104 include Makefile.convert-dtsv0
106 include Makefile.ftdump
116 ifneq ($(DEPTARGETS),)
117 -include $(DTC_OBJS:%.o=%.d)
118 -include $(CONVERT_OBJS:%.o=%.d)
119 -include $(FTDUMP_OBJS:%.o=%.d)
127 LIBFDT_objdir = libfdt
128 LIBFDT_srcdir = libfdt
129 LIBFDT_archive = $(LIBFDT_objdir)/libfdt.a
130 LIBFDT_lib = $(LIBFDT_objdir)/libfdt.$(SHAREDLIB_EXT)
131 LIBFDT_include = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_INCLUDES))
132 LIBFDT_version = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_VERSION))
134 include $(LIBFDT_srcdir)/Makefile.libfdt
137 libfdt: $(LIBFDT_archive) $(LIBFDT_lib)
139 $(LIBFDT_archive): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS))
140 $(LIBFDT_lib): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS))
143 @$(VECHO) CLEAN "(libfdt)"
144 rm -f $(addprefix $(LIBFDT_objdir)/,$(STD_CLEANFILES))
145 rm -f $(LIBFDT_objdir)/*.so
147 ifneq ($(DEPTARGETS),)
148 -include $(LIBFDT_OBJS:%.o=$(LIBFDT_objdir)/%.d)
151 # This stops make from generating the lex and bison output during
152 # auto-dependency computation, but throwing them away as an
153 # intermediate target and building them again "for real"
154 .SECONDARY: $(DTC_GEN_SRCS) $(CONVERT_GEN_SRCS)
158 $(INSTALL) -d $(DESTDIR)$(BINDIR)
159 $(INSTALL) $(BIN) $(DESTDIR)$(BINDIR)
160 $(INSTALL) -d $(DESTDIR)$(LIBDIR)
161 $(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)
162 $(INSTALL) -m 644 $(LIBFDT_archive) $(DESTDIR)$(LIBDIR)
163 $(INSTALL) -d $(DESTDIR)$(INCLUDEDIR)
164 $(INSTALL) -m 644 $(LIBFDT_include) $(DESTDIR)$(INCLUDEDIR)
166 $(VERSION_FILE): Makefile FORCE
167 $(call filechk,version)
172 convert-dtsv0: $(CONVERT_OBJS)
176 ftdump: $(FTDUMP_OBJS)
183 include tests/Makefile.tests
188 STD_CLEANFILES = *~ *.o *.so *.d *.a *.i *.s core a.out vgcore.* \
189 *.tab.[ch] *.lex.c *.output
191 clean: libfdt_clean tests_clean
193 rm -f $(STD_CLEANFILES)
194 rm -f $(VERSION_FILE)
198 # Generic compile rules
206 $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
210 $(CC) $(CPPFLAGS) $(AFLAGS) -D__ASSEMBLY__ -o $@ -c $<
214 $(CC) $(CPPFLAGS) -MM -MG -MT "$*.o $@" $< > $@
218 $(CC) $(CPPFLAGS) -MM -MG -MT "$*.o $@" $< > $@
222 $(CC) $(CPPFLAGS) -E $< > $@
226 $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -S $<
230 $(AR) $(ARFLAGS) $@ $^
234 $(CC) $(LDFLAGS) -fPIC $(SHAREDLIB_LINK_OPTIONS)$(notdir $@) -o $(LIBFDT_objdir)/libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT) $^
235 ln -sf libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT) $(LIBFDT_objdir)/libfdt.$(SHAREDLIB_EXT)
241 %.tab.c %.tab.h %.output: %.y