CC := clang CFLAGS := -Wall -Wextra SRC_DIR := src HEADER_DIR := header BUILD_DIR := build LIBS := lib/shash.o OBJECT_FILES := $(patsubst %.c, %.o, $(wildcard $(SRC_DIR)/*.c)) HEADER_FILES := $(wildcard $(HEADER_DIR)/*.h) OBJECT_FILES := $(patsubst $(SRC_DIR)/%, $(BUILD_DIR)/%, $(OBJECT_FILES)) MAIN_EXE_NAME := eipaasm all build/eipaasm: $(OBJECT_FILES) $(CC) $(CFLAGS) $^ $(LIBS) -o $(BUILD_DIR)/$(MAIN_EXE_NAME) $(BUILD_DIR)/%.o: $(SRC_DIR)/%.c $(HEADER_FILES) @mkdir -p $(BUILD_DIR) $(CC) -c $(CFLAGS) $(patsubst %.h,,$^) -o $@ clean: rm -r $(BUILD_DIR)