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