# Makefile for lumbda C interpreter # Targets: all, test, bench, clean CC = gcc CFLAGS = -O2 -Wall -Wextra -Wno-unused-parameter -std=c11 -D_POSIX_C_SOURCE=200809L -D_GNU_SOURCE LDFLAGS = -lm # Optional: Boehm GC support # Uncomment the next two lines if libgc-dev is installed # CFLAGS += -DUSE_BOEHM_GC # LDFLAGS += -lgc SRCS = types.c reader.c printer.c eval.c builtins.c vm.c jit.c portal.c OBJS = $(SRCS:.c=.o) .PHONY: all clean test bench all: lumbda lumbda: main.o $(OBJS) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) test: test_runner ./test_runner test_runner: test.c $(OBJS) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) bench: bench_runner lumbda ulimit -s 65536 && ./bench_runner bench_runner: bench.c $(OBJS) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) %.o: %.c lumbda.h $(CC) $(CFLAGS) -c -o $@ $< clean: rm -f *.o lumbda test_runner bench_runner