Initial commit of project.
This commit is contained in:
58
makefile
Normal file
58
makefile
Normal file
@@ -0,0 +1,58 @@
|
||||
# Recursive Directory Digesting Makefile V1.0
|
||||
# === Project Settings ===
|
||||
PROJECT := soundThing # Change this to your project name
|
||||
CC := gcc
|
||||
CFLAGS := -Wall -Wextra -std=c11 -O2
|
||||
# Preprocessor flags (deps only here)
|
||||
CPPFLAGS := -MMD -MP
|
||||
# Add linker flags
|
||||
LDFLAGS = -lraylib -lm -ldl -lpthread -lGL -lrt -lX11 -lasound #here (e.g. -lm)
|
||||
|
||||
# === Directory Structure ===
|
||||
SRC_DIR := source
|
||||
OBJ_DIR := build
|
||||
BIN_DIR := bin
|
||||
INC_DIR := include
|
||||
|
||||
# === Discover headers recursively ===
|
||||
INC_SUBDIRS := $(shell find $(INC_DIR) -type d)
|
||||
CPPFLAGS += $(addprefix -I,$(INC_SUBDIRS))
|
||||
|
||||
# === Discover sources recursively ===
|
||||
SRC := $(shell find $(SRC_DIR) -type f -name '*.c')
|
||||
# Map source paths to object paths (mirror folders under build/)
|
||||
OBJ := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRC))
|
||||
DEP := $(OBJ:.o=.d)
|
||||
BIN := $(BIN_DIR)/$(PROJECT)
|
||||
|
||||
# === Rules ===
|
||||
.PHONY: all clean run dirs
|
||||
|
||||
all: dirs $(BIN)
|
||||
|
||||
dirs:
|
||||
@mkdir -p $(BIN_DIR)
|
||||
@mkdir -p $(sort $(dir $(OBJ))) # create object subdirs that mirror source/
|
||||
|
||||
# Link objects into final executable
|
||||
$(BIN): $(OBJ)
|
||||
$(CC) $(OBJ) -o $@ $(LDFLAGS)
|
||||
@echo "Linked -> $@"
|
||||
|
||||
# Compile each .c into a .o, with auto header deps
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
||||
@echo "Compiled -> $@"
|
||||
|
||||
# Run the program
|
||||
run: all
|
||||
@echo "Running $(BIN)..."
|
||||
@$(BIN)
|
||||
|
||||
# Clean build artifacts
|
||||
clean:
|
||||
@rm -rf $(OBJ_DIR) $(BIN)
|
||||
@echo "Clean complete."
|
||||
|
||||
# Include auto-generated dependency files (if present)
|
||||
-include $(DEP)
|
||||
Reference in New Issue
Block a user