SHELL := /usr/bin/env bash PREFIX := CC := $(PREFIX)gcc LD := $(PREFIX)ld SIZE := $(PREFIX)size GDB := $(PREFIX)gdb NAME := c-test-project SRC_DIR := ./src INC_DIR := ./inc BIN_DIR := ./bin OBJ_DIR := $(BIN_DIR)/obj OPT_LEVEL := -g3 \ -O0 C_SRC := main.c C_DEF := C_DEF := $(addprefix -D, $(C_DEF)) C_INC := $(INC_DIR) C_INC := $(addprefix -I, $(C_INC)) C_FLAGS := $(C_DEF) \ $(C_INC) \ $(OPT_LEVEL) \ -Wall \ -Wextra \ -Wpedantic \ -Wconversion \ -Wsign-conversion \ -Wsign-compare \ -Wcast-align=strict \ -Wfloat-equal \ -Wlogical-op \ -Wno-maybe-uninitialized \ -Werror BINARY := $(BIN_DIR)/$(NAME) MKDIR := $(BIN_DIR) $(OBJ_DIR) VPATH := $(SRC_DIR) .PHONY: all clean rebuild run test all: $(MKDIR) $(BINARY) clean: @rm -rf $(MKDIR) rebuild: clean all run: all ./$(BINARY) $(MKDIR): @mkdir -p $@ $(BINARY): $(C_SRC) gcc $(C_FLAGS) $^ -o $@