CC = gcc CFLAGS = -Wall -Wextra -O2 -g -std=c11 -fwrapv TARGETS = server client SOURCES = $(filter-out $(patsubst %,%.c,$(TARGETS)),$(wildcard *.c)) OBJECTS = $(patsubst %.c,%.o,$(SOURCES)) .PHONY: all clean all: $(TARGETS) clean: rm -f $(TARGETS) *.o server: server.o $(OBJECTS) $(CC) $(CFLAGS) $^ -o $@ client: client.o $(OBJECTS) $(CC) $(CFLAGS) $^ -o $@ %.o: %.c $(wildcard *.h) $(CC) $(CFLAGS) -c -o $@ $<