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 unix://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