blob: de737adb4c034213701b89f2e3728d885e5be4f1 (
plain)
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
33
34
|
CC = gcc
CFLAGS = -fPIC -Wall -Wextra -Wpedantic `pkg-config --cflags guile-3.0`
LIBS = `pkg-config --libs guile-3.0`
TARGET ?= libull.so
SRCDIR := src/frontend
OBJDIR := build
SRCS = $(SRCDIR)/lexer.c $(SRCDIR)/parser.c $(SRCDIR)/node.c $(SRCDIR)/driver.c
OBJS = $(OBJDIR)/driver.o $(OBJDIR)/lexer.o $(OBJDIR)/parser.o $(OBJDIR)/node.o
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) -shared -o $@ $^ $(LIBS)
$(OBJS): $(OBJDIR)/%.o : $(SRCDIR)/%.c $(SRCDIR)/lexer.h $(SRCDIR)/parser.h | $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@
$(SRCDIR)/lexer.h $(SRCDIR)/lexer.c: $(SRCDIR)/lexer.l
flex --header-file=$(SRCDIR)/lexer.h -o $(SRCDIR)/lexer.c $(SRCDIR)/lexer.l
$(SRCDIR)/parser.h $(SRCDIR)/parser.c: $(SRCDIR)/parser.y
bison -d -v -o $(SRCDIR)/parser.c $(SRCDIR)/parser.y
$(OBJDIR):
mkdir -p $(OBJDIR)
clean:
rm -f $(OBJS) $(SRCDIR)/lexer.c $(SRCDIR)/lexer.h $(SRCDIR)/parser.c $(SRCDIR)/parser.h $(SRCDIR)/parser.output $(TARGET)
.PHONY: all clean
|