# Basic Makefile for a C program with multiple source files and header dependencies

CC = gcc
CFLAGS = -Wall -Wextra -g -O0 -MMD -MP -std=c17
SRC = $(wildcard coroutine/*.c) $(wildcard examples/*.c)
OBJ = $(SRC:.c=.o)
DEP = $(OBJ:.o=.d)
TARGET = main

all: $(TARGET)

$(TARGET): $(OBJ)
	$(CC) $(CFLAGS) -o $@ $^

%.o: %.c
	$(CC) $(CFLAGS) -I include -c $< -o $@

-include $(DEP)

clean:
	rm -f $(OBJ) $(DEP) $(TARGET)

.PHONY: all clean
