Makefile.static-build 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. LIBSSH=libssh-0.7.2
  2. LIBSSH_URL=https://red.libssh.org/attachments/download/177/$(LIBSSH).tar.xz
  3. LIBSSH_LIB=ext/lib/libssh.a
  4. MSGPACK=msgpack-1.3.0
  5. MSGPACK_URL=https://github.com/msgpack/msgpack-c/releases/download/cpp-1.3.0/$(MSGPACK).tar.gz
  6. MSGPACK_LIB=ext/lib/libmsgpack.a
  7. TMATE_CONFIGURE=PKG_CONFIG_PATH=./ext/lib/pkgconfig
  8. LIBC=$(shell gcc -print-file-name=libc.a)
  9. STATIC_LIBC_OBJECTS=fdelt_chk
  10. STATIC_COMPAT_OBJECTS=memcpy clock_gettime
  11. all: tmate
  12. dependencies:
  13. apt-get install build-essential cmake libssl-dev autoconf automake pkg-config libtool libevent-dev libncurses-dev zlib1g-dev
  14. downloads/$(notdir $(LIBSSH_URL)):
  15. mkdir -p downloads
  16. wget -O $@ $(LIBSSH_URL)
  17. $(LIBSSH)/.ready: downloads/$(notdir $(LIBSSH_URL))
  18. tar xf $<
  19. touch $@
  20. downloads/$(notdir $(MSGPACK_URL)):
  21. mkdir -p downloads
  22. wget -O $@ $(MSGPACK_URL)
  23. $(MSGPACK)/.ready: downloads/$(notdir $(MSGPACK_URL))
  24. tar xf $<
  25. touch $@
  26. $(LIBSSH_LIB): $(LIBSSH)/.ready
  27. mkdir -p $(LIBSSH)/build
  28. 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)
  29. +make -C $(LIBSSH)/build install
  30. $(MSGPACK_LIB): $(MSGPACK)/.ready
  31. mkdir -p $(MSGPACK)/build
  32. cd $(MSGPACK)/build; ([ -f Makefile ] || cmake -DCMAKE_INSTALL_PREFIX:PATH=$(shell pwd)/ext ..)
  33. +make -C $(MSGPACK)/build install
  34. libc/%.o:
  35. mkdir -p libc
  36. cd libc; ar x $(LIBC) $(notdir $@)
  37. compat/%.o: compat/%.c
  38. gcc -c -o $@ $<
  39. tmate: $(MSGPACK_LIB) $(LIBSSH_LIB) $(patsubst %,libc/%.o,$(STATIC_LIBC_OBJECTS)) $(patsubst %,compat/%.o,$(STATIC_COMPAT_OBJECTS))
  40. ./autogen.sh
  41. $(TMATE_CONFIGURE) ./configure --enable-static
  42. +make
  43. strip tmate
  44. clean:
  45. rm -rf ext libc $(LIBSSH) $(MSGPACK)
  46. +make clean