55 lines
2.3 KiB
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/)
|
|
|