GEODE-7235: Add backwards compatibility for Clang (#533)

* GEODE-7235: Support Clang version less than 11

- One of the new flags added for Clang 11 support was not available to earlier versions

Co-authored-by: Michael Oleske <moleske@pivotal.io>
Co-authored-by: Ivan Godwin <igodwin@pivotal.io>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0c12822..c1e6b38 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -191,10 +191,6 @@
   target_compile_definitions(c++11 INTERFACE __STDC_FORMAT_MACROS)
 endif()
 
-if ("Darwin" STREQUAL ${CMAKE_SYSTEM_NAME} )
-  set(DISABLED_MAC_WARNINGS  -Wno-defaulted-function-deleted -Wno-c++2a-compat)
-endif()
-
 if(CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
   # Force linker to error on undefined symbols in shared libraries
   set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z defs")
@@ -230,6 +226,15 @@
   endif()
 
 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+  check_cxx_compiler_flag(-Wno-defaulted-function-deleted CXXFLAGS_NO_DEFAULTED_FUNCTION_DELETED_ALLOWED)
+  if( CXXFLAGS_NO_DEFAULTED_FUNCTION_DELETED_ALLOWED )
+    set(DISABLED_NO_DEFAULTED_FUNCTION_DELETED_ALLOWED -Wno-defaulted-function-deleted)
+  endif()
+
+  check_cxx_compiler_flag(-Wno-c++2a-compat CXXFLAGS_NO_C++2a_COMPAT_ALLOWED)
+  if( CXXFLAGS_NO_C++2a_COMPAT_ALLOWED )
+    set(DISABLED_NO_C++2a_COMPAT_ALLOWED -Wno-c++2a-compat)
+  endif()
   target_compile_options(_WarningsAsError INTERFACE
     -Werror
     -Wall
@@ -270,7 +275,8 @@
     -Wno-global-constructors
     -Wno-exit-time-destructors
     -Wno-documentation-unknown-command
-    ${DISABLED_MAC_WARNINGS}
+    ${DISABLED_NO_DEFAULTED_FUNCTION_DELETED_ALLOWED}
+    ${DISABLED_NO_C++2a_COMPAT_ALLOWED}
     )
 
   if (USE_CPP_COVERAGE)