From 3695a8ec82235bee790255f82881f47d30559cde Mon Sep 17 00:00:00 2001 From: Philippe Pittoli Date: Wed, 18 Jan 2023 20:09:38 +0100 Subject: [PATCH] Makefile: add debug options (valgrind). --- zig-impl/makefile | 15 +++++ zig-impl/makefile.user | 128 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 zig-impl/makefile.user diff --git a/zig-impl/makefile b/zig-impl/makefile index 5dde5f9..7a1e7c3 100644 --- a/zig-impl/makefile +++ b/zig-impl/makefile @@ -9,6 +9,21 @@ ZIGUSROPTS ?= ZIGC ?= zig ZIGOPTS ?= $(ZIGBUSEOPTS) $(ZIGUSROPTS) +# Debug with valgrind. +ifdef VG_SUPPRESS_WARNINGS +VALGRIND_SUPPRESS_WARNINGS ?= --suppressions=./valgrind.suppr +endif +ifdef VG_GENERATE_SUPPRESSION +VALGRIND_GEN_SUPPRESSION ?= --gen-suppressions=all +endif +ifdef USE_VALGRIND +VALGRIND ?= valgrind $(VALGRIND_SUPPRESS_WARNINGS) $(VALGRIND_GEN_SUPPRESSION) -v --leak-check=full +endif +# Optional parameters (copied here to help with autocompletion). +VG_SUPPRESS_WARNINGS ?= +VG_GENERATE_SUPPRESSION ?= +USE_VALGRIND ?= + ipcd: src/ipcd.zig $(ZIGC) build-exe $(ZIGOPTS) $^ diff --git a/zig-impl/makefile.user b/zig-impl/makefile.user new file mode 100644 index 0000000..eeda8d6 --- /dev/null +++ b/zig-impl/makefile.user @@ -0,0 +1,128 @@ +SRC ?= snd-rcv +FULLNAME ?= misc/$(SRC).zig + +CC=gcc +CFLAGS=-Wall -Wextra #-Wno-implicit-function-declaration +LDFLAGS=-I build/ -L build/ -lipc + +m: $(FULLNAME) + @-rm /tmp/.TEST_USOCK > /dev/null + $(ZIGC) build-exe $(ZIGOPTS) $^ + ./$(SRC) + +run: $(FULLNAME) + $(ZIGC) build-exe $(ZIGOPTS) $^ + ./$(SRC) + +t: $(FULLNAME) + $(ZIGC) test $(ZIGOPTS) $^ + +pongd: src/pongd.zig + $(ZIGC) build-exe $(ZIGOPTS) $^ + +pong: src/pong.zig + $(ZIGC) build-exe $(ZIGOPTS) $^ + +c: misc/send-msg.zig + $(ZIGC) build-exe $(ZIGOPTS) $^ + +s: misc/receive-msg.zig + $(ZIGC) build-exe $(ZIGOPTS) $^ + +sr: misc/snd-rcv.zig + $(ZIGC) build-exe $(ZIGOPTS) $^ + +lib: + $(ZIGC) build + +stop-ipcd: + -pkill -1 ipcd + +stop-tcpd: + -pkill -1 tcpd + +buildrun-ipcd: ipcd + -rm /tmp/libipc-run/ipc 2>/dev/null || true + $(VALGRIND) ./ipcd + +buildrun-pongd: pongd + -rm /tmp/libipc-run/pong 2>/dev/null || true + $(VALGRIND) ./pongd + +buildrun-tcpd: tcpd + @-rm /tmp/libipc-run/tcp 2>/dev/null || true + $(VALGRIND) ./tcpd + +TCP_SERVICE_ALT ?= 127.0.0.1:9898 +buildrun-tcpd-alternative: tcpd + -rm /tmp/libipc-run/tcpdup 2>/dev/null || true + IPC_SERVICE_NAME=tcpdup ADDRESS=$(TCP_SERVICE_ALT) $(VALGRIND) ./tcpd + +SERVICE_NAME ?= p +IPC_NETWORK ?= p pong +buildrun-pong: pong + @#Force pong to contact IPCd. + @#SERVICE is the service to contact and IPC_NETWORK is the IPCd + @#configuration to translate "p" into "pong" (still using UNIX + @#sockets on the same computer). + SERVICE="$(SERVICE_NAME)" IPC_NETWORK="$(IPC_NETWORK)" $(VALGRIND) ./pong + +buildrun-pong-test-tcpd: pong + SERVICE="pong" IPC_NETWORK="pong tcp://$(TCP_SERVICE_ALT)/pong" $(VALGRIND) ./pong + +ifeq ($(SRC),) +test-src: + @echo SRC must be set via command line. + @exit 1 +else +test-src: +endif + +comp: zigcompilation test-bindings-pong test-bindings-pongd + +list-obj-files: test-src + @# List all .o included in a .a archive. + ar t $(SRC) +list-symbols: test-src + @# List all symbols in a .so. + nm -D $(SRC) +list-symbols-alt: test-src + @# Alternative: grep .text section in an objdump output. + objdump -T $(SRC) | grep text + +zigcompilation: build.zig src/*.zig + $(ZIGC) build + +bindings-compile-pong: test-bindings/pong.c + @-mkdir bin-bindings 2>/dev/null || true + $(CC) -o bin-bindings/pong build/libipc.so $(CFLAGS) $^ $(LDFLAGS) + +bindings-compile-pongd: test-bindings/pongd.c + @-mkdir bin-bindings 2>/dev/null || true + $(CC) -o bin-bindings/pongd build/libipc.so $(CFLAGS) $^ $(LDFLAGS) + +bindings-test-pong: + LD_LIBRARY_PATH=build/ $(VALGRIND) ./bin-bindings/pong + +bindings-test-pongd: + -rm /tmp/libipc-run/pong 2>/dev/null || true + LD_LIBRARY_PATH=build/ $(VALGRIND) ./bin-bindings/pongd + +WS_SERVICE ?= 127.0.0.1:8080 +TCP_SERVICE ?= 127.0.0.1:9000 +init-websocket-tcpd: + @# '-b' binary, '-E' quit on end-of-file, 'ws-l' websocket URI to listen + @# each connection is redirected to last parameter + websocat -b -E ws-l:$(WS_SERVICE) tcp:$(TCP_SERVICE) + +init-websocket-client: + websocat -b -E ws://$(WS_SERVICE) +#websocat -b -E tcp-l:127.0.0.1:9000 ws://127.0.0.1:9999 + +build-all: + $(ZIGC) build-exe src/write-tcpd-pong-messages.zig -lc + $(ZIGC) build-exe $(ZIGOPTS) src/tcpd.zig + $(ZIGC) build-exe $(ZIGOPTS) src/pong.zig + +serve: + find . | entr make build-all