@@ -3,6 +3,19 @@ CFLAGS:=-Wall -Werror -Wextra -I. -D_GNU_SOURCE
33CFLAGS+ =-g -ggdb -Wdeclaration-after-statement
44LDFLAGS+ =-pthread
55
6+ UNAME_S: =$(shell uname -s)
7+ UNAME_LC: =$(shell echo $(UNAME_S ) | tr 'A-Z' 'a-z')
8+ ifeq ($(UNAME_S ) ,FreeBSD)
9+ CFLAGS+ =-I/usr/local/include
10+ LDFLAGS+ =-L/usr/local/lib
11+ endif
12+ TAP_SRC: =src/port/posix/tap_$(UNAME_LC ) .c
13+ ifeq ($(wildcard $(TAP_SRC ) ) ,)
14+ TAP_SRC: =src/port/posix/tap_linux.c
15+ endif
16+ TAP_OBJ: =$(patsubst src/% .c,build/% .o,$(TAP_SRC ) )
17+ TAP_PIE_OBJ: =$(patsubst src/% .c,build/pie/% .o,$(TAP_SRC ) )
18+
619CPPCHECK =cppcheck
720CPPCHECK_FLAGS=--enable =warning,performance,portability,missingInclude \
821 --suppress=missingIncludeSystem \
@@ -21,11 +34,16 @@ CPPCHECK_FLAGS=--enable=warning,performance,portability,missingInclude \
2134 --error-exitcode=1 --xml --xml-version=2
2235
2336OBJ =build/wolfip.o \
24- build/port/posix/linux_tap.o
37+ $(TAP_OBJ )
38+
39+ HAVE_WOLFSSL: =$(shell printf "#include <wolfssl/options.h>\nint main(void) {return 0;}\n" | $(CC ) $(CFLAGS ) -x c - -c -o /dev/null 2>/dev/null && echo 1)
40+ ifeq ($(HAVE_WOLFSSL ) ,)
41+ $(error wolfSSL headers not found. Please install wolfSSL or adjust include paths)
42+ endif
2543
2644EXE =build/tcpecho build/tcp_netcat_poll build/tcp_netcat_select \
2745 build/test-evloop build/test-dns build/test-wolfssl-forwarding \
28- build/test-ttl-expired build/test-wolfssl
46+ build/test-ttl-expired build/test-wolfssl build/test-httpd
2947LIB =libwolfip.so
3048
3149PREFIX =/usr/local
@@ -44,7 +62,7 @@ libtcpip.a: $(OBJ)
4462
4563libwolfip.so:CFLAGS+ =-fPIC
4664libwolfip.so : build/pie/port/posix/bsd_socket.o build/pie/wolfip.o \
47- build/pie/port/posix/linux_tap.o
65+ $( TAP_PIE_OBJ )
4866 @mkdir -p ` dirname $@ ` || true
4967 @echo " [LD] $@ "
5068 @$(CC ) $(CFLAGS ) $(LDFLAGS ) -shared -o $@ -Wl,--start-group $(^ ) -Wl,--end-group
@@ -62,11 +80,11 @@ asan:LDFLAGS+=-static-libasan
6280# Test
6381
6482unit:LDFLAGS+ =-lcheck -lm -lpthread -lrt -ldl -lsubunit
65- build/test-evloop : $(OBJ ) build/test/test_linux_eventloop .o
83+ build/test-evloop : $(OBJ ) build/test/test_eventloop .o
6684 @echo " [LD] $@ "
6785 @$(CC ) $(CFLAGS ) $(LDFLAGS ) -o $@ -Wl,--start-group $(^ ) -Wl,--end-group
6886
69- build/test-dns : $(OBJ ) build/test/test_linux_dhcp_dns .o
87+ build/test-dns : $(OBJ ) build/test/test_dhcp_dns .o
7088 @echo " [LD] $@ "
7189 @$(CC ) $(CFLAGS ) $(LDFLAGS ) -o $@ -Wl,--start-group $(^ ) -Wl,--end-group
7290
@@ -87,12 +105,11 @@ build/test-wolfssl:CFLAGS+=-Wno-cpp -DWOLFSSL_DEBUG -DWOLFSSL_WOLFIP
87105build/test-httpd:CFLAGS+ =-Wno-cpp -DWOLFSSL_DEBUG -DWOLFSSL_WOLFIP -Isrc/http
88106build/test-wolfssl-forwarding:CFLAGS+ =-Wno-cpp -DWOLFSSL_DEBUG -DWOLFSSL_WOLFIP -DWOLFIP_MAX_INTERFACES=2 -DWOLFIP_ENABLE_FORWARDING=1
89107
90-
91108build/test-wolfssl : $(OBJ ) build/test/test_native_wolfssl.o build/port/wolfssl_io.o build/certs/server_key.o build/certs/ca_cert.o build/certs/server_cert.o
92109 @echo " [LD] $@ "
93110 @$(CC ) $(CFLAGS ) $(LDFLAGS ) -o $@ -Wl,--start-group $(^ ) -lwolfssl -Wl,--end-group
94111
95- build/test-wolfssl-forwarding : build/test/test_wolfssl_forwarding.o build/test/wolfip_forwarding.o build/port/posix/linux_tap.o build/port/wolfssl_io.o build/certs/server_key.o build/certs/ca_cert.o build/certs/server_cert.o
112+ build/test-wolfssl-forwarding : build/test/test_wolfssl_forwarding.o build/test/wolfip_forwarding.o $( TAP_OBJ ) build/port/wolfssl_io.o build/certs/server_key.o build/certs/ca_cert.o build/certs/server_cert.o
96113 @echo " [LD] $@ "
97114 @$(CC ) $(CFLAGS ) $(LDFLAGS ) -o $@ -Wl,--start-group $(^ ) -lwolfssl -Wl,--end-group
98115
0 commit comments