36 lines
833 B
Makefile
36 lines
833 B
Makefile
SHELL := /bin/bash
|
|
|
|
CFLAGS ?= -Wall -g
|
|
GDBRUN = gdb --batch --ex run --ex bt --ex q --args
|
|
BUILD_TARGETS = $(foreach ex,$(wildcard ex*.c),$(subst .c,,$(ex)))
|
|
|
|
.PHONY: all
|
|
all: build test
|
|
|
|
.PHONY: echo
|
|
echo:
|
|
@echo BUILD_TARGETS=$(BUILD_TARGETS)
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -f $(BUILD_TARGETS)
|
|
|
|
.PHONY: build
|
|
build: $(BUILD_TARGETS)
|
|
|
|
.PHONY: gtest
|
|
gtest: $(BUILD_TARGETS)
|
|
@$(foreach bt, $(BUILD_TARGETS), make .gtest.$(bt) &&) printf '\ngYAY\n'
|
|
|
|
.gtest.%: %
|
|
@if test -f .$*.argv; then readarray -t test_argv <.$*.argv; fi && \
|
|
printf '\n==> %s\n' "$*" && $(GDBRUN) ./$* "$${test_argv[@]}"
|
|
|
|
.PHONY: test
|
|
test: $(BUILD_TARGETS)
|
|
@$(foreach bt, $(BUILD_TARGETS), make .test.$(bt) &&) printf '\nYAY\n'
|
|
|
|
.test.%: %
|
|
@if test -f .$*.argv; then readarray -t test_argv <.$*.argv; fi && \
|
|
printf '\n==> %s\n' "$*" && ./$* "$${test_argv[@]}"
|