aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
blob: 8410a241f0a4c6bdb00150b4ab1ef7418e402c91 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
CC = gcc
FLEX = flex
BISON = bison

CFILES = $(shell find . -name "*.c")
OBJS = $(CFILES:.c=.o)
LFILE = $(wildcard *.l)
YFILE = $(wildcard *.y)
LFC = ./lex.yy.c
YFC = ./syntax.tab.c
LFO = $(LFC:.c=.o)
YFO = $(YFC:.c=.o)

bcsh: syntax $(filter-out $(LFO),$(OBJS))
	$(CC) -g -o bcsh $(filter-out $(LFO),$(OBJS)) -lfl

syntax: lexical syntax-c
	$(CC) -c $(YFC) -o $(YFO)

lexical: $(LFILE)
	$(FLEX) -o $(LFC) $(LFILE)

syntax-c: $(YFILE)
	$(BISON) -o $(YFC) -d -v $(YFILE) -Wcounterexamples

-include $(patsubst %.o, %.d, $(OBJS))

clean:
	rm -f bcsh lex.yy.c syntax.tab.c syntax.tab.h syntax.output
	rm -f $(OBJS) $(OBJS:.o=.d)
	rm -f $(LFC) $(YFC) $(YFC:.c=.h)
	rm -f *~