CC=tcc CFLAGS=-Wall -Wpedantic -ggdb -std=c99 INCLUDE_DIR=include BUILD_DIR=build PACKAGE_DIR=package LIBS_DIR=libs LIBS=-lXi -ldl -lm SOURCES := $(wildcard src/*.c) OBJECTS := $(patsubst src/%.c,$(BUILD_DIR)/%.o,$(SOURCES)) DEPENDS := $(patsubst src/%.c,$(BUILD_DIR)/%.d,$(SOURCES)) EXE_NAME=app.out TARGET=$(PACKAGE_DIR)/$(EXE_NAME) all: $(TARGET) $(TARGET): $(OBJECTS) $(CC) $(CFLAGS) $(OBJECTS) -L$(LIBS_DIR) $(LIBS) -o $@ -include $(DEPENDS) $(BUILD_DIR)/%.o: src/%.c Makefile $(CC) $(CFLAGS) -I$(INCLUDE_DIR) -MD -c $< -o $@ .PHONY: clean clean: rm -rf $(BUILD_DIR)/* $(TARGET) .PHONY: run run: $(TARGET) @cd $(PACKAGE_DIR) && echo '==== PROGRAM ====' && ./$(EXE_NAME)