diff --git a/c_projects/x_tfw4c/Makefile b/c_projects/x_tfw4c/Makefile new file mode 100644 index 0000000..b94a806 --- /dev/null +++ b/c_projects/x_tfw4c/Makefile @@ -0,0 +1,67 @@ +# MakeFile for placeholder +# Created mm/dd/yyyy +# Authored by: xavi + + +# ---------------------- +# | THIS IS A TEMPLATE | +# ---------------------- +# TODO: +# %s/placeholder/project_name/g +# Change date file was created to today +# run make dirs to create project hierarchy +# Place headers in include and source files in src +# Delete this text + +.POSIX: + +# DIRECTORIES +SRC_DIR := src +INCLUDE_DIR := include +OBJ_DIR := obj +TESTS_DIR := tests + + +# C compiler settings +CC := gcc +CFLAGS := -ggdb -I$(INCLUDE_DIR) -Wall -Wextra -MMD -MP +DFLAGS := + +# Files +SRC := $(wildcard $(SRC_DIR)/*.c) +OBJ := $(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) +TESTS := $(wildcard $(TESTS_DIR)/*.c) + +# Get Dependencies from gcc using -MMD and -MP +DEPENDENCIES := $(OBJ:%.o=%.d) + +# Final Binary Name +PROJECT_NAME := placeholder + + +all: $(PROJECT_NAME) + + +$(TESTS:$(TESTS_DIR)/%.c=%): $(OBJ) + $(CC) $(CFLAGS) $(DFLAGS) -o $(@) $(^) + + +$(PROJECT_NAME): $(OBJ) + $(CC) $(CFLAGS) $(DFLAGS) -o $(@) $(^) + +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c + $(CC) $(CFLAGS) $(DFLAGS) -c -o $(@) $(<) + +clean: + rm -f $(PROJECT_NAME) $(OBJ_DIR)/* $(TESTS:$(TESTS_DIR)/%.c=%) + +-include $(DEPENDENCIES) + +.PHONY: clean all + +# Create Project Hierarchy + +dirs: $(SRC_DIR) $(OBJ_DIR) $(TESTS_DIR) $(INCLUDE_DIR) + +$(SRC_DIR) $(OBJ_DIR) $(TESTS_DIR) $(INCLUDE_DIR): + mkdir -p $(@)