blob: 33bf25df7e985b86c940d0d1bf0c83c75a495580 (
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
CC := gcc
CFLAGS := -Wall -g -I.
BISON := bison
FLEX := flex
BUILD_DIR := build
PARSER_Y := parser.y
LEXER_L := lexer.l
DRIVER_C := driver.c
AST_C := ast.c
AST_H := ast.h
PARSER_C := $(BUILD_DIR)/parser.tab.c
PARSER_H := $(BUILD_DIR)/parser.tab.h
LEXER_C := $(BUILD_DIR)/lex.yy.c
OBJS := $(BUILD_DIR)/parser.tab.o $(BUILD_DIR)/lex.yy.o $(BUILD_DIR)/driver.o $(BUILD_DIR)/ast.o
TARGET := $(BUILD_DIR)/imp
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(PARSER_C) $(PARSER_H): $(PARSER_Y) | $(BUILD_DIR)
$(BISON) -d --defines=$(PARSER_H) -o $(PARSER_C) $(PARSER_Y)
$(LEXER_C): $(LEXER_L) $(PARSER_H) | $(BUILD_DIR)
$(FLEX) -o $@ $<
$(BUILD_DIR)/imp_parser.tab.o: $(PARSER_C) $(PARSER_H)
$(CC) $(CFLAGS) -c $(PARSER_C) -o $@
$(BUILD_DIR)/lex.yy.o: $(LEXER_C) $(PARSER_H)
$(CC) $(CFLAGS) -c $(LEXER_C) -o $@
$(BUILD_DIR)/driver.o: $(DRIVER_C) $(PARSER_H) $(AST_H) | $(BUILD_DIR)
$(CC) $(CFLAGS) -c $(DRIVER_C) -o $@
$(BUILD_DIR)/ast.o: $(AST_C) $(AST_H) | $(BUILD_DIR)
$(CC) $(CFLAGS) -c $(AST_C) -o $@
clean:
rm -rf $(BUILD_DIR)
|