Blame acinclude.m4

Packit db01ca
##################################################
Packit db01ca
#
Packit db01ca
#  OpenHPI Macros
Packit db01ca
#
Packit db01ca
#  Copyright (C) IBM Corp 2003-2006
Packit db01ca
#
Packit db01ca
#  Author(s):
Packit db01ca
#      Sean Dague <http://dague.net/sean>
Packit db01ca
#      Renier Morales <renier@openhpi.org>
Packit db01ca
#
Packit db01ca
#  This file is licensed under the same terms as OpenHPI itself.
Packit db01ca
#  See the COPYING file in the top level of OpenHPI for more info.
Packit db01ca
#
Packit db01ca
# This is a set of common macros to be used by the top
Packit db01ca
# level configure.in.
Packit db01ca
#
Packit db01ca
##################################################
Packit db01ca
Packit db01ca
Packit db01ca
AC_DEFUN([OH_SET_SIZES],
Packit db01ca
    [
Packit db01ca
Packit db01ca
    if test "x$cross_compiling" != "xno"; then
Packit db01ca
        if test "x$OH_SIZEOF_UCHAR" = x; then
Packit db01ca
            OH_SIZEOF_UCHAR=$ac_cv_sizeof_uchar
Packit db01ca
        fi
Packit db01ca
        if test "x$OH_SIZEOF_USHORT" = x; then
Packit db01ca
            OH_SIZEOF_USHORT=$ac_cv_sizeof_ushort
Packit db01ca
        fi
Packit db01ca
        if test "x$OH_SIZEOF_UINT" = x; then
Packit db01ca
            OH_SIZEOF_UINT=$ac_cv_sizeof_uint
Packit db01ca
        fi
Packit db01ca
        if test "x$OH_SIZEOF_CHAR" = x; then
Packit db01ca
            OH_SIZEOF_CHAR=$ac_cv_sizeof_char
Packit db01ca
        fi
Packit db01ca
        if test "x$OH_SIZEOF_SHORT" = x; then
Packit db01ca
            OH_SIZEOF_SHORT=$ac_cv_sizeof_short
Packit db01ca
        fi
Packit db01ca
        if test "x$OH_SIZEOF_INT" = x; then
Packit db01ca
            OH_SIZEOF_INT=$ac_cv_sizeof_int
Packit db01ca
        fi
Packit db01ca
        if test "x$OH_SIZEOF_LLONG" = x; then
Packit db01ca
            OH_SIZEOF_LLONG=$ac_cv_sizeof_longlong
Packit db01ca
        fi
Packit db01ca
        if test "x$OH_SIZEOF_FLOAT" = x; then
Packit db01ca
            OH_SIZEOF_FLOAT=$ac_cv_sizeof_float
Packit db01ca
        fi
Packit db01ca
        if test "x$OH_SIZEOF_DOUBLE" = x; then
Packit db01ca
            OH_SIZEOF_DOUBLE=$ac_cv_sizeof_double
Packit db01ca
        fi
Packit db01ca
    else
Packit db01ca
        OH_SSFILE=testsize
Packit db01ca
        OH_SSSOURCE="$OH_SSFILE.c"
Packit db01ca
        echo "#include <stdlib.h>" > $OH_SSSOURCE
Packit db01ca
        echo "#include <stdio.h>" >> $OH_SSSOURCE
Packit db01ca
        echo "int main() {" >> $OH_SSSOURCE
Packit db01ca
        # add more here if you need them
Packit db01ca
        # the lots of slashes are needed to do the processing below right
Packit db01ca
        echo "printf(\"unsigned char %u\\\\n\",(unsigned int)sizeof(unsigned char));" >> $OH_SSSOURCE
Packit db01ca
        echo "printf(\"unsigned short %u\\\\n\",(unsigned int)sizeof(unsigned short));" >> $OH_SSSOURCE
Packit db01ca
        echo "printf(\"unsigned int %u\\\\n\",(unsigned int)sizeof(unsigned int));" >> $OH_SSSOURCE
Packit db01ca
        echo "printf(\"char %u\\\\n\",(unsigned int)sizeof(char));" >> $OH_SSSOURCE
Packit db01ca
        echo "printf(\"short %u\\\\n\",(unsigned int)sizeof(short));" >> $OH_SSSOURCE
Packit db01ca
        echo "printf(\"int %u\\\\n\",(unsigned int)sizeof(int));" >> $OH_SSSOURCE
Packit db01ca
        echo "printf(\"long long %u\\\\n\",(unsigned int)sizeof(long long));" >> $OH_SSSOURCE
Packit db01ca
        echo "printf(\"float %u\\\\n\",(unsigned int)sizeof(float));" >> $OH_SSSOURCE
Packit db01ca
        echo "printf(\"double %u\\\\n\",(unsigned int)sizeof(double));" >> $OH_SSSOURCE
Packit db01ca
        echo "return 0;" >> $OH_SSSOURCE
Packit db01ca
        echo "}" >> $OH_SSSOURCE
Packit db01ca
    
Packit db01ca
        $CC -o $OH_SSFILE $OH_SSSOURCE
Packit db01ca
Packit db01ca
        OH_TYPE_SIZES=`./$OH_SSFILE`
Packit db01ca
        # feel free to define more logic here if we need it
Packit db01ca
    
Packit db01ca
        OH_SIZEOF_UCHAR=`echo -e $OH_TYPE_SIZES | grep "^unsigned char" | awk '{print $[3]}'`
Packit db01ca
        OH_SIZEOF_USHORT=`echo -e $OH_TYPE_SIZES | grep "^unsigned short" | awk '{print $[3]}'`
Packit db01ca
        OH_SIZEOF_UINT=`echo -e $OH_TYPE_SIZES | grep "^unsigned int" | awk '{print $[3]}'`
Packit db01ca
        OH_SIZEOF_CHAR=`echo -e $OH_TYPE_SIZES | grep "^char" | awk '{print $[2]}'`
Packit db01ca
        OH_SIZEOF_SHORT=`echo -e $OH_TYPE_SIZES | grep "^short" | awk '{print $[2]}'`
Packit db01ca
        OH_SIZEOF_INT=`echo -e $OH_TYPE_SIZES | grep "^int" | awk '{print $[2]}'`
Packit db01ca
        OH_SIZEOF_LLONG=`echo -e $OH_TYPE_SIZES | grep "^long long" | awk '{print $[3]}'`
Packit db01ca
        OH_SIZEOF_FLOAT=`echo -e $OH_TYPE_SIZES | grep "^float" | awk '{print $[2]}'`
Packit db01ca
        OH_SIZEOF_DOUBLE=`echo -e $OH_TYPE_SIZES | grep "^double" | awk '{print $[2]}'`
Packit db01ca
        rm -f $OH_SSFILE $OH_SSSOURCE
Packit db01ca
Packit db01ca
    fi
Packit db01ca
    ])
