diff options
Diffstat (limited to 'zto/make-linux.mk')
| -rw-r--r-- | zto/make-linux.mk | 100 |
1 files changed, 87 insertions, 13 deletions
diff --git a/zto/make-linux.mk b/zto/make-linux.mk index a606d58..5fb489b 100644 --- a/zto/make-linux.mk +++ b/zto/make-linux.mk @@ -8,7 +8,7 @@ ifeq ($(origin CXX),default) endif INCLUDES?= -DEFS?=-D_FORTIFY_SOURCE=2 +DEFS?= LDLIBS?= DESTDIR?= @@ -54,15 +54,16 @@ ifeq ($(ZT_RULES_ENGINE_DEBUGGING),1) endif ifeq ($(ZT_DEBUG),1) - DEFS+=-DZT_TRACE - override CFLAGS+=-Wall -g -O -pthread $(INCLUDES) $(DEFS) - override CXXFLAGS+=-Wall -g -O -std=c++11 -pthread $(INCLUDES) $(DEFS) + override DEFS+=-DZT_TRACE + override CFLAGS+=-Wall -g -pthread $(INCLUDES) $(DEFS) + override CXXFLAGS+=-Wall -g -std=c++11 -pthread $(INCLUDES) $(DEFS) override LDFLAGS+= STRIP?=echo # The following line enables optimization for the crypto code, since # C25519 in particular is almost UNUSABLE in -O0 even on a 3ghz box! -node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CFLAGS = -Wall -O2 -g -pthread $(INCLUDES) $(DEFS) +node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CXXFLAGS=-Wall -O2 -g -pthread $(INCLUDES) $(DEFS) else + override DEFS+=-D_FORTIFY_SOURCE=2 CFLAGS?=-O3 -fstack-protector override CFLAGS+=-Wall -fPIE -pthread $(INCLUDES) -DNDEBUG $(DEFS) CXXFLAGS?=-O3 -fstack-protector @@ -72,6 +73,10 @@ else STRIP+=--strip-all endif +ifeq ($(ZT_USE_TEST_TAP),1) + override DEFS+=-DZT_USE_TEST_TAP +endif + # Uncomment for gprof profile build #CFLAGS=-Wall -g -pg -pthread $(INCLUDES) $(DEFS) #CXXFLAGS=-Wall -g -pg -pthread $(INCLUDES) $(DEFS) @@ -80,52 +85,121 @@ endif # Determine system build architecture from compiler target CC_MACH=$(shell $(CC) -dumpmachine | cut -d '-' -f 1) -ZT_ARCHITECTURE=0 +ZT_ARCHITECTURE=999 ifeq ($(CC_MACH),x86_64) ZT_ARCHITECTURE=2 + ZT_USE_X64_ASM_SALSA2012=1 endif ifeq ($(CC_MACH),amd64) ZT_ARCHITECTURE=2 + ZT_USE_X64_ASM_SALSA2012=1 endif ifeq ($(CC_MACH),i386) ZT_ARCHITECTURE=1 endif +ifeq ($(CC_MACH),i486) + ZT_ARCHITECTURE=1 +endif +ifeq ($(CC_MACH),i586) + ZT_ARCHITECTURE=1 +endif ifeq ($(CC_MACH),i686) ZT_ARCHITECTURE=1 endif ifeq ($(CC_MACH),arm) ZT_ARCHITECTURE=3 + override DEFS+=-DZT_NO_TYPE_PUNNING + ZT_USE_ARM32_NEON_ASM_SALSA2012=1 endif ifeq ($(CC_MACH),armel) ZT_ARCHITECTURE=3 + override DEFS+=-DZT_NO_TYPE_PUNNING + ZT_USE_ARM32_NEON_ASM_SALSA2012=1 endif ifeq ($(CC_MACH),armhf) ZT_ARCHITECTURE=3 + override DEFS+=-DZT_NO_TYPE_PUNNING + ZT_USE_ARM32_NEON_ASM_SALSA2012=1 endif ifeq ($(CC_MACH),armv6) ZT_ARCHITECTURE=3 + override DEFS+=-DZT_NO_TYPE_PUNNING + ZT_USE_ARM32_NEON_ASM_SALSA2012=1 +endif +ifeq ($(CC_MACH),armv6zk) + ZT_ARCHITECTURE=3 + override DEFS+=-DZT_NO_TYPE_PUNNING + ZT_USE_ARM32_NEON_ASM_SALSA2012=1 +endif +ifeq ($(CC_MACH),armv6kz) + ZT_ARCHITECTURE=3 + override DEFS+=-DZT_NO_TYPE_PUNNING + ZT_USE_ARM32_NEON_ASM_SALSA2012=1 endif ifeq ($(CC_MACH),armv7) ZT_ARCHITECTURE=3 + override DEFS+=-DZT_NO_TYPE_PUNNING + ZT_USE_ARM32_NEON_ASM_SALSA2012=1 endif ifeq ($(CC_MACH),arm64) ZT_ARCHITECTURE=4 + override DEFS+=-DZT_NO_TYPE_PUNNING endif ifeq ($(CC_MACH),aarch64) ZT_ARCHITECTURE=4 + override DEFS+=-DZT_NO_TYPE_PUNNING endif -DEFS+=-DZT_BUILD_PLATFORM=1 -DZT_BUILD_ARCHITECTURE=$(ZT_ARCHITECTURE) -DZT_SOFTWARE_UPDATE_DEFAULT="\"disable\"" - -# Define some conservative CPU instruction set flags for arm32 since there's a ton of variation out there -ifeq ($(ZT_ARCHITECTURE),3) - override CFLAGS+=-march=armv6zk -mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp - override CXXFLAGS+=-march=armv6zk -mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp +ifeq ($(CC_MACH),mipsel) + ZT_ARCHITECTURE=5 + override DEFS+=-DZT_NO_TYPE_PUNNING +endif +ifeq ($(CC_MACH),mips) + ZT_ARCHITECTURE=5 + override DEFS+=-DZT_NO_TYPE_PUNNING +endif +ifeq ($(CC_MACH),mips64) + ZT_ARCHITECTURE=6 override DEFS+=-DZT_NO_TYPE_PUNNING endif +ifeq ($(CC_MACH),mips64el) + ZT_ARCHITECTURE=6 + override DEFS+=-DZT_NO_TYPE_PUNNING +endif + +# Fail if system architecture could not be determined +ifeq ($(ZT_ARCHITECTURE),999) +ERR=$(error FATAL: architecture could not be determined from $(CC) -dumpmachine: $CC_MACH) +.PHONY: err +err: ; $(ERR) +endif -# Define this to build a static binary, which is needed to make this runnable on a few ancient Linux distros +# Disable software updates by default on Linux since that is normally done with package management +override DEFS+=-DZT_BUILD_PLATFORM=1 -DZT_BUILD_ARCHITECTURE=$(ZT_ARCHITECTURE) -DZT_SOFTWARE_UPDATE_DEFAULT="\"disable\"" + +# Static builds, which are currently done for a number of Linux targets ifeq ($(ZT_STATIC),1) override LDFLAGS+=-static + ifeq ($(ZT_ARCHITECTURE),3) + ifeq ($(shell if [ -e /usr/bin/dpkg ]; then dpkg --print-architecture; fi),armel) + override CFLAGS+=-march=armv5te -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm + override CXXFLAGS+=-march=armv5te -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm + ZT_USE_ARM32_NEON_ASM_SALSA2012=0 + else + override CFLAGS+=-march=armv6zk -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -mno-unaligned-access -marm + override CXXFLAGS+=-march=armv6zk -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -mno-unaligned-access -marm + ZT_USE_ARM32_NEON_ASM_SALSA2012=0 + endif + endif +endif + +# Build faster crypto on some targets +ifeq ($(ZT_USE_X64_ASM_SALSA2012),1) + override DEFS+=-DZT_USE_X64_ASM_SALSA2012 + override OBJS+=ext/x64-salsa2012-asm/salsa2012.o +endif +ifeq ($(ZT_USE_ARM32_NEON_ASM_SALSA2012),1) + override DEFS+=-DZT_USE_ARM32_NEON_ASM_SALSA2012 + override OBJS+=ext/arm32-neon-salsa2012-asm/salsa2012.o endif all: one |
