CC = gcc CFLAGS = -Wall -Wextra -O3 -pthread LDFLAGS = -pthread SRC_DIR = src BUILD_DIR = build OBJ_DIR = $(BUILD_DIR)/obj BIN_DIR = $(BUILD_DIR)/bin SRCS = $(wildcard $(SRC_DIR)/*.c) OBJS = $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SRCS)) TARGET = $(BIN_DIR)/bitchess .PHONY: all clean all: $(TARGET) $(TARGET): $(OBJS) | $(BIN_DIR) $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR) $(CC) $(CFLAGS) -c $< -o $@ $(OBJ_DIR): mkdir -p $(OBJ_DIR) $(BIN_DIR): mkdir -p $(BIN_DIR) clean: rm -rf $(BUILD_DIR)