blob: b23d6f981dd2beafd3fa3bdd7bf83e1522848f0d [file] [log] [blame]
##*****************************************************************************
# AUTHOR:
# Advanced Micro Devices
#
# SYNOPSIS:
# X_AC_RSMI
#
# DESCRIPTION:
# Determine if AMD's RSMI API library exists
##*****************************************************************************
AC_DEFUN([X_AC_RSMI],
[
# /opt/rocm is the current default location.
# /opt/rocm/rocm_smi was the default location for before to 5.2.0
# We will use a for loop to check for both.
# Unless _x_ac_rsmi_dirs is overwritten with --with-rsmi
_x_ac_rsmi_dirs="/opt/rocm /opt/rocm/rocm_smi"
AC_ARG_WITH(
[rsmi],
AS_HELP_STRING(--with-rsmi=PATH, Specify path to rsmi installation),
[AS_IF([test "x$with_rsmi" != xno && test "x$with_rsmi" != xyes],
[_x_ac_rsmi_dirs="$with_rsmi"])])
if [test "x$with_rsmi" = xno]; then
AC_MSG_NOTICE([support for rsmi disabled])
else
AC_MSG_CHECKING([whether RSMI/ROCm in installed in this system])
# Check for RSMI header and library in the default location
# or in the location specified during configure
#
# NOTE: Just because this is where we are looking and finding the
# libraries they must be in the ldcache when running as that is what the
# card will be using.
AC_MSG_RESULT([])
for _x_ac_rsmi_dir in $_x_ac_rsmi_dirs; do
cppflags_save="$CPPFLAGS"
ldflags_save="$LDFLAGS"
RSMI_CPPFLAGS="-I$_x_ac_rsmi_dir/include"
CPPFLAGS="$RSMI_CPPFLAGS"
RSMI_LIB_DIR="$_x_ac_rsmi_dir/lib"
LDFLAGS="-L$RSMI_LIB_DIR"
AS_UNSET([ac_cv_header_rocm_smi_h])
AS_UNSET([ac_cv_lib_rocm_smi64_rsmi_init])
AS_UNSET([ac_cv_lib_rocm_smi64_dev_drm_render_minor_get])
AC_CHECK_HEADER([rocm_smi/rocm_smi.h], [ac_rsmi_h=yes], [ac_rsmi_h=no])
AC_CHECK_LIB([rocm_smi64], [rsmi_init], [ac_rsmi_l=yes], [ac_rsmi_l=no])
AC_CHECK_LIB([rocm_smi64], [rsmi_dev_drm_render_minor_get], [ac_rsmi_version=yes], [ac_rsmi_version=no])
CPPFLAGS="$cppflags_save"
LDFLAGS="$ldflags_save"
if test "$ac_rsmi_l" = "yes" && test "$ac_rsmi_h" = "yes"; then
if test "$ac_rsmi_version" = "yes"; then
ac_rsmi="yes"
AC_DEFINE(HAVE_RSMI, 1, [Define to 1 if RSMI library found])
AC_SUBST(RSMI_CPPFLAGS)
break;
fi
fi
done
# Only print errors/wanrings if both _x_ac_rsmi_dirs don't work
if test "$ac_rsmi_l" = "yes" && test "$ac_rsmi_h" = "yes"; then
if test "$ac_rsmi_version" != "yes"; then
if test -z "$with_rsmi"; then
AC_MSG_WARN([upgrade to newer version of ROCm/rsmi])
else
AC_MSG_ERROR([upgrade to newer version of ROCm/rsmi])
fi
fi
else
if test -z "$with_rsmi"; then
AC_MSG_WARN([unable to locate librocm_smi64.so and/or rocm_smi.h])
else
AC_MSG_ERROR([unable to locate librocm_smi64.so and/or rocm_smi.h])
fi
fi
fi
AM_CONDITIONAL(BUILD_RSMI, test "$ac_rsmi" = "yes")
])