From 7c6fdfd40bd45742d333c85ae73eb667bc101c94 Mon Sep 17 00:00:00 2001 From: Kyler Date: Sun, 2 Nov 2025 21:37:52 -0700 Subject: [PATCH] Started makefile --- SLS_C/Makefile | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 SLS_C/Makefile diff --git a/SLS_C/Makefile b/SLS_C/Makefile new file mode 100644 index 0000000..8f1fd9c --- /dev/null +++ b/SLS_C/Makefile @@ -0,0 +1,54 @@ +# Makefile for SLS_C project +CC ?= gcc +CFLAGS ?= -std=c11 -Wall -Wextra -g +LDFLAGS ?= + +SRCDIR := src +OBJDIR := obj +BINDIR := bin +TESTDIR := tests + +TARGET := $(BINDIR)/sls_c + +SOURCES := $(wildcard $(SRCDIR)/*.c) +OBJECTS := $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SOURCES)) + +TEST_SOURCES := $(wildcard $(TESTDIR)/test_*.c) +TEST_BINS := $(patsubst $(TESTDIR)/test_%.c,$(BINDIR)/test_%,$(TEST_SOURCES)) + +.PHONY: all compile run test clean + +all: $(TARGET) + +compile: $(OBJECTS) + +$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR) + $(CC) $(CFLAGS) -c $< -o $@ + +$(TARGET): $(OBJECTS) | $(BINDIR) + $(CC) $(LDFLAGS) $^ -o $@ + +run: $(TARGET) + @echo "Running $(TARGET)..." + ./$(TARGET) + +# Build test binaries from tests/test_*.c and run them +$(BINDIR)/test_%: $(TESTDIR)/test_%.c | $(BINDIR) + $(CC) $(CFLAGS) $< -o $@ + +test: $(TEST_BINS) + @echo "Running tests..." + @for t in $(TEST_BINS); do \ + echo "== $$t =="; \ + ./$$t || { echo "Test $$t failed"; exit 1; }; \ + done + @echo "All tests passed." + +$(BINDIR): + mkdir -p $(BINDIR) + +$(OBJDIR): + mkdir -p $(OBJDIR) + +clean: + rm -rf $(OBJDIR) $(BINDIR) \ No newline at end of file