pegrep-c/makefile
2024-09-20 09:29:29 -05:00

61 lines
1.1 KiB
Makefile

# vim: noexpandtab tabstop=4 :
buildtype ?= release
buildtype_options = buildtypes/${buildtype}.txt
prefix = bin/${buildtype}-buildtype
objs = $(patsubst %.c,${prefix}/%.o,$(srcs))
default: ${prefix}/pregrep
srclist.mk:
find -name '*.c' -! -path '*/junk/*' | sed 's/^/srcs += /' | sort -V > $@
include srclist.mk
.PRECIOUS: %/
%/:
@mkdir -p $@
${prefix}/pregrep: ${buildtype_options} ${objs} | ${prefix}/
@echo "${buildtype}: linking ${@} ..."
@gcc @${buildtype_options} ${objs} -o $@ -lm
${prefix}/%.o ${prefix}/%.d: %.c ${buildtype_options} | ${prefix}/%/
@echo "${buildtype}: compiling ${*}.c ..."
@gcc -c @${buildtype_options} $< -MD -MF ${prefix}/${*}.d -o ${prefix}/${*}.o # || (${EDITOR} $<; false)
# env += UBSAN_OPTIONS='halt_on_error=1,print_stacktrace=1'
run: ${prefix}/pregrep
${env} $< ${args}
gdbrun: ${prefix}/pregrep
gdb --args $< ${args}
valrun: ${prefix}/pregrep
valgrind --gen-suppressions=yes -- $< ${args}
valrun-leak: ${prefix}/pregrep
valgrind --leak-check=full --gen-suppressions=yes -- $< ${args}
include $(patsubst %.c,${prefix}/%.d,$(srcs))