EXE = a.out RUNARGS = CFLAGS = -std=c23 -Wall -Wextra -Wpedantic ${CFLAGS_${DEBUG}} LDFLAGS = ${LDFLAGS_${DEBUG}} LDLIBS = OBJ != find -type f -name '*.c' | sed 's/\.c$$/.o/' DEBUG = 0 GDB != which gf2 2> /dev/null || which gdb CFLAGS_0 = -DNDEBUG CFLAGS_1 = -g3 -fsanitize=undefined LDFLAGS_1 = -g3 -fsanitize=undefined LDFLAGS_0 = -Os -s PREFIX ?= ${HOME}/.local BINDIR = ${PREFIX}/bin .PHONY: run all clean install uninstall all: ${EXE} run: ${EXE} ./${EXE} ${RUNARGS} debug: ${EXE} ${GDB} -ex start --args ./${EXE} ${RUNARGS} clean: rm -fv ${EXE} ${OBJ} ${EXE}: ${OBJ} ${CC} ${LDFLAGS} ${OBJ} -o ${EXE} ${LDLIBS} install: ${EXE} cp ${EXE} ${BINDIR}/${EXE} uninstall: rm ${BINDIR}/${EXE}