Packit db01ca
Packit db01ca
#
Packit db01ca
# OH_CHECK_FAIL($LIBNAME,$PACKAGE_SUGGEST,$URL,$EXTRA)
Packit db01ca
#
Packit db01ca
Packit db01ca
AC_DEFUN([OH_CHECK_FAIL],
Packit db01ca
    [
Packit db01ca
    OH_MSG=`echo -e "- $1 not found!\n"`
Packit db01ca
    if test "x" != "x$4"; then
Packit db01ca
        OH_MSG=`echo -e "$OH_MSG\n- $4"`
Packit db01ca
    fi
Packit db01ca
    if test "x$2" != "x"; then
Packit db01ca
        OH_MSG=`echo -e "$OH_MSG\n- Try installing the $2 package\n"`
Packit db01ca
    fi
Packit db01ca
    if test "x$3" != "x"; then
Packit db01ca
        OH_MSG=`echo -e "$OH_MSG\n- or get the latest software from $3\n"`
Packit db01ca
    fi
Packit db01ca
    
Packit db01ca
    AC_MSG_ERROR(
Packit db01ca
!
Packit db01ca
************************************************************
Packit db01ca
$OH_MSG
Packit db01ca
************************************************************
Packit db01ca
)
Packit db01ca
    ]
Packit db01ca
)
Packit db01ca
Packit db01ca
#
Packit db01ca
#  gcc version check.
Packit db01ca
#
Packit db01ca
Packit db01ca
AC_DEFUN([OH_CHECK_GCC],
Packit db01ca
    [
Packit db01ca
    GCCVERSIONOK=`gcc -dumpversion | \
Packit db01ca
    sed 's/\./ /g' | \
Packit db01ca
    awk '{ \
Packit db01ca
        if ( $[1] > $1) { \
Packit db01ca
            print "OK"; \
Packit db01ca
        } \
Packit db01ca
        if ( $[1] == $1 ) { \
Packit db01ca
            if( $[2] > $2 ) { \
Packit db01ca
                print "OK"; \
Packit db01ca
            } \
Packit db01ca
            if( $[2] == $2 ) { \
Packit db01ca
                print "OK"; \
Packit db01ca
            } \
Packit db01ca
        } \
Packit db01ca
    }'` \
Packit db01ca
    
Packit db01ca
    if test "$GCCVERSIONOK" = "OK"; then
Packit db01ca
        AC_MSG_RESULT(yes)
Packit db01ca
    else
Packit db01ca
        OH_CHECK_FAIL(gcc >= $1.$2 is required to build OpenHPI)
Packit db01ca
    fi
Packit db01ca
])
Packit db01ca
    
