Add initial project structure and files

This commit is contained in:
2025-12-18 17:01:21 -07:00
commit f97528f2f0
12 changed files with 229 additions and 0 deletions

43
Makefile Normal file
View File

@@ -0,0 +1,43 @@
# kvstore - A simple key-value store CLI application
# Build with: make
# Run with: make run
# Clean with: make clean
# ===== PROJECT CONFIGURATION =====
TARGET = kvstore
CC = clang
CPPFLAGS = -I include
CFLAGS = -Wall -Wextra
# ===== LINKER =====
LDFLAGS =
LIBS =
# ===== DIRECTORIES =====
SRC_DIR = src
BUILD_DIR = build
BIN_DIR = bin
# ===== SOURCE AND OBJECT FILES =====
SRCS = $(wildcard $(SRC_DIR)/*.c)
OBJS = $(SRCS:$(SRC_DIR)/%.c=$(BUILD_DIR)/%.o)
TARGET_PATH = $(BIN_DIR)/$(TARGET)
# ===== COMPILATION PATTERN RULE =====
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c | $(BUILD_DIR)
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
# ===== LINKING RULES =====
$(TARGET_PATH): $(OBJS) | $(BIN_DIR)
$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
# ===== CONVENIENCE TARGETS =====
.PHONY: all clean run
all: $(TARGET_PATH)
run: $(TARGET_PATH)
./$(TARGET_PATH)
clean:
rm -f $(BUILD_DIR)/*.o $(TARGET_PATH)