File: Makefile.in

package info (click to toggle)
lcsync 0.3.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,152 kB
  • sloc: ansic: 9,376; sh: 3,117; makefile: 246
file content (103 lines) | stat: -rw-r--r-- 3,317 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
# Copyright (c) 2017-2023 Brett Sheffield <bacs@librecast.net>

TESTRUNNER := @TESTRUNNER@
CFLAGS = @CFLAGS@
override CFLAGS += -fno-builtin-malloc -fno-builtin-calloc -I../src -I../include
CPPFLAGS = @CPPFLAGS@
TEST_SOURCES := $(wildcard ????-????.c)
TEST_PROGS ?= $(TEST_SOURCES:.c=.test)
TEST_MULTICAST_Linux := ip route get ff1e:: 2> /dev/null | wc -l
TEST_MULTICAST_FreeBSD := case $$(route -6 get ff1e:: 2> /dev/null) in *REJECT*) echo 0;; *DONE*) echo 1;; *) echo 0 ;; esac
TEST_MULTICAST_NetBSD := case $$(/sbin/route -n get -inet6 ff1e:: 2>/dev/null) in *REJECT*) echo 0;; *DONE*) echo 1;; *) echo 0 ;; esac
TEST_MULTICAST_OpenBSD := case $$(route -n get -inet6 ff1e:: 2> /dev/null) in *REJECT*) echo 0;; *DONE*) echo 1;; *) echo 0 ;; esac
TEST_MULTICAST_OUT = $(shell $(TEST_MULTICAST) || /bin/true)
TEST_MULTICAST = $(TEST_MULTICAST_$(shell uname -s))
LDFLAGS = @LDFLAGS@ -L../src -Wl,-rpath,../src
LDLIBS = @LIBS@
PROGRAM = @PACKAGE_NAME@
NOTOBJS := ../src/$(PROGRAM).o ../src/mdextest.o ../src/arg_share.o
OBJS := test.o testdata.o testnet.o testsync.o $(filter-out $(NOTOBJS), $(wildcard ../src/*.o))
LASTLOG := lastlog.log
LOGFILE := $(shell mktemp "testlog-XXXXXX")
ANSI_RESET = "\033[0m"
ANSI_BOLD := "\033[0m\033[2m"
ANSI_GREEN = "\033[32m"
ANSI_RED = "\033[31m"
ANSI_YELLOW = "\033[33m"
ANSI_WHITE = "\033[37m"
PASS = $(ANSI_RESET)$(ANSI_GREEN)\ OK$(ANSI_RESET)
WARN = $(ANSI_RESET)$(ANSI_YELLOW)WARN$(ANSI_RESET)
FAIL = $(ANSI_RESET)$(ANSI_RED)FAIL$(ANSI_RESET)
UNKN = $(ANSI_RESET)$(ANSI_WHITE)????$(ANSI_RESET)
VALGRIND = valgrind --leak-check=full --max-stackframe=20480160 --error-exitcode=2 --errors-for-leak-kinds=all --track-origins=yes

define runtest =
export HAVE_MULTICAST_ROUTES="$(TEST_MULTICAST_OUT)"
@printf $(ANSI_BOLD)
@echo -n " $(1:.test=) "
@$(MEMCHECK) ./$(1) 2>>$(LOGFILE)
ret=$$?
@if [ $$ret -eq 0 ]; then \
	printf $(PASS); echo; \
elif [ $$ret -eq 1 ]; then \
	printf $(WARN); echo; \
elif [ $$ret -eq 2 ]; then \
	printf $(FAIL); echo; \
	fails=$$(( fails + 1 )) ; \
elif [ $$ret -eq 2 ]; then \
	printf $(UNKN); echo; \
else \
	printf $(FAIL); echo; \
	fails=$$(( fails + 1 )) ; \
fi
$(eval tests_run=$(shell echo $$(($(tests_run)+1))))

endef

.PHONY: test clean

test: $(TESTRUNNER)

%.test: %.c $(OBJS)
	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $< $(OBJS) $(LDLIBS)

lctest: $(TEST_PROGS)
	lctest -b $^

memcheck:
	MEMCHECK="$(VALGRIND)" $(MAKE) test

memcheck/%:
	MEMCHECK="$(VALGRIND)" $(MAKE) test/$(@F)

# if $(@F) is a directory, run tests in that directory
test/%:
	@if [ -d "$(@F)" ]; then
		$(eval TEST_PROGS=$(notdir $(wildcard $(@F)/*.test)))
		TEST_PROGS="$(TEST_PROGS)" $(MAKE) maketest
	else
		$(eval TEST_PROGS=0000-$(@F).test)
		TEST_PROGS="$(TEST_PROGS)" $(MAKE) maketest
	fi

.ONESHELL: maketest

maketest: $(TEST_PROGS)
	@fails=0
	$(foreach x,$^,$(call runtest,$(x)))
	ln -sf $(LOGFILE) $(LASTLOG)
	@echo -e "\n$(TIMESTAMP) - tests done" >> $(LOGFILE)
	@echo -e "$(tests_run) tests run"
	if [ $$fails -gt 0 ]; then \
		echo -n "$$fails tests failed"
	fi
	@echo -e "\nlogfile: $(LOGFILE)\n"
	@if [ $$fails -gt 0 ]; then \
		exit 1
	fi

clean:
	$(RM) -r ????-????.{src,dst}.tmp.??????
	$(RM) -r ????-????.test-?????? ????-????.*.tmp.??????
	$(RM) *.o *.test *.core testlog-?????? $(LASTLOG)