blob: 022fcc05e5b953996d33afb89747df652cca75b6 [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)
NO_READLINE ?= 0
CFLAGS += -Ivendor/luajit/dynasm -Werror # -fsanitize=address
ASMFLAGS += -felf -Fdwarf
ifeq ($(NO_READLINE),1)
CFLAGS += -DNO_READLINE
else
LDFLAGS += -lreadline
CFLAGS += -lreadline
endif
OBJECTS = main.o \
lisp.o \
compiler.o \
lib/std.o \
plat/linux.o \
istream.o \
gc.o \
call_list.o \
error.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)
repl: lisp
status_log(LISP, repl)
@LISP_LIBRARY_PATH="$(lisp_libpath)" ./lisp $(ROOT)/lib/lisp/repl/repl.lisp
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