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