Blame configure.ac

Packit Service ed0f68
dnl
Packit Service ed0f68
dnl autoconf for ipmitool
Packit Service ed0f68
dnl
Packit Service ed0f68
AC_INIT([ipmitool], [1.8.18])
Packit Service ed0f68
AC_CONFIG_SRCDIR([src/ipmitool.c])
Packit Service ed0f68
AC_CANONICAL_SYSTEM
Packit Service ed0f68
AM_INIT_AUTOMAKE
Packit Service ed0f68
AM_CONFIG_HEADER(config.h)
Packit Service ed0f68
AC_PREREQ(2.50)
Packit Service ed0f68
AC_SUBST(ac_configure_args)
Packit Service ed0f68
Packit Service ed0f68
dnl check for requirements
Packit Service ed0f68
AC_PROG_CC
Packit Service ed0f68
AC_PROG_INSTALL
Packit Service ed0f68
AC_PROG_LN_S
Packit Service ed0f68
AC_PROG_MAKE_SET
Packit Service ed0f68
AC_CHECK_PROG([RPMBUILD], [rpmbuild], [rpmbuild], [rpm])
Packit Service ed0f68
AC_CHECK_PROG([SED], [sed], [sed])
Packit Service ed0f68
Packit Service ed0f68
AC_HEADER_STDC
Packit Service ed0f68
AC_CHECK_HEADERS([stdlib.h string.h sys/ioctl.h sys/stat.h unistd.h paths.h])
Packit Service ed0f68
AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h sys/socket.h])
Packit Service ed0f68
AC_CHECK_HEADERS([sys/byteorder.h byteswap.h])
Packit Service ed0f68
Packit Service ed0f68
AC_C_CONST
Packit Service ed0f68
AC_C_INLINE
Packit Service ed0f68
AC_C_BIGENDIAN
Packit Service ed0f68
Packit Service ed0f68
AC_FUNC_SELECT_ARGTYPES
Packit Service ed0f68
AC_FUNC_STRTOD
Packit Service ed0f68
AC_CHECK_FUNCS([alarm gethostbyname getaddrinfo getifaddrs socket select])
Packit Service ed0f68
AC_CHECK_FUNCS([memmove memset strchr strdup strerror])
Packit Service ed0f68
AC_CHECK_FUNCS([getpassphrase])
Packit Service ed0f68
Packit Service ed0f68
CFLAGS="$CFLAGS -Wall -Wextra -std=gnu99 -pedantic -Wformat -Wformat-nonliteral"
Packit Service ed0f68
Packit Service ed0f68
AM_PROG_LIBTOOL
Packit Service ed0f68
LIBTOOL="$LIBTOOL --silent"
Packit Service ed0f68
Packit Service ed0f68
AC_SEARCH_LIBS([gethostbyname], [nsl])
Packit Service ed0f68
AC_SEARCH_LIBS([getaddrinfo], [nsl])
Packit Service ed0f68
AC_SEARCH_LIBS([getifaddrs], [nsl])
Packit Service ed0f68
AC_SEARCH_LIBS([socket], [socket], [],
Packit Service ed0f68
	[AC_CHECK_LIB([nsl], [socket],
Packit Service ed0f68
		[LIBS="$LIBS -lsocket -lnsl"], [], [-lsocket])])
Packit Service ed0f68
Packit Service ed0f68
if test "x$prefix" = "xNONE"; then
Packit Service ed0f68
	prefix="$ac_default_prefix"
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
if test "x$exec_prefix" = "xNONE"; then
Packit Service ed0f68
	exec_prefix="$prefix"
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl
Packit Service ed0f68
dnl set default option values
Packit Service ed0f68
dnl
Packit Service ed0f68
Packit Service ed0f68
xenable_all_options=yes
Packit Service ed0f68
xenable_intf_bmc=no
Packit Service ed0f68
xenable_intf_dummy=no
Packit Service ed0f68
xenable_intf_imb=yes
Packit Service ed0f68
xenable_intf_lipmi=yes
Packit Service ed0f68
xenable_intf_open=yes
Packit Service ed0f68
#xenable_intf_serial=yes
Packit Service ed0f68
xenable_intf_usb=no
Packit Service ed0f68
xenable_ipmishell=yes
Packit Service ed0f68
Packit Service ed0f68
dnl set some things so we build with GNU tools on Solaris
Packit Service ed0f68
case "$host_os" in
Packit Service ed0f68
solaris*)
Packit Service ed0f68
	MAKE=gmake
Packit Service ed0f68
	STRIP=gstrip
Packit Service ed0f68
	LD=gld
Packit Service ed0f68
	AR=gar
Packit Service ed0f68
	# openssl libs are in /usr/sfw/lib on solaris 10
Packit Service ed0f68
	LIBS="$LIBS -R/usr/sfw/lib"
Packit Service ed0f68
	# disable the linux-specific interfaces
Packit Service ed0f68
	xenable_intf_bmc=yes
Packit Service ed0f68
	xenable_intf_imb=no
Packit Service ed0f68
	xenable_intf_open=no
Packit Service ed0f68
	xenable_intf_lipmi=no
Packit Service ed0f68
	xenable_ipmishell=no
Packit Service ed0f68
	xenable_all_options=no
Packit Service ed0f68
	;;
Packit Service ed0f68
*cygwin*)
Packit Service ed0f68
	# disable the linux and solaris-specific interfaces
Packit Service ed0f68
	xenable_intf_imb=no
Packit Service ed0f68
	xenable_intf_open=no
Packit Service ed0f68
	xenable_intf_lipmi=no
Packit Service ed0f68
	;;
Packit Service ed0f68
*darwin*|aix*)
Packit Service ed0f68
	# disable the linux and solaris-specific interfaces
Packit Service ed0f68
	xenable_intf_imb=no
Packit Service ed0f68
	xenable_intf_open=no
