| ##***************************************************************************** | 
 | #  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") | 
 | ]) |