Packit db01ca
Packit db01ca
# it is worth noting that we have to strip 
Packit db01ca
# optimization from the cflags for net-snmp
Packit db01ca
# hopefully they'll fix that bug in the future
Packit db01ca
Packit db01ca
AC_DEFUN([OH_CHECK_NETSNMP],
Packit db01ca
    [
Packit db01ca
    AC_MSG_CHECKING(for net-snmp)
Packit db01ca
    AC_TRY_LINK(
Packit db01ca
    [
Packit db01ca
        #include <net-snmp/net-snmp-config.h>
Packit db01ca
        #include <net-snmp/net-snmp-includes.h>
Packit db01ca
    ],
Packit db01ca
    [
Packit db01ca
        struct snmp_session session
Packit db01ca
    ],
Packit db01ca
    [
Packit db01ca
        have_netsnmp=yes
Packit db01ca
        SNMPFLAGS=`${net_snmp_config:-net-snmp-config} --cflags | perl -p -e 's/ -O\S*//g'`
Packit db01ca
        SNMPLIBS=`${net_snmp_config:-net-snmp-config} --libs`
Packit db01ca
        AC_MSG_RESULT(yes)
Packit db01ca
    ],
Packit db01ca
    [AC_MSG_RESULT(no.  No SNMP based plugins can be built!)])
Packit db01ca
])
Packit db01ca
Packit db01ca
Packit db01ca
AC_DEFUN([OH_CHECK_OPENIPMI],
Packit db01ca
	[
Packit db01ca
	AC_MSG_CHECKING(for OpenIPMI)
Packit db01ca
Packit db01ca
	OH_OI_FILE=ipmi_ver
Packit db01ca
	OH_OI_SRC="ipmi_ver.c"
Packit db01ca
	echo "#include <stdio.h>" > $OH_OI_SRC
Packit db01ca
	echo "#include <OpenIPMI/ipmiif.h>" >> $OH_OI_SRC
Packit db01ca
	echo "int main() {" >> $OH_OI_SRC
Packit db01ca
	echo "printf(\"%d.%d.%d\", OPENIPMI_VERSION_MAJOR, \
Packit db01ca
				   OPENIPMI_VERSION_MINOR, \
Packit db01ca
				   OPENIPMI_VERSION_RELEASE);" >> $OH_OI_SRC
Packit db01ca
	echo "return 0;}" >> $OH_OI_SRC
Packit db01ca
Packit db01ca
	gcc -o $OH_OI_FILE $CFLAGS $CPPFLAGS $LDFLAGS $OH_OI_SRC >& /dev/null
Packit db01ca
Packit db01ca
	if test -f "ipmi_ver"; then
Packit db01ca
		OPENIPMI_VERSION=`./ipmi_ver | \
Packit db01ca
		awk -F. '{ \
Packit db01ca
			if ( $[1] == $1 ) { \
Packit db01ca
				if ( $[2] == $2 ) { \
Packit db01ca
			    	if ( $[3] >= $3 ) { \
Packit db01ca
			    		print "OK"; \
Packit db01ca
					} \
Packit db01ca
				}
Packit db01ca
			}
Packit db01ca
Packit db01ca
		}'` 
Packit db01ca
	fi
Packit db01ca
		
Packit db01ca
	if test "$OPENIPMI_VERSION" = "OK"; then
Packit db01ca
		have_openipmi=yes
Packit db01ca
		AC_MSG_RESULT(yes)
Packit db01ca
	else
Packit db01ca
		AC_MSG_RESULT(no...OpenIPMI missing or wrong version IPMI plug-in can't build)
Packit db01ca
		have_openipmi=no
Packit db01ca
   	fi
Packit db01ca
Packit db01ca
	rm -rf $OH_OI_FILE $OH_OI_SRC
Packit db01ca
])
Packit db01ca
Packit db01ca
AC_DEFUN([PKG_CFG_SETPATH],
Packit db01ca
[
Packit db01ca
	if test "x$cross_compiling" != "xyes"; then
Packit db01ca
		if test -f "/etc/ld.so.conf"; then
Packit db01ca
			TEMP=`cat /etc/ld.so.conf | grep "/lib$"`
Packit db01ca
			TEMP=`echo $TEMP | sed -e 's/\/lib \|\/lib$/\/lib\/pkgconfig:/g'`
Packit db01ca
			PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${TEMP}"
Packit db01ca
			export PKG_CONFIG_PATH
Packit db01ca
		fi
Packit db01ca
	fi
Packit db01ca
])
Packit db01ca
Packit db01ca
AC_DEFUN([OH_CHECK_RTAS],
Packit db01ca
    [
Packit db01ca
    AC_MSG_CHECKING(for RTAS libary)
Packit db01ca
    AC_TRY_COMPILE(
Packit db01ca
        [
Packit db01ca
	    #include <stdio.h>
Packit db01ca
	    #include <librtas.h>
Packit db01ca
        ],    
Packit db01ca
        [
Packit db01ca
            rtas_activate_firmware();
Packit db01ca
        ],
Packit db01ca
        [
Packit db01ca
	    if test -f "/usr/bin/lsvpd"; then
Packit db01ca
		    have_rtas_lib=yes
Packit db01ca
        	    AC_MSG_RESULT(yes)
Packit db01ca
	    else
Packit db01ca
		    AC_MSG_RESULT(no)
Packit db01ca
	    fi
Packit db01ca
       ],
Packit db01ca
       [AC_MSG_RESULT(no)]
Packit db01ca
    )])