version 1.1.1.2, 2021/03/17 00:36:45
|
version 1.1.1.3, 2023/09/27 11:14:54
|
Line 1
|
Line 1
|
# iperf, Copyright (c) 2014-2020, The Regents of the University of | # iperf, Copyright (c) 2014-2022, The Regents of the University of |
# California, through Lawrence Berkeley National Laboratory (subject |
# California, through Lawrence Berkeley National Laboratory (subject |
# to receipt of any required approvals from the U.S. Dept. of |
# to receipt of any required approvals from the U.S. Dept. of |
# Energy). All rights reserved. |
# Energy). All rights reserved. |
Line 24
|
Line 24
|
# file for complete information. |
# file for complete information. |
|
|
# Initialize the autoconf system for the specified tool, version and mailing list |
# Initialize the autoconf system for the specified tool, version and mailing list |
AC_INIT(iperf, 3.9, https://github.com/esnet/iperf, iperf, https://software.es.net/iperf/) | AC_PREREQ([2.71]) |
| AC_INIT([iperf],[3.15],[https://github.com/esnet/iperf],[iperf],[https://software.es.net/iperf/]) |
m4_include([config/ax_check_openssl.m4]) |
m4_include([config/ax_check_openssl.m4]) |
m4_include([config/iperf_config_static_bin.m4]) |
m4_include([config/iperf_config_static_bin.m4]) |
AC_LANG(C) |
AC_LANG(C) |
Line 40 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
Line 41 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
LT_INIT |
LT_INIT |
|
|
AM_MAINTAINER_MODE |
AM_MAINTAINER_MODE |
AM_CONFIG_HEADER(src/iperf_config.h) | AC_CONFIG_HEADERS(src/iperf_config.h) |
|
|
AC_CANONICAL_HOST |
AC_CANONICAL_HOST |
|
|
Line 49 AC_CANONICAL_HOST
|
Line 50 AC_CANONICAL_HOST
|
AC_PROG_CC |
AC_PROG_CC |
AC_PROG_RANLIB |
AC_PROG_RANLIB |
AC_PROG_LN_S |
AC_PROG_LN_S |
AC_PROG_LIBTOOL | LT_INIT |
|
|
# Add -Wall if we are using GCC. |
# Add -Wall if we are using GCC. |
if test "x$GCC" = "xyes"; then |
if test "x$GCC" = "xyes"; then |
Line 61 AC_ARG_ENABLE([profiling],
|
Line 62 AC_ARG_ENABLE([profiling],
|
AS_HELP_STRING([--enable-profiling], [Enable iperf3 profiling binary])) |
AS_HELP_STRING([--enable-profiling], [Enable iperf3 profiling binary])) |
AM_CONDITIONAL([ENABLE_PROFILING], [test x$enable_profiling = xyes]) |
AM_CONDITIONAL([ENABLE_PROFILING], [test x$enable_profiling = xyes]) |
|
|
# Checks for header files. |
|
AC_HEADER_STDC |
|
|
|
# Check for systems which need -lsocket and -lnsl |
|
#AX_LIB_SOCKET_NSL |
|
|
|
# Check for the math library (needed by cjson on some platforms) |
# Check for the math library (needed by cjson on some platforms) |
AC_SEARCH_LIBS(floor, [m], [], [ |
AC_SEARCH_LIBS(floor, [m], [], [ |
echo "floor()" |
echo "floor()" |
Line 113 AC_ARG_WITH([sctp],
|
Line 108 AC_ARG_WITH([sctp],
|
] |
] |
) |
) |
|
|
|
AC_CHECK_HEADERS([linux/tcp.h]) |
|
|
# Check for SCTP support |
# Check for SCTP support |
if $try_sctp; then |
if $try_sctp; then |
AC_CHECK_HEADERS([sys/socket.h]) |
AC_CHECK_HEADERS([sys/socket.h]) |
Line 163 fi
|
Line 160 fi
|
# Check for TCP_CONGESTION sockopt (believed to be Linux and FreeBSD only) |
# Check for TCP_CONGESTION sockopt (believed to be Linux and FreeBSD only) |
AC_CACHE_CHECK([TCP_CONGESTION socket option], |
AC_CACHE_CHECK([TCP_CONGESTION socket option], |
[iperf3_cv_header_tcp_congestion], |
[iperf3_cv_header_tcp_congestion], |
AC_EGREP_CPP(yes, | AC_COMPILE_IFELSE( |
[#include <netinet/tcp.h> | [AC_LANG_PROGRAM([[#include <netinet/tcp.h>]], |
#ifdef TCP_CONGESTION | [[int foo = TCP_CONGESTION;]])], |
yes | iperf3_cv_header_tcp_congestion=yes, |
#endif | iperf3_cv_header_tcp_congestion=no)) |
],iperf3_cv_header_tcp_congestion=yes,iperf3_cv_header_tcp_congestion=no)) | |
if test "x$iperf3_cv_header_tcp_congestion" = "xyes"; then |
if test "x$iperf3_cv_header_tcp_congestion" = "xyes"; then |
AC_DEFINE([HAVE_TCP_CONGESTION], [1], [Have TCP_CONGESTION sockopt.]) |
AC_DEFINE([HAVE_TCP_CONGESTION], [1], [Have TCP_CONGESTION sockopt.]) |
fi |
fi |
|
|
|
# Check for TCP_USER_TIMEOUT sockopt (believed to be Linux 2.6.37+ only) |
|
AC_CACHE_CHECK([TCP_USER_TIMEOUT socket option], |
|
[iperf3_cv_header_tcp_user_timeout], |
|
AC_COMPILE_IFELSE( |
|
[AC_LANG_PROGRAM([[#include <netinet/tcp.h>]], |
|
[[int foo = TCP_USER_TIMEOUT;]])], |
|
iperf3_cv_header_tcp_user_timeout=yes, |
|
iperf3_cv_header_tcp_user_timeout=no)) |
|
if test "x$iperf3_cv_header_tcp_user_timeout" = "xyes"; then |
|
AC_DEFINE([HAVE_TCP_USER_TIMEOUT], [1], [Have TCP_USER_TIMEOUT sockopt.]) |
|
fi |
|
|
# Check for IPv6 flowlabel support (believed to be Linux only) |
# Check for IPv6 flowlabel support (believed to be Linux only) |
# We check for IPV6_FLOWLABEL_MGR in <linux/in6.h> even though we |
# We check for IPV6_FLOWLABEL_MGR in <linux/in6.h> even though we |
# don't use that file directly (we have our own stripped-down |
# don't use that file directly (we have our own stripped-down |
# copy, see src/flowlabel.h for more details). |
# copy, see src/flowlabel.h for more details). |
AC_CACHE_CHECK([IPv6 flowlabel support], |
AC_CACHE_CHECK([IPv6 flowlabel support], |
[iperf3_cv_header_flowlabel], |
[iperf3_cv_header_flowlabel], |
AC_EGREP_CPP(yes, | AC_COMPILE_IFELSE( |
[#include <sys/types.h> | [AC_LANG_PROGRAM([[#include <sys/types.h> |
#include <linux/in6.h> | #include <linux/in6.h>]], |
#ifdef IPV6_FLOWLABEL_MGR | [[int foo = IPV6_FLOWLABEL_MGR;]])], |
yes | iperf3_cv_header_flowlabel=yes, |
#endif | iperf3_cv_header_flowlabel=no)) |
],iperf3_cv_header_flowlabel=yes,iperf3_cv_header_flowlabel=no)) | |
if test "x$iperf3_cv_header_flowlabel" = "xyes"; then |
if test "x$iperf3_cv_header_flowlabel" = "xyes"; then |
AC_DEFINE([HAVE_FLOWLABEL], [1], [Have IPv6 flowlabel support.]) |
AC_DEFINE([HAVE_FLOWLABEL], [1], [Have IPv6 flowlabel support.]) |
fi |
fi |
Line 214 AC_CHECK_FUNCS([getline])
|
Line 221 AC_CHECK_FUNCS([getline])
|
# Check for packet pacing socket option (Linux only for now). |
# Check for packet pacing socket option (Linux only for now). |
AC_CACHE_CHECK([SO_MAX_PACING_RATE socket option], |
AC_CACHE_CHECK([SO_MAX_PACING_RATE socket option], |
[iperf3_cv_header_so_max_pacing_rate], |
[iperf3_cv_header_so_max_pacing_rate], |
AC_EGREP_CPP(yes, | AC_COMPILE_IFELSE( |
[#include <sys/socket.h> | [AC_LANG_PROGRAM([[#include <sys/socket.h>]], |
#ifdef SO_MAX_PACING_RATE | [[int foo = SO_MAX_PACING_RATE;]])], |
yes | iperf3_cv_header_so_max_pacing_rate=yes, |
#endif | iperf3_cv_header_so_max_pacing_rate=no)) |
],iperf3_cv_header_so_max_pacing_rate=yes,iperf3_cv_header_so_max_pacing_rate=no)) | |
if test "x$iperf3_cv_header_so_max_pacing_rate" = "xyes"; then |
if test "x$iperf3_cv_header_so_max_pacing_rate" = "xyes"; then |
AC_DEFINE([HAVE_SO_MAX_PACING_RATE], [1], [Have SO_MAX_PACING_RATE sockopt.]) |
AC_DEFINE([HAVE_SO_MAX_PACING_RATE], [1], [Have SO_MAX_PACING_RATE sockopt.]) |
fi |
fi |
|
|
|
# Check for SO_BINDTODEVICE sockopt (believed to be Linux only) |
|
AC_CACHE_CHECK([SO_BINDTODEVICE socket option], |
|
[iperf3_cv_header_so_bindtodevice], |
|
AC_COMPILE_IFELSE( |
|
[AC_LANG_PROGRAM([[#include <sys/socket.h>]], |
|
[[int foo = SO_BINDTODEVICE;]])], |
|
iperf3_cv_header_so_bindtodevice=yes, |
|
iperf3_cv_header_so_bindtodevice=no)) |
|
if test "x$iperf3_cv_header_so_bindtodevice" = "xyes"; then |
|
AC_DEFINE([HAVE_SO_BINDTODEVICE], [1], [Have SO_BINDTODEVICE sockopt.]) |
|
fi |
|
|
|
# Check for IP_MTU_DISCOVER (mostly on Linux) |
|
AC_CACHE_CHECK([IP_MTU_DISCOVER socket option], |
|
[iperf3_cv_header_ip_mtu_discover], |
|
AC_COMPILE_IFELSE( |
|
[AC_LANG_PROGRAM([[#include <sys/types.h> |
|
#include <sys/socket.h> |
|
#include <netinet/in.h>]], |
|
[[int foo = IP_MTU_DISCOVER;]])], |
|
iperf3_cv_header_ip_mtu_discover=yes, |
|
iperf3_cv_header_ip_mtu_discover=no)) |
|
if test "x$iperf3_cv_header_ip_mtu_discover" = "xyes"; then |
|
AC_DEFINE([HAVE_IP_MTU_DISCOVER], [1], [Have IP_MTU_DISCOVER sockopt.]) |
|
fi |
|
|
|
# Check for IP_DONTFRAG (BSD?) |
|
AC_CACHE_CHECK([IP_DONTFRAG socket option], |
|
[iperf3_cv_header_ip_dontfrag], |
|
AC_COMPILE_IFELSE( |
|
[AC_LANG_PROGRAM([[#include <sys/types.h> |
|
#include <sys/socket.h> |
|
#include <netinet/in.h>]], |
|
[[int foo = IP_DONTFRAG;]])], |
|
iperf3_cv_header_ip_dontfrag=yes, |
|
iperf3_cv_header_ip_dontfrag=no)) |
|
if test "x$iperf3_cv_header_ip_dontfrag" = "xyes"; then |
|
AC_DEFINE([HAVE_IP_DONTFRAG], [1], [Have IP_DONTFRAG sockopt.]) |
|
fi |
|
|
|
# Check for IP_DONTFRAGMENT (Windows?) |
|
AC_CACHE_CHECK([IP_DONTFRAGMENT socket option], |
|
[iperf3_cv_header_ip_dontfragment], |
|
AC_COMPILE_IFELSE( |
|
[AC_LANG_PROGRAM([[#include <sys/types.h> |
|
#include <sys/socket.h> |
|
#include <netinet/in.h>]], |
|
[[int foo = IP_DONTFRAGMENT;]])], |
|
iperf3_cv_header_ip_dontfragment=yes, |
|
iperf3_cv_header_ip_dontfragment=no)) |
|
if test "x$iperf3_cv_header_ip_dontfragment" = "xyes"; then |
|
AC_DEFINE([HAVE_IP_DONTFRAGMENT], [1], [Have IP_DONTFRAGMENT sockopt.]) |
|
fi |
|
|
|
# Check for IP DF support |
|
AC_CACHE_CHECK([any kind of DF socket option], |
|
[iperf3_cv_header_dontfragment], |
|
[if test "x$iperf3_cv_header_ip_mtu_discover" = "xyes" -o "x$iperf3_cv_header_ip_dontfrag" = "xyes" -o "x$iperf3_cv_header_ip_dontfragment" = "xyes"; then |
|
iperf3_cv_header_dontfragment=yes |
|
else |
|
iperf3_cv_header_dontfragment=no |
|
fi]) |
|
|
|
if test "x$iperf3_cv_header_dontfragment" = "xyes"; then |
|
AC_DEFINE([HAVE_DONT_FRAGMENT], [1], [Have IP_MTU_DISCOVER/IP_DONTFRAG/IP_DONTFRAGMENT sockopt.]) |
|
fi |
|
|
|
# |
|
# Check for tcpi_snd_wnd in struct tcp_info |
|
# |
|
AC_CHECK_MEMBER([struct tcp_info.tcpi_snd_wnd], |
|
[iperf3_cv_header_tcp_info_snd_wnd=yes], [iperf3_cv_header_tcp_info_snd_wnd=no], |
|
[#ifdef HAVE_LINUX_TCP_H |
|
#include <linux/tcp.h> |
|
#else |
|
#include <sys/types.h> |
|
#include <netinet/tcp.h> |
|
#endif |
|
]) |
|
|
|
if test "x$iperf3_cv_header_tcp_info_snd_wnd" = "xyes"; then |
|
AC_DEFINE([HAVE_TCP_INFO_SND_WND], [1], [Have tcpi_snd_wnd field in tcp_info.]) |
|
fi |
|
|
# Check if we need -lrt for clock_gettime |
# Check if we need -lrt for clock_gettime |
AC_SEARCH_LIBS(clock_gettime, [rt posix4]) |
AC_SEARCH_LIBS(clock_gettime, [rt posix4]) |
# Check for clock_gettime support |
# Check for clock_gettime support |
AC_CHECK_FUNCS([clock_gettime]) |
AC_CHECK_FUNCS([clock_gettime]) |
|
|
AC_OUTPUT([Makefile src/Makefile src/version.h examples/Makefile iperf3.spec]) | AC_CONFIG_FILES([Makefile src/Makefile src/version.h examples/Makefile iperf3.spec]) |
| AC_OUTPUT |