Merge github.com:grpc/grpc into c++api

Conflicts:
	Makefile
pull/501/head
Craig Tiller 10 years ago
commit 1f1b630fe7
  1. 8065
      Makefile
  2. 7
      build.json
  3. 14
      src/core/iomgr/resolve_address.c
  4. 2
      src/core/iomgr/sockaddr_utils.c
  5. 6
      src/core/iomgr/tcp_client_posix.c
  6. 14
      src/core/iomgr/tcp_server_posix.c
  7. 14
      src/core/transport/chttp2_transport.c
  8. 46
      src/core/transport/stream_op.c
  9. 6
      src/core/transport/stream_op.h
  10. 197
      templates/Makefile.template
  11. 79
      templates/vsprojects/vs2013/Grpc.mak.template
  12. 40
      templates/vsprojects/vs2013/build_and_run_tests.bat.template
  13. 123
      test/core/end2end/fixtures/chttp2_fullstack_uds.c
  14. 1
      test/core/end2end/gen_build_json.py
  15. 192
      tools/run_tests/tests.json
  16. 652
      vsprojects/vs2013/Grpc.mak
  17. 123
      vsprojects/vs2013/build_and_run_tests.bat
  18. 5
      vsprojects/vs2013/gpr_test_util.vcxproj
  19. 7
      vsprojects/vs2013/grpc.sln
  20. 8
      vsprojects/vs2013/grpc_test_util.vcxproj
  21. 7
      vsprojects/vs2013/make.bat

8065
Makefile

File diff suppressed because one or more lines are too long

