Files
c_cpp_boilerplate/cmake/FetchIperf3.cmake

55 lines
2.3 KiB
CMake

include(ExternalProject)
include(FetchContent)
find_program(MAKE NAMES make gmake nmake REQUIRED)
find_program(AUTORECONF NAMES autoreconf REQUIRED)
find_program(GIT NAMES git REQUIRED)
find_program(SH NAMES sh REQUIRED)
if(CMAKE_CROSSCOMPILING)
set(SYSROOT_FLAG --sysroot=${CMAKE_SYSROOT})
else()
set(SYSROOT_FLAG "")
endif()
set(ENV{CC} "${CMAKE_C_COMPILER}")
set(ENV{CXX} "${CMAKE_CXX_COMPILER}")
set(ENV{LD} "${CMAKE_LINKER}")
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
set(ENV{CFLAGS} -g3)
endif()
ExternalProject_Add(
iperf3
GIT_REPOSITORY https://github.com/esnet/iperf.git
GIT_TAG 3.18
GIT_SHALLOW TRUE
PREFIX ${FETCHCONTENT_BASE_DIR}
SOURCE_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-src
BINARY_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-build
STAMP_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-subbuild/stamps
LOG_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-subbuild/logs
TMP_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-subbuild/tmp
CONFIGURE_COMMAND cd ${FETCHCONTENT_BASE_DIR}/iperf3-src && ./configure ${SYSROOT_FLAG}
--prefix=${FETCHCONTENT_BASE_DIR}/iperf3-build --with-openssl=${OPENSSL_ROOT_DIR}
BUILD_COMMAND ${MAKE} -C ${FETCHCONTENT_BASE_DIR}/iperf3-src
INSTALL_COMMAND ${MAKE} -C ${FETCHCONTENT_BASE_DIR}/iperf3-src install
UPDATE_COMMAND ""
PATCH_COMMAND ${SH} -c "cd ${FETCHCONTENT_BASE_DIR}/iperf3-src && ${GIT} apply --ignore-whitespace --verbose --reject ${PROJECT_SOURCE_DIR}/patches/*.patch")
add_dependencies(iperf3 OpenSSL::SSL OpenSSL::Crypto)
add_library(libiperf_static STATIC IMPORTED)
set_target_properties(libiperf_static PROPERTIES IMPORTED_LOCATION ${FETCHCONTENT_BASE_DIR}/iperf3-build/lib/libiperf.a
INTERFACE_INCLUDE_DIRECTORIES ${FETCHCONTENT_BASE_DIR}/iperf3-build/include/)
add_library(libiperf_shared SHARED IMPORTED)
set_target_properties(libiperf_shared PROPERTIES IMPORTED_LOCATION ${FETCHCONTENT_BASE_DIR}/iperf3-build/lib/libiperf.so
INTERFACE_INCLUDE_DIRECTORIES ${FETCHCONTENT_BASE_DIR}/iperf3-build/include/)
add_dependencies(libiperf_static iperf3)
add_dependencies(libiperf_shared iperf3)
file(MAKE_DIRECTORY ${FETCHCONTENT_BASE_DIR}/iperf3-build/include/ ${FETCHCONTENT_BASE_DIR}/iperf3-build/lib/)