58 lines
1.1 KiB
Makefile
58 lines
1.1 KiB
Makefile
# all: cc
|
|
|
|
# # run: ccompiler
|
|
# # ./ccompiler test.c flat.bin
|
|
|
|
# # simple_test:
|
|
# # make -C tests/simple
|
|
|
|
# cc: frontend middleend backend ccompiler.c test_main.c
|
|
# gcc -g ccompiler.c test_main.c -I../ -L./frontend -lfrontend -L./middleend -lmiddleend -L./backend -lbackend -L../lib -lcore -o cc
|
|
|
|
# frontend:
|
|
# make -C ./frontend
|
|
|
|
# middleend:
|
|
# make -C ./middleend
|
|
|
|
# backend:
|
|
# make -C ./backend
|
|
|
|
# clean:
|
|
# rm -f cc
|
|
# make -C ./frontend clean
|
|
# make -C ./middleend clean
|
|
# make -C ./backend clean
|
|
|
|
|
|
# 顶层Makefile修改
|
|
CC = gcc
|
|
AR = ar
|
|
CFLAGS = -g -Wall -I..
|
|
MODULES = frontend middleend backend
|
|
|
|
FRONTEND_SUBDIRS = lexer parser parser/ast
|
|
MODULES += $(addprefix frontend/, $(FRONTEND_SUBDIRS))
|
|
|
|
MIDDLEEND_MODULES = ir
|
|
MODULES += middleend/$(MIDDLEEND_MODULES)
|
|
|
|
BACKEND_MODULES = riscv32
|
|
MODULES += backend/$(BACKEND_MODULES)
|
|
|
|
# 自动收集所有子模块源文件
|
|
EXCLUDE = test*.c
|
|
|
|
SRCS = $(filter-out $(EXCLUDE), $(wildcard $(addsuffix /*.c,$(MODULES))))
|
|
SRCS += ccompiler.c
|
|
OBJS = $(SRCS:.c=.o)
|
|
|
|
libcc.a: $(OBJS)
|
|
$(AR) rcs $@ $^
|
|
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
clean:
|
|
rm -f libcc.a $(OBJS)
|