cmake_minimum_required(VERSION 3.4.1) include(ExternalProject) set(CC_OPTIMISATION_FLAGS "-ffunction-sections -fdata-sections") set(LD_OPTIMISATION_FLAGS "-Wl,--gc-sections") set(xCONFIG "CC=${CMAKE_C_COMPILER} \ ${CMAKE_C_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN}${CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN} \ ${CMAKE_C_COMPILE_OPTIONS_TARGET}${CMAKE_C_COMPILER_TARGET} \ ${CMAKE_C_COMPILE_OPTIONS_SYSROOT}${CMAKE_SYSROOT}" "LD=${CMAKE_LINKER}" "AR=${CMAKE_AR}" "RANLIB=${CMAKE_RANLIB}" "CFLAGS=${CMAKE_C_FLAGS} ${CC_OPTIMISATION_FLAGS}" "LDFLAGS=${CMAKE_SHARED_LINKER_FLAGS} ${LD_OPTIMISATION_FLAGS}" "--host=${CMAKE_C_COMPILER_TARGET}" ) ExternalProject_Add(lzo URL http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz URL_HASH SHA1=4924676a9bae5db58ef129dc1cebce3baa3c4b5d CONFIGURE_COMMAND /configure ${xCONFIG} --disable-shared BUILD_COMMAND make -j8 INSTALL_COMMAND make install DESTDIR=${CMAKE_CURRENT_BINARY_DIR} && rm -r ) ExternalProject_Add(libressl URL https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.7.4.tar.gz URL_HASH SHA256=1e3a9fada06c1c060011470ad0ff960de28f9a0515277d7336f7e09362517da6 CONFIGURE_COMMAND /configure ${xCONFIG} --disable-shared BUILD_COMMAND make -j8 -C crypto INSTALL_COMMAND make -C crypto install DESTDIR=${CMAKE_CURRENT_BINARY_DIR} && make -C include install DESTDIR=${CMAKE_CURRENT_BINARY_DIR} && rm -r ) ExternalProject_Add(tinc DEPENDS lzo libressl URL https://tinc-vpn.org/packages/tinc-1.1pre16.tar.gz URL_HASH SHA256=9934c53f8b22bbcbfa0faae0cb7ea13875fe1990cce75af728a7f4ced2c0230b CONFIGURE_COMMAND autoreconf -fsi && /configure ${xCONFIG} --with-openssl=${CMAKE_CURRENT_BINARY_DIR}/usr/local --with-lzo=${CMAKE_CURRENT_BINARY_DIR}/usr/local --disable-curses --disable-readline BUILD_COMMAND make -j8 -C src INSTALL_COMMAND make -C src install DESTDIR=${CMAKE_CURRENT_BINARY_DIR} && ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/usr/local/sbin/tinc ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libtinc.so && ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/usr/local/sbin/tincd ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libtincd.so && rm -r ) add_library(exec SHARED src/main/c/exec.c) add_dependencies(exec tinc)