[Darshan-commits] [Git][darshan/darshan][dev-no-mpi] allow compilation in the absence of mpicc

Glenn K. Lockwood xgitlab at cels.anl.gov
Tue Jul 30 09:59:47 CDT 2019



Glenn K. Lockwood pushed to branch dev-no-mpi at darshan / darshan


Commits:
54bd3e2d by Glenn K. Lockwood at 2019-07-30T14:57:55Z
allow compilation in the absence of mpicc

- add new --without-mpi to bypass all mpicc checks
- add --disable-xxx-mod to individually enable/disable each module
- add report of enabled/disabled modules at end of configure
- does NOT report compiler version yet
- does NOT report whether MPI is enabled or not yet

- - - - -


1 changed file:

- darshan-runtime/configure.in


Changes:

=====================================
darshan-runtime/configure.in
=====================================
@@ -8,44 +8,101 @@ dnl sanity checks, output header, location of scripts used here
 AC_INIT([darshan-runtime], [3.1.7])
 AC_CONFIG_SRCDIR([darshan.h])
 AC_CONFIG_AUX_DIR(../maint/config)
+AC_CONFIG_MACRO_DIR(../maint/config)
 AC_CONFIG_HEADER(darshan-runtime-config.h)
 
 AC_PROG_INSTALL
 
+dnl Check for MPI
+ENABLE_MPI=1
+AC_ARG_WITH(mpi,
+            AS_HELP_STRING([--without-mpi], [Build without support for MPI]))
+AS_IF([test "x$with_mpi" = "xno"],
+      ENABLE_MPI=,
+      [AC_DEFINE([HAVE_MPI], [], [Define if build is MPI-enabled])])
+
+
 dnl Check to see if CC is an MPI compiler
 dnl TODO: better error message here
-AC_MSG_CHECKING(whether the mpicc compiler works)
-AC_TRY_COMPILE([#include <mpi.h>], [int ret = MPI_Init(0, (void*)0)],
+AS_IF([test "x$ENABLE_MPI" = "x1"],
+      [AC_MSG_CHECKING(whether the mpicc compiler works)
+       AC_TRY_COMPILE([#include <mpi.h>], [int ret = MPI_Init(0, (void*)0)],
     AC_MSG_RESULT(yes),
     AC_MSG_RESULT(no)
-    AC_MSG_ERROR(CC doesn't appear to be a valid MPI compiler.  See INSTALL document or try adding CC=mpicc to your configure command line.)
-)
+                      AC_MSG_ERROR(CC doesn't appear to be a valid MPI compiler.  See INSTALL document or try adding CC=mpicc to your configure command line.))],
+       AC_MSG_NOTICE(not checking whether the mpicc compiler works))
 
 dnl runtime libraries require zlib
 CHECK_ZLIB
 
-AC_ARG_ENABLE(ld-preload, 
-[  --disable-ld-preload    Disables support for LD_PRELOAD library], 
+AC_ARG_ENABLE(ld-preload,
+[  --disable-ld-preload    Disables support for LD_PRELOAD library],
 [if test "x$enableval" = "xno" ; then
     DISABLE_LDPRELOAD="1"
 fi]
 ,)
 
-AC_ARG_ENABLE(cuserid, 
-[  --disable-cuserid       Disables attempted use of cuserid() at run time], 
+AC_ARG_ENABLE(cuserid,
+[  --disable-cuserid       Disables attempted use of cuserid() at run time],
 [if test "x$enableval" = "xno" ; then
     AC_DEFINE(__DARSHAN_DISABLE_CUSERID, 1, Define if cuserid() should be disabled)
 fi]
 ,)
 
-AC_ARG_ENABLE(group-readable-logs, 
+AC_ARG_ENABLE(group-readable-logs,
 [  --enable-group-readable-logs
-                          Set log files to be group readable], 
+                          Set log files to be group readable],
 [if test "x$enableval" = "xyes" ; then
     AC_DEFINE(__DARSHAN_GROUP_READABLE_LOGS, 1, Define if Darshan should set log files to be group readable)
 fi]
 ,)
 
+#
+# Check for specific module enable/disable options
+#
+# POSIX module
+BUILD_POSIX_MODULE=1
+DARSHAN_POSIX_LD_OPTS="@${darshan_share_path}/ld-opts/darshan-posix-ld-opts"
+AC_ARG_ENABLE(posix-mod,
+              AS_HELP_STRING([--disable-posix-mod], [Disables compilation and use of POSIX module]))
+AS_IF([test "x$enable_posix_mod" = "xno"],
+      BUILD_POSIX_MODULE=
+      DARSHAN_POSIX_LD_OPTS=)
+
+# MPI-IO module
+BUILD_MPIIO_MODULE=1
+DARSHAN_MPIIO_LD_OPTS="@${darshan_share_path}/ld-opts/darshan-mpiio-ld-opts"
+AC_ARG_ENABLE(mpiio-mod,
+              AS_HELP_STRING([--disable-mpiio-mod], [Disables compilation and use of MPI-IO module (requires MPI)]))
+AS_IF([test "x$enable_mpiio_mod" = "xno" || test "x$ENABLE_MPI" = "x"],
+      BUILD_MPIIO_MODULE=
+      DARSHAN_MPIIO_LD_OPTS=)
+
+# STDIO module
+BUILD_STDIO_MODULE=1
+DARSHAN_STDIO_LD_OPTS="@${darshan_share_path}/ld-opts/darshan-stdio-ld-opts"
+AC_ARG_ENABLE(stdio-mod,
+              AS_HELP_STRING([--disable-stdio-mod], [Disables compilation and use of STDIO module]))
+AS_IF([test "x$enable_stdio_mod" = "xno"],
+      BUILD_STDIO_MODULE=
+      DARSHAN_STDIO_LD_OPTS=)
+
+# PNETCDF module
+BUILD_PNETCDF_MODULE=1
+DARSHAN_PNETCDF_LD_OPTS="@${darshan_share_path}/ld-opts/darshan-pnetcdf-ld-opts"
+AC_ARG_ENABLE(pnetcdf-mod,
+              AS_HELP_STRING([--disable-pnetcdf-mod], [Disables compilation and use of PnetCDF module (requires MPI)]))
+AS_IF([test "x$enable_pnetcdf_mod" = "xno"],
+      BUILD_PNETCDF_MODULE=
+      DARSHAN_PNETCDF_LD_OPTS=)
+
+# DXT module
+BUILD_DXT_MODULE=1
+AC_ARG_ENABLE(dxt-mod,
+              AS_HELP_STRING([--disable-dxt-mod], [Disables compilation and use of DXT module]))
+AS_IF([test "x$enable_dxt_mod" = "xno"],
+      BUILD_DXT_MODULE=)
+
 AC_ARG_ENABLE(
     [bgq-mod],
     [  --disable-bgq-mod       Disables compilation and use of BG/Q module (for BG/Q systems)],
@@ -237,11 +294,11 @@ CFLAGS="$old_cflags"
 
 AC_CHECK_HEADERS(mntent.h sys/mount.h)
 
-# We need to know the value of the $libdir and $bindir variables so that 
-# we can reference the correct path in the darshan compiler wrappers.  
-# Unfortunately, those two variables are not normally evaluated by autoconf.  
-# They are evaluated at build time using Makefile variable substitutions.  
-# 
+# We need to know the value of the $libdir and $bindir variables so that
+# we can reference the correct path in the darshan compiler wrappers.
+# Unfortunately, those two variables are not normally evaluated by autoconf.
+# They are evaluated at build time using Makefile variable substitutions.
+#
 # The following logic was copied from mpich2 1.3.1 to resolve the $libdir
 # variable at configure time.
 #
@@ -299,6 +356,11 @@ AS_IF([test "x$enable_mdhim" = "xyes"],
 
       )
 
+#
+# Begin tests for MPI-enabled builds
+#
+
+AS_IF([test "x$ENABLE_MPI" = "x1"], [
 
 # determine if the MPI library includes MPI-IO functions or not
 AC_MSG_CHECKING(for MPI-IO support in MPI)
@@ -308,11 +370,9 @@ AC_TRY_LINK([#include <mpi.h>], [
     int amode;
     MPI_Info info;
     MPI_File fh;
-    MPI_File_open(comm, filename, amode, info, &fh);
-],
+            MPI_File_open(comm, filename, amode, info, &fh);],
     AC_MSG_RESULT(yes),
-    AC_MSG_ERROR(Darshan requires a version of MPI with MPI-IO support)
-)
+            AC_MSG_ERROR(Darshan requires a version of MPI with MPI-IO support))
 
 # At some point MPI-IO converted most API functions to be const correct.  We
 # need to test for this to determine how to define MPI-IO wrappers in
@@ -321,7 +381,7 @@ AC_MSG_CHECKING(for MPI-IO prototypes without const qualifier)
 AC_TRY_COMPILE(
     [
     #include <mpi.h>
-    int MPI_File_open(MPI_Comm comm, char *filename, int amode, 
+    int MPI_File_open(MPI_Comm comm, char *filename, int amode,
         MPI_Info info, MPI_File *fh)
         {return 0;}
     ],
@@ -335,7 +395,7 @@ AC_TRY_COMPILE(
     AC_TRY_COMPILE(
         [
         #include <mpi.h>
-        int MPI_File_open(MPI_Comm comm, const char *filename, int amode, 
+        int MPI_File_open(MPI_Comm comm, const char *filename, int amode,
             MPI_Info info, MPI_File *fh)
             {return 0;}
         ],
@@ -365,27 +425,32 @@ AC_TRY_LINK([#include <mpi.h>], [
 CFLAGS="$old_cflags"
 LIBS="$old_libs"
 
-# if this version of mpi defines an MPIO_Request type, then we assume that 
-# we should use it in the nonblocking MPI-IO functions.  This is necessary 
-# for MPI 1.x implementations that did not use generalized requests yet in 
+# if this version of mpi defines an MPIO_Request type, then we assume that
+# we should use it in the nonblocking MPI-IO functions.  This is necessary
+# for MPI 1.x implementations that did not use generalized requests yet in
 # MPI-IO.  Later MPI implementations might typedef MPIO_Request to MPI_Request
 # so there is no  harm in using the former if it is available there.
-AC_CHECK_TYPE([MPIO_Request], 
+AC_CHECK_TYPE([MPIO_Request],
 		AC_DEFINE(__D_MPI_REQUEST, MPIO_Request, Generalized request type for MPI-IO)
-	, 
+	,
 		AC_DEFINE(__D_MPI_REQUEST, MPI_Request, Generalized request type for MPI-IO)
 	,[#include <mpi.h>])
 
 # attempt to detect library naming convention in mpi compiler script
 AS_IF([$CC -show foo.c -o foo >& /dev/null],
 	AC_MSG_CHECKING(for old (pre-3.1.1) style MPICH library naming convention)
-	AS_IF([$CC -show foo.c -o foo |grep lmpich >& /dev/null], 
+	AS_IF([$CC -show foo.c -o foo |grep lmpich >& /dev/null],
 	    AC_MSG_RESULT(yes)
 	    MPICH_LIB_OLD=1,
 	    AC_MSG_RESULT(no)
 	    MPICH_LIB_OLD=0),
 	MPICH_LIB_OLD=0)
 
+])
+#
+# End of MPI-only checks
+#
+
 DARSHAN_VERSION="AC_PACKAGE_VERSION"
 AC_SUBST(darshan_lib_path)
 AC_SUBST(darshan_share_path)
@@ -399,6 +464,15 @@ AC_SUBST(DARSHAN_USE_BGQ)
 AC_SUBST(DARSHAN_USE_LUSTRE)
 AC_SUBST(BUILD_HDF5_MODULE)
 AC_SUBST(DARSHAN_HDF5_LD_OPTS)
+AC_SUBST(BUILD_POSIX_MODULE)
+AC_SUBST(DARSHAN_POSIX_LD_OPTS)
+AC_SUBST(BUILD_MPIIO_MODULE)
+AC_SUBST(DARSHAN_MPIIO_LD_OPTS)
+AC_SUBST(BUILD_PNETCDF_MODULE)
+AC_SUBST(DARSHAN_PNETCDF_LD_OPTS)
+AC_SUBST(BUILD_STDIO_MODULE)
+AC_SUBST(DARSHAN_STDIO_LD_OPTS)
+AC_SUBST(BUILD_DXT_MODULE)
 AC_SUBST(BUILD_MDHIM_MODULE)
 AC_SUBST(DARSHAN_MDHIM_LD_OPTS)
 AC_OUTPUT(Makefile
@@ -418,3 +492,22 @@ share/mpi-profile/darshan-bg-cxx.conf
 share/mpi-profile/darshan-bg-f.conf
 share/ld-opts/darshan-base-ld-opts
 )
+
+AC_MSG_NOTICE(Building Darshan with the following features:)
+AS_IF([test "x$BUILD_POSIX_MODULE" = "x"],   [AC_MSG_NOTICE(POSIX module support:   no)], [AC_MSG_NOTICE(POSIX module support:   yes)])
+AS_IF([test "x$BUILD_MPIIO_MODULE" = "x"],   [AC_MSG_NOTICE(MPIIO module support:   no)], [AC_MSG_NOTICE(MPIIO module support:   yes)])
+AS_IF([test "x$BUILD_STDIO_MODULE" = "x"],   [AC_MSG_NOTICE(STDIO module support:   no)], [AC_MSG_NOTICE(STDIO module support:   yes)])
+AS_IF([test "x$BUILD_PNETCDF_MODULE" = "x"], [AC_MSG_NOTICE(PnetCDF module support: no)], [AC_MSG_NOTICE(PnetCDF module support: yes)])
+AS_IF(
+    [test "x$BUILD_HDF5_MODULE" = "x"],
+    [AC_MSG_NOTICE(HDF5 module support:    no)],
+    [AS_IF(
+        [test "x$BUILD_HDF5_PRE110" = "x1"],
+        [AC_MSG_NOTICE(HDF5 module support:    1.10+)],
+        [AC_MSG_NOTICE(HDF5 module support:    pre-1.10)]
+    )],
+)
+AS_IF([test "x$BUILD_DXT_MODULE" = "x"],    [AC_MSG_NOTICE(DXT module support:     no)], [AC_MSG_NOTICE(DXT module support:     yes)])
+AS_IF([test "x$DARSHAN_USE_MDHIM" = "x"],   [AC_MSG_NOTICE(MDHIM module support:   no)], [AC_MSG_NOTICE(MDHIM module support:   yes)])
+AS_IF([test "x$DARSHAN_USE_LUSTRE" = "x"],  [AC_MSG_NOTICE(Lustre module support:  no)], [AC_MSG_NOTICE(Lustre module support:  yes)])
+AS_IF([test "x$DARSHAN_USE_BGQ" = "x"],     [AC_MSG_NOTICE(BG/Q module support:    no)], [AC_MSG_NOTICE(BG/Q module support:    yes)])



View it on GitLab: https://xgitlab.cels.anl.gov/darshan/darshan/commit/54bd3e2d470459f616869b062d9853da18f75be8

-- 
View it on GitLab: https://xgitlab.cels.anl.gov/darshan/darshan/commit/54bd3e2d470459f616869b062d9853da18f75be8
You're receiving this email because of your account on xgitlab.cels.anl.gov.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/darshan-commits/attachments/20190730/31a636d4/attachment-0001.html>


More information about the Darshan-commits mailing list