diff --git a/make-liblwip141.mk b/make-liblwip141.mk new file mode 100644 index 0000000..bd300d2 --- /dev/null +++ b/make-liblwip141.mk @@ -0,0 +1,112 @@ +# +# Copyright (c) 2001, 2002 Swedish Institute of Computer Science. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +# SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +# OF SUCH DAMAGE. +# +# This file is part of the lwIP TCP/IP stack. +# +# Author: Adam Dunkels +# + +CONTRIBDIR=ext/contrib +LWIPARCH=$(CONTRIBDIR)/ports/unix + +#Set this to where you have the lwip core module checked out from CVS +#default assumes it's a dir named lwip at the same level as the contrib module +LWIPDIR=ext/lwip/src + + +CCDEP=gcc +CC=gcc +CFLAGS=-O3 -g -Wall -DIPv4 -fPIC + +# Debug output for lwIP +ifeq ($(SDK_LWIP_DEBUG),1) + CFLAGS+=-DLWIP_DEBUG +endif + +CFLAGS:=$(CFLAGS) \ + -I$(LWIPDIR)/include -I$(LWIPARCH)/include -I$(LWIPDIR)/include/ipv4 \ + -I$(LWIPDIR) -I. + + +# COREFILES, CORE4FILES: The minimum set of files needed for lwIP. +COREFILES=$(LWIPDIR)/core/mem.c $(LWIPDIR)/core/memp.c $(LWIPDIR)/core/netif.c \ + $(LWIPDIR)/core/pbuf.c $(LWIPDIR)/core/raw.c $(LWIPDIR)/core/stats.c \ + $(LWIPDIR)/core/sys.c $(LWIPDIR)/core/tcp.c $(LWIPDIR)/core/tcp_in.c \ + $(LWIPDIR)/core/tcp_out.c $(LWIPDIR)/core/udp.c \ + # $(LWIPDIR)/core/dhcp.c \ + $(LWIPDIR)/core/init.c $(LWIPDIR)/core/timers.c $(LWIPDIR)/core/def.c +CORE4FILES=$(wildcard $(LWIPDIR)/core/ipv4/*.c) $(LWIPDIR)/core/ipv4/inet.c \ + $(LWIPDIR)/core/ipv4/inet_chksum.c + +# SNMPFILES: Extra SNMPv1 agent +SNMPFILES=$(LWIPDIR)/core/snmp/asn1_dec.c $(LWIPDIR)/core/snmp/asn1_enc.c \ + $(LWIPDIR)/core/snmp/mib2.c $(LWIPDIR)/core/snmp/mib_structs.c \ + $(LWIPDIR)/core/snmp/msg_in.c $(LWIPDIR)/core/snmp/msg_out.c + +# APIFILES: The files which implement the sequential and socket APIs. +APIFILES=$(LWIPDIR)/api/api_lib.c $(LWIPDIR)/api/api_msg.c $(LWIPDIR)/api/tcpip.c \ + $(LWIPDIR)/api/err.c $(LWIPDIR)/api/sockets.c $(LWIPDIR)/api/netbuf.c $(LWIPDIR)/api/netdb.c + +# NETIFFILES: Files implementing various generic network interface functions.' +NETIFFILES=$(LWIPDIR)/netif/etharp.c $(LWIPDIR)/netif/slipif.c + +# NETIFFILES: Add PPP netif +NETIFFILES+=$(LWIPDIR)/netif/ppp/auth.c $(LWIPDIR)/netif/ppp/chap.c \ + $(LWIPDIR)/netif/ppp/chpms.c $(LWIPDIR)/netif/ppp/fsm.c \ + $(LWIPDIR)/netif/ppp/ipcp.c $(LWIPDIR)/netif/ppp/lcp.c \ + $(LWIPDIR)/netif/ppp/magic.c $(LWIPDIR)/netif/ppp/md5.c \ + $(LWIPDIR)/netif/ppp/pap.c $(LWIPDIR)/netif/ppp/ppp.c \ + $(LWIPDIR)/netif/ppp/randm.c $(LWIPDIR)/netif/ppp/vj.c + +# ARCHFILES: Architecture specific files. +ARCHFILES=$(wildcard $(LWIPARCH)/*.c $(LWIPARCH)tapif.c $(LWIPARCH)/netif/list.c $(LWIPARCH)/netif/tcpdump.c) + +# LWIPFILES: All the above. +LWIPFILES=$(COREFILES) $(CORE4FILES) $(SNMPFILES) $(APIFILES) $(NETIFFILES) $(ARCHFILES) +LWIPFILESW=$(wildcard $(LWIPFILES)) +LWIPOBJS=$(notdir $(LWIPFILESW:.c=.o)) + +LWIPLIB=liblwip.so + +%.o: + $(CC) $(CFLAGS) -c $(<:.o=.c) + +all: $(LWIPLIB) +.PHONY: all + +clean: + rm -f *.o $(LWIPLIB) *.s .depend* *.core core + +depend dep: .depend + +include .depend + +$(LWIPLIB): $(LWIPOBJS) + mkdir -p build + $(CC) -g -nostartfiles -shared -o build/$@ $^ + +.depend: $(LWIPFILES) + $(CCDEP) $(CFLAGS) -MM $^ > .depend || rm -f .depend diff --git a/make-liblwip.mk b/make-liblwip200.mk similarity index 100% rename from make-liblwip.mk rename to make-liblwip200.mk diff --git a/make-linux.mk b/make-linux.mk index 54e2016..0b11a23 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -7,6 +7,27 @@ # tests: build only test applications for host system # clean: removes all built files, objects, other trash +# Target output filenames +SHARED_LIB_NAME = libztlinux.so +INTERCEPT_NAME = libztintercept.so +SDK_SERVICE_NAME = zerotier-sdk-service +ONE_SERVICE_NAME = zerotier-one +ONE_CLI_NAME = zerotier-cli +ONE_ID_TOOL_NAME = zerotier-idtool +LWIP_LIB_NAME = liblwip.so +# +SHARED_LIB = $(BUILD)/$(SHARED_LIB_NAME) +INTERCEPT = $(BUILD)/$(INTERCEPT_NAME) +SDK_SERVICE = $(BUILD)/$(SDK_SERVICE_NAME) +ONE_SERVICE = $(BUILD)/$(ONE_SERVICE_NAME) +ONE_CLI = $(BUILD)/$(ONE_CLI_NAME) +ONE_IDTOOL = $(BUILD)/$(ONE_IDTOOL_NAME) +LWIP_LIB = $(BUILD)/$(LWIP_LIB_NAME) +# +LWIP_2_DIR = ext/lwip_2.0.0 +LWIP_1_DIR = ext/lwip_1.4.1 +LWIP_BASE_DIR = ext/lwip + # Automagically pick clang or gcc, with preference for clang # This is only done if we have not overridden these with an environment or CLI variable ifeq ($(origin CC),default) @@ -49,10 +70,34 @@ ifeq ($(ZT_TRACE),1) DEFS+=-DZT_TRACE endif -# Debug output for lwIP + +INCLUDES+= -Iext \ + -I$(ZT1)/osdep \ + -I$(ZT1)/node \ + -I$(ZT1)/service \ + -I../$(ZT1)/osdep \ + -I../$(ZT1)/node \ + -I../$(ZT1)/service \ + -I. \ + -Isrc + + +# lwIP ifeq ($(SDK_LWIP_DEBUG),1) - LWIP_FLAGS:=SDK_LWIP_DEBUG=1 + LWIP_FLAGS+=SDK_LWIP_DEBUG=1 endif +ifeq ($(LWIP_VERSION_2),1) + CXXFLAGS+=-DLWIP_VERSION_2 + INCLUDES+=-I$(LWIP_2_DIR)/src/include + INCLUDES+=-I$(LWIP_2_DIR)/src/include/ipv4 + INCLUDES+=-I$(LWIP_2_DIR)/src/include/ipv6 +else + CXXFLAGS+=-DLWIP_VERSION_1 + INCLUDES+=-I$(LWIP_1_DIR)/src/include + INCLUDES+=-I$(LWIP_1_DIR)/src/include/ipv4 + INCLUDES+=-I$(LWIP_1_DIR)/src/include/ipv6 +endif + # Debug output for the SDK # Specific levels can be controlled in src/SDK_Debug.h @@ -65,22 +110,7 @@ ifeq ($(SDK_DEBUG_LOG_TO_FILE),1) endif -# Target output filenames -SHARED_LIB_NAME = libztlinux.so -INTERCEPT_NAME = libztintercept.so -SDK_SERVICE_NAME = zerotier-sdk-service -ONE_SERVICE_NAME = zerotier-one -ONE_CLI_NAME = zerotier-cli -ONE_ID_TOOL_NAME = zerotier-idtool -LWIP_LIB_NAME = liblwip.so -# -SHARED_LIB = $(BUILD)/$(SHARED_LIB_NAME) -INTERCEPT = $(BUILD)/$(INTERCEPT_NAME) -SDK_SERVICE = $(BUILD)/$(SDK_SERVICE_NAME) -ONE_SERVICE = $(BUILD)/$(ONE_SERVICE_NAME) -ONE_CLI = $(BUILD)/$(ONE_CLI_NAME) -ONE_IDTOOL = $(BUILD)/$(ONE_IDTOOL_NAME) -LWIP_LIB = $(BUILD)/$(LWIP_LIB_NAME) +# ------ MISC TARGETS ------ all: remove_only_intermediates linux_shared_lib check @@ -92,7 +122,15 @@ remove_only_intermediates: # --- EXTERNAL LIBRARIES --- lwip: - make -f make-liblwip.mk $(LWIP_FLAGS) +ifeq ($(LWIP_VERSION_2),1) + mv ext/lwip_2.0.0 ext/lwip + -make -f make-liblwip200.mk $(LWIP_FLAGS) + mv ext/lwip ext/lwip_2.0.0 +else + mv ext/lwip_1.4.1 ext/lwip + -make -f make-liblwip141.mk $(LWIP_FLAGS) + mv ext/lwip ext/lwip_1.4.1 +endif @@ -111,11 +149,12 @@ one: $(OBJS) $(ZT1)/service/OneService.o $(ZT1)/one.o $(ZT1)/osdep/LinuxEthernet # Build only the intercept library linux_intercept: # Use gcc not clang to build standalone intercept library since gcc is typically used for libc and we want to ensure maximal ABI compatibility - cd src ; gcc $(DEFS) -g -O2 -Wall -std=c99 -fPIC -DVERBOSE -D_GNU_SOURCE -DSDK_INTERCEPT -I. -nostdlib -I../$(ZT1)/node -nostdlib -shared -o ../$(INTERCEPT) SDK_Sockets.c SDK_Intercept.c SDK_RPC.c -ldl + cd src ; gcc $(DEFS) $(INCLUDES) -g -O2 -Wall -std=c99 -fPIC -DVERBOSE -D_GNU_SOURCE -DSDK_INTERCEPT -nostdlib -nostdlib -shared -o ../$(INTERCEPT) SDK_Sockets.c SDK_Intercept.c SDK_RPC.c -ldl # Build only the SDK service linux_sdk_service: lwip $(OBJS) - $(CXX) $(CXXFLAGS) $(LDFLAGS) $(DEFS) -DSDK -DZT_ONE_NO_ROOT_CHECK -Iext -Iext/lwip/src/include -Iext/lwip/src/include/ipv4 -Iext/lwip/src/include/ipv6 -I$(ZT1)/osdep -I$(ZT1)/node -Isrc -o $(SDK_SERVICE) $(OBJS) $(ZT1)/service/OneService.cpp src/SDK_EthernetTap.cpp src/SDK_Proxy.cpp $(ZT1)/one.cpp -x c src/SDK_RPC.c $(LDLIBS) -ldl + rm -rf .depend + $(CXX) $(CXXFLAGS) $(LDFLAGS) $(DEFS) $(INCLUDES) -DSDK -DZT_ONE_NO_ROOT_CHECK -o $(SDK_SERVICE) $(OBJS) $(ZT1)/service/OneService.cpp src/SDK_EthernetTap.cpp src/SDK_Proxy.cpp $(ZT1)/one.cpp -x c src/SDK_RPC.c $(LDLIBS) -ldl ln -sf $(SDK_SERVICE_NAME) $(BUILD)/zerotier-cli ln -sf $(SDK_SERVICE_NAME) $(BUILD)/zerotier-idtool @@ -124,7 +163,7 @@ linux_service_and_intercept: linux_intercept linux_sdk_service # Builds a single shared library which contains everything linux_shared_lib: $(OBJS) - $(CXX) $(CXXFLAGS) $(LDFLAGS) -DSDK -DZT_ONE_NO_ROOT_CHECK -Iext/lwip/src/include -Iext/lwip/src/include/ipv4 -Iext/lwip/src/include/ipv6 -Izerotierone/osdep -Izerotierone/node -Izerotierone/service -Isrc -shared -o $(SHARED_LIB) $(OBJS) zerotierone/service/OneService.cpp src/SDK_Service.cpp src/SDK_EthernetTap.cpp src/SDK_Proxy.cpp zerotierone/one.cpp -x c src/SDK_Sockets.c src/SDK_Intercept.c src/SDK_RPC.c $(LDLIBS) -ldl + $(CXX) $(CXXFLAGS) $(LDFLAGS) $(INCLUDES) -DSDK -DZT_ONE_NO_ROOT_CHECK -shared -o $(SHARED_LIB) $(OBJS) zerotierone/service/OneService.cpp src/SDK_Service.cpp src/SDK_EthernetTap.cpp src/SDK_Proxy.cpp zerotierone/one.cpp -x c src/SDK_Sockets.c src/SDK_Intercept.c src/SDK_RPC.c $(LDLIBS) -ldl @@ -200,18 +239,28 @@ $(BUILD)/tests/$(OSTYPE).%.out: tests/api_test/%.c $(TEST_OBJDIR): mkdir -p $(TEST_OBJDIR) -tests: $(TEST_OBJDIR) $(TEST_TARGETS) linux_service_and_intercept +tests: $(TEST_OBJDIR) $(TEST_TARGETS) mkdir -p $(BUILD)/tests; mkdir -p build/tests/zerotier + +test_suite: tests lwip linux_service_and_intercept cp tests/api_test/test.sh $(BUILD)/tests/test.sh cp tests/api_test/servers.sh $(BUILD)/tests/servers.sh cp tests/api_test/clients.sh $(BUILD)/tests/clients.sh cp tests/cleanup.sh $(BUILD)/tests/cleanup.sh - cp $(LWIP_LIB) $(BUILD)/tests/zerotier/liblwip.so - + cp $(LWIP_LIB) $(BUILD)/tests/zerotier/$(LWIP_LIB_NAME) # ----- ADMINISTRATIVE ----- + +#restore_lwip_dirs: +# if [ -d "$LWIP_2_DIR" && ! -d "$LWIP_1_DIR" ]; then +# -mv $LWIP_BASE_DIR $LWIP_1_DIR +# fi +# if [ -d "$LWIP_1_DIR" && ! -d "$LWIP_2_DIR" ]; then +# -mv $LWIP_BASE_DIR $LWIP_2_DIR +# fi + clean_android: # android JNI lib project -test -s /usr/bin/javac || { echo "Javac not found"; exit 1; } @@ -221,6 +270,7 @@ clean_android: -cd $(INT)/android/example_app; ./gradlew clean clean_basic: + -rm -rf .depend -rm -rf $(BUILD)/* -rm -rf $(INT)/Unity3D/Assets/Plugins/* -rm -rf zerotier-cli zerotier-idtool @@ -230,4 +280,4 @@ clean_basic: clean: clean_basic clean_android clean_for_production: - -find . -type f \( -name '*.identity'\) -delete + -find . -type f \( -name '*.identity'\) -delete \ No newline at end of file diff --git a/make-mac.mk b/make-mac.mk index a69a267..5a1646c 100644 --- a/make-mac.mk +++ b/make-mac.mk @@ -7,6 +7,29 @@ # tests: build only test applications for host system # clean: removes all built files, objects, other trash +# Target output filenames +SHARED_LIB_NAME = libztosx.so +INTERCEPT_NAME = libztintercept.so +SDK_SERVICE_NAME = zerotier-sdk-service +ONE_SERVICE_NAME = zerotier-one +ONE_CLI_NAME = zerotier-cli +ONE_ID_TOOL_NAME = zerotier-idtool +LWIP_LIB_NAME = liblwip.so +# +SHARED_LIB = $(BUILD)/$(SHARED_LIB_NAME) +INTERCEPT = $(BUILD)/$(INTERCEPT_NAME) +SDK_SERVICE = $(BUILD)/$(SDK_SERVICE_NAME) +ONE_SERVICE = $(BUILD)/$(ONE_SERVICE_NAME) +ONE_CLI = $(BUILD)/$(ONE_CLI_NAME) +ONE_IDTOOL = $(BUILD)/$(ONE_IDTOOL_NAME) +LWIP_LIB = $(BUILD)/$(LWIP_LIB_NAME) +# +LWIP_2_DIR = ext/lwip_2.0.0 +LWIP_1_DIR = ext/lwip_1.4.1 +LWIP_BASE_DIR = ext/lwip + +# Automagically pick clang or gcc, with preference for clang +# This is only done if we have not overridden these with an environment or CLI variable ifeq ($(origin CC),default) CC=$(shell if [ -e /usr/bin/clang ]; then echo clang; else echo gcc; fi) endif @@ -50,34 +73,51 @@ endif CXXFLAGS=$(CFLAGS) -fno-rtti - -# Target output filenames -SHARED_LIB_NAME = libztosx.so -INTERCEPT_NAME = libztintercept.so -SDK_SERVICE_NAME = zerotier-sdk-service -ONE_SERVICE_NAME = zerotier-one -ONE_CLI_NAME = zerotier-cli -ONE_ID_TOOL_NAME = zerotier-idtool -LWIP_LIB_NAME = liblwip.so -# -SHARED_LIB = $(BUILD)/$(SHARED_LIB_NAME) -INTERCEPT = $(BUILD)/$(INTERCEPT_NAME) -SDK_SERVICE = $(BUILD)/$(SDK_SERVICE_NAME) -ONE_SERVICE = $(BUILD)/$(ONE_SERVICE_NAME) -ONE_CLI = $(BUILD)/$(ONE_CLI_NAME) -ONE_IDTOOL = $(BUILD)/$(ONE_IDTOOL_NAME) -LWIP_LIB = $(BUILD)/$(LWIP_LIB_NAME) +INCLUDES+= -Iext \ + -I$(ZT1)/osdep \ + -I$(ZT1)/node \ + -I$(ZT1)/service \ + -I../$(ZT1)/osdep \ + -I../$(ZT1)/node \ + -I../$(ZT1)/service \ + -I. \ + -Isrc +# lwIP +ifeq ($(SDK_LWIP_DEBUG),1) + LWIP_FLAGS+=SDK_LWIP_DEBUG=1 +endif +ifeq ($(LWIP_VERSION_2),1) + CXXFLAGS+=-DLWIP_VERSION_2 + INCLUDES+=-I$(LWIP_2_DIR)/src/include + INCLUDES+=-I$(LWIP_2_DIR)/src/include/ipv4 + INCLUDES+=-I$(LWIP_2_DIR)/src/include/ipv6 +else + CXXFLAGS+=-DLWIP_VERSION_1 + INCLUDES+=-I$(LWIP_1_DIR)/src/include + INCLUDES+=-I$(LWIP_1_DIR)/src/include/ipv4 + INCLUDES+=-I$(LWIP_1_DIR)/src/include/ipv6 +endif + + +# ------ MISC TARGETS ------ # Build everything all: one osx ios android lwip check - # --- EXTERNAL LIBRARIES --- lwip: - make -f make-liblwip.mk +ifeq ($(LWIP_VERSION_2),1) + mv ext/lwip_2.0.0 ext/lwip + -make -f make-liblwip200.mk $(LWIP_FLAGS) + mv ext/lwip ext/lwip_2.0.0 +else + mv ext/lwip_1.4.1 ext/lwip + -make -f make-liblwip141.mk $(LWIP_FLAGS) + mv ext/lwip ext/lwip_1.4.1 +endif @@ -133,15 +173,15 @@ remove_only_intermediates: # Builds a single shared library which contains everything osx_shared_lib: $(OBJS) - $(CXX) $(CXXFLAGS) $(LDFLAGS) -DSDK -DZT_ONE_NO_ROOT_CHECK -Iext/lwip/src/include -Iext/lwip/src/include/ipv4 -Iext/lwip/src/include/ipv6 -Izerotierone/osdep -Izerotierone/node -Izerotierone/service -Isrc -shared -o $(SHARED_LIB) $(OBJS) zerotierone/service/OneService.cpp src/SDK_Service.cpp src/SDK_EthernetTap.cpp src/SDK_Proxy.cpp zerotierone/one.cpp -x c src/SDK_Sockets.c src/SDK_Intercept.c src/SDK_RPC.c $(LDLIBS) -ldl + $(CXX) $(CXXFLAGS) $(LDFLAGS) -DSDK -DZT_ONE_NO_ROOT_CHECK $(INCLUDES) -shared -o $(SHARED_LIB) $(OBJS) zerotierone/service/OneService.cpp src/SDK_Service.cpp src/SDK_EthernetTap.cpp src/SDK_Proxy.cpp zerotierone/one.cpp -x c src/SDK_Sockets.c src/SDK_Intercept.c src/SDK_RPC.c $(LDLIBS) -ldl osx_intercept: # Use gcc not clang to build standalone intercept library since gcc is typically used for libc and we want to ensure maximal ABI compatibility - cd src ; gcc $(DEFS) -g -O2 -Wall -std=c99 -fPIC -DVERBOSE -D_GNU_SOURCE -DSDK_INTERCEPT -I. -nostdlib -I../$(ZT1)/node -nostdlib -shared -o ../$(INTERCEPT) SDK_Sockets.c SDK_Intercept.c SDK_RPC.c -ldl + cd src ; gcc $(DEFS) $(INCLUDES) -g -O2 -Wall -std=c99 -fPIC -DVERBOSE -D_GNU_SOURCE -DSDK_INTERCEPT -nostdlib -nostdlib -shared -o ../$(INTERCEPT) SDK_Sockets.c SDK_Intercept.c SDK_RPC.c -ldl # Build only the SDK service osx_sdk_service: lwip $(OBJS) - $(CXX) $(CXXFLAGS) $(LDFLAGS) $(DEFS) -DSDK -DZT_ONE_NO_ROOT_CHECK -Iext -Iext/lwip/src/include -Iext/lwip/src/include/ipv4 -Iext/lwip/src/include/ipv6 -I$(ZT1)/osdep -I$(ZT1)/node -Isrc -o $(SDK_SERVICE) $(OBJS) $(ZT1)/service/OneService.cpp src/SDK_EthernetTap.cpp src/SDK_Proxy.cpp $(ZT1)/one.cpp -x c src/SDK_RPC.c $(LDLIBS) -ldl + $(CXX) $(CXXFLAGS) $(LDFLAGS) $(DEFS) $(INCLUDES) -DSDK -DZT_ONE_NO_ROOT_CHECK -o $(SDK_SERVICE) $(OBJS) $(ZT1)/service/OneService.cpp src/SDK_EthernetTap.cpp src/SDK_Proxy.cpp $(ZT1)/one.cpp -x c src/SDK_RPC.c $(LDLIBS) -ldl ln -sf $(SDK_SERVICE_NAME) zerotier-cli ln -sf $(SDK_SERVICE_NAME) zerotier-idtool @@ -201,9 +241,11 @@ $(BUILD)/tests/$(OSTYPE).%.out: tests/api_test/%.c $(TEST_OBJDIR): mkdir -p $(TEST_OBJDIR) -tests: $(TEST_OBJDIR) $(TEST_TARGETS) osx_service_and_intercept +tests: $(TEST_OBJDIR) $(TEST_TARGETS) mkdir -p $(BUILD)/tests; mkdir -p build/tests/zerotier + +test_suite: tests lwip osx_service_and_intercept cp tests/api_test/test.sh $(BUILD)/tests/test.sh cp tests/api_test/servers.sh $(BUILD)/tests/servers.sh cp tests/api_test/clients.sh $(BUILD)/tests/clients.sh @@ -211,7 +253,6 @@ tests: $(TEST_OBJDIR) $(TEST_TARGETS) osx_service_and_intercept cp $(LWIP_LIB) $(BUILD)/tests/zerotier/$(LWIP_LIB_NAME) - # ----- ADMINISTRATIVE ----- JAVAC := $(shell which javac) @@ -226,6 +267,7 @@ clean_android: -cd $(INT)/android/example_app; ./gradlew clean clean_basic: + -rm -rf .depend -rm -rf $(BUILD)/* -rm -rf $(INT)/Unity3D/Assets/Plugins/* -rm -rf zerotier-cli zerotier-idtool