Packit Service ed0f68
	xenable_intf_lipmi=no
Packit Service ed0f68
	xenable_ipmishell=no
Packit Service ed0f68
	;;
Packit Service ed0f68
*freebsd*)
Packit Service ed0f68
	xenable_intf_imb=no
Packit Service ed0f68
	xenable_intf_lipmi=no
Packit Service ed0f68
	CFLAGS="$CFLAGS -D__BSD_VISIBLE"
Packit Service ed0f68
	;;
Packit Service ed0f68
*netbsd*)
Packit Service ed0f68
	xenable_intf_imb=no
Packit Service ed0f68
	xenable_intf_lipmi=no
Packit Service ed0f68
	xenable_intf_open=no
Packit Service ed0f68
	;;
Packit Service ed0f68
gnu*)
Packit Service ed0f68
	# disable the linux and solaris-specific interfaces on Hurd
Packit Service ed0f68
	xenable_intf_imb=no
Packit Service ed0f68
	xenable_intf_open=no
Packit Service ed0f68
	xenable_intf_usb=yes
Packit Service ed0f68
	;;
Packit Service ed0f68
esac
Packit Service ed0f68
Packit Service ed0f68
AC_SUBST(ARCH, $host_cpu)
Packit Service ed0f68
AC_SUBST(OS, $host_os)
Packit Service ed0f68
AC_SUBST(PSTAMP, $host)
Packit Service ed0f68
AC_SUBST(BASEDIR, $prefix)
Packit Service ed0f68
Packit Service ed0f68
dnl allow solaris builds to include all options
Packit Service ed0f68
AC_ARG_ENABLE([solaris-opt],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-solaris-opt],
Packit Service ed0f68
			[enable all options for Solaris [default=no]])],
Packit Service ed0f68
	[xenable_solaris_opt=$enableval],
Packit Service ed0f68
	[xenable_solaris_opt=no])
Packit Service ed0f68
if test "x$xenable_all_options" = "xyes" || test "x$xenable_solaris_opt" = "xyes"; then
Packit Service ed0f68
	AC_DEFINE(ENABLE_ALL_OPTIONS, [1], [Define to 1 to enable all command line options.])
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl Determine anonymous union/structure support in GCC
Packit Service ed0f68
AC_TRY_COMPILE([
Packit Service ed0f68
#include <stdio.h>
Packit Service ed0f68
	], [
Packit Service ed0f68
	struct test {
Packit Service ed0f68
		union {
Packit Service ed0f68
			int a;
Packit Service ed0f68
			unsigned int b;
Packit Service ed0f68
		};
Packit Service ed0f68
	} test;
Packit Service ed0f68
Packit Service ed0f68
	printf("a is %d", test.a);
Packit Service ed0f68
        ], ac_need_fms_extension=no, ac_need_fms_extension=yes)
Packit Service ed0f68
if test "x$ac_need_fms_extension" = "xyes"; then
Packit Service ed0f68
       CFLAGS="$CFLAGS -fms-extensions"
Packit Service ed0f68
       AC_SUBST(CFLAGS)
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl check for OpenSSL functionality
Packit Service ed0f68
AC_ARG_ENABLE([internal-md5],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-internal-md5],
Packit Service ed0f68
			[enable internal MD5 library [default=no]])],
Packit Service ed0f68
	[xenable_internal_md5=$enableval],
Packit Service ed0f68
	[xenable_internal_md5=no])
Packit Service ed0f68
Packit Service ed0f68
AC_CHECK_LIB([crypto], [EVP_aes_128_cbc],
Packit Service ed0f68
	[if test "x$xenable_internal_md5" != "xyes"; then
Packit Service ed0f68
	    have_crypto=yes; LIBS="$LIBS -lcrypto"
Packit Service ed0f68
	fi],
Packit Service ed0f68
	[have_crypto=no], [-lcrypto])
Packit Service ed0f68
Packit Service ed0f68
AC_CHECK_LIB([crypto], [EVP_sha256],
Packit Service ed0f68
	[if test "x$xenable_internal_sha256" != "xyes"; then
Packit Service ed0f68
		if test "x$have_crypto" != "xyes"; then
Packit Service ed0f68
			LIBS="$LIBS -lcrypto"
Packit Service ed0f68
		have_sha256=yes
Packit Service ed0f68
		fi
Packit Service ed0f68
		AC_DEFINE(HAVE_CRYPTO_SHA256, [1], [Define to 1 if libcrypto supports SHA256.])
Packit Service ed0f68
	fi],
Packit Service ed0f68
	[], [-lcrypto])
Packit Service ed0f68
Packit Service ed0f68
AC_CHECK_LIB([crypto], [MD5_Init],
Packit Service ed0f68
	[if test "x$xenable_internal_md5" != "xyes"; then
Packit Service ed0f68
	    if test "x$have_crypto" != "xyes"; then
Packit Service ed0f68
	        LIBS="$LIBS -lcrypto"
Packit Service ed0f68
	        have_md5=yes
Packit Service ed0f68
	    fi
Packit Service ed0f68
	    AC_DEFINE(HAVE_CRYPTO_MD5, [1], [Define to 1 if libcrypto supports MD5.])
Packit Service ed0f68
	fi],
Packit Service ed0f68
	[], [-lcrypto])
Packit Service ed0f68
Packit Service ed0f68
AC_CHECK_LIB([crypto], [MD2_Init],
Packit Service ed0f68
	[if test "x$xenable_internal_md5" != "xyes"; then
Packit Service ed0f68
	    if test "x$have_crypto" != "xyes" && test "x$have_md5" != "xyes"; then
Packit Service ed0f68
	        LIBS="$LIBS -lcrypto"
Packit Service ed0f68
	        have_md2=yes
Packit Service ed0f68
	    fi
Packit Service ed0f68
	    AC_DEFINE(HAVE_CRYPTO_MD2, [1], [Define to 1 if libcrypto supports MD2.])
Packit Service ed0f68
	fi],
Packit Service ed0f68
	[], [-lcrypto])
