File: Makefile.in

package info (click to toggle)
librecast 0.11.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,760 kB
  • sloc: ansic: 31,144; asm: 28,570; sh: 3,164; makefile: 713; python: 70
file content (106 lines) | stat: -rw-r--r-- 3,560 bytes parent folder | download | duplicates (2)
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
104
105
106
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
# Copyright (c) 2017-2024 Brett Sheffield <bacs@librecast.net>

TESTRUNNER := @TESTRUNNER@
CFLAGS := @CFLAGS@
override CFLAGS += @LIBRECAST_CFLAGS@ -fno-builtin-malloc -fno-builtin-calloc -I../src -I../include
CPPFLAGS := @CPPFLAGS@
FALSE := @FALSE@
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 := -L../src -Wl,-rpath,../src @LDFLAGS@ @LIBRECAST_LDFLAGS@
LDLIBS = @LIBS@ @LIBMLD@
OBJS := test.o testdata.o testnet.o misc.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=) "
@echo "================================================================================" >>$(LOGFILE)
@echo "`date +"%Y-%m-%d %H:%M:%S"` test begins" >>$(LOGFILE)
@echo "--------------------------------------------------------------------------------" >>$(LOGFILE)
@echo -n "===> TEST $(1:.test=) " >>$(LOGFILE)
@$(MEMCHECK) ./$(1) 2>>$(LOGFILE)
ret=$$?
@echo "--------------------------------------------------------------------------------" >>$(LOGFILE)
@echo "`date +"%Y-%m-%d %H:%M:%S"` test ends" >>$(LOGFILE)
@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 )) ; \
else \
	printf $(UNKN); 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
	ln -sf $(LOGFILE) $(LASTLOG)
	$(foreach x,$^,$(call runtest,$(x)))
	@echo -e "\n$(TIMESTAMP) - tests done" >> $(LOGFILE)
	@echo -e "$(tests_run) tests run\nlogfile: $(LOGFILE)\n"
	@if [ $$fails -gt 0 ]; then \
		echo ", $$fails tests failed"; \
		$(FALSE);
	else
		echo
	fi

clean:
	$(RM) *.o *.test testlog-?????? $(LASTLOG)

realclean: clean
	$(RM) Makefile