diff options
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 744 |
1 files changed, 744 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..4c01090 --- /dev/null +++ b/configure.ac @@ -0,0 +1,744 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +FULL-PACKAGE-NAME=netperf +VERSION=2.7.0 +BUG-REPORT-ADDRESS=netperf-feedback@netperf.org + +AC_PREREQ(2.59) +AC_INIT(netperf, 2.7.0) + +# Inherit compiler flags from the environment... +CFLAGS="${CFLAGS:=}" +CXXFLAGS="${CXXFLAGS:=}" + +# use the target version rather than host - one day we may want cross-compile +AC_CANONICAL_TARGET +AC_CONFIG_SRCDIR([src/hist.h]) +AM_INIT_AUTOMAKE([dist-zip]) +AM_CONFIG_HEADER(config.h) +# AC_CONFIG_HEADER(config.h) + +AC_CONFIG_LIBOBJ_DIR(src/missing) + +# make sure we build netperf_version.h +touch ${ac_top_srcdir}src/netperf_version.h.in + +# Checks for programs. +AC_PROG_CC +AC_PROG_RANLIB + +AC_C_CONST + +# Checks for libraries. +AC_HAVE_LIBRARY(m) + +# Checks for header files. +AC_HEADER_STDC +AC_HEADER_SYS_WAIT + +# lets keep this in some semblence of alphabetical order +AC_CHECK_HEADERS([arpa/inet.h endian.h errno.h fcntl.h ifaddrs.h limits.h linux/tcp.h linux/socket.h malloc.h netdb.h netinet/in.h netinet/sctp.h sched.h signal.h stdlib.h string.h strings.h syscall.h sys/ioctl.h sys/mman.h sys/param.h sys/socket.h sys/stat.h sys/time.h sys/wait.h sys/ipc.h sys/sockio.h sys/sysinfo.h sys/wait.h stdlib.h unistd.h netinet/in_systm.h netinet/ip.h]) + +# Some platforms require these. There may be a better way. +AC_HAVE_LIBRARY(socket) +if test "$ac_cv_lib_socket_main" = yes ; then + AC_HAVE_LIBRARY(nsl) + AC_HAVE_LIBRARY(sendfile) + AC_SYS_LARGEFILE +fi + +# this one is for Tru64 and bind_to_cpu_id +AC_HAVE_LIBRARY(mach) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_TYPE_OFF_T +AC_TYPE_SIZE_T +# AC_TYPE_SOCKLEN_T + +OLD_TYPE_SOCKLEN_T + +# AC_TYPE_IN_PORT_T +AC_DECL_H_ERRNO +AC_STRUCT_SOCKADDR_STORAGE +AC_HEADER_TIME +AC_HEADER_STDBOOL +AC_CHECK_SA_LEN(ac_cv_sockaddr_has_sa_len) + +# Checks for library functions. +# AC_FUNC_ERROR_AT_LINE +AC_FUNC_FORK +# AC_FUNC_MALLOC +AC_FUNC_MMAP +AC_FUNC_SELECT_ARGTYPES +AC_FUNC_SETPGRP +AC_TYPE_SIGNAL +# AC_FUNC_STAT +# remove pstat_getdynamic (at least for now) since we don't do +# anything conditional with the check anyway... +AC_CHECK_FUNCS([alarm bzero daemon gethostbyname gethrtime gettimeofday inet_ntoa memset memcpy munmap select setsid socket sqrt strcasecmp strchr strstr strtoul uname toupper]) + +#AC_CONFIG_SUBDIRS(src/missing) + +# does this platform need the replacement getaddrinfo +AC_CHECK_FUNCS([getnameinfo getaddrinfo inet_ntop getifaddrs]) +# AC_REPLACE_FUNCS([getaddrinfo]) + + +if test "$ac_cv_func_getaddrinfo$ac_cv_func_getnameinfo" != yesyes ; then + AC_MSG_NOTICE([Requesting replacement getaddrinfo/getnameinfo]) + AC_LIBOBJ(getaddrinfo) + HAVE_MISSING=yes +fi +if test "$ac_cv_func_inet_ntop" != yes ; then + AC_MSG_NOTICE([Requesting replacement inet_ntop]) + AC_LIBOBJ(inet_ntop) + HAVE_MISSING=yes +fi +AM_CONDITIONAL(NEED_LIBCOMPAT, test "$HAVE_MISSING" = "yes") + +AC_CHECK_FUNCS(sendfile) + +AC_CHECK_FUNCS(uname) + +# check for the various CPU binding calls +AC_CHECK_FUNCS(mpctl processor_bind sched_setaffinity bind_to_cpu_id bindprocessor) + +# see if we should be enabling histogram support + +AC_MSG_CHECKING(whether to include histogram support) + +AC_ARG_ENABLE(histogram, + [AS_HELP_STRING([--enable-histogram],[include individual op timing, may affect result]) ]) + +case "$enable_histogram" in + yes) + use_histogram=true + ;; + no) + use_histogram=false + ;; + '') + # whatever + use_histogram=false + ;; + *) + AC_MSG_ERROR([--enable-histogram takes yes or no]) + ;; +esac + +if $use_histogram +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_histogram +then + AC_DEFINE([WANT_HISTOGRAM],,[Define to one to enable histogram support. May affect results.]) +fi +# see if we should be enabling histogram support + +AC_MSG_CHECKING(whether to include dirty support) + +AC_ARG_ENABLE(dirty, + [AS_HELP_STRING([--enable-dirty],[write to buffers each time, may affect result]) ]) + +case "$enable_dirty" in + yes) + use_dirty=true + ;; + no) + use_dirty=false + ;; + '') + # whatever + use_dirty=false + ;; + *) + AC_MSG_ERROR([--enable-dirty takes yes or no]) + ;; +esac + +if $use_dirty +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_dirty +then + AC_DEFINE([DIRTY],,[Define to one to enable dirty buffer support. May affect results.]) +fi + +# see if we should be enabling demo support + +AC_MSG_CHECKING(whether to include demo support) + +AC_ARG_ENABLE(demo, + [AS_HELP_STRING([--enable-demo],[emit interim results during the run. May affect results.])]) + +case "$enable_demo" in + yes) + use_demo=true + ;; + no) + use_demo=false + ;; + '') + # whatever + use_demo=false + ;; + *) + AC_MSG_ERROR([--enable-demo takes yes or no]) + ;; +esac + +if $use_demo +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_demo +then + AC_DEFINE([WANT_DEMO],,[Define to one to enable demo support. May affect results.]) +fi + +# see if we should be including the AF_UNIX tests + +AC_MSG_CHECKING(whether to include Unix-domain socket tests) + +AC_ARG_ENABLE(unixdomain, + [AS_HELP_STRING([--enable-unixdomain],[include Unix Domain socket tests])]) + +case "$enable_unixdomain" in + yes) + use_unixdomain=true + ;; + no) + use_unixdomain=false + ;; + '') + use_unixdomain=false + ;; + *) + AC_MSG_ERROR([--enable-unixdomain takes yes or no]) + ;; +esac + +if $use_unixdomain +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_unixdomain +then + AC_DEFINE([WANT_UNIX],,[Define to one to include Unix Domain socket tests.]) +fi + +# see if we should be including the DLPI tests + +AC_MSG_CHECKING(whether to include DLPI tests) + +AC_ARG_ENABLE(dlpi, + [AS_HELP_STRING([--enable-dlpi],[include DLPI (link-layer) tests])]) + +case "$enable_dlpi" in + yes) + use_dlpi=true + ;; + no) + use_dlpi=false + ;; + '') + use_dlpi=false + ;; + *) + AC_MSG_ERROR([--enable-dlpi takes yes or no]) + ;; +esac + +if $use_dlpi +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_dlpi +then + AC_DEFINE([WANT_DLPI],,[Define to one to include DLPI tests.]) +fi + +# see if we should be including the DCCP tests + +AC_MSG_CHECKING(whether to include DCCP tests) + +AC_ARG_ENABLE(dccp, + [AS_HELP_STRING([--enable-dccp],[include DCCP tests])]) + +case "$enable_dccp" in + yes) + use_dccp=true + ;; + no) + use_dccp=false + ;; + '') + use_dccp=false + ;; + *) + AC_MSG_ERROR([--enable-dccp takes yes or no]) + ;; +esac + +if $use_dccp +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_dccp +then + AC_DEFINE([WANT_DCCP],,[Define to one to include DCCP tests.]) +fi + +# see if we should be including the OMNI tests + +AC_MSG_CHECKING(whether to include OMNI tests) + +AC_ARG_ENABLE(omni, + [AS_HELP_STRING([--enable-omni],[include OMNI tests])]) + +case "$enable_omni" in + yes) + use_omni=true + ;; + no) + use_omni=false + ;; + '') + use_omni=true + ;; + *) + AC_MSG_ERROR([--enable-omni takes yes or no]) + ;; +esac + +if $use_omni +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_omni +then + AC_DEFINE([WANT_OMNI],,[Define to one to include OMNI tests.]) + AC_DEFINE([WANT_MIGRATION],,[Define to one to migrate classic to OMNI tests.]) +fi + + +# see if we should be including the XTI tests + +AC_MSG_CHECKING(whether to include XTI tests) + +AC_ARG_ENABLE(xti, + [AS_HELP_STRING([--enable-xti],[include XTI socket tests])]) + +case "$enable_xti" in + yes) + use_xti=true + ;; + no) + use_xti=false + ;; + '') + use_xti=false + ;; + *) + AC_MSG_ERROR([--enable-xti takes yes or no]) + ;; +esac + +if $use_xti +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_xti +then + AC_DEFINE([WANT_XTI],,[Define to one to include XTI tests.]) +fi + +# see if we should be including the SDP tests + +AC_MSG_CHECKING(whether to include SDP tests) + +AC_ARG_ENABLE(sdp, + [AS_HELP_STRING([--enable-sdp],[include SDP socket tests])]) + +case "$enable_sdp" in + yes) + # probably need to be a bit more sophisticated here + AC_CHECK_LIB(sdp,t_open) + use_sdp=true + ;; + no) + use_sdp=false + ;; + '') + use_sdp=false + ;; + *) + AC_MSG_ERROR([--enable-sdp takes yes or no]) + ;; +esac + +if $use_sdp +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_sdp +then + AC_DEFINE([WANT_SDP],,[Define to one to include SDP tests.]) +fi + +# see if we should be including the ICSC-EXS tests + +AC_MSG_CHECKING(whether to include ICSC-EXS tests) + +AC_ARG_ENABLE(exs, + [AS_HELP_STRING([--enable-exs],[include ICSC async sockets tests])]) + +case "$enable_exs" in + yes) + use_exs=true + AC_CHECK_HEADER(sys/exs.h,,[use_exs=false]) + AC_CHECK_LIB(exs,exs_init,,[use_exs=false]) + ;; + no) + use_exs=false + ;; + '') + use_exs=false + ;; + *) + AC_MSG_ERROR([--enable-exs takes yes or no]) + ;; +esac + +if $use_exs +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_exs +then + AC_DEFINE([HAVE_ICSC_EXS],,[Define to one to include ICSC-EXS tests.]) +fi + +# see if we should be enabling SCTP support + + +AC_ARG_ENABLE(sctp, + [AS_HELP_STRING([--enable-sctp],[include tests to measure SCTP performance ])]) + +case "$enable_sctp" in + yes) + use_sctp=true + AC_CHECK_HEADERS(netinet/sctp.h,,use_sctp=false, +[[ +#include <sys/socket.h> +]]) + case "$host" in + *-*-freebsd[78].*) + # FreeBSD 7.x and later SCTP support doesn't need -lsctp. + ;; + *) + AC_HAVE_LIBRARY(sctp,,use_sctp=false) + ;; + esac + AC_CHECK_MEMBER(struct sctp_event_subscribe.sctp_adaptation_layer_event, + , , [#include <netinet/sctp.h>]) + if test "$ac_cv_member_struct_sctp_event_subscribe_sctp_adaptation_layer_event" = "yes"; then + AC_DEFINE([HAVE_SCTP_ADAPTATION_LAYER_EVENT], 1, + [Define to 1 if `struct sctp_event_subscribe' has a `sctp_adaptation_layer_event' member]) + fi + ;; + no) + use_sctp=false + ;; + '') + # whatever + use_sctp=false + ;; + *) + AC_MSG_ERROR([--enable-sctp takes yes or no]) + ;; +esac + +AC_MSG_CHECKING(whether to include SCTP tests) + +if $use_sctp +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_sctp +then + AC_DEFINE([WANT_SCTP],,[Define to one to include SCTP tests.]) +fi + +# see if we should be enabling paced sends + +AC_MSG_CHECKING([whether to include paced send (intervals) support]) + +AC_ARG_ENABLE(intervals, + [AS_HELP_STRING([--enable-intervals],[include ability to pace operations, may affect result])]) + +case "$enable_intervals" in + yes) + use_intervals=true + ;; + no) + use_intervals=false + ;; + '') + use_intervals=false + ;; + *) + AC_MSG_ERROR([--enable-intervals takes yes or no]) + ;; +esac + +if $use_intervals +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_intervals +then + AC_DEFINE([WANT_INTERVALS],,[Define to one to enable paced operation support. May affect results.]) +fi + +# see if paced sends should wait and spin + +AC_MSG_CHECKING([whether paced sends should spin]) + +AC_ARG_ENABLE(spin, + [AS_HELP_STRING([--enable-spin],[paced operations (--enable-intervals) should sit and spin - WILL affect result])]) + +case "$enable_spin" in + yes) + use_spin=true + ;; + no) + use_spin=false + ;; + '') + use_spin=false + ;; + *) + AC_MSG_ERROR([--enable-spin takes yes or no]) + ;; +esac + +if $use_spin +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_spin +then + AC_DEFINE([WANT_INTERVALS],,[Define to one to enable paced operation support. May affect results.]) + AC_DEFINE([WANT_SPIN],,[Define to one to spin waiting on paced operation. WILL AFFEFCT CPU UTILIZATION]) +fi + +# see if we should be enabling initial request bursts + +AC_MSG_CHECKING([whether to include initial burst support in _RR tests]) + +AC_ARG_ENABLE(burst, + [AS_HELP_STRING([--enable-burst],[include intial request burst ability in _RR tests, may affect result])]) + +case "$enable_burst" in + yes) + use_burst=true + ;; + no) + use_burst=false + ;; + '') + use_burst=true + ;; + *) + AC_MSG_ERROR([--enable-burst takes yes or no]) + ;; +esac + +if $use_burst +then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if $use_burst +then + AC_DEFINE([WANT_FIRST_BURST],,[Define to one to enable initial _RR burst support. May affect results.]) +fi + +# time to see about CPU utilization measurements + +AC_MSG_CHECKING([which CPU utilization measurement type to use]) + +AC_ARG_ENABLE(cpuutil, + [AS_HELP_STRING([--enable-cpuutil],[include code to measure CPU utilization using specified mechanism])]) + +NETCPU_SOURCE="$enable_cpuutil" +case "$enable_cpuutil" in + pstat) + use_cpuutil=true + AC_DEFINE([USE_PSTAT],,[Use HP-UX's pstat interface to measure CPU util.]) + ;; + pstatnew) + use_cpuutil=true + AC_DEFINE([USE_PSTAT],,[Use HP-UX's pstat interface to measure CPU util.]) + ;; + perfstat) + use_cpuutil=true + AC_DEFINE([USE_PERFSTAT],,[Use AIX's perfstat interface to measure CPU util.]) + AC_HAVE_LIBRARY(perfstat) + ;; + + looper) + use_cpuutil=true + AC_DEFINE([USE_LOOPER],,[Use looper/soaker processes to measure CPU util.]) + ;; + procstat) + use_cpuutil=true + AC_DEFINE([USE_PROC_STAT],,[Use Linux's procstat interface to measure CPU util.]) + ;; + kstat) + use_cpuutil=true + AC_DEFINE([USE_KSTAT],,[Use Solaris's kstat interface to measure CPU util.]) + AC_HAVE_LIBRARY(kstat) + ;; + kstat10) + use_cpuutil=true + AC_DEFINE([USE_KSTAT],,[Use Solaris's kstat interface to measure CPU util.]) + AC_HAVE_LIBRARY(kstat) + ;; + osx) + use_cpuutil=true + AC_DEFINE([USE_OSX],,[Use MacOS X's host_info interface to measure CPU util.]) + ;; + '') +# ia64-hp-hpux11.23 +# i386-pc-solaris2.10 +# guess it automagically in a nice big case statement + case $target in + *-*-linux*) + use_cpuutil=true + AC_DEFINE([USE_PROC_STAT],,[Use Linux's procstat interface to measure CPU util.]) + enable_cpuutil="procstat - auto" + NETCPU_SOURCE="procstat" + ;; + *-*-hpux11.23 | *-*-hpux11.31) + use_cpuutil=true + AC_DEFINE([USE_PSTAT],,[Use HP-UX's pstat interface to measure CPU util.]) + enable_cpuutil="pstatnew - auto" + NETCPU_SOURCE="pstatnew" + ;; + *-*-hpux11* | *-*-hpux10*) + use_cpuutil=true + AC_DEFINE([USE_PSTAT],,[Use HP-UX's pstat interface to measure CPU util.]) + enable_cpuutil="pstat - auto" + NETCPU_SOURCE="pstat" + ;; + *-*-aix5.* | *-*-aix6.*) + use_puutil=true + AC_DEFINE([USE_PERFSTAT],,[Use AIX's perfstat interface to measure CPU util.]) + AC_HAVE_LIBRARY(perfstat) + enable_cpuutil="perfstat - auto" + NETCPU_SOURCE="perfstat" + ;; + *-*-solaris2.1*) + use_cpuutil=true + AC_DEFINE([USE_KSTAT],,[Use Solaris's kstat interface to measure CPU util.]) + AC_HAVE_LIBRARY(kstat) + enable_cpuutil="kstat10 - auto" + NETCPU_SOURCE="kstat10" + ;; + *-*-solaris2.*) + use_cpuutil=true + AC_DEFINE([USE_KSTAT],,[Use Solaris's kstat interface to measure CPU util.]) + AC_HAVE_LIBRARY(kstat) + enable_cpuutil="kstat - auto" + NETCPU_SOURCE="kstat" + ;; + *-*-freebsd[[4-8]].* | *-*-netbsd[[1-9]].* ) + use_cpuutil=true + AC_DEFINE([USE_SYSCTL],,[Use MumbleBSD's sysctl interface to measure CPU util.]) + enable_cpuutil="sysctl - auto" + NETCPU_SOURCE="sysctl" + ;; + *-*-darwin*) + use_cpuutil=true + AC_DEFINE([USE_OSX],,[Use MacOS X's host_info interface to measure CPU util.]) + enable_cpuutil="osx - auto" + NETCPU_SOURCE="osx" + ;; + *) + use_cpuutil=false + NETCPU_SOURCE="none" + enable_cpuutil="none. Consider teaching configure about your platform." + ;; + esac + ;; + none) + use_cpuutil=false + ;; + *) + AC_MSG_ERROR([--enable-cpuutil takes kstat, kstat10, looper, osx, perfstat, procstat, pstat, pstatnew, sysctl or none]) + ;; +esac + + AC_MSG_RESULT("$enable_cpuutil") + +AC_SUBST(NETCPU_SOURCE) + + +# now spit it all out +AC_CONFIG_FILES([Makefile + src/netperf_version.h + src/Makefile + src/missing/Makefile + src/missing/m4/Makefile + doc/Makefile + doc/examples/Makefile + netperf.spec]) + +AC_OUTPUT |