Packit Service ed0f68
Packit Service ed0f68
dnl enable IPMIv1.5 LAN interface
Packit Service ed0f68
AC_ARG_ENABLE([intf-lan],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-intf-lan],
Packit Service ed0f68
			[enable IPMIv1.5 LAN interface [default=yes]])],
Packit Service ed0f68
	[xenable_intf_lan=$enableval],
Packit Service ed0f68
	[xenable_intf_lan=yes])
Packit Service ed0f68
if test "x$xenable_intf_lan" = "xstatic" || test "x$xenable_intf_lan" = "xplugin"; then
Packit Service ed0f68
	xenable_intf_lan=yes
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_lan" = "xyes"; then
Packit Service ed0f68
	AC_DEFINE(IPMI_INTF_LAN, [1], [Define to 1 to enable LAN IPMIv1.5 interface.])
Packit Service ed0f68
	AC_SUBST(INTF_LAN, [lan])
Packit Service ed0f68
	AC_SUBST(INTF_LAN_LIB, [libintf_lan.la])
Packit Service ed0f68
	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB lan/libintf_lan.la"
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl enable IPMI USB interface
Packit Service ed0f68
AC_ARG_ENABLE([intf-usb],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-intf-usb],
Packit Service ed0f68
			[enable IPMI USB interface [default=auto]])],
Packit Service ed0f68
		[xenable_intf_usb=$enableval],
Packit Service ed0f68
		[xenable_intf_usb=$xenable_intf_usb])
Packit Service ed0f68
if test "x$xenable_intf_usb" = "xstatic" || test "x$xenable_intf_usb" = "xplugin"; then
Packit Service ed0f68
   xenable_intf_usb=yes
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_usb" = "xyes"; then
Packit Service ed0f68
	AC_DEFINE(IPMI_INTF_USB, [1], [Define to 1 to enable USB interface.])
Packit Service ed0f68
	AC_SUBST(INTF_USB, [usb])
Packit Service ed0f68
	AC_SUBST(INTF_USB_LIB, [libintf_usb.la])
Packit Service ed0f68
	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB usb/libintf_usb.la"
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl enable IPMIv2.0 RMCP+ LAN interface
Packit Service ed0f68
AC_ARG_ENABLE([intf-lanplus],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-intf-lanplus],
Packit Service ed0f68
			[enable IPMIv2.0 RMCP+ LAN interface [default=auto]])],
Packit Service ed0f68
	[xenable_intf_lanplus=$enableval],
Packit Service ed0f68
	[xenable_intf_lanplus=$have_crypto])
Packit Service ed0f68
if test "x$xenable_intf_lanplus" = "xstatic" || test "x$xenable_intf_lanplus" = "xplugin"; then
Packit Service ed0f68
	xenable_intf_lanplus=yes
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_lanplus" != "xno" && test "x$have_crypto" != "xyes"; then
Packit Service ed0f68
	echo "** The lanplus interface requires an SSL library with EVP_aes_128_cbc defined."
Packit Service ed0f68
	xenable_intf_lanplus=no
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_lanplus" = "xyes"; then
Packit Service ed0f68
	AC_DEFINE(IPMI_INTF_LANPLUS, [1], [Define to 1 to enable LAN+ IPMIv2 interface.])
Packit Service ed0f68
	AC_SUBST(INTF_LANPLUS, [lanplus])
Packit Service ed0f68
	AC_SUBST(INTF_LANPLUS_LIB, [libintf_lanplus.la])
Packit Service ed0f68
	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB lanplus/libintf_lanplus.la"
Packit Service ed0f68
else
Packit Service ed0f68
	xenable_intf_lanplus=no
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
ORIG_CPPFLAGS=$CPPFLAGS
Packit Service ed0f68
Packit Service ed0f68
dnl enable serial interface
Packit Service ed0f68
AC_ARG_ENABLE([intf-serial],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-intf-serial],
Packit Service ed0f68
			[enable direct Serial Basic/Terminal mode interface [default=yes]])],
Packit Service ed0f68
	[xenable_intf_serial=$enableval], [xenable_intf_serial=yes])
Packit Service ed0f68
if test "x$enable_intf_serial" = "xstatic" || test "x$enable_intf_serial" = "xplugin"; then
Packit Service ed0f68
   xenable_intf_serial=yes
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_serial" = "xyes"; then
Packit Service ed0f68
    AC_DEFINE(IPMI_INTF_SERIAL, [1], [Define to 1 to enable serial interface.])
Packit Service ed0f68
    AC_SUBST(INTF_SERIAL, [serial])
Packit Service ed0f68
    AC_SUBST(INTF_SERIAL_LIB, [libintf_serial.la])
Packit Service ed0f68
    IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB serial/libintf_serial.la"
Packit Service ed0f68
else
Packit Service ed0f68
	xenable_intf_serial=no
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl look for OpenIPMI header files
Packit Service ed0f68
AC_ARG_WITH([kerneldir],
Packit Service ed0f68
	[AC_HELP_STRING([--with-kerneldir=DIR],
Packit Service ed0f68
			[set kernel include path to DIR])],
Packit Service ed0f68
	[if test "x$with_kerneldir" = "xyes"; then
Packit Service ed0f68
	    with_kerneldir="/lib/modules/`uname -r`/build"
Packit Service ed0f68
	fi
Packit Service ed0f68
	CFLAGS="$CFLAGS -I ${with_kerneldir}/include"
Packit Service ed0f68
	AC_SUBST(CFLAGS)
Packit Service ed0f68
	CPPFLAGS="$CPPFLAGS -I ${with_kerneldir}/include"
Packit Service ed0f68
	AC_SUBST(CPPFLAGS)
Packit Service ed0f68
	if test -s ${with_kerneldir}/include/linux/version.h ; then
Packit Service ed0f68
	    kernelver=`grep UTS_RELEASE ${with_kerneldir}/include/linux/version.h | \
Packit Service ed0f68
	        sed 's/^\#define UTS_RELEASE \"\(2\.[0-9]\)\..*/\1/'`
Packit Service ed0f68
	    if test "x$kernelver" = "x2.6"; then
Packit Service ed0f68
	        CPPFLAGS="$CPPFLAGS -D__user="
Packit Service ed0f68
	        AC_SUBST(CPPFLAGS)
Packit Service ed0f68
	    fi
Packit Service ed0f68
	fi])
Packit Service ed0f68
Packit Service ed0f68
AH_TEMPLATE([HAVE_LINUX_COMPILER_H], [])
Packit Service ed0f68
AC_MSG_CHECKING([for linux/compiler.h])
Packit Service ed0f68
Packit Service ed0f68
m4_version_prereq([2.68],
Packit Service ed0f68
	[AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <linux/compiler.h>]])],
Packit Service ed0f68
		[AC_DEFINE(HAVE_LINUX_COMPILER_H, [1],
Packit Service ed0f68
			[Define to 1 if you have the <linux/compiler.h> header file.])
Packit Service ed0f68
		AC_MSG_RESULT([yes])],
Packit Service ed0f68
		[AC_MSG_RESULT([no])])],
Packit Service ed0f68
	[AC_PREPROC_IFELSE([#include <linux/compiler.h>],
Packit Service ed0f68
		[AC_DEFINE(HAVE_LINUX_COMPILER_H, [1],
Packit Service ed0f68
		[Define to 1 if you have the <linux/compiler.h> header file.])
Packit Service ed0f68
		AC_MSG_RESULT([yes])],
Packit Service ed0f68
		[AC_MSG_RESULT([no])])])
Packit Service ed0f68
Packit Service ed0f68
CPPFLAGS=$ORIG_CPPFLAGS
Packit Service ed0f68
AC_SUBST(CPPFLAGS)
Packit Service ed0f68
Packit Service ed0f68
AC_CHECK_HEADER([sys/ioccom.h],
Packit Service ed0f68
	[AC_DEFINE(HAVE_SYS_IOCCOM_H, [1],
Packit Service ed0f68
	[Define to 1 if you have the <sys/ioccom.h> header file.])])
Packit Service ed0f68
Packit Service ed0f68
AC_CHECK_HEADER([linux/ipmi.h],
Packit Service ed0f68
	[AC_DEFINE(HAVE_OPENIPMI_H, [1],
Packit Service ed0f68
	[Define to 1 if you have the <linux/ipmi.h> header file.])],
Packit Service ed0f68
	[AC_CHECK_HEADER([sys/ipmi.h],
Packit Service ed0f68
		[AC_DEFINE(HAVE_FREEBSD_IPMI_H, [1],
Packit Service ed0f68
		[Define to 1 if you have the <sys/ipmi.h> header file.])],
Packit Service ed0f68
		[echo "** Unable to find OpenIPMI header files.  Using internal version."])])
Packit Service ed0f68
Packit Service ed0f68
dnl look for FreeIPMI files
Packit Service ed0f68
AC_CHECK_LIB(freeipmi, ipmi_open_inband, [have_free=yes], [have_free=no])
Packit Service ed0f68
if test "x$have_free" != "xyes"; then
Packit Service ed0f68
	AC_CHECK_LIB(freeipmi, ipmi_ctx_open_inband, [have_free=yes], [have_free=no])
Packit Service ed0f68
fi
Packit Service ed0f68
AC_ARG_ENABLE([intf-free],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-intf-free],
Packit Service ed0f68
		[enable FreeIPMI IPMI interface [default=auto]])],
Packit Service ed0f68
	[xenable_intf_free=$enableval],
Packit Service ed0f68
	[xenable_intf_free=$have_free])
Packit Service ed0f68
if test "x$xenable_intf_free" = "xstatic" || test "x$xenable_intf_free" = "xplugin"; then
Packit Service ed0f68
	xenable_intf_free=yes
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_free" != "xno" && test "x$have_free" != "xyes"; then
Packit Service ed0f68
	echo "** Unable to build FreeIPMI interface support!"
Packit Service ed0f68
	xenable_intf_free=no
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_free" = "xyes"; then
Packit Service ed0f68
dnl Determine if you got the right FreeIPMI version  
Packit Service ed0f68
    AC_MSG_CHECKING([for libfreeipmi version 0.3.0])
Packit Service ed0f68
    AC_TRY_COMPILE([
Packit Service ed0f68
#include <sys/types.h>	/* For size_t */
Packit Service ed0f68
#include <stdio.h>	/* For NULL */
Packit Service ed0f68
#include <freeipmi/freeipmi.h>
Packit Service ed0f68
#include <freeipmi/udm/ipmi-udm.h>
Packit Service ed0f68
    ], [
Packit Service ed0f68
    ipmi_device_t dev;
Packit Service ed0f68
    dev = ipmi_open_inband(IPMI_DEVICE_KCS,
Packit Service ed0f68
                           0,
Packit Service ed0f68
                           0,
Packit Service ed0f68
                           0,
Packit Service ed0f68
                           NULL,
Packit Service ed0f68
                           0);
Packit Service ed0f68
    ], ac_free_version_0_3_0=yes, ac_free_version_0_3_0=no)
Packit Service ed0f68
    AC_MSG_RESULT($ac_free_version_0_3_0)
Packit Service ed0f68
    AC_MSG_CHECKING([for libfreeipmi version 0.4.0])
Packit Service ed0f68
    AC_TRY_COMPILE([
Packit Service ed0f68
#include <sys/types.h>	/* For size_t */
Packit Service ed0f68
#include <stdio.h>	/* For NULL */
Packit Service ed0f68
#include <freeipmi/freeipmi.h>
Packit Service ed0f68
#include <freeipmi/udm/ipmi-udm.h>
Packit Service ed0f68
    ], [
Packit Service ed0f68
    ipmi_device_t dev = NULL;
Packit Service ed0f68
    int rv;
Packit Service ed0f68
    dev = ipmi_device_create();
Packit Service ed0f68
    rv = ipmi_open_inband(dev,
Packit Service ed0f68
                          IPMI_DEVICE_KCS,
Packit Service ed0f68
                          0,
Packit Service ed0f68
                          0,
Packit Service ed0f68
                          0,
Packit Service ed0f68
                          NULL,
Packit Service ed0f68
                          0);
Packit Service ed0f68
    ], ac_free_version_0_4_0=yes, ac_free_version_0_4_0=no)
Packit Service ed0f68
    AC_MSG_RESULT($ac_free_version_0_4_0)
Packit Service ed0f68
    AC_MSG_CHECKING([for libfreeipmi version 0.5.0])
Packit Service ed0f68
    AC_TRY_COMPILE([
Packit Service ed0f68
#include <sys/types.h>	/* For size_t */
Packit Service ed0f68
#include <stdio.h>	/* For NULL */
Packit Service ed0f68
#include <freeipmi/freeipmi.h>
Packit Service ed0f68
#include <freeipmi/udm/ipmi-udm.h>
Packit Service ed0f68
    ], [
Packit Service ed0f68
    ipmi_device_t dev = NULL;
Packit Service ed0f68
    int rv;
Packit Service ed0f68
    dev = ipmi_device_create();
Packit Service ed0f68
    rv = ipmi_open_inband(dev,
Packit Service ed0f68
                          IPMI_DEVICE_KCS,
Packit Service ed0f68
                          0,
Packit Service ed0f68
                          0,
Packit Service ed0f68
                          0,
Packit Service ed0f68
                          NULL,
Packit Service ed0f68
                          0,
Packit Service ed0f68
                          0);
Packit Service ed0f68
    ], ac_free_version_0_5_0=yes, ac_free_version_0_5_0=no)
Packit Service ed0f68
    AC_MSG_RESULT($ac_free_version_0_5_0)
Packit Service ed0f68
Packit Service ed0f68
    AC_MSG_CHECKING([for libfreeipmi version 0.6.0])
Packit Service ed0f68
    AC_TRY_COMPILE([
Packit Service ed0f68
#include <stdio.h>	/* For NULL */
Packit Service ed0f68
#include <freeipmi/freeipmi.h>
Packit Service ed0f68
    ], [
Packit Service ed0f68
    ipmi_ctx_t ctx = NULL;
Packit Service ed0f68
    int rv;
Packit Service ed0f68
    ctx = ipmi_ctx_create();
Packit Service ed0f68
    rv = ipmi_ctx_open_inband(ctx,
Packit Service ed0f68
                              IPMI_DEVICE_KCS,
Packit Service ed0f68
                              0,
Packit Service ed0f68
                              0,
Packit Service ed0f68
                              0,
Packit Service ed0f68
                              NULL,
Packit Service ed0f68
                              0,
Packit Service ed0f68
                              0);
Packit Service ed0f68
    ], ac_free_version_0_6_0=yes, ac_free_version_0_6_0=no)
Packit Service ed0f68
    AC_MSG_RESULT($ac_free_version_0_6_0)
Packit Service ed0f68
Packit Service ed0f68
    if test "x$ac_free_version_0_3_0" = "xyes" \
Packit Service ed0f68
       || test "x$ac_free_version_0_4_0" = "xyes" \
Packit Service ed0f68
       || test "x$ac_free_version_0_5_0" = "xyes" \
Packit Service ed0f68
       || test "x$ac_free_version_0_6_0" = "xyes"; then
Packit Service ed0f68
       AC_DEFINE(IPMI_INTF_FREE, [1], [Define to 1 to enable FreeIPMI interface.])
Packit Service ed0f68
       AC_SUBST(INTF_FREE, [free])
Packit Service ed0f68
       AC_SUBST(INTF_FREE_LIB, [libintf_free.la])
Packit Service ed0f68
       IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB free/libintf_free.la"
Packit Service ed0f68
       if test "x$ac_free_version_0_3_0" = "xyes"; then
Packit Service ed0f68
          AC_DEFINE(IPMI_INTF_FREE_0_3_0, [1], [Define to 1 for FreeIPMI 0.3.0.])
Packit Service ed0f68
       fi
Packit Service ed0f68
       if test "x$ac_free_version_0_4_0" = "xyes"; then
Packit Service ed0f68
          AC_DEFINE(IPMI_INTF_FREE_0_4_0, [1], [Define to 1 for FreeIPMI 0.4.0.])
Packit Service ed0f68
       fi
Packit Service ed0f68
       if test "x$ac_free_version_0_5_0" = "xyes"; then
Packit Service ed0f68
          AC_DEFINE(IPMI_INTF_FREE_0_5_0, [1], [Define to 1 for FreeIPMI 0.5.0.])
Packit Service ed0f68
       fi
Packit Service ed0f68
       if test "x$ac_free_version_0_6_0" = "xyes"; then
Packit Service ed0f68
          AC_DEFINE(IPMI_INTF_FREE_0_6_0, [1], [Define to 1 for FreeIPMI 0.6.0.])
Packit Service ed0f68
       fi
Packit Service ed0f68
    else
Packit Service ed0f68
       xenable_intf_free=no
Packit Service ed0f68
    fi
Packit Service ed0f68
Packit Service ed0f68
    AC_CHECK_LIB(freeipmi,
Packit Service ed0f68
      ipmi_cmd_raw_ipmb, 
Packit Service ed0f68
      AC_DEFINE(IPMI_INTF_FREE_BRIDGING, [1],
Packit Service ed0f68
        [Define to 1 to enable FreeIPMI Bridging Support.]))
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl look for termios header file
Packit Service ed0f68
AC_CHECK_HEADER([termios.h],
Packit Service ed0f68
	[AC_DEFINE(HAVE_TERMIOS_H, [1], [Define to 1 if you have <termios.h>.])],
Packit Service ed0f68
	[AC_CHECK_HEADER([sys/termios.h],
Packit Service ed0f68
		[AC_DEFINE(HAVE_SYS_TERMIOS_H, [1], [Define to 1 if you have <sys/termios.h>.])],
Packit Service ed0f68
		[echo "** Unable to find termios header file."])])
Packit Service ed0f68
Packit Service ed0f68
dnl set RPM distro tag for use in RPM name
Packit Service ed0f68
AC_ARG_WITH([rpm-distro],
Packit Service ed0f68
	[AC_HELP_STRING([--with-rpm-distro=DISTRO],
Packit Service ed0f68
			[set Linux distribution tag for use in RPM version string])],
Packit Service ed0f68
	[AC_SUBST(DISTRO, $with_rpm_distro)])
Packit Service ed0f68
Packit Service ed0f68
dnl set RPM release tag
Packit Service ed0f68
AC_ARG_WITH([rpm-release],
Packit Service ed0f68
	[AC_HELP_STRING([--with-rpm-release=RELEASE],
Packit Service ed0f68
			[set release number for RPM release field])],
Packit Service ed0f68
	[], [with_rpm_release=1])
Packit Service ed0f68
AC_SUBST(RPM_RELEASE, $with_rpm_release)
Packit Service ed0f68
Packit Service ed0f68
dnl enable Linux OpenIPMI interface
Packit Service ed0f68
AC_ARG_ENABLE([intf-open],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-intf-open],
Packit Service ed0f68
			[enable Linux OpenIPMI interface [default=auto]])],
Packit Service ed0f68
	[xenable_intf_open=$enableval],
Packit Service ed0f68
	[])
Packit Service ed0f68
if test "x$xenable_intf_open" = "xstatic" || test "x$xenable_intf_open" = "xplugin"; then
Packit Service ed0f68
	xenable_intf_open=yes
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_open" = "xyes"; then
Packit Service ed0f68
	AC_DEFINE(IPMI_INTF_OPEN, [1], [Define to 1 to enable Linux OpenIPMI interface.])
Packit Service ed0f68
	AC_SUBST(INTF_OPEN, [open])
Packit Service ed0f68
	AC_SUBST(INTF_OPEN_LIB, [libintf_open.la])
Packit Service ed0f68
	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB open/libintf_open.la"
Packit Service ed0f68
Packit Service ed0f68
	dnl Check for dual bridge support in OpenIPMI
Packit Service ed0f68
	AC_MSG_CHECKING([for OpenIPMI dual bridge support])
Packit Service ed0f68
	have_openipmi_dual_bridge=no
Packit Service ed0f68
	ORIG_CPPFLAGS="$CPPFLAGS"
Packit Service ed0f68
	CPPFLAGS="$CPPFLAGS -Isrc/plugins/open -DENABLE_INTF_OPEN_DUAL_BRIDGE"
Packit Service ed0f68
	AC_TRY_COMPILE([
Packit Service ed0f68
			#if defined(HAVE_OPENIPMI_H)
Packit Service ed0f68
			# if defined(HAVE_LINUX_COMPILER_H)
Packit Service ed0f68
			#  include <linux/compiler.h>
Packit Service ed0f68
			# endif
Packit Service ed0f68
			# include <linux/ipmi.h>
Packit Service ed0f68
			#elif defined(HAVE_FREEBSD_IPMI_H)
Packit Service ed0f68
			# include <sys/ipmi.h>
Packit Service ed0f68
			#else
Packit Service ed0f68
			# include "open.h"
Packit Service ed0f68
			#endif
Packit Service ed0f68
		], [
Packit Service ed0f68
			struct ipmi_ipmb_addr a;
Packit Service ed0f68
			a.transit_slave_addr = 0;
Packit Service ed0f68
		], [have_openipmi_dual_bridge=yes])
Packit Service ed0f68
	if test x"$have_openipmi_dual_bridge" = x"yes"; then
Packit Service ed0f68
		AC_DEFINE(ENABLE_INTF_OPEN_DUAL_BRIDGE, [1],
Packit Service ed0f68
			[Define to 1 to enable OpenIPMI interface dual bridge support])
Packit Service ed0f68
	fi
Packit Service ed0f68
	CPPFLAGS="$ORIG_CPPFLAGS"
Packit Service ed0f68
	AC_MSG_RESULT([$have_openipmi_dual_bridge])
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl enable Intel IMB interface
Packit Service ed0f68
AC_ARG_ENABLE([intf-imb],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-intf-imb],
Packit Service ed0f68
			[enable Intel IMB driver interface [default=auto]])],
Packit Service ed0f68
	[xenable_intf_imb=$enableval],
Packit Service ed0f68
	[])
Packit Service ed0f68
if test "x$xenable_intf_imb" = "xstatic" || test "x$xenable_intf_imb" = "xplugin"; then
Packit Service ed0f68
	xenable_intf_imb=yes
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_imb" = "xyes"; then
Packit Service ed0f68
	AC_DEFINE(IPMI_INTF_IMB, [1], [Define to 1 to enable Intel IMB interface.])
Packit Service ed0f68
	AC_SUBST(INTF_IMB, [imb])
Packit Service ed0f68
	AC_SUBST(INTF_IMB_LIB, [libintf_imb.la])
Packit Service ed0f68
	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB imb/libintf_imb.la"
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl enable Solaris LIPMI interface
Packit Service ed0f68
AC_CHECK_HEADER([sys/lipmi/lipmi_intf.h], [have_lipmi=yes], [have_lipmi=no])
Packit Service ed0f68
AC_ARG_ENABLE([intf-lipmi],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-intf-lipmi],
Packit Service ed0f68
			[enable Solaris 9 x86 IPMI interface [default=no]])],
Packit Service ed0f68
	[xenable_intf_lipmi=$enableval],
Packit Service ed0f68
	[])
Packit Service ed0f68
if test "x$xenable_intf_lipmi" = "xstatic" || test "x$xenable_intf_lipmi" = "xplugin"; then
Packit Service ed0f68
	xenable_intf_lipmi=yes
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_lipmi" != "xno" && test "x$have_lipmi" != "xyes"; then
Packit Service ed0f68
	echo "** Unable to build Solaris 9 x86 IPMI interface support!"
Packit Service ed0f68
	xenable_intf_lipmi=no
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_lipmi" = "xyes"; then
Packit Service ed0f68
	AC_DEFINE(IPMI_INTF_LIPMI, [1], [Define to 1 to enable Solaris 9 LIPMI interface.])
Packit Service ed0f68
	AC_SUBST(INTF_LIPMI, [lipmi])
Packit Service ed0f68
	AC_SUBST(INTF_LIPMI_LIB, [libintf_lipmi.la])
Packit Service ed0f68
	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB lipmi/libintf_lipmi.la"
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl enable Solaris BMC interface
Packit Service ed0f68
AC_ARG_ENABLE([intf-bmc],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-intf-bmc],
Packit Service ed0f68
			[enable Solaris 10 x86 IPMI interface [default=auto]])],
Packit Service ed0f68
	[xenable_intf_bmc=$enableval],
Packit Service ed0f68
	[xenable_intf_bmc=no])
Packit Service ed0f68
if test "x$xenable_intf_bmc" = "xstatic" || test "x$xenable_intf_bmc" = "xplugin"; then
Packit Service ed0f68
	xenable_intf_bmc=yes
Packit Service ed0f68
fi
Packit Service ed0f68
if test "x$xenable_intf_bmc" = "xyes"; then
Packit Service ed0f68
	AC_DEFINE(IPMI_INTF_BMC, [1], [Define to 1 to enable Solaris 10 BMC interface.])
Packit Service ed0f68
	AC_SUBST(INTF_BMC, [bmc])
Packit Service ed0f68
	AC_SUBST(INTF_BMC_LIB, [libintf_bmc.la])
Packit Service ed0f68
	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB bmc/libintf_bmc.la"
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl enable Dummy interface for testing
Packit Service ed0f68
AC_ARG_ENABLE([intf-dummy],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-intf-dummy],
Packit Service ed0f68
			[enable Dummy(test) interface [default=no]])],
Packit Service ed0f68
	[xenable_intf_dummy=$enableval], [xenable_intf_dummy=no])
Packit Service ed0f68
if test "x$xenable_intf_dummy" = "xyes"; then
Packit Service ed0f68
	AC_DEFINE(IPMI_INTF_DUMMY, [1], [Define to 1 to enable Dummy interface.])
Packit Service ed0f68
	AC_SUBST(INTF_DUMMY, [dummy])
Packit Service ed0f68
	AC_SUBST(INTF_DUMMY_LIB, [libintf_dummy.la])
Packit Service ed0f68
	IPMITOOL_INTF_LIB="$IPMITOOL_INTF_LIB dummy/libintf_dummy.la"
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
AC_SUBST(IPMITOOL_INTF_LIB)
Packit Service ed0f68
Packit Service ed0f68
if test "x$xenable_ipmishell" = "xyes"; then
Packit Service ed0f68
	AC_SEARCH_LIBS([tgetent], [tinfo ncurses curses readline termcap])
Packit Service ed0f68
	AC_SEARCH_LIBS([initscr], [ncurses curses], [have_curses=yes])
Packit Service ed0f68
	AC_SEARCH_LIBS([readline], [readline edit], [have_readline=yes])
Packit Service ed0f68
	if test "x$have_curses" != "xyes" || test "x$have_readline" != "xyes"; then
Packit Service ed0f68
		xenable_ipmishell=no
Packit Service ed0f68
	fi
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl check for readline library to enable ipmi shell
Packit Service ed0f68
AC_ARG_ENABLE([ipmishell],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-ipmishell],
Packit Service ed0f68
			[enable IPMI shell interface [default=auto]])],
Packit Service ed0f68
	[xenable_ipmishell=$enableval],
Packit Service ed0f68
	[])
Packit Service ed0f68
if test "x$xenable_ipmishell" = "xyes"; then
Packit Service ed0f68
	AC_SEARCH_LIBS([tgetent], [tinfo ncurses curses readline termcap])
Packit Service ed0f68
	AC_SEARCH_LIBS([initscr], [ncurses curses], [have_curses=yes])
Packit Service ed0f68
	AC_SEARCH_LIBS([readline], [readline edit], [have_readline=yes])
Packit Service ed0f68
	if test "x$have_curses" != "xyes"; then
Packit Service ed0f68
		AC_MSG_ERROR([** Unable to find curses required by ipmishell.])
Packit Service ed0f68
	fi
Packit Service ed0f68
	if test "x$have_readline" != "xyes"; then
Packit Service ed0f68
		AC_MSG_ERROR([** Unable to find readline required by ipmishell.])
Packit Service ed0f68
	fi
Packit Service ed0f68
	AC_DEFINE(HAVE_READLINE, [1], [Define to 1 if readline present.])
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
dnl Enable -Wall -Werror
Packit Service ed0f68
AC_ARG_ENABLE([buildcheck],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-buildcheck],
Packit Service ed0f68
			[enable -Wall -Werror for build testing [default=no]])],
