# This software disclaims copyright. Do what you want with it. Be gay, do # crime. Originally written by Alexis Lockwood in 2021. Ⓐ PYTHON ?= python3 LS_INCLUDE := include LS_SOURCES := lib/ls_internal.c lib/ls_kws.c lib/ls_expr.c lib/ls.c \ lib/ls_lex.c lib/ls_goto.c lib/ls_label_cache.c \ lib/ls_kw_impl.c lib/ls_kw_impl_PRINT.c lib/ls_kw_impl_GOTO.c \ lib/ls_kw_impl_GOSUB_RETURN.c lib/ls_kw_impl_LOOPS.c LS_ARGS := -I${LS_INCLUDE} -Llib -lls TEST_ARGS := -Imunit -Lmunit -lmunit test/tsupport.c LIBEXPLAIN_ARGS := $(shell pkg-config --libs --cflags libexplain) LIBS_ARGS := ${LIBEXPLAIN_ARGS} TESTS := test/test_internal.test CFLAGS := \ -O0 -ggdb -lm \ -std=c99 -D_DEFAULT_SOURCE \ -Wall -Wextra -Wpedantic -Wshadow -pedantic \ -Iinclude -Ilib \ -DLS_HAVE_FLOAT=1 -DLS_FLOAT_IS_DOUBLE=1 \ ${EXTRA_FLAGS} .PHONY: all clean all: ls_run ls_minify clean: rm -f ${LS_SOURCES:.c=.o} rm -f ${LS_SOURCES:.c=.d} rm -f lib/libls.a rm -f munit/libmunit.a munit/munit.o rm -f ${TESTS} rm -f ls_run ls_minify include ${LS_SOURCES:.c=.d} munit/munit.o: CFLAGS := $(filter-out -Wconversion -Wshadow, ${CFLAGS}) ls_run: ls_run.c lib/libls.a ${BUILD_TOOL} ls_minify: ls_minify.c ls_minify_identgen.c lib/libls.a ${BUILD_TOOL} lib/ls_kws.c: gen_kws.py $(PYTHON) gen_kws.py source > $@ lib/ls_kws.h: gen_kws.py $(PYTHON) gen_kws.py header > $@ check: ${TESTS} for i in ${TESTS}; do $${i}; done munit/libmunit.a: munit/munit.o ${AR} rcs $@ $^ lib/libls.a: ${LS_SOURCES:.c=.o} ${AR} rcs $@ $^ %.d: %.c @$(CC) -MM ${CFLAGS} -I${LS_INCLUDE} -Ilib $< > $@ && sed -e '/^\S/ s,^,$@ lib/,' -i $@ %.test: %.c munit/libmunit.a lib/libls.a ${CC} $< ${LS_ARGS} ${TEST_ARGS} -o $@ ${CFLAGS} BUILD_TOOL = \ ${CC} $(filter-out %.a,$^) ${LS_ARGS} ${LIBS_ARGS} -o $@ ${CFLAGS}