build using c-ares own cmake
diff --git a/templates/CMakeLists.txt.template b/templates/CMakeLists.txt.template
index f9e9f84..8778599 100644
--- a/templates/CMakeLists.txt.template
+++ b/templates/CMakeLists.txt.template
@@ -177,26 +177,13 @@
 
   if("<%text>${gRPC_CARES_PROVIDER}</%text>" STREQUAL "module")
     if(NOT CARES_ROOT_DIR)
-      set(CARES_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/src/c-ares)
+      set(CARES_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/cares/cares)
     endif()
-    string(TOLOWER <%text>${CMAKE_SYSTEM_NAME}</%text> CARES_SYSTEM_NAME)
+    set(CARES_STATIC ON)
     set(CARES_INCLUDE_DIR "<%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/cares/cares")
-    set(CARES_BUILD_INCLUDE_DIR "<%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/cares")
-    set(CARES_PLATFORM_INCLUDE_DIR "<%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/cares/config_<%text>${CARES_SYSTEM_NAME}</%text>")
-    if(EXISTS "<%text>${CARES_ROOT_DIR}</%text>/CMakeLists.txt")
-      if("<%text>${CARES_SYSTEM_NAME}</%text>" MATCHES "windows")
-        add_definitions(-DCARES_STATICLIB=1)
-        add_definitions(-DWIN32_LEAN_AND_MEAN=1)
-      else()
-        add_definitions(-DHAVE_CONFIG_H=1)
-        add_definitions(-D_GNU_SOURCE=1)
-      endif()
-      add_subdirectory(src/c-ares third_party/cares)
-      if(TARGET cares)
-          set(_gRPC_CARES_LIBRARIES cares)
-      endif()
-    else()
-      message(WARNING "gRPC_CARES_PROVIDER is \"module\" but CARES_ROOT_DIR is wrong")
+    add_subdirectory(third_party/cares/cares)
+    if(TARGET c-ares_static)
+      set(_gRPC_CARES_LIBRARIES c-ares_static)
     endif()
     if(gRPC_INSTALL)
       message(WARNING "gRPC_INSTALL will be forced to FALSE because gRPC_CARES_PROVIDER is \"module\"")
@@ -532,9 +519,7 @@
     PRIVATE <%text>${ZLIB_INCLUDE_DIR}</%text>
     PRIVATE <%text>${BENCHMARK}</%text>/include
     PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/zlib
-    PRIVATE <%text>${CARES_BUILD_INCLUDE_DIR}</%text>
     PRIVATE <%text>${CARES_INCLUDE_DIR}</%text>
-    PRIVATE <%text>${CARES_PLATFORM_INCLUDE_DIR}</%text>
     PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/cares/cares
     PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/gflags/include
   % if lib.build in ['test', 'private'] and lib.language == 'c++':
@@ -605,9 +590,7 @@
     PRIVATE <%text>${BENCHMARK_ROOT_DIR}</%text>/include
     PRIVATE <%text>${ZLIB_ROOT_DIR}</%text>
     PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/zlib
-    PRIVATE <%text>${CARES_BUILD_INCLUDE_DIR}</%text>
     PRIVATE <%text>${CARES_INCLUDE_DIR}</%text>
-    PRIVATE <%text>${CARES_PLATFORM_INCLUDE_DIR}</%text>
     PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/cares/cares
     PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/gflags/include
   % if tgt.build in ['test', 'private'] and tgt.language == 'c++':