mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 03:53:32 +01:00
flex-bison.mk: Add flex-bison.mk
Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
f1ff08368c
commit
25e107b876
1 changed files with 40 additions and 0 deletions
40
make/flex-bison.mk
Normal file
40
make/flex-bison.mk
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
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_FLEX_PREFIX ?= $(FB_NAME_PREFIX)
|
||||
FB_HDRDIR ?= .
|
||||
FB_CFLAGS ?= -g -O0
|
||||
FB_CPPFLAGS ?= -std=c++11
|
||||
FB_FLEX_OUT_C = $(patsubst %.l,lex.%.c,$(FB_SRC_L))
|
||||
FB_BISON_OUT_C = $(patsubst %.y,%.tab.c,$(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_OBJ = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o,$(FB_SRC_C)))
|
||||
|
||||
.PRECIOUS: lex.%.c %.tab.c
|
||||
|
||||
all:
|
||||
install:
|
||||
clean: clean.local
|
||||
distclean: clean
|
||||
|
||||
exe: $(FB_EXE)
|
||||
|
||||
%.tab.c: %.y
|
||||
bison --defines=$(patsubst %.tab.c,$(FB_HDRDIR)/%.tab.h,$@) --name-prefix=$(FB_NAME_PREFIX) -v -t $< -o $@
|
||||
|
||||
lex.%.c: %.l $(FB_BISON_OUT_C)
|
||||
flex -i --header-file=$(FB_HDRDIR)/lex.$*.h --prefix=$(FB_FLEX_PREFIX) -o $@ $<
|
||||
|
||||
%.o: %.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)
|
||||
g++ -g -o $(FB_EXE) $^ -lfl
|
||||
|
||||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue