# -*- 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 ]]) 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 ]) 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