- 重命名和重构了多个文件,包括 lexer、parser 和 AST 相关代码 - 添加了日志功能,使用 LOG_* 宏替代原有的 error 和 warn 函数 - 优化了错误处理和内存分配方式 - 调整了代码结构,提高了模块化和可读性
47 lines
818 B
Makefile
47 lines
818 B
Makefile
# 编译器设置
|
|
CC = gcc
|
|
AR = ar
|
|
CFLAGS = -g -Wall -I../..
|
|
|
|
# 源文件路径
|
|
LEXER_DIR = ./lexer
|
|
PARSER_DIR = ./parser
|
|
AST_DIR = ./parser/ast
|
|
SYMTAB_DIR = ./parser/symtab
|
|
|
|
# 源文件列表
|
|
SRCS = \
|
|
frontend.c \
|
|
$(LEXER_DIR)/lexer.c \
|
|
$(LEXER_DIR)/token.c \
|
|
$(PARSER_DIR)/parser.c \
|
|
$(PARSER_DIR)/ast.c \
|
|
$(AST_DIR)/block.c \
|
|
$(AST_DIR)/decl.c \
|
|
$(AST_DIR)/expr.c \
|
|
$(AST_DIR)/func.c \
|
|
$(AST_DIR)/program.c \
|
|
$(AST_DIR)/stmt.c \
|
|
$(AST_DIR)/term.c \
|
|
$(SYMTAB_DIR)/hashmap.c \
|
|
$(SYMTAB_DIR)/scope.c \
|
|
$(SYMTAB_DIR)/symtab.c \
|
|
|
|
# 生成目标文件列表
|
|
OBJS = $(SRCS:.c=.o)
|
|
|
|
# 最终目标
|
|
TARGET = libfrontend.a
|
|
|
|
all: $(TARGET)
|
|
|
|
$(TARGET): $(OBJS)
|
|
$(AR) rcs $@ $^
|
|
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
clean:
|
|
rm -f $(OBJS) $(TARGET)
|
|
|
|
.PHONY: all clean |