29 lines
706 B
Makefile
29 lines
706 B
Makefile
CC = clang
|
|
AXL_SOURCES = $(filter-out main.c %_test.c, $(wildcard *.c))
|
|
TEST_EXES = $(patsubst %.c,%.exe,$(wildcard *_test.c))
|
|
TEST_CFLAGS = -Wall -Wextra -Werror -pedantic -std=c11 -static -Oz
|
|
CFLAGS = $(TEST_CFLAGS) -nostdlib -ffreestanding
|
|
LDFLAGS = -Wl,/SUBSYSTEM:CONSOLE,/ENTRY:_start -fuse-ld=lld
|
|
LIBS = -lkernel32
|
|
SOURCES = $(AXL_SOURCES) main.c
|
|
TARGET = prog.exe
|
|
|
|
all: clean test $(TARGET)
|
|
|
|
%_test.exe: %_test.c
|
|
$(CC) $(TEST_CFLAGS) $(AXL_SOURCES) $< -o $@
|
|
|
|
test: $(TEST_EXES)
|
|
for %%i in ($(TEST_EXES)) do ( \
|
|
echo Running %%i & \
|
|
%%i \
|
|
)
|
|
|
|
$(TARGET): $(SOURCES)
|
|
$(CC) $(CFLAGS) $(SOURCES) -o $(TARGET) $(LDFLAGS) $(LIBS)
|
|
|
|
clean:
|
|
rm -f $(TARGET)
|
|
rm -f $(TEST_EXES)
|
|
|
|
.PHONY: all clean test
|