38 lines
687 B
Makefile
38 lines
687 B
Makefile
# Compiler & flags
|
|
CC = gcc
|
|
CFLAGS = -Wall -Wextra -g -Isrc
|
|
SRC = src/vm.c src/bytecode.c src/value.c
|
|
OBJ = $(SRC:.c=.o)
|
|
|
|
# Tests
|
|
TEST_SRC = src/test.c src/test_opcodes.c
|
|
TEST_BIN = $(TEST_SRC:src/%.c=%)
|
|
|
|
.PHONY: all test clean
|
|
|
|
# Default: build main demo
|
|
all: fun
|
|
|
|
fun: $(OBJ) src/fun.c
|
|
$(CC) $(CFLAGS) -o $@ $^
|
|
|
|
# Compile object files
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
# Test target
|
|
tests: $(OBJ) $(TEST_BIN)
|
|
@for t in $(TEST_BIN); do \
|
|
echo "Running $$t..."; \
|
|
./$$t; \
|
|
echo "--------------------------------"; \
|
|
done
|
|
|
|
# Build each test executable
|
|
$(TEST_BIN): %: src/%.c $(OBJ)
|
|
$(CC) $(CFLAGS) -o $@ $(OBJ) $<
|
|
|
|
# Clean everything
|
|
clean:
|
|
rm -f $(OBJ) fun $(TEST_BIN)
|
|
|