AnnaConnect/makefile
2025-06-06 21:31:59 +02:00

54 lines
1,020 B
Makefile

#!/usr/bin/make -f
FLAGS = -O3
FLAGS += -pedantic
FLAGS += -Wall
FLAGS += -Wextra
FLAGS += -Werror
OBJDIR = obj
OUTDIR = out
OBJ = $(SRC:%.c=$(OBJDIR)/%.o)
UI_TARGET = ncurses
CC = cc
MSG_LINKING = Linking:
MSG_COMPILING = Compiling C:
MSG_CLEANING = Cleaning:
MSG_CLEANING_OBJ = Cleaning $(OBJDIR):
MSG_CLEANING_OUT = Cleaning $(OUTDIR):
all: $(OUTDIR)/connect4_$(UI_TARGET).elf
clean_run: clean run
run: $(OUTDIR)/connect4_$(UI_TARGET).elf
./$<
$(OUTDIR)/connect4_ncurses.elf: $(OBJDIR)/ui_ncurses.o $(OBJDIR)/logic.o $(OBJDIR)/connect4.o
@echo
@echo $(MSG_LINKING) $@
mkdir -p $(@D)
$(CC) $(FLAGS) -lncursesw -o $@ $^
$(OUTDIR)/connect4_%.elf: $(OBJDIR)/ui_%.o $(OBJDIR)/logic.o $(OBJDIR)/connect4.o
@echo
@echo $(MSG_LINKING) $@
mkdir -p $(@D)
$(CC) $(FLAGS) -o $@ $^
$(OBJDIR)/%.o: %.c
@echo
@echo $(MSG_COMPILING) $^
mkdir -p $(@D)
$(CC) -c $(FLAGS) -o $@ $^
clean:
@echo
@echo $(MSG_CLEANING)
@echo $(MSG_CLEANING_OBJ)
rm $(OBJDIR)/*.o
@echo $(MSG_CLEANING_OUT)
rm $(OUTDIR)/*.elf