@ -292,6 +292,9 @@
"src": [
"test/core/util/test_config.c"
],
"deps": [
"gpr"
],
"vs_project_guid": "{EAB0A629-17A9-44DB-B5FF-E91A721FE037}"
},
{
@ -370,6 +373,10 @@
"test/core/util/port_posix.c",
"test/core/util/slice_splitter.c"
],
"deps": [
"gpr",
"grpc"
],
"vs_project_guid": "{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}"
},
{

@ -39,6 +39,7 @@
#include "src/core/iomgr/resolve_address.h"
#include <sys/types.h>
#include <sys/un.h>
#include <string.h>
#include "src/core/iomgr/iomgr_internal.h"
@ -123,6 +124,19 @@ grpc_resolved_addresses *grpc_blocking_resolve_address(
size_t i;
grpc_resolved_addresses *addrs = NULL;
const gpr_timespec start_time = gpr_now();
struct sockaddr_un *un;
if (name[0] == 'u' && name[1] == 'n' && name[2] == 'i' && name[3] == 'x' &&
name[4] == ':' && name[5] != 0) {
addrs = gpr_malloc(sizeof(grpc_resolved_addresses));
addrs->naddrs = 1;
addrs->addrs = gpr_malloc(sizeof(grpc_resolved_address));
un = (struct sockaddr_un *)addrs->addrs->addr;
un->sun_family = AF_UNIX;
strcpy(un->sun_path, name + 5);
addrs->addrs->len = strlen(un->sun_path) + sizeof(un->sun_family);
return addrs;
}
/* parse name, splitting it into host and port parts */
split_host_port(name, &host, &port);

@ -166,6 +166,8 @@ int grpc_sockaddr_get_port(const struct sockaddr *addr) {
return ntohs(((struct sockaddr_in *)addr)->sin_port);
case AF_INET6:
return ntohs(((struct sockaddr_in6 *)addr)->sin6_port);
case AF_UNIX:
return 1;
default:
gpr_log(GPR_ERROR, "Unknown socket family %d in %s", addr->sa_family,
__FUNCTION__);

@ -62,13 +62,13 @@ typedef struct {
int refs;
} async_connect;
static int prepare_socket(int fd) {
static int prepare_socket(const struct sockaddr *addr, int fd) {
if (fd < 0) {
goto error;
}
if (!grpc_set_socket_nonblocking(fd, 1) || !grpc_set_socket_cloexec(fd, 1) ||
!grpc_set_socket_low_latency(fd, 1)) {
(addr->sa_family != AF_UNIX && !grpc_set_socket_low_latency(fd, 1))) {
gpr_log(GPR_ERROR, "Unable to configure socket %d: %s", fd,
strerror(errno));
goto error;
@ -200,7 +200,7 @@ void grpc_tcp_client_connect(void (*cb)(void *arg, grpc_endpoint *ep),
addr = (struct sockaddr *)&addr4_copy;
addr_len = sizeof(addr4_copy);
}
if (!prepare_socket(fd)) {
if (!prepare_socket(addr, fd)) {
cb(arg, NULL);
return;
}

@ -48,12 +48,14 @@
#include <netinet/tcp.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/un.h>
#include <sys/socket.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include "src/core/iomgr/pollset_posix.h"
#include "src/core/iomgr/resolve_address.h"
#include "src/core/iomgr/sockaddr_utils.h"
#include "src/core/iomgr/socket_utils_posix.h"
#include "src/core/iomgr/tcp_posix.h"
@ -73,6 +75,8 @@ typedef struct {
int fd;
grpc_fd *emfd;
grpc_tcp_server *server;
gpr_uint8 addr[GRPC_MAX_SOCKADDR_SIZE];
int addr_len;
} server_port;
/* the overall server */
@ -121,6 +125,10 @@ void grpc_tcp_server_destroy(grpc_tcp_server *s) {
/* delete ALL the things */
for (i = 0; i < s->nports; i++) {
server_port *sp = &s->ports[i];
if (((struct sockaddr *)sp->addr)->sa_family == AF_UNIX) {
struct sockaddr_un *un = (struct sockaddr_un *)sp->addr;
unlink(un->sun_path);
}
grpc_fd_orphan(sp->emfd, NULL, NULL);
}
gpr_free(s->ports);
@ -170,8 +178,8 @@ static int prepare_socket(int fd, const struct sockaddr *addr, int addr_len) {
}
if (!grpc_set_socket_nonblocking(fd, 1) || !grpc_set_socket_cloexec(fd, 1) ||
!grpc_set_socket_low_latency(fd, 1) ||
!grpc_set_socket_reuse_addr(fd, 1)) {
(addr->sa_family != AF_UNIX && (!grpc_set_socket_low_latency(fd, 1) ||
!grpc_set_socket_reuse_addr(fd, 1)))) {
gpr_log(GPR_ERROR, "Unable to configure socket %d: %s", fd,
strerror(errno));
goto error;
@ -265,6 +273,8 @@ static int add_socket_to_server(grpc_tcp_server *s, int fd,
sp->server = s;
sp->fd = fd;
sp->emfd = grpc_fd_create(fd);
memcpy(sp->addr, addr, addr_len);
sp->addr_len = addr_len;
GPR_ASSERT(sp->emfd);
gpr_mu_unlock(&s->mu);
}

@ -685,10 +685,11 @@ static void unlock(transport *t) {
int i;
pending_goaway *goaways = NULL;
grpc_endpoint *ep = t->ep;
grpc_stream_op_buffer nuke_now = t->nuke_later_sopb;
grpc_stream_op_buffer nuke_now;
if (nuke_now.nops) {
memset(&t->nuke_later_sopb, 0, sizeof(t->nuke_later_sopb));
grpc_sopb_init(&nuke_now);
if (t->nuke_later_sopb.nops) {
grpc_sopb_swap(&nuke_now, &t->nuke_later_sopb);
}
/* see if we need to trigger a write - and if so, get the data ready */
@ -758,9 +759,7 @@ static void unlock(transport *t) {
unref_transport(t);
}
if (nuke_now.nops) {
grpc_sopb_destroy(&nuke_now);
}
gpr_free(goaways);
}
@ -1701,13 +1700,10 @@ static grpc_stream_state compute_state(gpr_uint8 write_closed,
static int prepare_callbacks(transport *t) {
stream *s;
grpc_stream_op_buffer temp_sopb;
int n = 0;
while ((s = stream_list_remove_head(t, PENDING_CALLBACKS))) {
int execute = 1;
temp_sopb = s->parser.incoming_sopb;
s->parser.incoming_sopb = s->callback_sopb;
s->callback_sopb = temp_sopb;
grpc_sopb_swap(&s->parser.incoming_sopb, &s->callback_sopb);
s->callback_state = compute_state(s->sent_write_closed, s->read_closed);
if (s->callback_state == GRPC_STREAM_CLOSED) {

@ -38,23 +38,19 @@
#include <string.h>
/* Initial number of operations to allocate */
#define INITIAL_SLOTS 8
/* Exponential growth function: Given x, return a larger x.
Currently we grow by 1.5 times upon reallocation.
Assumes INITIAL_SLOTS > 1 */
Currently we grow by 1.5 times upon reallocation. */
#define GROW(x) (3 * (x) / 2)
void grpc_sopb_init(grpc_stream_op_buffer *sopb) {
sopb->ops = gpr_malloc(sizeof(grpc_stream_op) * INITIAL_SLOTS);
GPR_ASSERT(sopb->ops);
sopb->ops = sopb->inlined_ops;
sopb->nops = 0;
sopb->capacity = INITIAL_SLOTS;
sopb->capacity = GRPC_SOPB_INLINE_ELEMENTS;
}
void grpc_sopb_destroy(grpc_stream_op_buffer *sopb) {
grpc_stream_ops_unref_owned_objects(sopb->ops, sopb->nops);
gpr_free(sopb->ops);
if (sopb->ops != sopb->inlined_ops) gpr_free(sopb->ops);
}
void grpc_sopb_reset(grpc_stream_op_buffer *sopb) {
@ -62,6 +58,19 @@ void grpc_sopb_reset(grpc_stream_op_buffer *sopb) {
sopb->nops = 0;
}
void grpc_sopb_swap(grpc_stream_op_buffer *a, grpc_stream_op_buffer *b) {
grpc_stream_op_buffer temp = *a;
*a = *b;
*b = temp;
if (a->ops == b->inlined_ops) {
a->ops = a->inlined_ops;
}
if (b->ops == a->inlined_ops) {
b->ops = b->inlined_ops;
}
}
void grpc_stream_ops_unref_owned_objects(grpc_stream_op *ops, size_t nops) {
size_t i;
for (i = 0; i < nops; i++) {
@ -84,17 +93,21 @@ void grpc_stream_ops_unref_owned_objects(grpc_stream_op *ops, size_t nops) {
}
}
static void expand(grpc_stream_op_buffer *sopb) {
sopb->capacity = GROW(sopb->capacity);
sopb->ops = gpr_realloc(sopb->ops, sizeof(grpc_stream_op) * sopb->capacity);
GPR_ASSERT(sopb->ops);
static void expandto(grpc_stream_op_buffer *sopb, size_t new_capacity) {
sopb->capacity = new_capacity;
if (sopb->ops == sopb->inlined_ops) {
sopb->ops = gpr_malloc(sizeof(grpc_stream_op) * new_capacity);
memcpy(sopb->ops, sopb->inlined_ops, sopb->nops * sizeof(grpc_stream_op));
} else {
sopb->ops = gpr_realloc(sopb->ops, sizeof(grpc_stream_op) * new_capacity);
}
}
static grpc_stream_op *add(grpc_stream_op_buffer *sopb) {
grpc_stream_op *out;
if (sopb->nops == sopb->capacity) {
expand(sopb);
expandto(sopb, GROW(sopb->capacity));
}
out = sopb->ops + sopb->nops;
sopb->nops++;
@ -152,12 +165,7 @@ void grpc_sopb_append(grpc_stream_op_buffer *sopb, grpc_stream_op *ops,
size_t new_nops = orig_nops + nops;
if (new_nops > sopb->capacity) {
size_t new_capacity = GROW(sopb->capacity);
if (new_capacity < new_nops) {
new_capacity = new_nops;
}
sopb->ops = gpr_realloc(sopb->ops, sizeof(grpc_stream_op) * new_capacity);
sopb->capacity = new_capacity;
expandto(sopb, GPR_MAX(GROW(sopb->capacity), new_nops));
}
memcpy(sopb->ops + orig_nops, ops, sizeof(grpc_stream_op) * nops);

@ -40,6 +40,9 @@
#include <grpc/support/time.h>
#include "src/core/transport/metadata.h"
/* this many stream ops are inlined into a sopb before allocating */
#define GRPC_SOPB_INLINE_ELEMENTS 16
/* Operations that can be performed on a stream.
Used by grpc_stream_op. */
typedef enum grpc_stream_op_code {
@ -96,6 +99,7 @@ typedef struct grpc_stream_op_buffer {
grpc_stream_op *ops;
size_t nops;
size_t capacity;
grpc_stream_op inlined_ops[GRPC_SOPB_INLINE_ELEMENTS];
} grpc_stream_op_buffer;
/* Initialize a stream op buffer */
@ -104,6 +108,8 @@ void grpc_sopb_init(grpc_stream_op_buffer *sopb);
void grpc_sopb_destroy(grpc_stream_op_buffer *sopb);
/* Reset a sopb to no elements */
void grpc_sopb_reset(grpc_stream_op_buffer *sopb);
/* Swap two sopbs */
void grpc_sopb_swap(grpc_stream_op_buffer *a, grpc_stream_op_buffer *b);
void grpc_stream_ops_unref_owned_objects(grpc_stream_op *ops, size_t nops);

@ -16,7 +16,7 @@
m = proto_re.match(filename)
if not m:
return filename
return 'gens/' + m.group(1) + '.pb.cc'
return '$(GENDIR)/' + m.group(1) + '.pb.cc'
%>
@ -27,6 +27,15 @@ SYSTEM = $(HOST_SYSTEM)
endif
ifndef BUILDDIR
BUILDDIR = .
endif
BINDIR = $(BUILDDIR)/bins
OBJDIR = $(BUILDDIR)/objs
LIBDIR = $(BUILDDIR)/libs
GENDIR = $(BUILDDIR)/gens
# Configurations
VALID_CONFIG_opt = 1
@ -86,7 +95,7 @@ CC_msan = clang
CXX_msan = clang++-libc++
LD_msan = clang
LDXX_msan = clang++-libc++
CPPFLAGS_msan = -O1 -fsanitize=memory -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
CPPFLAGS_msan = -O1 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
OPENSSL_CFLAGS_msan = -DPURIFY
OPENSSL_CONFIG_msan = no-asm
LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
@ -154,7 +163,7 @@ CXXFLAGS += -std=c++11
CPPFLAGS += -g -fPIC -Wall -Wextra -Werror -Wno-long-long -Wno-unused-parameter
LDFLAGS += -g -fPIC
INCLUDES = . include gens
INCLUDES = . include $(GENDIR)
ifeq ($(SYSTEM),Darwin)
LIBS = m z
else
@ -261,9 +270,9 @@ endif
ifeq ($(HAS_SYSTEM_ZLIB),false)
ifeq ($(HAS_EMBEDDED_ZLIB),true)
ZLIB_DEP = libs/$(CONFIG)/zlib/libz.a
ZLIB_DEP = $(LIBDIR)/$(CONFIG)/zlib/libz.a
CPPFLAGS += -Ithird_party/zlib
LDFLAGS += -Llibs/$(CONFIG)/zlib
LDFLAGS += -L$(LIBDIR)/$(CONFIG)/zlib
else
DEP_MISSING += zlib
endif
@ -271,10 +280,10 @@ endif
ifeq ($(HAS_SYSTEM_OPENSSL_ALPN),false)
ifeq ($(HAS_EMBEDDED_OPENSSL_ALPN),true)
OPENSSL_DEP = libs/$(CONFIG)/openssl/libssl.a
OPENSSL_MERGE_LIBS += libs/$(CONFIG)/openssl/libssl.a libs/$(CONFIG)/openssl/libcrypto.a
OPENSSL_DEP = $(LIBDIR)/$(CONFIG)/openssl/libssl.a
OPENSSL_MERGE_LIBS += $(LIBDIR)/$(CONFIG)/openssl/libssl.a $(LIBDIR)/$(CONFIG)/openssl/libcrypto.a
CPPFLAGS += -Ithird_party/openssl/include
LDFLAGS += -Llibs/$(CONFIG)/openssl
LDFLAGS += -L$(LIBDIR)/$(CONFIG)/openssl
LIBS_SECURE = dl
else
NO_SECURE = true
@ -287,10 +296,10 @@ LDLIBS_SECURE += $(addprefix -l, $(LIBS_SECURE))
ifeq ($(HAS_SYSTEM_PROTOBUF),false)
ifeq ($(HAS_EMBEDDED_PROTOBUF),true)
PROTOBUF_DEP = libs/$(CONFIG)/protobuf/libprotobuf.a
PROTOBUF_DEP = $(LIBDIR)/$(CONFIG)/protobuf/libprotobuf.a
CPPFLAGS += -Ithird_party/protobuf/src
LDFLAGS += -Llibs/$(CONFIG)/protobuf
PROTOC = bins/$(CONFIG)/protobuf/protoc
LDFLAGS += -L$(LIBDIR)/$(CONFIG)/protobuf
PROTOC = $(BINDIR)/$(CONFIG)/protobuf/protoc
else
NO_PROTOBUF = true
endif
@ -312,7 +321,7 @@ endif
PROTOC_PLUGINS=\
% for tgt in targets:
% if tgt.build == 'protoc':
bins/$(CONFIG)/${tgt.name}\
$(BINDIR)/$(CONFIG)/${tgt.name}\
% endif
% endfor
@ -320,7 +329,7 @@ ifeq ($(DEP_MISSING),)
all: static shared\
% for tgt in targets:
% if tgt.build == 'all':
bins/$(CONFIG)/${tgt.name}\
$(BINDIR)/$(CONFIG)/${tgt.name}\
% endif
% endfor
@ -408,7 +417,7 @@ stop:
@false
% for tgt in targets:
${tgt.name}: bins/$(CONFIG)/${tgt.name}
${tgt.name}: $(BINDIR)/$(CONFIG)/${tgt.name}
% endfor
run_dep_checks:
@ -418,15 +427,15 @@ run_dep_checks:
$(PROTOBUF_CHECK_CMD) || true
$(PROTOC_CHECK_CMD) || true
libs/$(CONFIG)/zlib/libz.a:
$(LIBDIR)/$(CONFIG)/zlib/libz.a:
$(E) "[MAKE] Building zlib"
$(Q)(cd third_party/zlib ; CC="$(CC)" CFLAGS="-fPIC -fvisibility=hidden $(CPPFLAGS_$(CONFIG))" ./configure --static)
$(Q)$(MAKE) -C third_party/zlib clean
$(Q)$(MAKE) -C third_party/zlib
$(Q)mkdir -p libs/$(CONFIG)/zlib
$(Q)cp third_party/zlib/libz.a libs/$(CONFIG)/zlib
$(Q)mkdir -p $(LIBDIR)/$(CONFIG)/zlib
$(Q)cp third_party/zlib/libz.a $(LIBDIR)/$(CONFIG)/zlib
libs/$(CONFIG)/openssl/libssl.a:
$(LIBDIR)/$(CONFIG)/openssl/libssl.a:
$(E) "[MAKE] Building openssl for $(SYSTEM)"
ifeq ($(SYSTEM),Darwin)
$(Q)(cd third_party/openssl ; CC="$(CC) -fPIC -fvisibility=hidden $(CPPFLAGS_$(CONFIG)) $(OPENSSL_CFLAGS_$(CONFIG))" ./Configure darwin64-x86_64-cc $(OPENSSL_CONFIG_$(CONFIG)))
@ -435,30 +444,30 @@ else
endif
$(Q)$(MAKE) -C third_party/openssl clean
$(Q)$(MAKE) -C third_party/openssl build_crypto build_ssl
$(Q)mkdir -p libs/$(CONFIG)/openssl
$(Q)cp third_party/openssl/libssl.a third_party/openssl/libcrypto.a libs/$(CONFIG)/openssl
$(Q)mkdir -p $(LIBDIR)/$(CONFIG)/openssl
$(Q)cp third_party/openssl/libssl.a third_party/openssl/libcrypto.a $(LIBDIR)/$(CONFIG)/openssl
third_party/protobuf/configure:
$(E) "[AUTOGEN] Preparing protobuf"
$(Q)(cd third_party/protobuf ; autoreconf -f -i -Wall,no-obsolete)
libs/$(CONFIG)/protobuf/libprotobuf.a: third_party/protobuf/configure
$(LIBDIR)/$(CONFIG)/protobuf/libprotobuf.a: third_party/protobuf/configure
$(E) "[MAKE] Building protobuf"
$(Q)(cd third_party/protobuf ; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g" CXXFLAGS="-DLANG_CXX11 -std=c++11" CPPFLAGS="$(CPPFLAGS_$(CONFIG)) -g" ./configure --disable-shared --enable-static)
$(Q)$(MAKE) -C third_party/protobuf clean
$(Q)$(MAKE) -C third_party/protobuf
$(Q)mkdir -p libs/$(CONFIG)/protobuf
$(Q)mkdir -p bins/$(CONFIG)/protobuf
$(Q)cp third_party/protobuf/src/.libs/libprotoc.a libs/$(CONFIG)/protobuf
$(Q)cp third_party/protobuf/src/.libs/libprotobuf.a libs/$(CONFIG)/protobuf
$(Q)cp third_party/protobuf/src/protoc bins/$(CONFIG)/protobuf
$(Q)mkdir -p $(LIBDIR)/$(CONFIG)/protobuf
$(Q)mkdir -p $(BINDIR)/$(CONFIG)/protobuf
$(Q)cp third_party/protobuf/src/.libs/libprotoc.a $(LIBDIR)/$(CONFIG)/protobuf
$(Q)cp third_party/protobuf/src/.libs/libprotobuf.a $(LIBDIR)/$(CONFIG)/protobuf
$(Q)cp third_party/protobuf/src/protoc $(BINDIR)/$(CONFIG)/protobuf
static: static_c static_cxx
static_c: \
% for lib in libs:
% if lib.build == 'all' and lib.language == 'c':
libs/$(CONFIG)/lib${lib.name}.a\
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a\
% endif
% endfor
@ -466,7 +475,7 @@ static_c: \
static_cxx: \
% for lib in libs:
% if lib.build == 'all' and lib.language == 'c++':
libs/$(CONFIG)/lib${lib.name}.a\
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a\
% endif
% endfor
@ -476,7 +485,7 @@ shared: shared_c shared_cxx
shared_c: \
% for lib in libs:
% if lib.build == 'all' and lib.language == 'c':
libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
$(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
% endif
% endfor
@ -484,7 +493,7 @@ shared_c: \
shared_cxx: \
% for lib in libs:
% if lib.build == 'all' and lib.language == 'c++':
libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
$(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
% endif
% endfor
@ -494,7 +503,7 @@ privatelibs: privatelibs_c privatelibs_cxx
privatelibs_c: \
% for lib in libs:
% if lib.build == 'private' and lib.language == 'c':
libs/$(CONFIG)/lib${lib.name}.a\
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a\
% endif
% endfor
@ -502,7 +511,7 @@ privatelibs_c: \
privatelibs_cxx: \
% for lib in libs:
% if lib.build == 'private' and lib.language == 'c++':
libs/$(CONFIG)/lib${lib.name}.a\
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a\
% endif
% endfor
@ -512,7 +521,7 @@ buildtests: buildtests_c buildtests_cxx
buildtests_c: privatelibs_c\
% for tgt in targets:
% if tgt.build == 'test' and not tgt.language == 'c++':
bins/$(CONFIG)/${tgt.name}\
$(BINDIR)/$(CONFIG)/${tgt.name}\
% endif
% endfor
@ -520,7 +529,7 @@ buildtests_c: privatelibs_c\
buildtests_cxx: privatelibs_cxx\
% for tgt in targets:
% if tgt.build == 'test' and tgt.language == 'c++':
bins/$(CONFIG)/${tgt.name}\
$(BINDIR)/$(CONFIG)/${tgt.name}\
% endif
% endfor
@ -531,7 +540,7 @@ test_c: buildtests_c
% for tgt in targets:
% if tgt.build == 'test' and tgt.get('run', True) and not tgt.language == 'c++':
$(E) "[RUN] Testing ${tgt.name}"
$(Q) ./bins/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 )
$(Q) $(BINDIR)/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 )
% endif
% endfor
@ -540,7 +549,7 @@ test_cxx: buildtests_cxx
% for tgt in targets:
% if tgt.build == 'test' and tgt.get('run', True) and tgt.language == 'c++':
$(E) "[RUN] Testing ${tgt.name}"
$(Q) ./bins/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 )
$(Q) $(BINDIR)/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 )
% endif
% endfor
@ -548,7 +557,7 @@ test_cxx: buildtests_cxx
tools: privatelibs\
% for tgt in targets:
% if tgt.build == 'tool':
bins/$(CONFIG)/${tgt.name}\
$(BINDIR)/$(CONFIG)/${tgt.name}\
% endif
% endfor
@ -556,7 +565,7 @@ tools: privatelibs\
buildbenchmarks: privatelibs\
% for tgt in targets:
% if tgt.build == 'benchmark':
bins/$(CONFIG)/${tgt.name}\
$(BINDIR)/$(CONFIG)/${tgt.name}\
% endif
% endfor
@ -580,7 +589,7 @@ ifeq ($(CONFIG),opt)
% if lib.language == "c":
% if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.a"
$(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.a
$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a
% endif
% endif
% endfor
@ -592,7 +601,7 @@ ifeq ($(CONFIG),opt)
% if lib.language == "c++":
% if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.a"
$(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.a
$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a
% endif
% endif
% endfor
@ -604,7 +613,7 @@ ifeq ($(CONFIG),opt)
% if lib.language == "c":
% if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.so"
$(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
% endif
% endif
% endfor
@ -616,7 +625,7 @@ ifeq ($(CONFIG),opt)
% if lib.language == "c++":
% if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.so"
$(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
$(Q) $(STRIP) $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
% endif
% endif
% endfor
@ -624,32 +633,32 @@ endif
% for p in protos:
ifeq ($(NO_PROTOC),true)
gens/${p}.pb.cc: protoc_dep_error
$(GENDIR)/${p}.pb.cc: protoc_dep_error
else
gens/${p}.pb.cc: ${p}.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS)
$(GENDIR)/${p}.pb.cc: ${p}.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS)
$(E) "[PROTOC] Generating protobuf CC file from $<"
$(Q) mkdir -p `dirname $@`
$(Q) $(PROTOC) --cpp_out=gens --grpc_out=gens --plugin=protoc-gen-grpc=bins/$(CONFIG)/cpp_plugin $<
$(Q) $(PROTOC) --cpp_out=$(GENDIR) --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(BINDIR)/$(CONFIG)/cpp_plugin $<
endif
% endfor
objs/$(CONFIG)/%.o : %.c
$(OBJDIR)/$(CONFIG)/%.o : %.c
$(E) "[C] Compiling $<"
$(Q) mkdir -p `dirname $@`
$(Q) $(CC) $(CFLAGS) $(CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $<
objs/$(CONFIG)/%.o : gens/%.pb.cc
$(OBJDIR)/$(CONFIG)/%.o : $(GENDIR)/%.pb.cc
$(E) "[CXX] Compiling $<"
$(Q) mkdir -p `dirname $@`
$(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $<
objs/$(CONFIG)/src/compiler/%.o : src/compiler/%.cc
$(OBJDIR)/$(CONFIG)/src/compiler/%.o : src/compiler/%.cc
$(E) "[HOSTCXX] Compiling $<"
$(Q) mkdir -p `dirname $@`
$(Q) $(HOST_CXX) $(HOST_CXXFLAGS) $(HOST_CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $<
objs/$(CONFIG)/%.o : %.cc
$(OBJDIR)/$(CONFIG)/%.o : %.cc
$(E) "[CXX] Compiling $<"
$(Q) mkdir -p `dirname $@`
$(Q) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -MMD -MF $(addsuffix .dep, $(basename $@)) -c -o $@ $<
@ -678,7 +687,7 @@ install-static_c: static_c strip-static_c
% if lib.language == "c":
% if lib.build == "all":
$(E) "[INSTALL] Installing lib${lib.name}.a"
$(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a
$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a
% endif
% endif
% endfor
@ -688,7 +697,7 @@ install-static_cxx: static_cxx strip-static_cxx
% if lib.language == "c++":
% if lib.build == "all":
$(E) "[INSTALL] Installing lib${lib.name}.a"
$(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a
$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a
% endif
% endif
% endfor
@ -699,11 +708,11 @@ install-shared_c: shared_c strip-shared_c
% if lib.build == "all":
ifeq ($(SYSTEM),MINGW32)
$(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)"
$(Q) $(INSTALL) libs/$(CONFIG)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT)
$(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a
$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT)
$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a
else
$(E) "[INSTALL] Installing lib${lib.name}.$(SHARED_EXT)"
$(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT)
$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT)
ifneq ($(SYSTEM),Darwin)
$(Q) ln -sf lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.so
endif
@ -723,11 +732,11 @@ install-shared_cxx: shared_cxx strip-shared_cxx
% if lib.build == "all":
ifeq ($(SYSTEM),MINGW32)
$(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)"
$(Q) $(INSTALL) libs/$(CONFIG)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT)
$(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a
$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/${lib.name}.$(SHARED_EXT) $(prefix)/lib/${lib.name}.$(SHARED_EXT)
$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}-imp.a $(prefix)/lib/lib${lib.name}-imp.a
else
$(E) "[INSTALL] Installing lib${lib.name}.$(SHARED_EXT)"
$(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT)
$(Q) $(INSTALL) $(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.$(SHARED_EXT)
ifneq ($(SYSTEM),Darwin)
$(Q) ln -sf lib${lib.name}.$(SHARED_EXT) $(prefix)/lib/lib${lib.name}.so
endif
@ -742,7 +751,7 @@ endif
endif
clean:
$(Q) $(RM) -rf objs libs bins gens
$(Q) $(RM) -rf $(OBJDIR) $(LIBDIR) $(BINDIR) $(GENDIR)
# The various libraries
@ -780,7 +789,7 @@ PUBLIC_HEADERS_C += \\
% endfor
% endif
LIB${lib.name.upper()}_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LIB${lib.name.upper()}_SRC))))
LIB${lib.name.upper()}_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIB${lib.name.upper()}_SRC))))
## If the library requires OpenSSL with ALPN, let's add some restrictions.
% if lib.get('secure', True):
@ -788,13 +797,13 @@ ifeq ($(NO_SECURE),true)
# You can't build secure libraries if you don't have OpenSSL with ALPN.
libs/$(CONFIG)/lib${lib.name}.a: openssl_dep_error
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: openssl_dep_error
% if lib.build == "all":
ifeq ($(SYSTEM),MINGW32)
libs/$(CONFIG)/${lib.name}.$(SHARED_EXT): openssl_dep_error
$(LIBDIR)/$(CONFIG)/${lib.name}.$(SHARED_EXT): openssl_dep_error
else
libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): openssl_dep_error
$(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): openssl_dep_error
endif
% endif
@ -805,13 +814,13 @@ ifeq ($(NO_PROTOBUF),true)
# You can't build a C++ library if you don't have protobuf - a bit overreached, but still okay.
libs/$(CONFIG)/lib${lib.name}.a: protobuf_dep_error
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: protobuf_dep_error
% if lib.build == "all":
ifeq ($(SYSTEM),MINGW32)
libs/$(CONFIG)/${lib.name}.$(SHARED_EXT): protobuf_dep_error
$(LIBDIR)/$(CONFIG)/${lib.name}.$(SHARED_EXT): protobuf_dep_error
else
libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): protobuf_dep_error
$(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): protobuf_dep_error
endif
% endif
@ -827,7 +836,7 @@ ${src}: $(OPENSSL_DEP)
% endfor
endif
libs/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP) $(OPENSSL_DEP)\
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP) $(OPENSSL_DEP)\
## The else here corresponds to the if secure earlier.
% else:
% if lib.language == 'c++':
@ -835,20 +844,20 @@ ifeq ($(NO_PROTOBUF),true)
# You can't build a C++ library if you don't have protobuf - a bit overreached, but still okay.
libs/$(CONFIG)/lib${lib.name}.a: protobuf_dep_error
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: protobuf_dep_error
% if lib.build == "all":
ifeq ($(SYSTEM),MINGW32)
libs/$(CONFIG)/${lib.name}.$(SHARED_EXT): protobuf_dep_error
$(LIBDIR)/$(CONFIG)/${lib.name}.$(SHARED_EXT): protobuf_dep_error
else
libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): protobuf_dep_error
$(LIBDIR)/$(CONFIG)/lib${lib.name}.$(SHARED_EXT): protobuf_dep_error
endif
% endif
else
% endif
libs/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP)\
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP)\
% endif
% if lib.language == 'c++':
$(PROTOBUF_DEP)\
@ -856,21 +865,21 @@ libs/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP)\
$(LIB${lib.name.upper()}_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f libs/$(CONFIG)/lib${lib.name}.a
$(Q) $(AR) rcs libs/$(CONFIG)/lib${lib.name}.a $(LIB${lib.name.upper()}_OBJS)
$(Q) rm -f $(LIBDIR)/$(CONFIG)/lib${lib.name}.a
$(Q) $(AR) rcs $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(LIB${lib.name.upper()}_OBJS)
% if lib.get('baselib', False):
% if lib.get('secure', True):
$(Q) rm -rf tmp-merge
$(Q) mkdir tmp-merge
$(Q) ( cd tmp-merge ; $(AR) x ../libs/$(CONFIG)/lib${lib.name}.a )
$(Q) ( cd tmp-merge ; $(AR) x ../$(LIBDIR)/$(CONFIG)/lib${lib.name}.a )
$(Q) for l in $(OPENSSL_MERGE_LIBS) ; do ( cd tmp-merge ; <%text>ar x ../$${l}</%text> ) ; done
$(Q) rm -f libs/$(CONFIG)/lib${lib.name}.a tmp-merge/__.SYMDEF*
$(Q) ar rcs libs/$(CONFIG)/lib${lib.name}.a tmp-merge/*
$(Q) rm -f $(LIBDIR)/$(CONFIG)/lib${lib.name}.a tmp-merge/__.SYMDEF*
$(Q) ar rcs $(LIBDIR)/$(CONFIG)/lib${lib.name}.a tmp-merge/*
$(Q) rm -rf tmp-merge
% endif
% endif
ifeq ($(SYSTEM),Darwin)
$(Q) ranlib libs/$(CONFIG)/lib${lib.name}.a
$(Q) ranlib $(LIBDIR)/$(CONFIG)/lib${lib.name}.a
endif
<%
@ -879,8 +888,8 @@ endif
else:
ld = '$(LD)'
out_base = 'libs/$(CONFIG)/' + lib.name
out_libbase = 'libs/$(CONFIG)/lib' + lib.name
out_base = '$(LIBDIR)/$(CONFIG)/' + lib.name
out_libbase = '$(LIBDIR)/$(CONFIG)/lib' + lib.name
common = '$(LIB' + lib.name.upper() + '_OBJS) $(LDLIBS)'
@ -890,9 +899,9 @@ endif
mingw_lib_deps = ' $(ZLIB_DEP)'
for dep in lib.get('deps', []):
libs = libs + ' -l' + dep
lib_deps = lib_deps + ' libs/$(CONFIG)/lib' + dep + '.$(SHARED_EXT)'
lib_deps = lib_deps + ' $(LIBDIR)/$(CONFIG)/lib' + dep + '.$(SHARED_EXT)'
mingw_libs = mingw_libs + ' -l' + dep + '-imp'
mingw_lib_deps = mingw_lib_deps + 'libs/$(CONFIG)/' + dep + '.$(SHARED_EXT)'
mingw_lib_deps = mingw_lib_deps + '$(LIBDIR)/$(CONFIG)/' + dep + '.$(SHARED_EXT)'
if lib.get('secure', True):
common = common + ' $(LDLIBS_SECURE) $(OPENSSL_MERGE_LIBS)'
@ -905,15 +914,15 @@ ifeq ($(SYSTEM),MINGW32)
${out_base}.$(SHARED_EXT): $(LIB${lib.name.upper()}_OBJS) ${mingw_lib_deps}
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
$(Q) ${ld} $(LDFLAGS) -Llibs/$(CONFIG) -shared -Wl,--output-def=${out_base}.def -Wl,--out-implib=${out_libbase}-imp.a -o ${out_base}.$(SHARED_EXT) ${common}${mingw_libs}
$(Q) ${ld} $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=${out_base}.def -Wl,--out-implib=${out_libbase}-imp.a -o ${out_base}.$(SHARED_EXT) ${common}${mingw_libs}
else
${out_libbase}.$(SHARED_EXT): $(LIB${lib.name.upper()}_OBJS) ${lib_deps}
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
ifeq ($(SYSTEM),Darwin)
$(Q) ${ld} $(LDFLAGS) -Llibs/$(CONFIG) -dynamiclib -o ${out_libbase}.$(SHARED_EXT) ${common}${libs}
$(Q) ${ld} $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -dynamiclib -o ${out_libbase}.$(SHARED_EXT) ${common}${libs}
else
$(Q) ${ld} $(LDFLAGS) -Llibs/$(CONFIG) -shared -Wl,-soname,lib${lib.name}.so.${settings.version.major} -o ${out_libbase}.$(SHARED_EXT) ${common}${libs}
$(Q) ${ld} $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,lib${lib.name}.so.${settings.version.major} -o ${out_libbase}.$(SHARED_EXT) ${common}${libs}
$(Q) ln -sf lib${lib.name}.$(SHARED_EXT) ${out_libbase}.so.${settings.version.major}
$(Q) ln -sf lib${lib.name}.$(SHARED_EXT) ${out_libbase}.so
endif
@ -944,7 +953,7 @@ endif
% for src in lib.src:
% if not proto_re.match(src):
objs/$(CONFIG)/${os.path.splitext(src)[0]}.o: \
$(OBJDIR)/$(CONFIG)/${os.path.splitext(src)[0]}.o: \
% for src2 in lib.src:
% if proto_re.match(src2):
${proto_to_cc(src2)}\
@ -963,14 +972,14 @@ ${tgt.name.upper()}_SRC = \\
% endfor
${tgt.name.upper()}_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(${tgt.name.upper()}_SRC))))
${tgt.name.upper()}_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(${tgt.name.upper()}_SRC))))
% if tgt.get('secure', True):
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
bins/$(CONFIG)/${tgt.name}: openssl_dep_error
$(BINDIR)/$(CONFIG)/${tgt.name}: openssl_dep_error
else
@ -990,16 +999,16 @@ ifeq ($(NO_PROTOBUF),true)
# You can't build the protoc plugins if you don't have protobuf 3.0.0+.
bins/$(CONFIG)/${tgt.name}: protobuf_dep_error
$(BINDIR)/$(CONFIG)/${tgt.name}: protobuf_dep_error
else
bins/$(CONFIG)/${tgt.name}: $(PROTOBUF_DEP) $(${tgt.name.upper()}_OBJS)\
$(BINDIR)/$(CONFIG)/${tgt.name}: $(PROTOBUF_DEP) $(${tgt.name.upper()}_OBJS)\
% else:
bins/$(CONFIG)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\
$(BINDIR)/$(CONFIG)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\
% endif
% for dep in tgt.deps:
libs/$(CONFIG)/lib${dep}.a\
$(LIBDIR)/$(CONFIG)/lib${dep}.a\
% endfor
% if tgt.language == "c++":
@ -1023,7 +1032,7 @@ bins/$(CONFIG)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\
$(Q) $(LD) $(LDFLAGS) $(${tgt.name.upper()}_OBJS)\
% endif
% for dep in tgt.deps:
libs/$(CONFIG)/lib${dep}.a\
$(LIBDIR)/$(CONFIG)/lib${dep}.a\
% endfor
% if tgt.language == "c++":
% if tgt.build == 'protoc':
@ -1042,7 +1051,7 @@ bins/$(CONFIG)/${tgt.name}: $(${tgt.name.upper()}_OBJS)\
% elif tgt.get('secure', True):
$(LDLIBS_SECURE)\
% endif
-o bins/$(CONFIG)/${tgt.name}
-o $(BINDIR)/$(CONFIG)/${tgt.name}
% if tgt.build == 'protoc':
endif
@ -1053,9 +1062,9 @@ endif
% endif
% for src in tgt.src:
objs/$(CONFIG)/${os.path.splitext(src)[0]}.o: \
$(OBJDIR)/$(CONFIG)/${os.path.splitext(src)[0]}.o: \
% for dep in tgt.deps:
libs/$(CONFIG)/lib${dep}.a\
$(LIBDIR)/$(CONFIG)/lib${dep}.a\
% endfor
% endfor

@ -0,0 +1,79 @@
<%!
import re
%>\
<%def name="to_windows_path(path)">${path.replace('/','\\')}</%def>\
<%
allowed_dependencies = set(['gpr', 'grpc', 'gpr_test_util', 'grpc_test_util'])
buildable_targets = [ target for target in targets if set(target.deps).issubset(allowed_dependencies) and all([src.endswith('.c') for src in target.src])]
test_targets = [ target for target in buildable_targets if target.name.endswith('_test') ]
%>\
# NMake file to build secondary gRPC targets on Windows.
# Use grpc.sln to solution to build the gRPC libraries.
OUT_DIR=test_bin
CC=cl.exe
LINK=link.exe
INCLUDES=/I..\.. /I..\..\include /I..\..\third_party\zlib /I..\third_party /I..\..\third_party\openssl\inc32
DEFINES=/D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /D _CRT_SECURE_NO_WARNINGS
CFLAGS=/c $(INCLUDES) /nologo /Z7 /W3 /WX- /sdl $(DEFINES) /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze-
LFLAGS=/DEBUG /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86
OPENSSL_LIBS=..\..\third_party\openssl\out32\ssleay32.lib ..\..\third_party\openssl\out32\libeay32.lib
WINSOCK_LIBS=ws2_32.lib
ZLIB_LIBS=Debug\zlibwapi.lib
LIBS=$(OPENSSL_LIBS) $(WINSOCK_LIBS) $(ZLIB_LIBS)
gpr_test_util:
MSBuild.exe gpr_test_util.vcxproj /p:Configuration=Debug
grpc_test_util:
MSBuild.exe grpc_test_util.vcxproj /p:Configuration=Debug
$(OUT_DIR):
mkdir $(OUT_DIR)
buildtests: \
% for target in test_targets:
${target.name}.exe \
% endfor
echo All tests built.
test: \
% for target in test_targets:
${target.name} \
% endfor
echo All tests ran.
test_gpr: \
% for target in [ tgt for tgt in test_targets if tgt.name.startswith('gpr_')]:
${target.name} \
% endfor
echo All tests ran.
% for target in buildable_targets:
${target.name}.exe: grpc_test_util
echo Building ${target.name}
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ \
%for source in target.src:
..\..\${to_windows_path(source)} \
%endfor
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\${target.name}.exe" \
%for dep in target.deps:
Debug\${dep}.lib \
%endfor
$(LIBS) \
%for source in target.src:
$(OUT_DIR)\${re.search('([^/]+)\.c$', source).group(1)}.obj \
%endfor
${target.name}: ${target.name}.exe
echo Running ${target.name}
$(OUT_DIR)\${target.name}.exe
% endfor

@ -1,40 +0,0 @@
<%!
import re
%>\
<%def name="to_windows_path(path)">${path.replace('/','\\')}</%def>\
<%
test_targets = [ target for target in targets if target.name.startswith('gpr_') and target.name.endswith('_test')]
test_bin_dir = 'test_bin'
%>\
@rem Build and runs unit all unit tests
@rem Set VS variables
@call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" x86
@rem Build the library dependencies first
MSBuild.exe gpr.vcxproj /p:Configuration=Debug
MSBuild.exe gpr_test_util.vcxproj /p:Configuration=Debug
mkdir ${test_bin_dir}
% for target in test_targets:
echo Building test ${target.name}
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:${test_bin_dir}\ \
%for source in target.src:
..\..\${to_windows_path(source)} \
%endfor
link.exe /DEBUG /OUT:"${test_bin_dir}\${target.name}.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 \
%for dep in target.deps:
Debug\${dep}.lib \
%endfor
%for source in target.src:
${test_bin_dir}\${re.search('([^/]+)\.c$', source).group(1)}.obj \
%endfor
echo(
echo Running test ${target.name}
${test_bin_dir}\${target.name}.exe || echo TEST FAILED: ${target.name} && exit /b
echo(
% endfor

@ -0,0 +1,123 @@
/*
*
* Copyright 2014, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#include "test/core/end2end/end2end_tests.h"
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "src/core/channel/client_channel.h"
#include "src/core/channel/connected_channel.h"
#include "src/core/channel/http_filter.h"
#include "src/core/channel/http_server_filter.h"
#include "src/core/support/string.h"
#include "src/core/surface/channel.h"
#include "src/core/surface/client.h"
#include "src/core/surface/server.h"
#include "src/core/transport/chttp2_transport.h"
#include <grpc/support/alloc.h>
#include <grpc/support/host_port.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
#include <grpc/support/thd.h>
#include <grpc/support/useful.h>
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
typedef struct fullstack_fixture_data {
char *localaddr;
} fullstack_fixture_data;
static int unique = 1;
static grpc_end2end_test_fixture chttp2_create_fixture_fullstack(
grpc_channel_args *client_args, grpc_channel_args *server_args) {
grpc_end2end_test_fixture f;
fullstack_fixture_data *ffd = gpr_malloc(sizeof(fullstack_fixture_data));
memset(&f, 0, sizeof(f));
gpr_asprintf(&ffd->localaddr, "unix:/tmp/grpc_fullstack_test.%d.%d", getpid(),
unique++);
f.fixture_data = ffd;
f.client_cq = grpc_completion_queue_create();
f.server_cq = grpc_completion_queue_create();
return f;
}
void chttp2_init_client_fullstack(grpc_end2end_test_fixture *f,
grpc_channel_args *client_args) {
fullstack_fixture_data *ffd = f->fixture_data;
f->client = grpc_channel_create(ffd->localaddr, client_args);
}
void chttp2_init_server_fullstack(grpc_end2end_test_fixture *f,
grpc_channel_args *server_args) {
fullstack_fixture_data *ffd = f->fixture_data;
if (f->server) {
grpc_server_destroy(f->server);
}
f->server = grpc_server_create(f->server_cq, server_args);
GPR_ASSERT(grpc_server_add_http2_port(f->server, ffd->localaddr));
grpc_server_start(f->server);
}
void chttp2_tear_down_fullstack(grpc_end2end_test_fixture *f) {
fullstack_fixture_data *ffd = f->fixture_data;
gpr_free(ffd->localaddr);
gpr_free(ffd);
}
/* All test configurations */
static grpc_end2end_test_config configs[] = {
{"chttp2/fullstack_uds", FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION,
chttp2_create_fixture_fullstack, chttp2_init_client_fullstack,
chttp2_init_server_fullstack, chttp2_tear_down_fullstack},
};
int main(int argc, char **argv) {
size_t i;
grpc_test_init(argc, argv);
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
}
grpc_shutdown();
return 0;
}

@ -8,6 +8,7 @@ import simplejson
END2END_FIXTURES = [
'chttp2_fake_security',
'chttp2_fullstack',
'chttp2_fullstack_uds',
'chttp2_simple_ssl_fullstack',
'chttp2_simple_ssl_with_oauth2_fullstack',
'chttp2_socket_pair',

@ -681,6 +681,198 @@
"language": "c",
"name": "chttp2_fullstack_writes_done_hangs_with_pending_read_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_cancel_after_accept_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_cancel_after_accept_and_writes_closed_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_cancel_after_invoke_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_cancel_before_invoke_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_cancel_in_a_vacuum_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_census_simple_request_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_disappearing_server_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_early_server_shutdown_finishes_inflight_calls_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_early_server_shutdown_finishes_tags_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_empty_batch_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_graceful_server_shutdown_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_invoke_large_request_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_max_concurrent_streams_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_no_op_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_ping_pong_streaming_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_request_response_with_binary_metadata_and_payload_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_request_response_with_metadata_and_payload_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_request_response_with_payload_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_request_with_large_metadata_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_request_with_payload_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_simple_delayed_request_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_simple_request_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_thread_stress_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_writes_done_hangs_with_pending_read_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_cancel_after_accept_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_cancel_after_accept_and_writes_closed_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_cancel_after_invoke_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_cancel_before_invoke_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_cancel_in_a_vacuum_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_census_simple_request_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_disappearing_server_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_early_server_shutdown_finishes_inflight_calls_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_early_server_shutdown_finishes_tags_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_graceful_server_shutdown_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_invoke_large_request_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_max_concurrent_streams_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_no_op_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_ping_pong_streaming_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_request_response_with_binary_metadata_and_payload_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_request_response_with_metadata_and_payload_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_request_response_with_payload_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_request_response_with_trailing_metadata_and_payload_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_request_with_large_metadata_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_request_with_payload_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_simple_delayed_request_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_simple_request_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_thread_stress_legacy_test"
},
{
"language": "c",
"name": "chttp2_fullstack_uds_writes_done_hangs_with_pending_read_legacy_test"
},
{
"language": "c",
"name": "chttp2_simple_ssl_fullstack_cancel_after_accept_test"

@ -0,0 +1,652 @@
# NMake file to build secondary gRPC targets on Windows.
# Use grpc.sln to solution to build the gRPC libraries.
OUT_DIR=test_bin
CC=cl.exe
LINK=link.exe
INCLUDES=/I..\.. /I..\..\include /I..\..\third_party\zlib /I..\third_party /I..\..\third_party\openssl\inc32
DEFINES=/D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /D _CRT_SECURE_NO_WARNINGS
CFLAGS=/c $(INCLUDES) /nologo /Z7 /W3 /WX- /sdl $(DEFINES) /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze-
LFLAGS=/DEBUG /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86
OPENSSL_LIBS=..\..\third_party\openssl\out32\ssleay32.lib ..\..\third_party\openssl\out32\libeay32.lib
WINSOCK_LIBS=ws2_32.lib
ZLIB_LIBS=Debug\zlibwapi.lib
LIBS=$(OPENSSL_LIBS) $(WINSOCK_LIBS) $(ZLIB_LIBS)
gpr_test_util:
MSBuild.exe gpr_test_util.vcxproj /p:Configuration=Debug
grpc_test_util:
MSBuild.exe grpc_test_util.vcxproj /p:Configuration=Debug
$(OUT_DIR):
mkdir $(OUT_DIR)
buildtests: alarm_heap_test.exe alarm_list_test.exe alarm_test.exe alpn_test.exe bin_encoder_test.exe census_hash_table_test.exe census_statistics_multiple_writers_circular_buffer_test.exe census_statistics_multiple_writers_test.exe census_statistics_performance_test.exe census_statistics_quick_test.exe census_statistics_small_log_test.exe census_stats_store_test.exe census_stub_test.exe census_trace_store_test.exe census_window_stats_test.exe chttp2_status_conversion_test.exe chttp2_stream_encoder_test.exe chttp2_stream_map_test.exe chttp2_transport_end2end_test.exe dualstack_socket_test.exe echo_test.exe fd_posix_test.exe fling_stream_test.exe fling_test.exe gpr_cancellable_test.exe gpr_cmdline_test.exe gpr_env_test.exe gpr_file_test.exe gpr_histogram_test.exe gpr_host_port_test.exe gpr_log_test.exe gpr_slice_buffer_test.exe gpr_slice_test.exe gpr_string_test.exe gpr_sync_test.exe gpr_thd_test.exe gpr_time_test.exe gpr_useful_test.exe grpc_base64_test.exe grpc_byte_buffer_reader_test.exe grpc_channel_stack_test.exe grpc_completion_queue_test.exe grpc_credentials_test.exe grpc_json_token_test.exe grpc_stream_op_test.exe hpack_parser_test.exe hpack_table_test.exe httpcli_format_request_test.exe httpcli_parser_test.exe httpcli_test.exe json_rewrite_test.exe json_test.exe lame_client_test.exe message_compress_test.exe metadata_buffer_test.exe murmur_hash_test.exe no_server_test.exe poll_kick_posix_test.exe resolve_address_test.exe secure_endpoint_test.exe sockaddr_utils_test.exe tcp_client_posix_test.exe tcp_posix_test.exe tcp_server_posix_test.exe time_averaged_stats_test.exe time_test.exe timeout_encoding_test.exe transport_metadata_test.exe
echo All tests built.
test: alarm_heap_test alarm_list_test alarm_test alpn_test bin_encoder_test census_hash_table_test census_statistics_multiple_writers_circular_buffer_test census_statistics_multiple_writers_test census_statistics_performance_test census_statistics_quick_test census_statistics_small_log_test census_stats_store_test census_stub_test census_trace_store_test census_window_stats_test chttp2_status_conversion_test chttp2_stream_encoder_test chttp2_stream_map_test chttp2_transport_end2end_test dualstack_socket_test echo_test fd_posix_test fling_stream_test fling_test gpr_cancellable_test gpr_cmdline_test gpr_env_test gpr_file_test gpr_histogram_test gpr_host_port_test gpr_log_test gpr_slice_buffer_test gpr_slice_test gpr_string_test gpr_sync_test gpr_thd_test gpr_time_test gpr_useful_test grpc_base64_test grpc_byte_buffer_reader_test grpc_channel_stack_test grpc_completion_queue_test grpc_credentials_test grpc_json_token_test grpc_stream_op_test hpack_parser_test hpack_table_test httpcli_format_request_test httpcli_parser_test httpcli_test json_rewrite_test json_test lame_client_test message_compress_test metadata_buffer_test murmur_hash_test no_server_test poll_kick_posix_test resolve_address_test secure_endpoint_test sockaddr_utils_test tcp_client_posix_test tcp_posix_test tcp_server_posix_test time_averaged_stats_test time_test timeout_encoding_test transport_metadata_test
echo All tests ran.
test_gpr: gpr_cancellable_test gpr_cmdline_test gpr_env_test gpr_file_test gpr_histogram_test gpr_host_port_test gpr_log_test gpr_slice_buffer_test gpr_slice_test gpr_string_test gpr_sync_test gpr_thd_test gpr_time_test gpr_useful_test
echo All tests ran.
alarm_heap_test.exe: grpc_test_util
echo Building alarm_heap_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\iomgr\alarm_heap_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\alarm_heap_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\alarm_heap_test.obj
alarm_heap_test: alarm_heap_test.exe
echo Running alarm_heap_test
$(OUT_DIR)\alarm_heap_test.exe
alarm_list_test.exe: grpc_test_util
echo Building alarm_list_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\iomgr\alarm_list_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\alarm_list_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\alarm_list_test.obj
alarm_list_test: alarm_list_test.exe
echo Running alarm_list_test
$(OUT_DIR)\alarm_list_test.exe
alarm_test.exe: grpc_test_util
echo Building alarm_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\iomgr\alarm_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\alarm_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\alarm_test.obj
alarm_test: alarm_test.exe
echo Running alarm_test
$(OUT_DIR)\alarm_test.exe
alpn_test.exe: grpc_test_util
echo Building alpn_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\transport\chttp2\alpn_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\alpn_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\alpn_test.obj
alpn_test: alpn_test.exe
echo Running alpn_test
$(OUT_DIR)\alpn_test.exe
bin_encoder_test.exe: grpc_test_util
echo Building bin_encoder_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\transport\chttp2\bin_encoder_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\bin_encoder_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\bin_encoder_test.obj
bin_encoder_test: bin_encoder_test.exe
echo Running bin_encoder_test
$(OUT_DIR)\bin_encoder_test.exe
census_hash_table_test.exe: grpc_test_util
echo Building census_hash_table_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\statistics\hash_table_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\census_hash_table_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\hash_table_test.obj
census_hash_table_test: census_hash_table_test.exe
echo Running census_hash_table_test
$(OUT_DIR)\census_hash_table_test.exe
census_statistics_multiple_writers_circular_buffer_test.exe: grpc_test_util
echo Building census_statistics_multiple_writers_circular_buffer_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\statistics\multiple_writers_circular_buffer_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\census_statistics_multiple_writers_circular_buffer_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\multiple_writers_circular_buffer_test.obj
census_statistics_multiple_writers_circular_buffer_test: census_statistics_multiple_writers_circular_buffer_test.exe
echo Running census_statistics_multiple_writers_circular_buffer_test
$(OUT_DIR)\census_statistics_multiple_writers_circular_buffer_test.exe
census_statistics_multiple_writers_test.exe: grpc_test_util
echo Building census_statistics_multiple_writers_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\statistics\multiple_writers_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\census_statistics_multiple_writers_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\multiple_writers_test.obj
census_statistics_multiple_writers_test: census_statistics_multiple_writers_test.exe
echo Running census_statistics_multiple_writers_test
$(OUT_DIR)\census_statistics_multiple_writers_test.exe
census_statistics_performance_test.exe: grpc_test_util
echo Building census_statistics_performance_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\statistics\performance_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\census_statistics_performance_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\performance_test.obj
census_statistics_performance_test: census_statistics_performance_test.exe
echo Running census_statistics_performance_test
$(OUT_DIR)\census_statistics_performance_test.exe
census_statistics_quick_test.exe: grpc_test_util
echo Building census_statistics_quick_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\statistics\quick_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\census_statistics_quick_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\quick_test.obj
census_statistics_quick_test: census_statistics_quick_test.exe
echo Running census_statistics_quick_test
$(OUT_DIR)\census_statistics_quick_test.exe
census_statistics_small_log_test.exe: grpc_test_util
echo Building census_statistics_small_log_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\statistics\small_log_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\census_statistics_small_log_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\small_log_test.obj
census_statistics_small_log_test: census_statistics_small_log_test.exe
echo Running census_statistics_small_log_test
$(OUT_DIR)\census_statistics_small_log_test.exe
census_stats_store_test.exe: grpc_test_util
echo Building census_stats_store_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\statistics\rpc_stats_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\census_stats_store_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\rpc_stats_test.obj
census_stats_store_test: census_stats_store_test.exe
echo Running census_stats_store_test
$(OUT_DIR)\census_stats_store_test.exe
census_stub_test.exe: grpc_test_util
echo Building census_stub_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\statistics\census_stub_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\census_stub_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\census_stub_test.obj
census_stub_test: census_stub_test.exe
echo Running census_stub_test
$(OUT_DIR)\census_stub_test.exe
census_trace_store_test.exe: grpc_test_util
echo Building census_trace_store_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\statistics\trace_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\census_trace_store_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\trace_test.obj
census_trace_store_test: census_trace_store_test.exe
echo Running census_trace_store_test
$(OUT_DIR)\census_trace_store_test.exe
census_window_stats_test.exe: grpc_test_util
echo Building census_window_stats_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\statistics\window_stats_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\census_window_stats_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\window_stats_test.obj
census_window_stats_test: census_window_stats_test.exe
echo Running census_window_stats_test
$(OUT_DIR)\census_window_stats_test.exe
chttp2_status_conversion_test.exe: grpc_test_util
echo Building chttp2_status_conversion_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\transport\chttp2\status_conversion_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_status_conversion_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\status_conversion_test.obj
chttp2_status_conversion_test: chttp2_status_conversion_test.exe
echo Running chttp2_status_conversion_test
$(OUT_DIR)\chttp2_status_conversion_test.exe
chttp2_stream_encoder_test.exe: grpc_test_util
echo Building chttp2_stream_encoder_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\transport\chttp2\stream_encoder_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_stream_encoder_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\stream_encoder_test.obj
chttp2_stream_encoder_test: chttp2_stream_encoder_test.exe
echo Running chttp2_stream_encoder_test
$(OUT_DIR)\chttp2_stream_encoder_test.exe
chttp2_stream_map_test.exe: grpc_test_util
echo Building chttp2_stream_map_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\transport\chttp2\stream_map_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_stream_map_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\stream_map_test.obj
chttp2_stream_map_test: chttp2_stream_map_test.exe
echo Running chttp2_stream_map_test
$(OUT_DIR)\chttp2_stream_map_test.exe
chttp2_transport_end2end_test.exe: grpc_test_util
echo Building chttp2_transport_end2end_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\transport\chttp2_transport_end2end_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\chttp2_transport_end2end_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\chttp2_transport_end2end_test.obj
chttp2_transport_end2end_test: chttp2_transport_end2end_test.exe
echo Running chttp2_transport_end2end_test
$(OUT_DIR)\chttp2_transport_end2end_test.exe
dualstack_socket_test.exe: grpc_test_util
echo Building dualstack_socket_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\end2end\dualstack_socket_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\dualstack_socket_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\dualstack_socket_test.obj
dualstack_socket_test: dualstack_socket_test.exe
echo Running dualstack_socket_test
$(OUT_DIR)\dualstack_socket_test.exe
echo_client.exe: grpc_test_util
echo Building echo_client
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\echo\client.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\echo_client.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\client.obj
echo_client: echo_client.exe
echo Running echo_client
$(OUT_DIR)\echo_client.exe
echo_server.exe: grpc_test_util
echo Building echo_server
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\echo\server.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\echo_server.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\server.obj
echo_server: echo_server.exe
echo Running echo_server
$(OUT_DIR)\echo_server.exe
echo_test.exe: grpc_test_util
echo Building echo_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\echo\echo_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\echo_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\echo_test.obj
echo_test: echo_test.exe
echo Running echo_test
$(OUT_DIR)\echo_test.exe
fd_posix_test.exe: grpc_test_util
echo Building fd_posix_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\iomgr\fd_posix_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\fd_posix_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\fd_posix_test.obj
fd_posix_test: fd_posix_test.exe
echo Running fd_posix_test
$(OUT_DIR)\fd_posix_test.exe
fling_client.exe: grpc_test_util
echo Building fling_client
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\fling\client.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\fling_client.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\client.obj
fling_client: fling_client.exe
echo Running fling_client
$(OUT_DIR)\fling_client.exe
fling_server.exe: grpc_test_util
echo Building fling_server
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\fling\server.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\fling_server.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\server.obj
fling_server: fling_server.exe
echo Running fling_server
$(OUT_DIR)\fling_server.exe
fling_stream_test.exe: grpc_test_util
echo Building fling_stream_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\fling\fling_stream_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\fling_stream_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\fling_stream_test.obj
fling_stream_test: fling_stream_test.exe
echo Running fling_stream_test
$(OUT_DIR)\fling_stream_test.exe
fling_test.exe: grpc_test_util
echo Building fling_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\fling\fling_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\fling_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\fling_test.obj
fling_test: fling_test.exe
echo Running fling_test
$(OUT_DIR)\fling_test.exe
gen_hpack_tables.exe: grpc_test_util
echo Building gen_hpack_tables
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\src\core\transport\chttp2\gen_hpack_tables.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gen_hpack_tables.exe" Debug\grpc_test_util.lib Debug\gpr.lib Debug\grpc.lib $(LIBS) $(OUT_DIR)\gen_hpack_tables.obj
gen_hpack_tables: gen_hpack_tables.exe
echo Running gen_hpack_tables
$(OUT_DIR)\gen_hpack_tables.exe
gpr_cancellable_test.exe: grpc_test_util
echo Building gpr_cancellable_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\cancellable_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_cancellable_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\cancellable_test.obj
gpr_cancellable_test: gpr_cancellable_test.exe
echo Running gpr_cancellable_test
$(OUT_DIR)\gpr_cancellable_test.exe
gpr_cmdline_test.exe: grpc_test_util
echo Building gpr_cmdline_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\cmdline_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_cmdline_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\cmdline_test.obj
gpr_cmdline_test: gpr_cmdline_test.exe
echo Running gpr_cmdline_test
$(OUT_DIR)\gpr_cmdline_test.exe
gpr_env_test.exe: grpc_test_util
echo Building gpr_env_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\env_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_env_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\env_test.obj
gpr_env_test: gpr_env_test.exe
echo Running gpr_env_test
$(OUT_DIR)\gpr_env_test.exe
gpr_file_test.exe: grpc_test_util
echo Building gpr_file_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\file_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_file_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\file_test.obj
gpr_file_test: gpr_file_test.exe
echo Running gpr_file_test
$(OUT_DIR)\gpr_file_test.exe
gpr_histogram_test.exe: grpc_test_util
echo Building gpr_histogram_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\histogram_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_histogram_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\histogram_test.obj
gpr_histogram_test: gpr_histogram_test.exe
echo Running gpr_histogram_test
$(OUT_DIR)\gpr_histogram_test.exe
gpr_host_port_test.exe: grpc_test_util
echo Building gpr_host_port_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\host_port_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_host_port_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\host_port_test.obj
gpr_host_port_test: gpr_host_port_test.exe
echo Running gpr_host_port_test
$(OUT_DIR)\gpr_host_port_test.exe
gpr_log_test.exe: grpc_test_util
echo Building gpr_log_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\log_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_log_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\log_test.obj
gpr_log_test: gpr_log_test.exe
echo Running gpr_log_test
$(OUT_DIR)\gpr_log_test.exe
gpr_slice_buffer_test.exe: grpc_test_util
echo Building gpr_slice_buffer_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\slice_buffer_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_slice_buffer_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\slice_buffer_test.obj
gpr_slice_buffer_test: gpr_slice_buffer_test.exe
echo Running gpr_slice_buffer_test
$(OUT_DIR)\gpr_slice_buffer_test.exe
gpr_slice_test.exe: grpc_test_util
echo Building gpr_slice_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\slice_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_slice_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\slice_test.obj
gpr_slice_test: gpr_slice_test.exe
echo Running gpr_slice_test
$(OUT_DIR)\gpr_slice_test.exe
gpr_string_test.exe: grpc_test_util
echo Building gpr_string_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\string_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_string_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\string_test.obj
gpr_string_test: gpr_string_test.exe
echo Running gpr_string_test
$(OUT_DIR)\gpr_string_test.exe
gpr_sync_test.exe: grpc_test_util
echo Building gpr_sync_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\sync_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_sync_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\sync_test.obj
gpr_sync_test: gpr_sync_test.exe
echo Running gpr_sync_test
$(OUT_DIR)\gpr_sync_test.exe
gpr_thd_test.exe: grpc_test_util
echo Building gpr_thd_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\thd_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_thd_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\thd_test.obj
gpr_thd_test: gpr_thd_test.exe
echo Running gpr_thd_test
$(OUT_DIR)\gpr_thd_test.exe
gpr_time_test.exe: grpc_test_util
echo Building gpr_time_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\time_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_time_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\time_test.obj
gpr_time_test: gpr_time_test.exe
echo Running gpr_time_test
$(OUT_DIR)\gpr_time_test.exe
gpr_useful_test.exe: grpc_test_util
echo Building gpr_useful_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\useful_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\gpr_useful_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\useful_test.obj
gpr_useful_test: gpr_useful_test.exe
echo Running gpr_useful_test
$(OUT_DIR)\gpr_useful_test.exe
grpc_base64_test.exe: grpc_test_util
echo Building grpc_base64_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\security\base64_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\grpc_base64_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\base64_test.obj
grpc_base64_test: grpc_base64_test.exe
echo Running grpc_base64_test
$(OUT_DIR)\grpc_base64_test.exe
grpc_byte_buffer_reader_test.exe: grpc_test_util
echo Building grpc_byte_buffer_reader_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\surface\byte_buffer_reader_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\grpc_byte_buffer_reader_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\byte_buffer_reader_test.obj
grpc_byte_buffer_reader_test: grpc_byte_buffer_reader_test.exe
echo Running grpc_byte_buffer_reader_test
$(OUT_DIR)\grpc_byte_buffer_reader_test.exe
grpc_channel_stack_test.exe: grpc_test_util
echo Building grpc_channel_stack_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\channel\channel_stack_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\grpc_channel_stack_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\channel_stack_test.obj
grpc_channel_stack_test: grpc_channel_stack_test.exe
echo Running grpc_channel_stack_test
$(OUT_DIR)\grpc_channel_stack_test.exe
grpc_completion_queue_benchmark.exe: grpc_test_util
echo Building grpc_completion_queue_benchmark
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\surface\completion_queue_benchmark.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\grpc_completion_queue_benchmark.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\completion_queue_benchmark.obj
grpc_completion_queue_benchmark: grpc_completion_queue_benchmark.exe
echo Running grpc_completion_queue_benchmark
$(OUT_DIR)\grpc_completion_queue_benchmark.exe
grpc_completion_queue_test.exe: grpc_test_util
echo Building grpc_completion_queue_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\surface\completion_queue_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\grpc_completion_queue_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\completion_queue_test.obj
grpc_completion_queue_test: grpc_completion_queue_test.exe
echo Running grpc_completion_queue_test
$(OUT_DIR)\grpc_completion_queue_test.exe
grpc_credentials_test.exe: grpc_test_util
echo Building grpc_credentials_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\security\credentials_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\grpc_credentials_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\credentials_test.obj
grpc_credentials_test: grpc_credentials_test.exe
echo Running grpc_credentials_test
$(OUT_DIR)\grpc_credentials_test.exe
grpc_fetch_oauth2.exe: grpc_test_util
echo Building grpc_fetch_oauth2
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\security\fetch_oauth2.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\grpc_fetch_oauth2.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\fetch_oauth2.obj
grpc_fetch_oauth2: grpc_fetch_oauth2.exe
echo Running grpc_fetch_oauth2
$(OUT_DIR)\grpc_fetch_oauth2.exe
grpc_json_token_test.exe: grpc_test_util
echo Building grpc_json_token_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\security\json_token_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\grpc_json_token_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\json_token_test.obj
grpc_json_token_test: grpc_json_token_test.exe
echo Running grpc_json_token_test
$(OUT_DIR)\grpc_json_token_test.exe
grpc_stream_op_test.exe: grpc_test_util
echo Building grpc_stream_op_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\transport\stream_op_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\grpc_stream_op_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\stream_op_test.obj
grpc_stream_op_test: grpc_stream_op_test.exe
echo Running grpc_stream_op_test
$(OUT_DIR)\grpc_stream_op_test.exe
hpack_parser_test.exe: grpc_test_util
echo Building hpack_parser_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\transport\chttp2\hpack_parser_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\hpack_parser_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\hpack_parser_test.obj
hpack_parser_test: hpack_parser_test.exe
echo Running hpack_parser_test
$(OUT_DIR)\hpack_parser_test.exe
hpack_table_test.exe: grpc_test_util
echo Building hpack_table_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\transport\chttp2\hpack_table_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\hpack_table_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\hpack_table_test.obj
hpack_table_test: hpack_table_test.exe
echo Running hpack_table_test
$(OUT_DIR)\hpack_table_test.exe
httpcli_format_request_test.exe: grpc_test_util
echo Building httpcli_format_request_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\httpcli\format_request_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\httpcli_format_request_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\format_request_test.obj
httpcli_format_request_test: httpcli_format_request_test.exe
echo Running httpcli_format_request_test
$(OUT_DIR)\httpcli_format_request_test.exe
httpcli_parser_test.exe: grpc_test_util
echo Building httpcli_parser_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\httpcli\parser_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\httpcli_parser_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\parser_test.obj
httpcli_parser_test: httpcli_parser_test.exe
echo Running httpcli_parser_test
$(OUT_DIR)\httpcli_parser_test.exe
httpcli_test.exe: grpc_test_util
echo Building httpcli_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\httpcli\httpcli_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\httpcli_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\httpcli_test.obj
httpcli_test: httpcli_test.exe
echo Running httpcli_test
$(OUT_DIR)\httpcli_test.exe
json_rewrite.exe: grpc_test_util
echo Building json_rewrite
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\json\json_rewrite.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\json_rewrite.exe" Debug\grpc.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\json_rewrite.obj
json_rewrite: json_rewrite.exe
echo Running json_rewrite
$(OUT_DIR)\json_rewrite.exe
json_rewrite_test.exe: grpc_test_util
echo Building json_rewrite_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\json\json_rewrite_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\json_rewrite_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\json_rewrite_test.obj
json_rewrite_test: json_rewrite_test.exe
echo Running json_rewrite_test
$(OUT_DIR)\json_rewrite_test.exe
json_test.exe: grpc_test_util
echo Building json_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\json\json_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\json_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\json_test.obj
json_test: json_test.exe
echo Running json_test
$(OUT_DIR)\json_test.exe
lame_client_test.exe: grpc_test_util
echo Building lame_client_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\surface\lame_client_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\lame_client_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\lame_client_test.obj
lame_client_test: lame_client_test.exe
echo Running lame_client_test
$(OUT_DIR)\lame_client_test.exe
low_level_ping_pong_benchmark.exe: grpc_test_util
echo Building low_level_ping_pong_benchmark
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\network_benchmarks\low_level_ping_pong.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\low_level_ping_pong_benchmark.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\low_level_ping_pong.obj
low_level_ping_pong_benchmark: low_level_ping_pong_benchmark.exe
echo Running low_level_ping_pong_benchmark
$(OUT_DIR)\low_level_ping_pong_benchmark.exe
message_compress_test.exe: grpc_test_util
echo Building message_compress_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\compression\message_compress_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\message_compress_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\message_compress_test.obj
message_compress_test: message_compress_test.exe
echo Running message_compress_test
$(OUT_DIR)\message_compress_test.exe
metadata_buffer_test.exe: grpc_test_util
echo Building metadata_buffer_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\channel\metadata_buffer_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\metadata_buffer_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\metadata_buffer_test.obj
metadata_buffer_test: metadata_buffer_test.exe
echo Running metadata_buffer_test
$(OUT_DIR)\metadata_buffer_test.exe
murmur_hash_test.exe: grpc_test_util
echo Building murmur_hash_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\murmur_hash_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\murmur_hash_test.exe" Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\murmur_hash_test.obj
murmur_hash_test: murmur_hash_test.exe
echo Running murmur_hash_test
$(OUT_DIR)\murmur_hash_test.exe
no_server_test.exe: grpc_test_util
echo Building no_server_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\end2end\no_server_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\no_server_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\no_server_test.obj
no_server_test: no_server_test.exe
echo Running no_server_test
$(OUT_DIR)\no_server_test.exe
poll_kick_posix_test.exe: grpc_test_util
echo Building poll_kick_posix_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\iomgr\poll_kick_posix_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\poll_kick_posix_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\poll_kick_posix_test.obj
poll_kick_posix_test: poll_kick_posix_test.exe
echo Running poll_kick_posix_test
$(OUT_DIR)\poll_kick_posix_test.exe
resolve_address_test.exe: grpc_test_util
echo Building resolve_address_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\iomgr\resolve_address_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\resolve_address_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\resolve_address_test.obj
resolve_address_test: resolve_address_test.exe
echo Running resolve_address_test
$(OUT_DIR)\resolve_address_test.exe
secure_endpoint_test.exe: grpc_test_util
echo Building secure_endpoint_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\security\secure_endpoint_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\secure_endpoint_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\secure_endpoint_test.obj
secure_endpoint_test: secure_endpoint_test.exe
echo Running secure_endpoint_test
$(OUT_DIR)\secure_endpoint_test.exe
sockaddr_utils_test.exe: grpc_test_util
echo Building sockaddr_utils_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\iomgr\sockaddr_utils_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\sockaddr_utils_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\sockaddr_utils_test.obj
sockaddr_utils_test: sockaddr_utils_test.exe
echo Running sockaddr_utils_test
$(OUT_DIR)\sockaddr_utils_test.exe
tcp_client_posix_test.exe: grpc_test_util
echo Building tcp_client_posix_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\iomgr\tcp_client_posix_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\tcp_client_posix_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\tcp_client_posix_test.obj
tcp_client_posix_test: tcp_client_posix_test.exe
echo Running tcp_client_posix_test
$(OUT_DIR)\tcp_client_posix_test.exe
tcp_posix_test.exe: grpc_test_util
echo Building tcp_posix_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\iomgr\tcp_posix_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\tcp_posix_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\tcp_posix_test.obj
tcp_posix_test: tcp_posix_test.exe
echo Running tcp_posix_test
$(OUT_DIR)\tcp_posix_test.exe
tcp_server_posix_test.exe: grpc_test_util
echo Building tcp_server_posix_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\iomgr\tcp_server_posix_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\tcp_server_posix_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\tcp_server_posix_test.obj
tcp_server_posix_test: tcp_server_posix_test.exe
echo Running tcp_server_posix_test
$(OUT_DIR)\tcp_server_posix_test.exe
time_averaged_stats_test.exe: grpc_test_util
echo Building time_averaged_stats_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\iomgr\time_averaged_stats_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\time_averaged_stats_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\time_averaged_stats_test.obj
time_averaged_stats_test: time_averaged_stats_test.exe
echo Running time_averaged_stats_test
$(OUT_DIR)\time_averaged_stats_test.exe
time_test.exe: grpc_test_util
echo Building time_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\support\time_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\time_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\time_test.obj
time_test: time_test.exe
echo Running time_test
$(OUT_DIR)\time_test.exe
timeout_encoding_test.exe: grpc_test_util
echo Building timeout_encoding_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\transport\chttp2\timeout_encoding_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\timeout_encoding_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\timeout_encoding_test.obj
timeout_encoding_test: timeout_encoding_test.exe
echo Running timeout_encoding_test
$(OUT_DIR)\timeout_encoding_test.exe
transport_metadata_test.exe: grpc_test_util
echo Building transport_metadata_test
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ ..\..\test\core\transport\metadata_test.c
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\transport_metadata_test.exe" Debug\grpc_test_util.lib Debug\grpc.lib Debug\gpr_test_util.lib Debug\gpr.lib $(LIBS) $(OUT_DIR)\metadata_test.obj
transport_metadata_test: transport_metadata_test.exe
echo Running transport_metadata_test
$(OUT_DIR)\transport_metadata_test.exe

@ -1,123 +0,0 @@
@rem Build and runs unit all unit tests
@rem Set VS variables
@call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" x86
@rem Build the library dependencies first
MSBuild.exe gpr.vcxproj /p:Configuration=Debug
MSBuild.exe gpr_test_util.vcxproj /p:Configuration=Debug
mkdir test_bin
echo Building test gpr_cancellable_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\cancellable_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_cancellable_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\cancellable_test.obj
echo(
echo Running test gpr_cancellable_test
test_bin\gpr_cancellable_test.exe || echo TEST FAILED: gpr_cancellable_test && exit /b
echo(
echo Building test gpr_cmdline_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\cmdline_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_cmdline_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\cmdline_test.obj
echo(
echo Running test gpr_cmdline_test
test_bin\gpr_cmdline_test.exe || echo TEST FAILED: gpr_cmdline_test && exit /b
echo(
echo Building test gpr_env_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\env_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_env_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\env_test.obj
echo(
echo Running test gpr_env_test
test_bin\gpr_env_test.exe || echo TEST FAILED: gpr_env_test && exit /b
echo(
echo Building test gpr_file_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\file_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_file_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\file_test.obj
echo(
echo Running test gpr_file_test
test_bin\gpr_file_test.exe || echo TEST FAILED: gpr_file_test && exit /b
echo(
echo Building test gpr_histogram_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\histogram_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_histogram_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\histogram_test.obj
echo(
echo Running test gpr_histogram_test
test_bin\gpr_histogram_test.exe || echo TEST FAILED: gpr_histogram_test && exit /b
echo(
echo Building test gpr_host_port_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\host_port_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_host_port_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\host_port_test.obj
echo(
echo Running test gpr_host_port_test
test_bin\gpr_host_port_test.exe || echo TEST FAILED: gpr_host_port_test && exit /b
echo(
echo Building test gpr_log_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\log_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_log_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\log_test.obj
echo(
echo Running test gpr_log_test
test_bin\gpr_log_test.exe || echo TEST FAILED: gpr_log_test && exit /b
echo(
echo Building test gpr_slice_buffer_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\slice_buffer_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_slice_buffer_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\slice_buffer_test.obj
echo(
echo Running test gpr_slice_buffer_test
test_bin\gpr_slice_buffer_test.exe || echo TEST FAILED: gpr_slice_buffer_test && exit /b
echo(
echo Building test gpr_slice_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\slice_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_slice_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\slice_test.obj
echo(
echo Running test gpr_slice_test
test_bin\gpr_slice_test.exe || echo TEST FAILED: gpr_slice_test && exit /b
echo(
echo Building test gpr_string_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\string_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_string_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\string_test.obj
echo(
echo Running test gpr_string_test
test_bin\gpr_string_test.exe || echo TEST FAILED: gpr_string_test && exit /b
echo(
echo Building test gpr_sync_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\sync_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_sync_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\sync_test.obj
echo(
echo Running test gpr_sync_test
test_bin\gpr_sync_test.exe || echo TEST FAILED: gpr_sync_test && exit /b
echo(
echo Building test gpr_thd_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\thd_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_thd_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\thd_test.obj
echo(
echo Running test gpr_thd_test
test_bin\gpr_thd_test.exe || echo TEST FAILED: gpr_thd_test && exit /b
echo(
echo Building test gpr_time_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\time_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_time_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\time_test.obj
echo(
echo Running test gpr_time_test
test_bin\gpr_time_test.exe || echo TEST FAILED: gpr_time_test && exit /b
echo(
echo Building test gpr_useful_test
cl.exe /c /I..\.. /I..\..\include /nologo /Z7 /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\useful_test.c
link.exe /DEBUG /OUT:"test_bin\gpr_useful_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\useful_test.obj
echo(
echo Running test gpr_useful_test
test_bin\gpr_useful_test.exe || echo TEST FAILED: gpr_useful_test && exit /b
echo(

@ -81,6 +81,11 @@
<ClCompile Include="..\..\test\core\util\test_config.c">
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="gpr.vcxproj">
<Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>

@ -6,6 +6,9 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr", "gpr.vcxproj", "{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr_test_util", "gpr_test_util.vcxproj", "{EAB0A629-17A9-44DB-B5FF-E91A721FE037}"
ProjectSection(ProjectDependencies) = postProject
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc", "grpc.vcxproj", "{29D16885-7228-4C31-81ED-5F9187C7F2A9}"
ProjectSection(ProjectDependencies) = postProject
@ -19,6 +22,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_csharp_ext", "grpc_csh
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_test_util", "grpc_test_util.vcxproj", "{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}"
ProjectSection(ProjectDependencies) = postProject
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_unsecure", "grpc_unsecure.vcxproj", "{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}"
ProjectSection(ProjectDependencies) = postProject

@ -103,6 +103,14 @@
<ClCompile Include="..\..\test\core\util\slice_splitter.c">
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="gpr.vcxproj">
<Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
</ProjectReference>
<ProjectReference Include="grpc.vcxproj">
<Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>

@ -0,0 +1,7 @@
@rem Convenience wrapper that runs specified gRPC target using Nmake
@rem Usage: make.bat TARGET_NAME
@rem Set VS variables
@call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" x86
nmake.exe /f Grpc.mak %1
Loading…
Cancel
Save