diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4271ad9a6abfb5b5fbf226c72b107ddbd1e8764b..ae578587cc95c2802449d5b9dc98ee012dbf523b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -175,6 +175,11 @@ ELSE(KWSYS_IOS_USE_SSTREAM)
   ENDIF(KWSYS_IOS_USE_STRSTREAM_H)
 ENDIF(KWSYS_IOS_USE_SSTREAM)
 
+IF(UNIX)
+  KWSYS_PLATFORM_CXX_TEST(KWSYS_STAT_HAS_ST_MTIM
+    "Checking whether struct stat has st_mtim member" DIRECT)
+ENDIF(UNIX)
+
 IF(KWSYS_NAMESPACE MATCHES "^kwsys$")
   SET(KWSYS_NAME_IS_KWSYS 1)
 ELSE(KWSYS_NAMESPACE MATCHES "^kwsys$")
diff --git a/Configure.hxx.in b/Configure.hxx.in
index de939671c1d83510e95c4a04fdb7f04d1e983285..3c48339f31f2d1dfa21401f240adab8cbb544b3f 100644
--- a/Configure.hxx.in
+++ b/Configure.hxx.in
@@ -54,6 +54,9 @@
 # define @KWSYS_NAMESPACE@_ios @KWSYS_NAMESPACE@_ios
 #endif
 
+/* Whether struct stat has the st_mtim member for high resolution times.  */
+#define @KWSYS_NAMESPACE@_STAT_HAS_ST_MTIM @KWSYS_STAT_HAS_ST_MTIM@
+
 /* If building a C++ file in kwsys itself, give the source file
    access to the macros without a configured namespace.  */
 #if defined(KWSYS_NAMESPACE)
@@ -68,6 +71,7 @@
 # define KWSYS_IOS_USE_SSTREAM     @KWSYS_NAMESPACE@_IOS_USE_SSTREAM
 # define KWSYS_IOS_USE_STRSTREAM_H @KWSYS_NAMESPACE@_IOS_USE_STRSTREAM_H
 # define KWSYS_IOS_USE_STRSTREA_H  @KWSYS_NAMESPACE@_IOS_USE_STRSTREA_H
+# define KWSYS_STAT_HAS_ST_MTIM    @KWSYS_NAMESPACE@_STAT_HAS_ST_MTIM
 #endif
 
 #endif
diff --git a/kwsysPlatformCxxTests.cxx b/kwsysPlatformCxxTests.cxx
index e43bde55e665ed6ece1dd8fd9311d9ce51ca4240..a799c509e381a942441b92acd7b238e40a236d48 100644
--- a/kwsysPlatformCxxTests.cxx
+++ b/kwsysPlatformCxxTests.cxx
@@ -29,3 +29,16 @@ int main() { return 0; }
 #include <strstrea.h>
 int main() { return 0; }
 #endif
+
+#ifdef TEST_KWSYS_STAT_HAS_ST_MTIM
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+int main()
+{
+  struct stat stat1;
+  (void)stat1.st_mtim.tv_sec;
+  (void)stat1.st_mtim.tv_nsec;
+  return 0;
+}
+#endif