mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-25 07:00:39 +01:00
flex-bison.mk: Add support for C++
Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
44cdc0d109
commit
fdf4b7f5e1
1 changed files with 43 additions and 14 deletions
|
|
@ -4,16 +4,37 @@ FB_SRC_Y ?= $(wildcard *.y)
|
||||||
FB_SRC_L ?= $(wildcard *.l)
|
FB_SRC_L ?= $(wildcard *.l)
|
||||||
FB_FLEX_PREFIX ?= $(FB_NAME_PREFIX)
|
FB_FLEX_PREFIX ?= $(FB_NAME_PREFIX)
|
||||||
FB_HDRDIR ?= .
|
FB_HDRDIR ?= .
|
||||||
FB_CFLAGS ?= -g -O0
|
FB_OUT_EXT ?= c
|
||||||
FB_CPPFLAGS ?= -std=c++11
|
FB_BISON_OUT_EXT ?= $(FB_OUT_EXT)
|
||||||
FB_FLEX_OUT_C = $(patsubst %.l,lex.%.c,$(FB_SRC_L))
|
FB_FLEX_OUT_EXT ?= $(FB_OUT_EXT)
|
||||||
FB_BISON_OUT_C = $(patsubst %.y,%.tab.c,$(FB_SRC_Y))
|
FB_CFLAGS ?= -D"FB_SYM(x)=$(FB_NAME_PREFIX)\#\#x"
|
||||||
|
FB_CPPFLAGS ?= -std=c++11 $(FB_CFLAGS)
|
||||||
|
FB_FLEX_OUT_C = $(patsubst %.l,lex.%.$(FB_FLEX_OUT_EXT),$(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_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_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_EXTRA_OPTS ?=
|
||||||
|
FB_FLEX_OPTS ?= --prefix=$(FB_FLEX_PREFIX)
|
||||||
|
FB_FLEX_ETRA_OPTS ?=
|
||||||
|
ifneq ($(filter cpp,$(FB_BISON_OUT_EXT) $(FB_FLEX_OUT_EXT)),)
|
||||||
|
FB_CPPFLAGS += -Wno-sign-compare
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(FB_CASE_INSENSITIVE),true)
|
||||||
|
FB_FLEX_OPTS += -i
|
||||||
|
endif
|
||||||
|
|
||||||
|
OBJ += $(FB_OBJ)
|
||||||
|
LOCAL_CFLAGS += $(FB_CFLAGS)
|
||||||
|
LOCAL_CPPFLAGS += $(FB_CPPFLAGS)
|
||||||
|
LOCAL_LDFLAGS += -lfl
|
||||||
|
|
||||||
.PRECIOUS: lex.%.c %.tab.c
|
.PRECIOUS: lex.%.c %.tab.c
|
||||||
|
|
||||||
|
include $(MODDIR)/make/tools.mk
|
||||||
|
|
||||||
all:
|
all:
|
||||||
install:
|
install:
|
||||||
clean: clean.local
|
clean: clean.local
|
||||||
|
|
@ -21,20 +42,28 @@ distclean: clean
|
||||||
|
|
||||||
exe: $(FB_EXE)
|
exe: $(FB_EXE)
|
||||||
|
|
||||||
%.tab.c: %.y
|
$(DEPEND_MK): $(FB_GENERATED_C)
|
||||||
bison --defines=$(patsubst %.tab.c,$(FB_HDRDIR)/%.tab.h,$@) --name-prefix=$(FB_NAME_PREFIX) -v -t $< -o $@
|
|
||||||
|
|
||||||
lex.%.c: %.l $(FB_BISON_OUT_C)
|
%.tab.$(FB_BISON_OUT_EXT): %.y
|
||||||
flex -i --header-file=$(FB_HDRDIR)/lex.$*.h --prefix=$(FB_FLEX_PREFIX) -o $@ $<
|
bison \
|
||||||
|
--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 $@
|
||||||
|
|
||||||
%.o: %.c
|
lex.%.$(FB_FLEX_OUT_EXT): %.l $(FB_BISON_OUT_C)
|
||||||
gcc -D"FB_SYM(x)=$(FB_NAME_PREFIX)##x" $(FB_CFLAGS) -c $<
|
flex -i --header-file=$(FB_HDRDIR)/lex.$*.h $(FB_FLEX_OPTS) $(FB_FLEX_EXTRA_OPTS) -o $@ $<
|
||||||
|
|
||||||
%.o: %.cpp
|
#%.o: %.c
|
||||||
gcc -D"FB_SYM(x)=$(FB_NAME_PREFIX)##x" $(FB_CFLAGS) $(FB_CPPFLAGS) -c $<
|
# gcc -D"FB_SYM(x)=$(FB_NAME_PREFIX)##x" $(FB_CFLAGS) -c $<
|
||||||
|
#
|
||||||
|
#%.o: %.cpp
|
||||||
|
# gcc -D"FB_SYM(x)=$(FB_NAME_PREFIX)##x" $(FB_CFLAGS) $(FB_CPPFLAGS) -c $<
|
||||||
|
|
||||||
$(FB_EXE): $(FB_OBJ)
|
#$(FB_EXE): $(FB_OBJ)
|
||||||
g++ -g -o $(FB_EXE) $^ -lfl
|
# g++ -g -o $(FB_EXE) $^ -lfl
|
||||||
|
|
||||||
clean.local:
|
clean.local:
|
||||||
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-*.txt
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue