diff --git a/Makefile b/Makefile
index ea5f78161d2644f213fab1793200f481b45014ae..f036c173fa743a9f3fd47f090444f0f3e8b1fe53 100644
--- a/Makefile
+++ b/Makefile
@@ -1241,16 +1241,17 @@ $(LIBDIR)/$(CONFIG)/protobuf/libprotobuf.a: third_party/protobuf/configure
 
 third_party/c-ares/configure:
 	$(E) "[AUTOGEN] Preparing c-ares"
-	$(Q)(cd third_party/c-ares; ./buildconf; ./configure)
+	$(Q)(cd third_party/c-ares; ./buildconf; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g $(CARES_LDFLAGS_EXTRA)" CPPFLAGS="$(PIC_CPPFLAGS) $(CPPFLAGS_$(CONFIG)) -g $(CARES_CPPFLAGS_EXTRA)" ./configure)
 
 $(LIBDIR)/$(CONFIG)/c-ares/libcares.a: third_party/c-ares/configure
 	$(E) "[MAKE]    Building c-ares"
-	$(Q)(cd third_party/c-ares ; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g $(CARES_LDFLAGS_EXTRA)" CPPFLAGS="$(PIC_CPPFLAGS) $(CPPFLAGS_$(CONFIG)) -g $(CARES_CPPFLAGS_EXTRA)" ./configure --disable-shared --enable-static)
 	$(Q)$(MAKE) -C third_party/c-ares clean
 	$(Q)$(MAKE) -C third_party/c-ares
 	$(Q)mkdir -p $(LIBDIR)/$(CONFIG)/c-ares
 	$(Q)cp third_party/c-ares/.libs/libcares.a $(LIBDIR)/$(CONFIG)/c-ares
 
+$(OBJDIR)/$(CONFIG)/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.o: third_party/c-ares/configure
+
 static: static_c static_cxx
 
 static_c: pc_c pc_c_unsecure cache.mk  $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgrpc_cronet.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a
diff --git a/src/core/ext/resolver/dns/c_ares/dns_resolver.c b/src/core/ext/resolver/dns/c_ares/dns_resolver.c
index da328bf4f0349c74c6ad57fe7dca78365556f3f3..29caac1d2011616fc5e40e0f963bafb8a4829007 100644
--- a/src/core/ext/resolver/dns/c_ares/dns_resolver.c
+++ b/src/core/ext/resolver/dns/c_ares/dns_resolver.c
@@ -38,7 +38,6 @@
 #include <grpc/support/host_port.h>
 #include <grpc/support/string_util.h>
 
-#include <ares.h>
 #include "src/core/ext/client_config/lb_policy_registry.h"
 #include "src/core/ext/client_config/resolver_registry.h"
 #include "src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h"
diff --git a/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c b/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
index 7d0b573045e1e01e16310163783af071561f7d9c..d64f01fbf9127334d743d99101201baa0db0f1e3 100644
--- a/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
+++ b/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
@@ -32,12 +32,19 @@
  */
 
 #include <grpc/support/port_platform.h>
-#ifdef GPR_POSIX_SOCKET
 
 #include "src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h"
 #include "src/core/lib/iomgr/ev_posix.h"
 #include "src/core/lib/iomgr/sockaddr.h"
 
+#ifdef GPR_POSIX_SOCKET
+#include <arpa/inet.h>
+#endif
+
+#ifdef GPR_WINSOCK_SOCKET
+#include <winsock2.h>
+#endif
+
 #include <string.h>
 #include <sys/types.h>
 
@@ -56,8 +63,6 @@
 #include "src/core/lib/support/block_annotate.h"
 #include "src/core/lib/support/string.h"
 
-#include <arpa/inet.h>
-
 typedef struct fd_pair {
   grpc_fd *grpc_fd;
   int fd;
@@ -386,5 +391,3 @@ void grpc_ares_init(void) {
     gpr_log(GPR_ERROR, "ares_library_init failed");
   }
 }
-
-#endif
diff --git a/templates/Makefile.template b/templates/Makefile.template
index d72daee9146199e20db3caa87c2e5ead36ec3c8e..27b6df6710103265d3ee19d7b23fc661a865f90a 100644
--- a/templates/Makefile.template
+++ b/templates/Makefile.template
@@ -884,16 +884,17 @@
 
   third_party/c-ares/configure:
   	$(E) "[AUTOGEN] Preparing c-ares"
-  	$(Q)(cd third_party/c-ares; ./buildconf; ./configure)
+  	$(Q)(cd third_party/c-ares; ./buildconf; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g $(CARES_LDFLAGS_EXTRA)" CPPFLAGS="$(PIC_CPPFLAGS) $(CPPFLAGS_$(CONFIG)) -g $(CARES_CPPFLAGS_EXTRA)" ./configure)
 
   $(LIBDIR)/$(CONFIG)/c-ares/libcares.a: third_party/c-ares/configure
   	$(E) "[MAKE]    Building c-ares"
-  	$(Q)(cd third_party/c-ares ; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g $(CARES_LDFLAGS_EXTRA)" CPPFLAGS="$(PIC_CPPFLAGS) $(CPPFLAGS_$(CONFIG)) -g $(CARES_CPPFLAGS_EXTRA)" ./configure --disable-shared --enable-static)
   	$(Q)$(MAKE) -C third_party/c-ares clean
   	$(Q)$(MAKE) -C third_party/c-ares
   	$(Q)mkdir -p $(LIBDIR)/$(CONFIG)/c-ares
   	$(Q)cp third_party/c-ares/.libs/libcares.a $(LIBDIR)/$(CONFIG)/c-ares
 
+  $(OBJDIR)/$(CONFIG)/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.o: third_party/c-ares/configure
+
   static: static_c static_cxx
 
   static_c: pc_c pc_c_unsecure cache.mk \