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