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 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
# Copyright (c) 2024 Brett Sheffield <bacs@librecast.net>
PREFIX ?= @prefix@
export PREFIX
PROGRAM := @PACKAGE_NAME@
VERSION := @PACKAGE_VERSION@
COVERITY_DIR := cov-int
COVERITY_TGZ := $(PROGRAM)-coverity-$(VERSION).tgz
COVERITY_PATH=$(PATH):../../coverity/bin/
OSNAME := $(shell uname -s)
export OSNAME
export SOURCEDIR=$(shell pwd)
ifeq ($(origin CC),default)
CC = @CC@
endif
export CC
CFLAGS ?= @CFLAGS@
ifdef DEBUG
CFLAGS += -Og -g -Wall -Wextra -pedantic
endif
export CFLAGS
CPPFLAGS += @CPPFLAGS@
export CPPFLAGS
LDFLAGS ?= @LDFLAGS@
export LDFLAGS
all: src
install: all
$(MAKE) -C src $@
$(MAKE) -C man $@
uninstall:
$(MAKE) -C src $@
$(MAKE) -C man $@
.PHONY: clean realclean src test testloop sparse doc netcheck net-teardown testshell update newtest
src:
$(MAKE) -C $@
doc:
$(MAKE) -C doc $@
fixme:
grep -n FIXME src/*.{c,h} test/*.{c,h}
todo:
grep -n TODO src/*.{c,h} test/*.{c,h}
clean:
$(MAKE) -C src $@
$(MAKE) -C test $@
$(MAKE) -C man $@
realclean: clean
$(MAKE) -C src $@
$(MAKE) -C test $@
$(MAKE) -C man $@
$(RM) -r ./$(COVERITY_DIR)
$(RM) $(COVERITY_TGZ)
$(RM) Makefile
$(RM) config.{log,status}
$(RM) include/librecast/crypto.h
sparse: clean
CC=cgcc $(MAKE) src
clang: clean
CC=clang $(MAKE) src
clangtest: clean
CC=clang $(MAKE) test
gcc: clean all
netcheck:
$(MAKE) -C test $@
test memcheck: src netcheck
$(MAKE) -C test $@/all
newtest:
$(MAKE) -C test $@
LOOPBANNER ?= echo
testloop:
num_ok=0; \
while $(MAKE) $(subst testloop,test,$@); do \
num_ok=$$(( $$num_ok + 1 )); \
make -C test logclean; \
echo; \
echo; \
$(LOOPBANNER) "OK $$num_ok"; \
echo; \
sleep 1; \
done; \
$(LOOPBANNER) "OK $$num_ok"
testloop/%:
num_ok=0; \
while $(MAKE) $(subst testloop,test,$@); do \
num_ok=$$(( $$num_ok + 1 )); \
make -C test logclean; \
echo; \
echo; \
$(LOOPBANNER) "OK $$num_ok"; \
echo; \
done; \
$(LOOPBANNER) "OK $$num_ok"
test/% memcheck/%: .FORCE src
$(MAKE) -C test $@
.FORCE: # always recompile
coverity: clean
PATH=$(COVERITY_PATH) cov-build --dir cov-int $(MAKE) src
tar czvf $(COVERITY_TGZ) $(COVERITY_DIR)
net-setup:
ip link add veth0 type veth peer name veth1
ip netns add vnet0
ip netns add vnet1
ip link set veth0 netns vnet0
ip link set veth1 netns vnet1
ip -n vnet0 link set veth0 up
ip -n vnet1 link set veth1 up
ip netns show
touch net-setup
net-teardown:
ip -n vnet0 link set veth0 down
ip -n vnet1 link set veth1 down
ip -n vnet1 link set veth1 netns vnet0
ip -n vnet0 link del veth0 type veth peer name veth1
ip netns del vnet0
ip netns del vnet1
ip netns show
rm -f net-setup
testshell:
@echo "sudo ip netns exec vnet0 sudo -u `id -un` /bin/bash"
|