Started makefile
This commit is contained in:
parent
69de420089
commit
7c6fdfd40b
|
|
@ -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)
|
||||
Loading…
Reference in New Issue