diff --git a/kwsysPlatformCxxTests.cmake b/kwsysPlatformCxxTests.cmake
index 777545736c91289f5a421f114ad37d9279698880..d08bfd0c8a381f0c1c1d5c719957a11b664be5ea 100644
--- a/kwsysPlatformCxxTests.cmake
+++ b/kwsysPlatformCxxTests.cmake
@@ -43,3 +43,75 @@ MACRO(KWSYS_PLATFORM_CXX_TEST var description invert)
     ENDIF(${var}_COMPILED)
   ENDIF(${invert} MATCHES INVERT)
 ENDMACRO(KWSYS_PLATFORM_CXX_TEST)
+
+MACRO(KWSYS_PLATFORM_CXX_TEST_RUN var description invert)
+  IF("${var}" MATCHES "^${var}$")
+    MESSAGE(STATUS "${description}")
+    TRY_RUN(${var} ${var}_COMPILED
+      ${CMAKE_CURRENT_BINARY_DIR}
+      ${CMAKE_CURRENT_SOURCE_DIR}/kwsysPlatformCxxTests.cxx
+      COMPILE_DEFINITIONS -DTEST_${var} ${KWSYS_PLATFORM_CXX_TEST_DEFINES}
+      OUTPUT_VARIABLE OUTPUT)
+
+    # Note that ${var} will be a 0 return value on success.
+    IF(${var}_COMPILED)
+      IF(${var})
+        FILE(APPEND
+          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+          "${description} compiled but failed to run with the following output:\n${OUTPUT}\n\n")
+      ELSE(${var})
+        FILE(APPEND
+          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+          "${description} compiled and ran with the following output:\n${OUTPUT}\n\n")
+      ENDIF(${var})
+    ELSE(${var}_COMPILED)
+      FILE(APPEND
+        ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "${description} failed to compile with the following output:\n${OUTPUT}\n\n")
+    ENDIF(${var}_COMPILED)
+
+    IF(${invert} MATCHES INVERT)
+      IF(${var}_COMPILED)
+        IF(${var})
+          MESSAGE(STATUS "${description} - yes")
+        ELSE(${var})
+          MESSAGE(STATUS "${description} - no")
+        ENDIF(${var})
+      ELSE(${var}_COMPILED)
+        MESSAGE(STATUS "${description} - failed to compile")
+      ENDIF(${var}_COMPILED)
+    ELSE(${invert} MATCHES INVERT)
+      IF(${var}_COMPILED)
+        IF(${var})
+          MESSAGE(STATUS "${description} - no")
+        ELSE(${var})
+          MESSAGE(STATUS "${description} - yes")
+        ENDIF(${var})
+      ELSE(${var}_COMPILED)
+        MESSAGE(STATUS "${description} - failed to compile")
+      ENDIF(${var}_COMPILED)
+    ENDIF(${invert} MATCHES INVERT)
+  ENDIF("${var}" MATCHES "^${var}$")
+
+  IF(${invert} MATCHES INVERT)
+    IF(${var}_COMPILED)
+      IF(${var})
+        SET(${var} 1)
+      ELSE(${var})
+        SET(${var} 0)
+      ENDIF(${var})
+    ELSE(${var}_COMPILED)
+      SET(${var} 1)
+    ENDIF(${var}_COMPILED)
+  ELSE(${invert} MATCHES INVERT)
+    IF(${var}_COMPILED)
+      IF(${var})
+        SET(${var} 0)
+      ELSE(${var})
+        SET(${var} 1)
+      ENDIF(${var})
+    ELSE(${var}_COMPILED)
+      SET(${var} 0)
+    ENDIF(${var}_COMPILED)
+  ENDIF(${invert} MATCHES INVERT)
+ENDMACRO(KWSYS_PLATFORM_CXX_TEST_RUN)