TARGET_EXEC ?= stack_vm BUILD_DIR ?= ./build SRC_DIRS ?= ./src SRCS := $(shell find $(SRC_DIRS) -name "*.c") OBJS := $(SRCS:%=$(BUILD_DIR)/%.o) DEPS := $(OBJS:.o=.d) INC_DIRS := $(shell find $(SRC_DIRS) -type d) INC_FLAGS := $(addprefix -I,$(INC_DIRS)) CPPFLAGS ?= $(INC_FLAGS) -MMD -MP -D IO_OPERATIONS $(BUILD_DIR)/$(TARGET_EXEC): $(OBJS) echo $(SRC_DIRS) $(CC) -ggdb3 $(OBJS) -o $@ $(LDFLAGS) $(BUILD_DIR)/%.c.o: %.c $(MKDIR_P) $(dir $@) $(CC) -ggdb3 $(CPPFLAGS) $(CFLAGS) -c $< -o $@ .PHONY: clean all all: $(BUILD_DIR)/$(TARGET_EXEC) clean: $(RM) -r $(BUILD_DIR) -include $(DEPS) MKDIR_P ?= mkdir -p