Packit Service ed0f68
	[xenable_buildcheck=$enableval],
Packit Service ed0f68
	[xenable_buildcheck=no])
Packit Service ed0f68
if test "x$xenable_buildcheck" != "xno"; then
Packit Service ed0f68
	CFLAGS="$CFLAGS -Wall -Werror -Wpointer-arith -Wstrict-prototypes"
Packit Service ed0f68
fi
Packit Service ed0f68
AC_SUBST(CFLAGS)
Packit Service ed0f68
Packit Service ed0f68
dnl Enable extra file security paranoia
Packit Service ed0f68
AC_ARG_ENABLE([file-security],
Packit Service ed0f68
	[AC_HELP_STRING([--enable-file-security],
Packit Service ed0f68
			[enable extra security checks on files opened for read [default=no]])],
Packit Service ed0f68
	[xenable_file_security=$enableval],
Packit Service ed0f68
	[xenable_file_security=no])
Packit Service ed0f68
if test "x$xenable_file_security" != "xno"; then
Packit Service ed0f68
	AC_DEFINE(ENABLE_FILE_SECURITY, [1], [Define to 1 for extra file security.])
Packit Service ed0f68
fi
Packit Service ed0f68
Packit Service ed0f68
Packit Service ed0f68
AC_TRY_COMPILE([],[
Packit Service ed0f68
	#include <stdio.h>
Packit Service ed0f68
	
Packit Service ed0f68
	struct packstruct {
Packit Service ed0f68
		unsigned char t0       :5;
Packit Service ed0f68
		unsigned char t1       :5;
Packit Service ed0f68
		unsigned char t2       :5;
Packit Service ed0f68
		unsigned char t3       :5;
Packit Service ed0f68
		unsigned char t4       :4;
Packit Service ed0f68
	} __attribute__ ((packed));
Packit Service ed0f68
	
Packit Service ed0f68
	int
Packit Service ed0f68
	main(int argc, char ** argv)
Packit Service ed0f68
	{
Packit Service ed0f68
	if(sizeof(struct packstruct) != 3)
Packit Service ed0f68
	return(1);
Packit Service ed0f68
	else
Packit Service ed0f68
	return(0);
Packit Service ed0f68
	}
Packit Service ed0f68
	],
Packit Service ed0f68
	[],
Packit Service ed0f68
	[AC_DEFINE(HAVE_PRAGMA_PACK,[1],
Packit Service ed0f68
		[Define to 1 if you need to use #pragma pack instead of __attribute__ ((packed))])]
Packit Service ed0f68
)
Packit Service ed0f68
Packit Service ed0f68
Packit Service ed0f68
dnl Generate files for build
Packit Service ed0f68
AC_CONFIG_FILES([Makefile
Packit Service ed0f68
		doc/Makefile
Packit Service ed0f68
		contrib/Makefile
Packit Service ed0f68
		control/Makefile
Packit Service ed0f68
		control/pkginfo
Packit Service ed0f68
		control/prototype
Packit Service ed0f68
		control/rpmmacros
Packit Service ed0f68
		control/ipmitool.spec
Packit Service ed0f68
		lib/Makefile
Packit Service ed0f68
		include/Makefile
Packit Service ed0f68
		include/ipmitool/Makefile
Packit Service ed0f68
		src/Makefile
Packit Service ed0f68
		src/plugins/Makefile
Packit Service ed0f68
		src/plugins/lan/Makefile
Packit Service ed0f68
		src/plugins/lanplus/Makefile
Packit Service ed0f68
		src/plugins/open/Makefile
Packit Service ed0f68
		src/plugins/free/Makefile
Packit Service ed0f68
		src/plugins/imb/Makefile
Packit Service ed0f68
		src/plugins/bmc/Makefile
Packit Service ed0f68
		src/plugins/usb/Makefile
Packit Service ed0f68
		src/plugins/lipmi/Makefile
Packit Service ed0f68
		src/plugins/serial/Makefile
Packit Service ed0f68
		src/plugins/dummy/Makefile])
Packit Service ed0f68
Packit Service ed0f68
AC_OUTPUT
Packit Service ed0f68
Packit Service ed0f68
AC_MSG_RESULT([])
Packit Service ed0f68
AC_MSG_RESULT([ipmitool $VERSION])
Packit Service ed0f68
AC_MSG_RESULT([])
Packit Service ed0f68
AC_MSG_RESULT([Interfaces])
Packit Service ed0f68
AC_MSG_RESULT([  lan     : $xenable_intf_lan])
Packit Service ed0f68
AC_MSG_RESULT([  lanplus : $xenable_intf_lanplus])
Packit Service ed0f68
AC_MSG_RESULT([  open    : $xenable_intf_open])
Packit Service ed0f68
AC_MSG_RESULT([  free    : $xenable_intf_free])
Packit Service ed0f68
AC_MSG_RESULT([  imb     : $xenable_intf_imb])
Packit Service ed0f68
AC_MSG_RESULT([  bmc     : $xenable_intf_bmc])
Packit Service ed0f68
AC_MSG_RESULT([  usb     : $xenable_intf_usb])
Packit Service ed0f68
AC_MSG_RESULT([  lipmi   : $xenable_intf_lipmi])
Packit Service ed0f68
AC_MSG_RESULT([  serial  : $xenable_intf_serial])
Packit Service ed0f68
AC_MSG_RESULT([  dummy   : $xenable_intf_dummy])
Packit Service ed0f68
AC_MSG_RESULT([])
Packit Service ed0f68
AC_MSG_RESULT([Extra tools])
Packit Service ed0f68
AC_MSG_RESULT([  ipmievd   : yes])
Packit Service ed0f68
AC_MSG_RESULT([  ipmishell : $xenable_ipmishell])
Packit Service ed0f68
AC_MSG_RESULT([])
Packit Service ed0f68