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