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.
18 CPPFLAGS = -I libfdt -I .
19 WARNINGS = -Werror -Wall -Wpointer-arith -Wcast-qual -Wnested-externs \
20 -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls
21 CFLAGS = -g -Os -fPIC -Werror $(WARNINGS)
26 INSTALL = /usr/bin/install
29 BINDIR = $(PREFIX)/bin
30 LIBDIR = $(PREFIX)/lib
31 INCLUDEDIR = $(PREFIX)/include
33 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
34 sed -e 's/\(cygwin\).*/cygwin/')
36 ifeq ($(HOSTOS),darwin)
38 SHAREDLIB_LINK_OPTIONS=-dynamiclib -Wl,-install_name -Wl,
41 SHAREDLIB_LINK_OPTIONS=-shared -Wl,--version-script=$(LIBFDT_version) -Wl,-soname,
56 ifeq ($(MAKECMDGOALS),)
59 DEPTARGETS = $(filter-out $(NODEPTARGETS),$(MAKECMDGOALS))
63 # Rules for versioning
66 DTC_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
67 VERSION_FILE = version_gen.h
69 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
70 else if [ -x /bin/bash ]; then echo /bin/bash; \
71 else echo sh; fi ; fi)
74 space := $(nullstring) # end of line
76 localver_config = $(subst $(space),, $(string) \
77 $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
79 localver_cmd = $(subst $(space),, $(string) \
80 $(patsubst "%",%,$(LOCALVERSION)))
82 localver_scm = $(shell $(CONFIG_SHELL) ./scripts/setlocalversion)
83 localver_full = $(localver_config)$(localver_cmd)$(localver_scm)
85 dtc_version = $(DTC_VERSION)$(localver_full)
87 # Contents of the generated version file.
88 define filechk_version
89 (echo "#define DTC_VERSION \"DTC $(dtc_version)\""; )
96 $(filechk_$(1)) < $< > $@.tmp; \
97 if [ -r $@ ] && cmp -s $@ $@.tmp; then \
106 include Makefile.convert-dtsv0
108 include Makefile.utils
121 ifneq ($(DEPTARGETS),)
122 -include $(DTC_OBJS:%.o=%.d)
123 -include $(CONVERT_OBJS:%.o=%.d)
124 -include $(FDTDUMP_OBJS:%.o=%.d)
125 -include $(FDTGET_OBJS:%.o=%.d)
126 -include $(FDTPUT_OBJS:%.o=%.d)
134 LIBFDT_objdir = libfdt
135 LIBFDT_srcdir = libfdt
136 LIBFDT_archive = $(LIBFDT_objdir)/libfdt.a
137 LIBFDT_lib = $(LIBFDT_objdir)/libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT)
138 LIBFDT_include = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_INCLUDES))
139 LIBFDT_version = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_VERSION))
141 include $(LIBFDT_srcdir)/Makefile.libfdt
144 libfdt: $(LIBFDT_archive) $(LIBFDT_lib)
146 $(LIBFDT_archive): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS))
147 $(LIBFDT_lib): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS))
150 @$(VECHO) CLEAN "(libfdt)"
151 rm -f $(addprefix $(LIBFDT_objdir)/,$(STD_CLEANFILES))
152 rm -f $(LIBFDT_objdir)/*.so
154 ifneq ($(DEPTARGETS),)
155 -include $(LIBFDT_OBJS:%.o=$(LIBFDT_objdir)/%.d)
158 # This stops make from generating the lex and bison output during
159 # auto-dependency computation, but throwing them away as an
160 # intermediate target and building them again "for real"
161 .SECONDARY: $(DTC_GEN_SRCS) $(CONVERT_GEN_SRCS)
163 install: all $(SCRIPTS)
165 $(INSTALL) -d $(DESTDIR)$(BINDIR)
166 $(INSTALL) $(BIN) $(SCRIPTS) $(DESTDIR)$(BINDIR)
167 $(INSTALL) -d $(DESTDIR)$(LIBDIR)
168 $(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)
169 ln -sf $(notdir $(LIBFDT_lib)) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname)
170 ln -sf $(LIBFDT_soname) $(DESTDIR)$(LIBDIR)/libfdt.$(SHAREDLIB_EXT)
171 $(INSTALL) -m 644 $(LIBFDT_archive) $(DESTDIR)$(LIBDIR)
172 $(INSTALL) -d $(DESTDIR)$(INCLUDEDIR)
173 $(INSTALL) -m 644 $(LIBFDT_include) $(DESTDIR)$(INCLUDEDIR)
175 $(VERSION_FILE): Makefile FORCE
176 $(call filechk,version)
181 convert-dtsv0: $(CONVERT_OBJS)
185 fdtdump: $(FDTDUMP_OBJS)
187 fdtget: $(FDTGET_OBJS) $(LIBFDT_archive)
189 fdtput: $(FDTPUT_OBJS) $(LIBFDT_archive)
198 TESTS_BIN += convert-dtsv0
202 include tests/Makefile.tests
207 STD_CLEANFILES = *~ *.o *.$(SHAREDLIB_EXT) *.d *.a *.i *.s core a.out vgcore.* \
208 *.tab.[ch] *.lex.c *.output
210 clean: libfdt_clean tests_clean
212 rm -f $(STD_CLEANFILES)
213 rm -f $(VERSION_FILE)
217 # Generic compile rules
225 $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
229 $(CC) $(CPPFLAGS) $(AFLAGS) -D__ASSEMBLY__ -o $@ -c $<
233 $(CC) $(CPPFLAGS) -MM -MG -MT "$*.o $@" $< > $@
237 $(CC) $(CPPFLAGS) -MM -MG -MT "$*.o $@" $< > $@
241 $(CC) $(CPPFLAGS) -E $< > $@
245 $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -S $<
249 $(AR) $(ARFLAGS) $@ $^
253 $(CC) $(LDFLAGS) -fPIC $(SHAREDLIB_LINK_OPTIONS)$(LIBFDT_soname) -o $(LIBFDT_lib) $^
259 %.tab.c %.tab.h %.output: %.y