From 2594143b1fb670a8383a2625f48aa9f8ff027d45 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Mon, 30 Oct 2017 12:02:43 +0000 Subject: [PATCH] make: Improvements to a couple of makefiles - Depend.mk, ldlibpath.mk: add multiple inclusion guards - Flex-bison.mk some dependency fiddling - Py-defs.mk: remove *.pyc on clean Signed-off-by: Jan Lindemann --- make/depend.mk | 3 +++ make/flex-bison.mk | 44 ++++++++++++++++++++++++++++++-------------- make/ldlibpath.mk | 3 +++ make/py-defs.mk | 4 ++++ 4 files changed, 40 insertions(+), 14 deletions(-) diff --git a/make/depend.mk b/make/depend.mk index eea751bd..a3eafc2a 100644 --- a/make/depend.mk +++ b/make/depend.mk @@ -3,6 +3,7 @@ DEPEND_CFLAGS += -D__MAKEDEPEND__ DEPEND_CPPFLAGS += -D__MAKEDEPEND__ DEPEND_MK += $(addprefix .,$(addsuffix .dep.mk, $(OBJ))) +ifeq ($(DEPEND_MK_INCLUDED),) # mandatory target behaviour all: @@ -26,3 +27,5 @@ my_depclean: $(DEPEND_MK): $(PREREQ_DONE) %.o: .%.o.dep.mk +endif # DEPEND_MK_INCLUDED +DEPEND_MK_INCLUDED := true diff --git a/make/flex-bison.mk b/make/flex-bison.mk index 0cbc8c24..fb634c2d 100644 --- a/make/flex-bison.mk +++ b/make/flex-bison.mk @@ -1,7 +1,9 @@ FB_EXE ?= $(notdir $(shell pwd)) -FB_NAME_PREFIX ?= $(shell pwd | xargs dirname | sed 's/-/_/g')_ -FB_SRC_Y ?= $(wildcard *.y) -FB_SRC_L ?= $(wildcard *.l) +FB_NAME ?= $(shell pwd | xargs dirname | sed 's/-/_/g') +FB_NAME_PREFIX ?= $(FB_NAME)_ +FB_SRC ?= $(wildcard *.y *.l) +FB_SRC_Y ?= $(filter %.y,$(FB_SRC)) +FB_SRC_L ?= $(filter %.l,$(FB_SRC)) FB_FLEX_PREFIX ?= $(FB_NAME_PREFIX) FB_HDRDIR ?= . FB_OUT_EXT ?= c @@ -9,15 +11,20 @@ FB_BISON_OUT_EXT ?= $(FB_OUT_EXT) FB_FLEX_OUT_EXT ?= $(FB_OUT_EXT) FB_CFLAGS ?= -D"FB_SYM(x)=$(FB_NAME_PREFIX)\#\#x" FB_CPPFLAGS ?= -std=c++11 $(FB_CFLAGS) +FB_COMMON_H ?= FB_FLEX_OUT_C = $(patsubst %.l,lex.%.$(FB_FLEX_OUT_EXT),$(FB_SRC_L)) +FB_FLEX_OUT_H = $(patsubst %.l,$(FB_HDRDIR)/lex.%.h,$(FB_SRC_L)) FB_BISON_OUT_C ?= $(patsubst %.y,%.tab.$(FB_BISON_OUT_EXT),$(FB_SRC_Y)) -FB_GENERATED_C = $(FB_FLEX_OUT_C) $(FB_BISON_OUT_C) -FB_SRC_C = $(FB_GENERATED_C) $(filter-out $(FB_GENERATED_C),$(wildcard *.c) $(wildcard *.cpp)) +FB_BISON_OUT_H ?= $(patsubst %.y,$(FB_HDRDIR)/%.tab.h,$(FB_SRC_Y)) +FB_GENERATED_H += $(FB_FLEX_OUT_H) $(FB_BISON_OUT_H) $(FB_COMMON_H) +FB_GENERATED_C += $(FB_FLEX_OUT_C) $(FB_BISON_OUT_C) +FB_GENERATED_C_H += $(FB_GENERATED_C) $(FB_GENERATED_H) +FB_SRC_C += $(FB_GENERATED_C) $(filter-out $(FB_GENERATED_C),$(wildcard *.c) $(wildcard *.cpp)) FB_OBJ = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o,$(FB_SRC_C))) FB_BISON_OPTS ?= --name-prefix=$(FB_NAME_PREFIX) FB_BISON_EXTRA_OPTS ?= FB_FLEX_OPTS ?= --prefix=$(FB_FLEX_PREFIX) -FB_FLEX_ETRA_OPTS ?= +FB_FLEX_EXTRA_OPTS ?= ifneq ($(filter cpp,$(FB_BISON_OUT_EXT) $(FB_FLEX_OUT_EXT)),) FB_CPPFLAGS += -Wno-sign-compare endif @@ -26,35 +33,40 @@ ifeq ($(FB_CASE_INSENSITIVE),true) FB_FLEX_OPTS += -i endif +# serving tools.mk and friends +SRC_ALL_CPP += $(FB_GENERATED_C) OBJ += $(FB_OBJ) LOCAL_CFLAGS += $(FB_CFLAGS) LOCAL_CPPFLAGS += $(FB_CPPFLAGS) LOCAL_LDFLAGS += -lfl -.PRECIOUS: lex.%.c %.tab.c - -include $(MODDIR)/make/tools.mk +.PRECIOUS: lex.%.c %.tab.$(BISON_OUT_EXT) all: install: -clean: clean.local +clean: clean.flex-bison distclean: clean exe: $(FB_EXE) -$(DEPEND_MK): $(FB_GENERATED_C) +include $(MODDIR)/make/depend.mk -%.tab.$(FB_BISON_OUT_EXT): %.y +$(DEPEND_MK): $(FB_GENERATED_C_H) + +%.tab.$(FB_BISON_OUT_EXT) $(FB_HDRDIR)/%.tab.h: %.y $(FB_COMMON_H) bison \ + --report=state,solved \ --defines=$(patsubst %.tab.$(FB_BISON_OUT_EXT),$(FB_HDRDIR)/%.tab.h,$@) \ --report-file=$(patsubst %.tab.$(FB_BISON_OUT_EXT),report-%.tab.txt,$@) \ --xml=$(patsubst %.tab.$(FB_BISON_OUT_EXT),report-%.tab.xml,$@) \ --graph=$(patsubst %.tab.$(FB_BISON_OUT_EXT),graph-%.tab.txt,$@) \ $(FB_BISON_OPTS) $(FB_BISON_EXTRA_OPTS) -v -t $< -o $@ -lex.%.$(FB_FLEX_OUT_EXT): %.l $(FB_BISON_OUT_C) +lex.%.$(FB_FLEX_OUT_EXT) $(FB_HDRDIR)/lex.%.h: %.l $(FB_COMMON_H) flex -i --header-file=$(FB_HDRDIR)/lex.$*.h $(FB_FLEX_OPTS) $(FB_FLEX_EXTRA_OPTS) -o $@ $< +%.tab.o: lex.%.o + #%.o: %.c # gcc -D"FB_SYM(x)=$(FB_NAME_PREFIX)##x" $(FB_CFLAGS) -c $< # @@ -64,6 +76,10 @@ lex.%.$(FB_FLEX_OUT_EXT): %.l $(FB_BISON_OUT_C) #$(FB_EXE): $(FB_OBJ) # g++ -g -o $(FB_EXE) $^ -lfl -clean.local: +clean.flex-bison: $(RM) -f $(FB_GENERATED_C) $(FB_HDRDIR)/*.tab.h $(FB_HDRDIR)/lex.*.h *.output $(FB_EXE) *.tmp $(FB_OBJ) *.rep $(FB_HDRDIR)/*.rep $(RM) -f graph-*.txt report-*.xml report-*.txt +echo-vars: echo-vars-flex-bison + +echo-vars-flex-bison: + @echo FB_GENERATED_C_H = $(FB_GENERATED_C_H) diff --git a/make/ldlibpath.mk b/make/ldlibpath.mk index 6dab118c..25d57046 100644 --- a/make/ldlibpath.mk +++ b/make/ldlibpath.mk @@ -16,7 +16,10 @@ LD_LIBRARY_PATH = $(call proj_query, ldlibpath $(PROJECT) $(PREREQ_BUILD)) export LD_LIBRARY_PATH export PATH=$(call proj_query, exepath $(PROJECT) $(PREREQ_BUILD)):$(EXE_SEARCH_PATH_ENV) +ifneq ($(LDLIBPATH_MK_INCLUDED),) all: libpath: @echo "export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)" @echo "export PATH=.:$(PATH)" +endif +LDLIBPATH_MK_INCLUDED := true diff --git a/make/py-defs.mk b/make/py-defs.mk index 2a034d9d..f2c58ec2 100644 --- a/make/py-defs.mk +++ b/make/py-defs.mk @@ -36,6 +36,8 @@ PYTHONPATH ?= $(call proj_query, pythonpath $(PROJECT)) export PYTHONPATH all: +clean: pyc.clean + echo-py: @echo PROJECT = $(PROJECT) @echo PY_PROJ_MODULE_DIRS = $(PY_PROJ_MODULE_DIRS) @@ -46,6 +48,8 @@ echo-py: @echo PY_INSTALL_MOD = $(PY_INSTALL_MOD) @echo PY_INSTALL_SUB_MOD = $(PY_INSTALL_SUB_MOD) +pyc.clean: + rm -f $(wildcard *.pyc) libpath: py-libpath py-libpath: @echo export PYTHONPATH=$(PYTHONPATH)