Research-Stack/2-Search-Space/tardygrada/Makefile

80 lines
2 KiB
Makefile

CC = cc
CFLAGS = -Wall -Wextra -Werror -pedantic -std=c11 -O2 -Isrc
# Linux needs _DEFAULT_SOURCE for clock_gettime + MAP_ANONYMOUS
UNAME := $(shell uname)
ifeq ($(UNAME),Linux)
CFLAGS += -D_DEFAULT_SOURCE -Wno-stringop-truncation -Wno-format-truncation -Wno-stringop-overflow
endif
LDFLAGS =
# Monocypher compiled separately (no -pedantic, it uses extensions)
MONOCYPHER_FLAGS = -Wall -O2 -std=c11 -Isrc
ifeq ($(UNAME),Linux)
MONOCYPHER_FLAGS += -D_DEFAULT_SOURCE
endif
SRC = src/main.c \
src/vm/memory.c \
src/vm/context.c \
src/vm/vm.c \
src/vm/crypto.c \
src/vm/message.c \
src/vm/constitution.c \
src/vm/heal.c \
src/vm/persist.c \
src/mcp/json.c \
src/mcp/server.c \
src/verify/pipeline.c \
src/verify/decompose.c \
src/verify/preprocess.c \
src/ontology/bridge.c \
src/ontology/self.c \
src/ontology/datalog.c \
src/ontology/frames.c \
src/ontology/inference.c \
src/compiler/lexer.c \
src/compiler/compiler.c \
src/compiler/exec.c \
src/vm/semantic.c \
src/compiler/terraform.c \
src/terraform/terraform.c \
src/coordinate/bridge.c
OBJ = $(SRC:.c=.o) src/vm/monocypher.o
BIN = tardygrada
.PHONY: all clean run size bench
all: $(BIN)
$(BIN): $(OBJ)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
@echo "Built: $@ ($$(wc -c < $@ | tr -d ' ') bytes)"
src/vm/monocypher.o: src/vm/monocypher.c
$(CC) $(MONOCYPHER_FLAGS) -c -o $@ $<
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
run: $(BIN)
./$(BIN)
size: $(BIN)
@echo "Binary size:"
@ls -la $(BIN)
@echo "\nSection sizes:"
@size $(BIN)
bench: $(BIN)
$(CC) $(CFLAGS) $(MONOCYPHER_FLAGS) $(LDFLAGS) -o bench tests/benchmark.c \
src/vm/memory.c src/vm/context.c src/vm/vm.c src/vm/crypto.c \
src/vm/monocypher.c src/vm/message.c src/vm/constitution.c \
src/vm/heal.c src/vm/persist.c src/vm/semantic.c \
src/verify/pipeline.c src/verify/decompose.c \
src/mcp/json.c src/ontology/bridge.c
./bench
rm -f bench
clean:
rm -f $(OBJ) $(BIN) src/vm/monocypher.o