diff --git a/SharedForward.h.in b/SharedForward.h.in
index c6f345f258df32532c35b578d7340966222ea2ce..f22fa580a21694f779cf995b03fa5466d953e3e0 100644
--- a/SharedForward.h.in
+++ b/SharedForward.h.in
@@ -65,6 +65,15 @@
   See the comments below for specific explanations of each macro.
 */
 
+/* Disable -Wcast-qual warnings since they are too hard to fix in a
+   cross-platform way.  */
+#if defined(__clang__) && defined(__has_warning)
+# if __has_warning("-Wcast-qual")
+#  pragma clang diagnostic push
+#  pragma clang diagnostic ignored "-Wcast-qual"
+# endif
+#endif
+
 /*--------------------------------------------------------------------------*/
 
 /* Full path to the directory in which this executable is built.  Do
@@ -917,6 +926,13 @@ static int @KWSYS_NAMESPACE@_shared_forward_to_real(int argc, char** argv_in)
   return 1;
 }
 
+/* Restore warning stack.  */
+#if defined(__clang__) && defined(__has_warning)
+# if __has_warning("-Wcast-qual")
+#  pragma clang diagnostic pop
+# endif
+#endif
+
 #else
 # error "@KWSYS_NAMESPACE@/SharedForward.h should be included only once."
 #endif