71 lines
1.3 KiB
Makefile
71 lines
1.3 KiB
Makefile
|
|
# vim: noexpandtab tabstop=4 :
|
|
|
|
buildtype ?= release
|
|
|
|
optionset = buildtypes/${buildtype}.txt
|
|
|
|
prefix = bin/${buildtype}-buildtype
|
|
|
|
default: ${prefix}/12
|
|
|
|
.PRECIOUS: %/
|
|
|
|
%/:
|
|
@mkdir -p $@
|
|
|
|
srclist.mk:
|
|
find -name '*.c' -! -path '*/junk/*' | sed "s/^/srcs += /" | sort -V > ${@}
|
|
|
|
include srclist.mk
|
|
|
|
${prefix}/%.o ${prefix}/%.d: %.c ${optionset} | ${prefix}/%/
|
|
@echo "compiling (${buildtype}) ${<} ..."
|
|
@gcc -c @${optionset} $< -MD -MF ${prefix}/${*}.d -o ${prefix}/${*}.o # || (gedit $<; false)
|
|
|
|
objs = $(patsubst %.c,${prefix}/%.o,${srcs})
|
|
|
|
${prefix}/12: ${objs} ${optionset} | ${prefix}/${1}/
|
|
@echo "linking (${buildtype}) ${1}"
|
|
@gcc @${optionset} ${objs} -o ${@}
|
|
|
|
#args += --garbage-collection-minimum 100B
|
|
#args += --garbage-collection-run-every 100B
|
|
#args += --garbage-collection-process-limit 200B
|
|
#args += --garbage-collection-dotout /tmp/
|
|
|
|
#args += --macro-expansion-dotout /tmp/
|
|
|
|
#args += --evaluation-dotout /tmp/
|
|
|
|
args += --verbose
|
|
|
|
args += ./examples/sandbox.txt
|
|
|
|
run: ${prefix}/12
|
|
$< ${args}
|
|
|
|
valrun: ${prefix}/12
|
|
valgrind --exit-on-first-error=yes --error-exitcode=1 -- $< ${args}
|
|
|
|
valrun-leak: ${prefix}/12
|
|
valgrind --exit-on-first-error=yes --error-exitcode=1 --leak-check=full -- $< ${args}
|
|
|
|
include $(patsubst %.c,${prefix}/%.d,${srcs})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|