mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-24 07:06:39 +00:00
Allow us to build a semi-dynamic official binary that works back to CentOS 6, at least on x64, and is very fast since we can build it with newer clang or icc.
This commit is contained in:
parent
51715376bf
commit
26aaf253ac
18
ext/misc/linux-old-glibc-compat.c
Normal file
18
ext/misc/linux-old-glibc-compat.c
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern void *__wrap_memcpy(void *dest,const void *src,size_t n)
|
||||||
|
{
|
||||||
|
return memcpy(dest,src,n);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
@ -71,7 +71,6 @@ ifeq ($(ZT_DEBUG),1)
|
|||||||
# C25519 in particular is almost UNUSABLE in -O0 even on a 3ghz box!
|
# 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: CXXFLAGS=-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
|
else
|
||||||
override DEFS+=-D_FORTIFY_SOURCE=2
|
|
||||||
CFLAGS?=-O3 -fstack-protector
|
CFLAGS?=-O3 -fstack-protector
|
||||||
override CFLAGS+=-Wall -Wno-deprecated -fPIE -pthread $(INCLUDES) -DNDEBUG $(DEFS)
|
override CFLAGS+=-Wall -Wno-deprecated -fPIE -pthread $(INCLUDES) -DNDEBUG $(DEFS)
|
||||||
CXXFLAGS?=-O3 -fstack-protector
|
CXXFLAGS?=-O3 -fstack-protector
|
||||||
@ -210,6 +209,12 @@ ifeq ($(ZT_STATIC),1)
|
|||||||
override LDFLAGS+=-static
|
override LDFLAGS+=-static
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# For building an official semi-static binary on CentOS 7
|
||||||
|
ifeq ($(ZT_OFFICIAL),1)
|
||||||
|
CORE_OBJS+=ext/misc/linux-old-glibc-compat.o
|
||||||
|
override LDFLAGS+=-Wl,--wrap=memcpy -static-libstdc++
|
||||||
|
endif
|
||||||
|
|
||||||
# ARM32 hell -- use conservative CFLAGS
|
# ARM32 hell -- use conservative CFLAGS
|
||||||
ifeq ($(ZT_ARCHITECTURE),3)
|
ifeq ($(ZT_ARCHITECTURE),3)
|
||||||
ifeq ($(shell if [ -e /usr/bin/dpkg ]; then dpkg --print-architecture; fi),armel)
|
ifeq ($(shell if [ -e /usr/bin/dpkg ]; then dpkg --print-architecture; fi),armel)
|
||||||
@ -254,7 +259,7 @@ libzerotiercore.a: FORCE
|
|||||||
core: libzerotiercore.a
|
core: libzerotiercore.a
|
||||||
|
|
||||||
selftest: $(CORE_OBJS) $(ONE_OBJS) selftest.o
|
selftest: $(CORE_OBJS) $(ONE_OBJS) selftest.o
|
||||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o zerotier-selftest selftest.o $(CORE_OBJS) $(ONE_OBJS $(LDLIBS)
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o zerotier-selftest selftest.o $(CORE_OBJS) $(ONE_OBJS) $(LDLIBS)
|
||||||
$(STRIP) zerotier-selftest
|
$(STRIP) zerotier-selftest
|
||||||
|
|
||||||
zerotier-selftest: selftest
|
zerotier-selftest: selftest
|
||||||
@ -265,7 +270,7 @@ manpages: FORCE
|
|||||||
doc: manpages
|
doc: manpages
|
||||||
|
|
||||||
clean: FORCE
|
clean: FORCE
|
||||||
rm -rf *.a *.so *.o node/*.o controller/*.o osdep/*.o service/*.o ext/http-parser/*.o ext/miniupnpc/*.o ext/libnatpmp/*.o $(CORE_OBJS) $(ONE_OBJS) zerotier-one zerotier-idtool zerotier-cli zerotier-selftest build-* ZeroTierOneInstaller-* *.deb *.rpm .depend debian/files debian/zerotier-one*.debhelper debian/zerotier-one.substvars debian/*.log debian/zerotier-one doc/node_modules
|
rm -rf *.a *.so *.o node/*.o controller/*.o osdep/*.o service/*.o ext/http-parser/*.o ext/miniupnpc/*.o ext/libnatpmp/*.o $(CORE_OBJS) $(ONE_OBJS) zerotier-one zerotier-idtool zerotier-cli zerotier-selftest build-* ZeroTierOneInstaller-* *.deb *.rpm .depend debian/files debian/zerotier-one*.debhelper debian/zerotier-one.substvars debian/*.log debian/zerotier-one doc/node_modules ext/misc/*.o
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
|
|
||||||
|
@ -660,6 +660,7 @@ static int testOther()
|
|||||||
std::cout << " " << InetAddress("").toString(buf);
|
std::cout << " " << InetAddress("").toString(buf);
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
#if 0
|
||||||
std::cout << "[other] Benchmarking memcpy... "; std::cout.flush();
|
std::cout << "[other] Benchmarking memcpy... "; std::cout.flush();
|
||||||
{
|
{
|
||||||
unsigned char *bb = (unsigned char *)::malloc(1234567);
|
unsigned char *bb = (unsigned char *)::malloc(1234567);
|
||||||
@ -681,6 +682,7 @@ static int testOther()
|
|||||||
::free((void *)bb);
|
::free((void *)bb);
|
||||||
::free((void *)cc);
|
::free((void *)cc);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
std::cout << "[other] Benchmarking ZT_FAST_MEMCPY... "; std::cout.flush();
|
std::cout << "[other] Benchmarking ZT_FAST_MEMCPY... "; std::cout.flush();
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user