diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2007-10-04 15:37:43 +1000 |
---|---|---|
committer | Jon Loeliger <jdl@freescale.com> | 2007-10-15 08:28:07 -0500 |
commit | ad9593f229362782b953da4b805df713e8468df0 (patch) | |
tree | 099cc29f97b5c047934587da8f419e2a5b7ea522 /Makefile | |
parent | d2a9da045897c37071597d9aa473964717b14735 (diff) | |
download | dtc-ad9593f229362782b953da4b805df713e8468df0.tar.gz |
dtc: Refactor Makefiles
This patch makes a number of Makefile cleanups and improvements:
- We use more generic rules to invoke flex and bison, which is
useful for some of the other changes.
- We use the name dtc-lexer.lex.c for the flex output, instead
of the default lex.yy.c. That means less potential for confusion if
dtc is embedded into other projects (e.g. the kernel).
- We separate out a Makefile.dtc designed for embedding into
other projects, analagous to Makefile.libfdt.
- Makefile.libfdt is cleaned up to be more useful based on
some actual trial runs of embedding libfdt in the kernel bootwrapper.
- Versioning related rules and variables are collected into
one place in the Makefile.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 166 |
1 files changed, 91 insertions, 75 deletions
@@ -15,40 +15,12 @@ EXTRAVERSION = LOCAL_VERSION = CONFIG_LOCALVERSION = -DTC_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) -VERSION_FILE = version_gen.h - -CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ - else if [ -x /bin/bash ]; then echo /bin/bash; \ - else echo sh; fi ; fi) - -nullstring := -space := $(nullstring) # end of line - -localver_config = $(subst $(space),, $(string) \ - $(patsubst "%",%,$(CONFIG_LOCALVERSION))) - -localver_cmd = $(subst $(space),, $(string) \ - $(patsubst "%",%,$(LOCALVERSION))) - -localver_scm = $(shell $(CONFIG_SHELL) ./scripts/setlocalversion) -localver_full = $(localver_config)$(localver_cmd)$(localver_scm) - -dtc_version = $(DTC_VERSION)$(localver_full) - -# -# Contents of the generated version file. -# -define filechk_version - (echo "#define DTC_VERSION \"DTC $(dtc_version)\""; ) -endef - - CPPFLAGS = -I libfdt CFLAGS = -Wall -g -Os LDFLAGS = -Llibfdt BISON = bison +LEX = flex INSTALL = /usr/bin/install DESTDIR = @@ -77,52 +49,107 @@ endif all: dtc ftdump libfdt tests +install: all + @$(VECHO) INSTALL + $(INSTALL) -d $(DESTDIR)$(BINDIR) + $(INSTALL) -m 755 dtc $(DESTDIR)$(BINDIR) + $(INSTALL) -d $(DESTDIR)$(LIBDIR) + $(INSTALL) -m 644 $(LIBFDT_LIB) $(DESTDIR)$(LIBDIR) + $(INSTALL) -d $(DESTDIR)$(INCLUDEDIR) + $(INSTALL) -m 644 $(LIBFDT_INCLUDES) $(DESTDIR)$(INCLUDEDIR) + # -# Rules for dtc proper +# Rules for versioning # -DTC_PROGS = dtc ftdump -DTC_OBJS = dtc.o flattree.o fstree.o data.o livetree.o \ - srcpos.o treesource.o \ - dtc-parser.tab.o lex.yy.o -DTC_DEPFILES = $(DTC_OBJS:%.o=%.d) -BIN += dtc ftdump +DTC_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) +VERSION_FILE = version_gen.h -dtc-parser.tab.c dtc-parser.tab.h dtc-parser.output: dtc-parser.y - @$(VECHO) BISON $@ - @$(VECHO) ---- Expect 2 s/r and 2 r/r. ---- - $(BISON) -d $< +CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ + else if [ -x /bin/bash ]; then echo /bin/bash; \ + else echo sh; fi ; fi) + +nullstring := +space := $(nullstring) # end of line + +localver_config = $(subst $(space),, $(string) \ + $(patsubst "%",%,$(CONFIG_LOCALVERSION))) + +localver_cmd = $(subst $(space),, $(string) \ + $(patsubst "%",%,$(LOCALVERSION))) + +localver_scm = $(shell $(CONFIG_SHELL) ./scripts/setlocalversion) +localver_full = $(localver_config)$(localver_cmd)$(localver_scm) + +dtc_version = $(DTC_VERSION)$(localver_full) + +# Contents of the generated version file. +define filechk_version + (echo "#define DTC_VERSION \"DTC $(dtc_version)\""; ) +endef + +define filechk + set -e; \ + echo ' CHK $@'; \ + mkdir -p $(dir $@); \ + $(filechk_$(1)) < $< > $@.tmp; \ + if [ -r $@ ] && cmp -s $@ $@.tmp; then \ + rm -f $@.tmp; \ + else \ + echo ' UPD $@'; \ + mv -f $@.tmp $@; \ + fi; +endef $(VERSION_FILE): Makefile FORCE $(call filechk,version) -lex.yy.c: dtc-lexer.l - @$(VECHO) LEX $@ - $(LEX) $< +# +# Rules for dtc proper +# +include Makefile.dtc + +BIN += dtc + +# This stops make from generating the lex and bison output during +# auto-dependency computation, but throwing them away as an +# intermediate target and building them again "for real" +.SECONDARY: $(DTC_GEN_SRCS) dtc: $(DTC_OBJS) +ifneq ($(DEPTARGETS),) +-include $(DTC_OBJS:%.o=%.d) +endif +# +# Rules for ftdump +# +BIN += ftdump + ftdump: ftdump.o ifneq ($(DEPTARGETS),) --include $(DTC_DEPFILES) +-include ftdump.d endif - # # Rules for libfdt # -LIBFDT_PREFIX = libfdt/ +LIBFDT_objdir = libfdt +LIBFDT_srcdir = libfdt include libfdt/Makefile.libfdt .PHONY: libfdt libfdt: $(LIBFDT_LIB) +$(LIBFDT_LIB): $(addprefix libfdt/,$(LIBFDT_OBJS)) + libfdt_clean: @$(VECHO) CLEAN "(libfdt)" - rm -f $(LIBFDT_CLEANFILES) + rm -f $(addprefix libfdt/,$(STD_CLEANFILES)) + rm -f $(addprefix libfdt/,$(LIBFDT_CLEANFILES)) ifneq ($(DEPTARGETS),) --include $(LIBFDT_DEPFILES) +-include $(LIBFDT_OBJS:%.o=$(LIBFDT_objdir)/%.d) endif # @@ -131,38 +158,18 @@ endif TESTS_PREFIX=tests/ include tests/Makefile.tests -STD_CLEANFILES = *~ *.o *.d *.a *.i *.s core a.out -GEN_CLEANFILES = $(VERSION_FILE) +# +# Clean rules +# +STD_CLEANFILES = *~ *.o *.d *.a *.i *.s core a.out vgcore.* \ + *.tab.[ch] *.lex.c *.output clean: libfdt_clean tests_clean @$(VECHO) CLEAN - rm -f $(STD_CLEANFILES) - rm -f $(GEN_CLEANFILES) - rm -f *.tab.[ch] lex.yy.c *.output vgcore.* + rm -f $(STD_CLEANFILES) $(DTC_CLEANFILES) + rm -f $(VERSION_FILE) rm -f $(BIN) -install: all - @$(VECHO) INSTALL - $(INSTALL) -d $(DESTDIR)$(BINDIR) - $(INSTALL) -m 755 dtc $(DESTDIR)$(BINDIR) - $(INSTALL) -d $(DESTDIR)$(LIBDIR) - $(INSTALL) -m 644 $(LIBFDT_LIB) $(DESTDIR)$(LIBDIR) - $(INSTALL) -d $(DESTDIR)$(INCLUDEDIR) - $(INSTALL) -m 644 $(LIBFDT_INCLUDES) $(DESTDIR)$(INCLUDEDIR) - -define filechk - set -e; \ - echo ' CHK $@'; \ - mkdir -p $(dir $@); \ - $(filechk_$(1)) < $< > $@.tmp; \ - if [ -r $@ ] && cmp -s $@ $@.tmp; then \ - rm -f $@.tmp; \ - else \ - echo ' UPD $@'; \ - mv -f $@.tmp $@; \ - fi; -endef - # # Generic compile rules # @@ -179,6 +186,7 @@ endef $(CC) $(CPPFLAGS) $(AFLAGS) -D__ASSEMBLY__ -o $@ -c $< %.d: %.c + @$(VECHO) DEP $< $(CC) $(CPPFLAGS) -MM -MG -MT "$*.o $@" $< > $@ %.i: %.c @@ -193,4 +201,12 @@ endef @$(VECHO) AR $@ $(AR) $(ARFLAGS) $@ $^ +%.lex.c: %.l + @$(VECHO) LEX $@ + $(LEX) -o $@ $< + +%.tab.c %.tab.h %.output: %.y + @$(VECHO) BISON $@ + $(BISON) -d $< + FORCE: |