-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
44 lines (30 loc) · 913 Bytes
/
Copy pathMakefile
File metadata and controls
44 lines (30 loc) · 913 Bytes
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
35
36
37
38
39
40
41
42
43
44
CC = gcc -g
CXX = g++-13 -std=c++23 -g
FLEX = flex
YACC = bison
EXEC_NAME = cobext
BUILD_DIR := ./build
IMM_DIR := $(BUILD_DIR)/immediate
OBJ_DIR := $(BUILD_DIR)/obj
SRC_DIR:= ./src
all: prep lexer parser $(EXEC_NAME)
.PHONY: prep
prep:
mkdir -p $(BUILD_DIR)
mkdir -p $(IMM_DIR)
mkdir -p $(OBJ_DIR)
.PHONY: lexer
lexer: $(SRC_DIR)/lexer.l parser prep
$(FLEX) -o $(IMM_DIR)/lex.yy.c $(SRC_DIR)/lexer.l
$(CC) -c -o $(OBJ_DIR)/lexer.o $(IMM_DIR)/lex.yy.c
.PHONY: parser
parser: $(SRC_DIR)/parser.y prep
$(YACC) -Wcounterexamples -d --output-file=$(IMM_DIR)/y.tab.c -d $(SRC_DIR)/parser.y
$(CC) -c -o $(OBJ_DIR)/parser.o $(IMM_DIR)/y.tab.c
$(EXEC_NAME): prep lexer parser
$(CXX) -o $(BUILD_DIR)/$(EXEC_NAME) $(OBJ_DIR)/lexer.o $(OBJ_DIR)/parser.o $(SRC_DIR)/main.cpp
run: all
$(BUILD_DIR)/$(EXEC_NAME)
.PHONY: clean
clean:
rm -r $(BUILD_DIR)