blob: 5b00b6d47b69da61f22149cf4bbeeefe9ee68dde [file] [log] [blame]
# -*- mode:makefile -*-
init(lisp, lisp)
option(PLAT, "`platform to build for: either linux or bluejay'", linux)
# preset(optimize)
preset(32)
preset(debug)
preset(warn)
preset(nasm)
archetype(c)
archetype(asm)
CFLAGS += -Ivendor/luajit/dynasm -Werror -lreadline # -fsanitize=address
LDFLAGS += -lreadline
ASMFLAGS += -felf -Fdwarf
OBJECTS = main.o \
lisp.o \
compiler.o \
lib/std.o \
plat/linux.o \
istream.o \
gc.o \
call_list.o
LUA = vendor/luajit/src/host/minilua
$(LUA): vendor/luajit/src/host/minilua.c
status_log(CC, $<)
@$(CC) $< -o $@ -lm
compiler.c: compiler.dasc | $(LUA)
status_log(DYNASM, $<)
@$(LUA) vendor/luajit/dynasm/dynasm.lua -o $@ $<
type(executable)
F ?= test.lisp
lisp_libpath = $(ROOT)/lib/lisp
run: lisp
status_log(LISP, $(F))
@LISP_LIBRARY_PATH="$(lisp_libpath)" ./lisp $(F)
leak-check: lisp
status_log(VALGRIND, lisp $(F))
@LISP_LIBRARY_PATH="$(lisp_libpath)" valgrind --leak-check=full ./lisp $(F)
format:
status_log(FORMAT, *)
@clang-format -i *.c *.h *.dasc plat/* lib/*
finish