diff --git a/configure b/configure index 85c15cb..6f1006e 100755 --- a/configure +++ b/configure @@ -705,6 +705,7 @@ PMDA_PERFEVENT PFM_LIBS PMDA_PAPI PAPI_LIBS +PAPI_CFLAGS PMDA_INFINIBAND IB_LIBS PMDA_SYSTEMD @@ -1598,7 +1599,10 @@ Optional Packages: --with-python3 enable support for tools requiring Python3 (default is on) --with-books enable building of the PCP books (default is off) - --with-papi enable performance api counter pmda (default is on) + --with-papi[=DIR] enable performance api counter pmda (default is on) + The optional DIR argument can be used to supply the + absolute path name for the primary PAPI installation + directory [default=/usr/local] --with-perfevent enable perfevent pmda (default is on) --with-manager enable daemon manager (default is on) --with-webapi enable REST API daemon (default is on) @@ -10071,7 +10075,18 @@ if test "x$do_papi" != "xno"; then : enable_papi=true + saved_LDFLAGS="$LDFLAGS" + saved_CFLAGS="$CFLAGS" savedLIBS=$LIBS + + case "$do_papi" in + yes|no) PAPI_ROOTDIR=/usr ;; + *) PAPI_ROOTDIR=$do_papi; + CFLAGS="-I$PAPI_ROOTDIR/include" + LDFLAGS="-L$PAPI_ROOTDIR/lib" + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PAPI_library_init in -lpapi" >&5 $as_echo_n "checking for PAPI_library_init in -lpapi... " >&6; } if ${ac_cv_lib_papi_PAPI_library_init+:} false; then : @@ -10109,7 +10124,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_papi_PAPI_library_init" >&5 $as_echo "$ac_cv_lib_papi_PAPI_library_init" >&6; } if test "x$ac_cv_lib_papi_PAPI_library_init" = xyes; then : - papi_libs="-lpapi" + papi_libs="$LDFLAGS -lpapi" else enable_papi=false fi @@ -10121,7 +10136,7 @@ if test "x$ac_cv_header_papi_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PAPI_H 1 _ACEOF - + papi_cflags="$CFLAGS" else enable_papi=false fi @@ -10135,6 +10150,10 @@ done pmda_papi=$enable_papi fi LIBS=$savedLIBS + CFLAGS="$saved_CFLAGS" + LDFLAGS="$saved_LDFLAGS" + PAPI_CFLAGS=$papi_cflags + PAPI_LIBS=$papi_libs diff --git a/configure.ac b/configure.ac index 720ee08..ff90675 100644 --- a/configure.ac +++ b/configure.ac @@ -108,8 +108,12 @@ AC_ARG_WITH([books], [do_books=no]) AC_ARG_WITH([papi], - [AC_HELP_STRING([--with-papi], - [enable performance api counter pmda (default is on)])], + [AC_HELP_STRING([--with-papi@<:@=DIR@:>@], + [enable performance api counter pmda (default is on) + The optional DIR argument + can be used to supply the absolute path name + for the primary PAPI installation directory + @<:@default=/usr/local@:>@])], [do_papi=$withval; PACKAGE_CONFIGURE="$PACKAGE_CONFIGURE --with-papi=$withval"], [do_papi=check]) @@ -1286,11 +1290,22 @@ pmda_papi=false AS_IF([test "x$do_papi" != "xno"], [ enable_papi=true + saved_LDFLAGS="$LDFLAGS" + saved_CFLAGS="$CFLAGS" savedLIBS=$LIBS + + case "$do_papi" in + yes|no) PAPI_ROOTDIR=/usr ;; + *) PAPI_ROOTDIR=$do_papi; + CFLAGS="-I$PAPI_ROOTDIR/include" + LDFLAGS="-L$PAPI_ROOTDIR/lib" + ;; + esac + AC_CHECK_LIB([papi], [PAPI_library_init], - [papi_libs="-lpapi"], + [papi_libs="$LDFLAGS -lpapi"], [enable_papi=false]) - AC_CHECK_HEADERS([papi.h], [], [enable_papi=false]) + AC_CHECK_HEADERS([papi.h], [papi_cflags="$CFLAGS"], [enable_papi=false]) if test "$do_papi" != "check" -a "$enable_papi" != "true" then AC_MSG_ERROR(PAPI is not installed, cannot enable the PAPI PMDA) @@ -1298,6 +1313,9 @@ AS_IF([test "x$do_papi" != "xno"], [ pmda_papi=$enable_papi fi LIBS=$savedLIBS + CFLAGS="$saved_CFLAGS" + LDFLAGS="$saved_LDFLAGS" + AC_SUBST(PAPI_CFLAGS, $papi_cflags) AC_SUBST(PAPI_LIBS, $papi_libs) ]) AC_SUBST(PMDA_PAPI, $pmda_papi) diff --git a/src/include/builddefs.in b/src/include/builddefs.in index a3a08b1..34d9f4d 100644 --- a/src/include/builddefs.in +++ b/src/include/builddefs.in @@ -254,6 +254,7 @@ LIB_FOR_MICROHTTPD = @libmicrohttpd_LIBS@ # configuration state for optional performance domains SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@ SYSTEMD_LIBS = @SYSTEMD_LIBS@ +PAPI_CFLAGS = @PAPI_CFLAGS@ PAPI_LIBS = @PAPI_LIBS@ PFM_LIBS = @PFM_LIBS@ IB_LIBS = @IB_LIBS@ diff --git a/src/pmdas/papi/GNUmakefile b/src/pmdas/papi/GNUmakefile index 4d362a0..2174f63 100644 --- a/src/pmdas/papi/GNUmakefile +++ b/src/pmdas/papi/GNUmakefile @@ -24,7 +24,7 @@ PMDADIR = $(PCP_PMDAS_DIR)/$(IAM) PMDAINIT = $(IAM)_init LLDLIBS = $(PAPI_LIBS) $(PCP_PMDALIB) -LCFLAGS = $(INVISIBILITY) -I. +LCFLAGS = $(PAPI_CFLAGS) $(INVISIBILITY) -I. CFILES = papi.c DFILES = README help