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 <jan@janware.com>
This commit is contained in:
Jan Lindemann 2017-10-30 12:02:43 +00:00
commit 2594143b1f
4 changed files with 40 additions and 14 deletions

View file

@ -3,6 +3,7 @@ DEPEND_CFLAGS += -D__MAKEDEPEND__
DEPEND_CPPFLAGS += -D__MAKEDEPEND__ DEPEND_CPPFLAGS += -D__MAKEDEPEND__
DEPEND_MK += $(addprefix .,$(addsuffix .dep.mk, $(OBJ))) DEPEND_MK += $(addprefix .,$(addsuffix .dep.mk, $(OBJ)))
ifeq ($(DEPEND_MK_INCLUDED),)
# mandatory target behaviour # mandatory target behaviour
all: all:
@ -26,3 +27,5 @@ my_depclean:
$(DEPEND_MK): $(PREREQ_DONE) $(DEPEND_MK): $(PREREQ_DONE)
%.o: .%.o.dep.mk %.o: .%.o.dep.mk
endif # DEPEND_MK_INCLUDED
DEPEND_MK_INCLUDED := true

View file

@ -1,7 +1,9 @@
FB_EXE ?= $(notdir $(shell pwd)) FB_EXE ?= $(notdir $(shell pwd))
FB_NAME_PREFIX ?= $(shell pwd | xargs dirname | sed 's/-/_/g')_ FB_NAME ?= $(shell pwd | xargs dirname | sed 's/-/_/g')
FB_SRC_Y ?= $(wildcard *.y) FB_NAME_PREFIX ?= $(FB_NAME)_
FB_SRC_L ?= $(wildcard *.l) 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_FLEX_PREFIX ?= $(FB_NAME_PREFIX)
FB_HDRDIR ?= . FB_HDRDIR ?= .
FB_OUT_EXT ?= c FB_OUT_EXT ?= c
@ -9,15 +11,20 @@ FB_BISON_OUT_EXT ?= $(FB_OUT_EXT)
FB_FLEX_OUT_EXT ?= $(FB_OUT_EXT) FB_FLEX_OUT_EXT ?= $(FB_OUT_EXT)
FB_CFLAGS ?= -D"FB_SYM(x)=$(FB_NAME_PREFIX)\#\#x" FB_CFLAGS ?= -D"FB_SYM(x)=$(FB_NAME_PREFIX)\#\#x"
FB_CPPFLAGS ?= -std=c++11 $(FB_CFLAGS) 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_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_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_BISON_OUT_H ?= $(patsubst %.y,$(FB_HDRDIR)/%.tab.h,$(FB_SRC_Y))
FB_SRC_C = $(FB_GENERATED_C) $(filter-out $(FB_GENERATED_C),$(wildcard *.c) $(wildcard *.cpp)) 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_OBJ = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o,$(FB_SRC_C)))
FB_BISON_OPTS ?= --name-prefix=$(FB_NAME_PREFIX) FB_BISON_OPTS ?= --name-prefix=$(FB_NAME_PREFIX)
FB_BISON_EXTRA_OPTS ?= FB_BISON_EXTRA_OPTS ?=
FB_FLEX_OPTS ?= --prefix=$(FB_FLEX_PREFIX) 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)),) ifneq ($(filter cpp,$(FB_BISON_OUT_EXT) $(FB_FLEX_OUT_EXT)),)
FB_CPPFLAGS += -Wno-sign-compare FB_CPPFLAGS += -Wno-sign-compare
endif endif
@ -26,35 +33,40 @@ ifeq ($(FB_CASE_INSENSITIVE),true)
FB_FLEX_OPTS += -i FB_FLEX_OPTS += -i
endif endif
# serving tools.mk and friends
SRC_ALL_CPP += $(FB_GENERATED_C)
OBJ += $(FB_OBJ) OBJ += $(FB_OBJ)
LOCAL_CFLAGS += $(FB_CFLAGS) LOCAL_CFLAGS += $(FB_CFLAGS)
LOCAL_CPPFLAGS += $(FB_CPPFLAGS) LOCAL_CPPFLAGS += $(FB_CPPFLAGS)
LOCAL_LDFLAGS += -lfl LOCAL_LDFLAGS += -lfl
.PRECIOUS: lex.%.c %.tab.c .PRECIOUS: lex.%.c %.tab.$(BISON_OUT_EXT)
include $(MODDIR)/make/tools.mk
all: all:
install: install:
clean: clean.local clean: clean.flex-bison
distclean: clean distclean: clean
exe: $(FB_EXE) 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 \ bison \
--report=state,solved \
--defines=$(patsubst %.tab.$(FB_BISON_OUT_EXT),$(FB_HDRDIR)/%.tab.h,$@) \ --defines=$(patsubst %.tab.$(FB_BISON_OUT_EXT),$(FB_HDRDIR)/%.tab.h,$@) \
--report-file=$(patsubst %.tab.$(FB_BISON_OUT_EXT),report-%.tab.txt,$@) \ --report-file=$(patsubst %.tab.$(FB_BISON_OUT_EXT),report-%.tab.txt,$@) \
--xml=$(patsubst %.tab.$(FB_BISON_OUT_EXT),report-%.tab.xml,$@) \ --xml=$(patsubst %.tab.$(FB_BISON_OUT_EXT),report-%.tab.xml,$@) \
--graph=$(patsubst %.tab.$(FB_BISON_OUT_EXT),graph-%.tab.txt,$@) \ --graph=$(patsubst %.tab.$(FB_BISON_OUT_EXT),graph-%.tab.txt,$@) \
$(FB_BISON_OPTS) $(FB_BISON_EXTRA_OPTS) -v -t $< -o $@ $(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 $@ $< flex -i --header-file=$(FB_HDRDIR)/lex.$*.h $(FB_FLEX_OPTS) $(FB_FLEX_EXTRA_OPTS) -o $@ $<
%.tab.o: lex.%.o
#%.o: %.c #%.o: %.c
# gcc -D"FB_SYM(x)=$(FB_NAME_PREFIX)##x" $(FB_CFLAGS) -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) #$(FB_EXE): $(FB_OBJ)
# g++ -g -o $(FB_EXE) $^ -lfl # 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 $(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 $(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)

View file

@ -16,7 +16,10 @@ LD_LIBRARY_PATH = $(call proj_query, ldlibpath $(PROJECT) $(PREREQ_BUILD))
export LD_LIBRARY_PATH export LD_LIBRARY_PATH
export PATH=$(call proj_query, exepath $(PROJECT) $(PREREQ_BUILD)):$(EXE_SEARCH_PATH_ENV) export PATH=$(call proj_query, exepath $(PROJECT) $(PREREQ_BUILD)):$(EXE_SEARCH_PATH_ENV)
ifneq ($(LDLIBPATH_MK_INCLUDED),)
all: all:
libpath: libpath:
@echo "export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)" @echo "export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)"
@echo "export PATH=.:$(PATH)" @echo "export PATH=.:$(PATH)"
endif
LDLIBPATH_MK_INCLUDED := true

View file

@ -36,6 +36,8 @@ PYTHONPATH ?= $(call proj_query, pythonpath $(PROJECT))
export PYTHONPATH export PYTHONPATH
all: all:
clean: pyc.clean
echo-py: echo-py:
@echo PROJECT = $(PROJECT) @echo PROJECT = $(PROJECT)
@echo PY_PROJ_MODULE_DIRS = $(PY_PROJ_MODULE_DIRS) @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_MOD = $(PY_INSTALL_MOD)
@echo PY_INSTALL_SUB_MOD = $(PY_INSTALL_SUB_MOD) @echo PY_INSTALL_SUB_MOD = $(PY_INSTALL_SUB_MOD)
pyc.clean:
rm -f $(wildcard *.pyc)
libpath: py-libpath libpath: py-libpath
py-libpath: py-libpath:
@echo export PYTHONPATH=$(PYTHONPATH) @echo export PYTHONPATH=$(PYTHONPATH)