From 3a73f1735437ef08d32e3d14966f813a5ed7dfb9 Mon Sep 17 00:00:00 2001 From: Nicolas Viennot Date: Sat, 9 Jan 2016 21:35:13 -0500 Subject: [PATCH] Allow static linking --- .gitignore | 4 ++++ Makefile.static-build | 49 +++++++++++++++++++++++++++++++++++++++++++ configure.ac | 14 +++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 Makefile.static-build diff --git a/.gitignore b/.gitignore index 0cd63730..93153ede 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,7 @@ cscope.* ctags *.log tmate.1.* +downloads/ +ext/ +libssh-*/ +msgpack-*/ diff --git a/Makefile.static-build b/Makefile.static-build new file mode 100644 index 00000000..cb16c961 --- /dev/null +++ b/Makefile.static-build @@ -0,0 +1,49 @@ +LIBSSH=libssh-0.7.2 +LIBSSH_URL=https://red.libssh.org/attachments/download/177/$(LIBSSH).tar.xz +LIBSSH_LIB=ext/lib/libssh.a + +MSGPACK=msgpack-1.3.0 +MSGPACK_URL=https://github.com/msgpack/msgpack-c/releases/download/cpp-1.3.0/$(MSGPACK).tar.gz +MSGPACK_LIB=ext/lib/libmsgpack.a + +TMATE_CONFIGURE=PKG_CONFIG_PATH=./ext/lib/pkgconfig + +all: tmate + +dependencies: + apt-get install build-essentials cmake libssl-dev autoconf automake pkg-config libtool libevent-dev libncurses-dev zlib1g-dev + +downloads/$(notdir $(LIBSSH_URL)): + mkdir -p downloads + wget -O $@ $(LIBSSH_URL) + +$(LIBSSH)/.ready: downloads/$(notdir $(LIBSSH_URL)) + tar xf $< + touch $@ + +downloads/$(notdir $(MSGPACK_URL)): + mkdir -p downloads + wget -O $@ $(MSGPACK_URL) + +$(MSGPACK)/.ready: downloads/$(notdir $(MSGPACK_URL)) + tar xf $< + touch $@ + +$(LIBSSH_LIB): $(LIBSSH)/.ready + mkdir -p $(LIBSSH)/build + cd $(LIBSSH)/build; ([ -f Makefile ] || cmake -DCMAKE_INSTALL_PREFIX:PATH=$(shell pwd)/ext .. -DWITH_SFTP=OFF -DWITH_SERVER=OFF -DWITH_PCAP=OFF -DWITH_STATIC_LIB=ON -DWITH_GSSAPI=OFF) + +make -C $(LIBSSH)/build install + +$(MSGPACK_LIB): $(MSGPACK)/.ready + mkdir -p $(MSGPACK)/build + cd $(MSGPACK)/build; ([ -f Makefile ] || cmake -DCMAKE_INSTALL_PREFIX:PATH=$(shell pwd)/ext ..) + +make -C $(MSGPACK)/build install + +tmate: $(MSGPACK_LIB) $(LIBSSH_LIB) + ./autogen.sh + $(TMATE_CONFIGURE) ./configure --enable-static + +make + +clean: + rm -rf ext $(LIBSSH) $(MSGPACK) + +make clean diff --git a/configure.ac b/configure.ac index e8074373..6c1c5b77 100644 --- a/configure.ac +++ b/configure.ac @@ -49,6 +49,20 @@ AC_ARG_ENABLE( if test "x$found_static" = xyes; then LDFLAGS="$LDFLAGS -static" PKG_CONFIG="pkg-config --static" + + CFLAGS="$CFLAGS -flto" + LDFLAGS="$LDFLAGS -flto" + + PKG_CHECK_MODULES([ZLIB], [zlib], [ + CPPFLAGS="$ZLIB_CFLAGS $CPPFLAGS" + LIBS="$ZLIB_LIBS $LIBS" + ]) + + PKG_CHECK_MODULES([LIBCRYPTO], [libcrypto], [ + CPPFLAGS="$LIBCRYPTO_CFLAGS $CPPFLAGS" + LIBS="$LIBCRYPTO_LIBS $LIBS" + ]) + AC_CHECK_LIB(dl, dlopen) fi # Is this gcc?