Merge remote-tracking branch 'upstream/master' into stream_compression_config

pull/11782/head
Muxi Yan 8 years ago
commit 6b2b5bd645
  1. 6
      INSTALL.md
  2. 23
      gRPC.podspec
  3. 10
      package.xml
  4. 1
      src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
  5. 21
      src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c
  6. 4
      src/core/ext/transport/chttp2/transport/flow_control.c
  7. 64
      src/core/lib/iomgr/ev_epoll1_linux.c
  8. 2
      src/csharp/Grpc.Core.Tests/NUnitMain.cs
  9. 8
      src/csharp/Grpc.Core/Grpc.Core.targets
  10. 2
      src/csharp/Grpc.Core/GrpcEnvironment.cs
  11. 6
      src/csharp/Grpc.Core/Logging/LogLevel.cs
  12. 43
      src/csharp/Grpc.Core/Logging/LogLevelFilterLogger.cs
  13. 2
      src/csharp/Grpc.Examples.Tests/NUnitMain.cs
  14. 2
      src/csharp/Grpc.HealthCheck.Tests/NUnitMain.cs
  15. 2
      src/csharp/Grpc.IntegrationTesting/NUnitMain.cs
  16. 2
      src/csharp/Grpc.Microbenchmarks/Program.cs
  17. 2
      src/csharp/Grpc.Reflection.Tests/NUnitMain.cs
  18. 29
      src/objective-c/GRPCClient/GRPCCall+GID.h
  19. 12
      src/objective-c/GRPCClient/GRPCCall+GID.m
  20. 15
      src/objective-c/GRPCClient/GRPCCall+OAuth2.h
  21. 11
      src/objective-c/GRPCClient/GRPCCall+OAuth2.m
  22. 73
      src/objective-c/GRPCClient/GRPCCall.m
  23. 1
      src/objective-c/GRPCClient/private/GRPCRequestHeaders.m
  24. 38
      src/objective-c/RxLibrary/GRXConcurrentWriteable.m
  25. 2
      src/php/ext/grpc/call_credentials.c
  26. 40
      src/php/ext/grpc/channel.c
  27. 8
      src/php/ext/grpc/channel_credentials.c
  28. 42
      src/php/ext/grpc/php_grpc.c
  29. 6
      src/php/ext/grpc/php_grpc.h
  30. 15
      src/php/tests/unit_tests/ChannelTest.php
  31. 23
      templates/gRPC.podspec.template
  32. 10
      templates/package.xml.template
  33. 27
      templates/vsprojects/build_test_protos.sh
  34. 13
      templates/vsprojects/buildtests_c.sln.template
  35. 18
      templates/vsprojects/cpptest.props.template
  36. 22
      templates/vsprojects/global.props.template
  37. 7
      templates/vsprojects/grpc.sln.template
  38. 7
      templates/vsprojects/grpc_csharp_ext.sln.template
  39. 7
      templates/vsprojects/grpc_protoc_plugins.sln.template
  40. 13
      templates/vsprojects/openssl.props.template
  41. 53
      templates/vsprojects/packages.include
  42. 13
      templates/vsprojects/protobuf.props.template
  43. 16
      templates/vsprojects/protoc.props.template
  44. 119
      templates/vsprojects/sln_defs.include
  45. 70
      templates/vsprojects/vcxproj.filters_defs.include
  46. 20
      templates/vsprojects/vcxproj.template
  47. 256
      templates/vsprojects/vcxproj_defs.include
  48. 14
      templates/vsprojects/winsock.props.template
  49. 15
      templates/vsprojects/zlib-dll.props.template
  50. 15
      templates/vsprojects/zlib.props.template
  51. 31
      test/cpp/end2end/client_lb_end2end_test.cc
  52. 69
      tools/distrib/check_vsprojects.py
  53. 7
      tools/internal_ci/helper_scripts/prepare_build_linux_rc
  54. 2
      tools/internal_ci/linux/pull_request/grpc_basictests_c_cpp_dbg.cfg
  55. 2
      tools/internal_ci/linux/pull_request/grpc_basictests_c_cpp_opt.cfg
  56. 2
      tools/internal_ci/linux/pull_request/grpc_basictests_multilang.cfg
  57. 2
      tools/internal_ci/linux/sanitizer/pull_request/grpc_c_asan.cfg
  58. 2
      tools/internal_ci/linux/sanitizer/pull_request/grpc_c_msan.cfg
  59. 2
      tools/internal_ci/linux/sanitizer/pull_request/grpc_c_tsan.cfg
  60. 2
      tools/internal_ci/linux/sanitizer/pull_request/grpc_c_ubsan.cfg
  61. 2
      tools/internal_ci/linux/sanitizer/pull_request/grpc_cpp_asan.cfg
  62. 2
      tools/internal_ci/linux/sanitizer/pull_request/grpc_cpp_tsan.cfg
  63. 2
      tools/internal_ci/macos/pull_request/grpc_basictests_dbg.cfg
  64. 2
      tools/internal_ci/macos/pull_request/grpc_basictests_opt.cfg
  65. 2
      tools/internal_ci/windows/pull_request/grpc_basictests.cfg
  66. 6
      tools/run_tests/artifacts/artifact_targets.py
  67. 25
      tools/run_tests/artifacts/build_artifact_protoc.bat
  68. 35
      tools/run_tests/helper_scripts/pre_build_c.bat
  69. 4
      tools/run_tests/helper_scripts/pre_build_cmake.bat
  70. 59
      tools/run_tests/run_tests.py
  71. 32
      tools/run_tests/run_tests_matrix.py
  72. 1
      tools/run_tests/sanity/sanity_tests.yaml
  73. 56
      vsprojects/README.md
  74. 37
      vsprojects/build_plugins.bat
  75. 24
      vsprojects/build_vs2013.bat
  76. 24
      vsprojects/build_vs2015.bat
  77. 4406
      vsprojects/buildtests_c.sln
  78. 10
      vsprojects/coapp/openssl/.gitignore
  79. 38
      vsprojects/coapp/openssl/README.md
  80. 84
      vsprojects/coapp/openssl/buildall.bat
  81. 110
      vsprojects/coapp/openssl/grpc.dependencies.openssl.autopkg
  82. 828
      vsprojects/coapp/openssl/libeay32.vcxproj
  83. 44
      vsprojects/coapp/openssl/managed_targets/grpc.dependencies.openssl.redist.targets
  84. 39
      vsprojects/coapp/openssl/openssl.sln
  85. 5
      vsprojects/coapp/openssl/packages.config
  86. 240
      vsprojects/coapp/openssl/ssleay32.vcxproj
  87. 1
      vsprojects/coapp/openssl/version.inc
  88. 5
      vsprojects/coapp/zlib/.gitignore
  89. 36
      vsprojects/coapp/zlib/README.md
  90. 77
      vsprojects/coapp/zlib/buildall.bat
  91. 108
      vsprojects/coapp/zlib/grpc.dependencies.zlib.autopkg
  92. 43
      vsprojects/coapp/zlib/managed_targets/grpc.dependencies.zlib.redist.targets
  93. 1
      vsprojects/coapp/zlib/version.inc
  94. 26
      vsprojects/coapp/zlib/zlib.sln
  95. 147
      vsprojects/coapp/zlib/zlib.vcxproj
  96. 1
      vsprojects/cpptest.props
  97. 20
      vsprojects/global.props
  98. 383
      vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj
  99. 510
      vsprojects/grpc.sln
  100. 65
      vsprojects/grpc_csharp_ext.sln
  101. Some files were not shown because too many files have changed in this diff Show More

@ -141,8 +141,6 @@ MINGW64$ make
NOTE: While most of the make targets are buildable under Mingw, some haven't been ported to Windows yet
and may fail to build (mostly trying to include POSIX headers not available on Mingw).
### Pre-generated Visual Studio solution (DEPRECATED)
### Pre-generated Visual Studio solution (DELETED)
*WARNING: This used to be the recommended way to build on Windows, but because of significant limitations (hard to build dependencies including boringssl, .proto codegen is hard to support, ..), it is no longer recommended. Use cmake to build on Windows instead.*
The pre-generated VS projects & solution are checked into the repository under the [vsprojects](/vsprojects) directory.
*WARNING: This used to be the recommended way to build on Windows, but because of significant limitations (hard to build dependencies including boringssl, .proto codegen is hard to support, ..) we are no longer providing them. Use cmake to build on Windows instead.*

@ -40,12 +40,9 @@ Pod::Spec.new do |s|
s.header_dir = name
src_dir = 'src/objective-c/GRPCClient'
s.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}"
s.private_header_files = "#{src_dir}/private/*.h"
s.header_mappings_dir = "#{src_dir}"
s.dependency 'gRPC-Core', version
s.dependency 'gRPC-RxLibrary', version
s.default_subspec = 'Main'
# Certificates, to be able to establish TLS connections:
s.resource_bundles = { 'gRPCCertificates' => ['etc/roots.pem'] }
@ -54,4 +51,22 @@ Pod::Spec.new do |s|
# This is needed by all pods that depend on gRPC-RxLibrary:
'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
}
s.subspec 'Main' do |ss|
ss.header_mappings_dir = "#{src_dir}"
ss.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}"
ss.exclude_files = "#{src_dir}/GRPCCall+GID.{h,m}"
ss.private_header_files = "#{src_dir}/private/*.h"
ss.dependency 'gRPC-Core', version
end
s.subspec 'GID' do |ss|
ss.header_mappings_dir = "#{src_dir}"
ss.source_files = "#{src_dir}/GRPCCall+GID.{h,m}"
ss.dependency 'Google/SignIn'
end
end

@ -22,13 +22,9 @@
</stability>
<license>Apache 2.0</license>
<notes>
- Fixed some memory leaks #9559, #10996
- Disabled cares dependency from gRPC C Core #10940
- De-coupled protobuf dependency #11112
- Fixed extension reported version #10842
- Added config.w32 for Windows support #8161
- Fixed PHP distrib test after cc files were added #11193
- Fixed protoc plugin comment escape bug #11025
- Channel are now by default persistent #11878
- Some bug fixes from 1.4 branch #12109, #12123
- Fixed hang bug when fork() was used #11814
</notes>
<contents>
<dir baseinstalldir="/" name="/">

@ -1544,6 +1544,7 @@ static void lb_on_response_received_locked(grpc_exec_ctx *exec_ctx, void *arg,
grpc_byte_buffer_reader bbr;
grpc_byte_buffer_reader_init(&bbr, glb_policy->lb_response_payload);
grpc_slice response_slice = grpc_byte_buffer_reader_readall(&bbr);
grpc_byte_buffer_reader_destroy(&bbr);
grpc_byte_buffer_destroy(glb_policy->lb_response_payload);
grpc_grpclb_initial_response *response = NULL;

@ -811,19 +811,30 @@ static void rr_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy,
sc_args.args = new_args;
grpc_subchannel *subchannel = grpc_client_channel_factory_create_subchannel(
exec_ctx, args->client_channel_factory, &sc_args);
grpc_channel_args_destroy(exec_ctx, new_args);
grpc_error *error;
// Get the connectivity state of the subchannel. Already existing ones may
// be in a state other than INIT.
const grpc_connectivity_state subchannel_connectivity_state =
grpc_subchannel_check_connectivity(subchannel, &error);
if (error != GRPC_ERROR_NONE) {
// The subchannel is in error (e.g. shutting down). Ignore it.
GRPC_SUBCHANNEL_UNREF(exec_ctx, subchannel, "new_sc_connectivity_error");
GRPC_ERROR_UNREF(error);
continue;
}
if (GRPC_TRACER_ON(grpc_lb_round_robin_trace)) {
char *address_uri =
grpc_sockaddr_to_uri(&addresses->addresses[i].address);
gpr_log(
GPR_DEBUG,
"[RR %p] index %lu: Created subchannel %p for address uri %s into "
"subchannel_list %p",
"subchannel_list %p. Connectivity state %s",
(void *)p, (unsigned long)subchannel_index, (void *)subchannel,
address_uri, (void *)subchannel_list);
address_uri, (void *)subchannel_list,
grpc_connectivity_state_name(subchannel_connectivity_state));
gpr_free(address_uri);
}
grpc_channel_args_destroy(exec_ctx, new_args);
subchannel_data *sd = &subchannel_list->subchannels[subchannel_index++];
sd->subchannel_list = subchannel_list;
sd->subchannel = subchannel;
@ -835,7 +846,7 @@ static void rr_update_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy,
* won't be referring to this value again and it'll be overwritten after
* the first call to rr_connectivity_changed_locked */
sd->prev_connectivity_state = GRPC_CHANNEL_INIT;
sd->curr_connectivity_state = GRPC_CHANNEL_IDLE;
sd->curr_connectivity_state = subchannel_connectivity_state;
sd->user_data_vtable = addresses->user_data_vtable;
if (sd->user_data_vtable != NULL) {
sd->user_data =

@ -482,8 +482,8 @@ grpc_chttp2_flowctl_action grpc_chttp2_flowctl_get_bdp_action(
double bw_dbl = -1;
if (grpc_bdp_estimator_get_bw(&tfc->bdp_estimator, &bw_dbl)) {
// we target the max of BDP or bandwidth in microseconds.
int32_t frame_size =
GPR_CLAMP(GPR_MAX((int32_t)bw_dbl / 1000, bdp), 16384, 16777215);
int32_t frame_size = (int32_t)GPR_CLAMP(
GPR_MAX((int32_t)bw_dbl / 1000, bdp), 16384, 16777215);
grpc_chttp2_flowctl_urgency frame_size_urgency = delta_is_significant(
tfc, frame_size, GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE);
if (frame_size_urgency != GRPC_CHTTP2_FLOWCTL_NO_ACTION_NEEDED) {

@ -445,6 +445,7 @@ static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
}
static grpc_error *pollset_kick_all(grpc_pollset *pollset) {
GPR_TIMER_BEGIN("pollset_kick_all", 0);
grpc_error *error = GRPC_ERROR_NONE;
if (pollset->root_worker != NULL) {
grpc_pollset_worker *worker = pollset->root_worker;
@ -470,7 +471,7 @@ static grpc_error *pollset_kick_all(grpc_pollset *pollset) {
}
// TODO: sreek. Check if we need to set 'kicked_without_poller' to true here
// in the else case
GPR_TIMER_END("pollset_kick_all", 0);
return error;
}
@ -478,6 +479,7 @@ static void pollset_maybe_finish_shutdown(grpc_exec_ctx *exec_ctx,
grpc_pollset *pollset) {
if (pollset->shutdown_closure != NULL && pollset->root_worker == NULL &&
pollset->begin_refs == 0) {
GPR_TIMER_MARK("pollset_finish_shutdown", 0);
GRPC_CLOSURE_SCHED(exec_ctx, pollset->shutdown_closure, GRPC_ERROR_NONE);
pollset->shutdown_closure = NULL;
}
@ -485,12 +487,14 @@ static void pollset_maybe_finish_shutdown(grpc_exec_ctx *exec_ctx,
static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
grpc_closure *closure) {
GPR_TIMER_BEGIN("pollset_shutdown", 0);
GPR_ASSERT(pollset->shutdown_closure == NULL);
GPR_ASSERT(!pollset->shutting_down);
pollset->shutdown_closure = closure;
pollset->shutting_down = true;
GRPC_LOG_IF_ERROR("pollset_shutdown", pollset_kick_all(pollset));
pollset_maybe_finish_shutdown(exec_ctx, pollset);
GPR_TIMER_END("pollset_shutdown", 0);
}
#define MAX_EPOLL_EVENTS 100
@ -518,6 +522,8 @@ static grpc_error *pollset_epoll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
struct epoll_event events[MAX_EPOLL_EVENTS];
static const char *err_desc = "pollset_poll";
GPR_TIMER_BEGIN("pollset_epoll", 0);
int timeout = poll_deadline_to_millis_timeout(deadline, now);
if (timeout != 0) {
@ -525,13 +531,18 @@ static grpc_error *pollset_epoll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
}
int r;
do {
GPR_TIMER_BEGIN("epoll_wait", 0);
r = epoll_wait(g_epfd, events, MAX_EPOLL_EVENTS, timeout);
GPR_TIMER_END("epoll_wait", 0);
} while (r < 0 && errno == EINTR);
if (timeout != 0) {
GRPC_SCHEDULING_END_BLOCKING_REGION;
}
if (r < 0) return GRPC_OS_ERROR(errno, "epoll_wait");
if (r < 0) {
GPR_TIMER_END("pollset_epoll", 0);
return GRPC_OS_ERROR(errno, "epoll_wait");
}
grpc_error *error = GRPC_ERROR_NONE;
for (int i = 0; i < r; i++) {
@ -552,13 +563,14 @@ static grpc_error *pollset_epoll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
}
}
}
GPR_TIMER_END("pollset_epoll", 0);
return error;
}
static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
grpc_pollset_worker **worker_hdl, gpr_timespec *now,
gpr_timespec deadline) {
GPR_TIMER_BEGIN("begin_worker", 0);
if (worker_hdl != NULL) *worker_hdl = worker;
worker->initialized_cv = false;
SET_KICK_STATE(worker, UNKICKED);
@ -663,14 +675,17 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
if (pollset->kicked_without_poller) {
pollset->kicked_without_poller = false;
GPR_TIMER_END("begin_worker", 0);
return false;
}
GPR_TIMER_END("begin_worker", 0);
return worker->kick_state == DESIGNATED_POLLER && !pollset->shutting_down;
}
static bool check_neighbourhood_for_available_poller(
pollset_neighbourhood *neighbourhood) {
GPR_TIMER_BEGIN("check_neighbourhood_for_available_poller", 0);
bool found_worker = false;
do {
grpc_pollset *inspect = neighbourhood->active_root;
@ -692,6 +707,7 @@ static bool check_neighbourhood_for_available_poller(
}
SET_KICK_STATE(inspect_worker, DESIGNATED_POLLER);
if (inspect_worker->initialized_cv) {
GPR_TIMER_MARK("signal worker", 0);
gpr_cv_signal(&inspect_worker->cv);
}
} else {
@ -727,12 +743,14 @@ static bool check_neighbourhood_for_available_poller(
}
gpr_mu_unlock(&inspect->mu);
} while (!found_worker);
GPR_TIMER_END("check_neighbourhood_for_available_poller", 0);
return found_worker;
}
static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
grpc_pollset_worker *worker,
grpc_pollset_worker **worker_hdl) {
GPR_TIMER_BEGIN("end_worker", 0);
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_DEBUG, "PS:%p END_WORKER:%p", pollset, worker);
}
@ -802,6 +820,7 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
pollset_maybe_finish_shutdown(exec_ctx, pollset);
}
GPR_ASSERT(gpr_atm_no_barrier_load(&g_active_poller) != (gpr_atm)worker);
GPR_TIMER_END("end_worker", 0);
}
/* pollset->po.mu lock must be held by the caller before calling this.
@ -814,8 +833,10 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
grpc_pollset_worker worker;
grpc_error *error = GRPC_ERROR_NONE;
static const char *err_desc = "pollset_work";
GPR_TIMER_BEGIN("pollset_work", 0);
if (pollset->kicked_without_poller) {
pollset->kicked_without_poller = false;
GPR_TIMER_END("pollset_work", 0);
return GRPC_ERROR_NONE;
}
if (begin_worker(pollset, &worker, worker_hdl, &now, deadline)) {
@ -833,11 +854,14 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
}
end_worker(exec_ctx, pollset, &worker, worker_hdl);
gpr_tls_set(&g_current_thread_pollset, 0);
GPR_TIMER_END("pollset_work", 0);
return error;
}
static grpc_error *pollset_kick(grpc_pollset *pollset,
grpc_pollset_worker *specific_worker) {
GPR_TIMER_BEGIN("pollset_kick", 0);
grpc_error *ret_err = GRPC_ERROR_NONE;
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_strvec log;
gpr_strvec_init(&log);
@ -872,7 +896,7 @@ static grpc_error *pollset_kick(grpc_pollset *pollset,
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_ERROR, " .. kicked_without_poller");
}
return GRPC_ERROR_NONE;
goto done;
}
grpc_pollset_worker *next_worker = root_worker->next;
if (root_worker->kick_state == KICKED) {
@ -880,13 +904,13 @@ static grpc_error *pollset_kick(grpc_pollset *pollset,
gpr_log(GPR_ERROR, " .. already kicked %p", root_worker);
}
SET_KICK_STATE(root_worker, KICKED);
return GRPC_ERROR_NONE;
goto done;
} else if (next_worker->kick_state == KICKED) {
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_ERROR, " .. already kicked %p", next_worker);
}
SET_KICK_STATE(next_worker, KICKED);
return GRPC_ERROR_NONE;
goto done;
} else if (root_worker ==
next_worker && // only try and wake up a poller if
// there is no next worker
@ -896,7 +920,8 @@ static grpc_error *pollset_kick(grpc_pollset *pollset,
gpr_log(GPR_ERROR, " .. kicked %p", root_worker);
}
SET_KICK_STATE(root_worker, KICKED);
return grpc_wakeup_fd_wakeup(&global_wakeup_fd);
ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd);
goto done;
} else if (next_worker->kick_state == UNKICKED) {
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_ERROR, " .. kicked %p", next_worker);
@ -904,7 +929,7 @@ static grpc_error *pollset_kick(grpc_pollset *pollset,
GPR_ASSERT(next_worker->initialized_cv);
SET_KICK_STATE(next_worker, KICKED);
gpr_cv_signal(&next_worker->cv);
return GRPC_ERROR_NONE;
goto done;
} else if (next_worker->kick_state == DESIGNATED_POLLER) {
if (root_worker->kick_state != DESIGNATED_POLLER) {
if (GRPC_TRACER_ON(grpc_polling_trace)) {
@ -917,59 +942,64 @@ static grpc_error *pollset_kick(grpc_pollset *pollset,
if (root_worker->initialized_cv) {
gpr_cv_signal(&root_worker->cv);
}
return GRPC_ERROR_NONE;
goto done;
} else {
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_ERROR, " .. non-root poller %p (root=%p)", next_worker,
root_worker);
}
SET_KICK_STATE(next_worker, KICKED);
return grpc_wakeup_fd_wakeup(&global_wakeup_fd);
ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd);
goto done;
}
} else {
GPR_ASSERT(next_worker->kick_state == KICKED);
SET_KICK_STATE(next_worker, KICKED);
return GRPC_ERROR_NONE;
goto done;
}
} else {
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_ERROR, " .. kicked while waking up");
}
return GRPC_ERROR_NONE;
goto done;
}
} else if (specific_worker->kick_state == KICKED) {
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_ERROR, " .. specific worker already kicked");
}
return GRPC_ERROR_NONE;
goto done;
} else if (gpr_tls_get(&g_current_thread_worker) ==
(intptr_t)specific_worker) {
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_ERROR, " .. mark %p kicked", specific_worker);
}
SET_KICK_STATE(specific_worker, KICKED);
return GRPC_ERROR_NONE;
goto done;
} else if (specific_worker ==
(grpc_pollset_worker *)gpr_atm_no_barrier_load(&g_active_poller)) {
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_ERROR, " .. kick active poller");
}
SET_KICK_STATE(specific_worker, KICKED);
return grpc_wakeup_fd_wakeup(&global_wakeup_fd);
ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd);
goto done;
} else if (specific_worker->initialized_cv) {
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_ERROR, " .. kick waiting worker");
}
SET_KICK_STATE(specific_worker, KICKED);
gpr_cv_signal(&specific_worker->cv);
return GRPC_ERROR_NONE;
goto done;
} else {
if (GRPC_TRACER_ON(grpc_polling_trace)) {
gpr_log(GPR_ERROR, " .. kick non-waiting worker");
}
SET_KICK_STATE(specific_worker, KICKED);
return GRPC_ERROR_NONE;
goto done;
}
done:
GPR_TIMER_END("pollset_kick", 0);
return ret_err;
}
static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,

@ -33,7 +33,7 @@ namespace Grpc.Core.Tests
public static int Main(string[] args)
{
// Make logger immune to NUnit capturing stdout and stderr to workaround https://github.com/nunit/nunit/issues/1406.
GrpcEnvironment.SetLogger(new TextWriterLogger(Console.Error));
GrpcEnvironment.SetLogger(new ConsoleLogger());
#if NETCOREAPP1_0
return new AutoRun(typeof(NUnitMain).GetTypeInfo().Assembly).Execute(args, new ExtendedTextWrapper(Console.Out), Console.In);
#else

@ -4,26 +4,32 @@
<Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\win\native\grpc_csharp_ext.x86.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>grpc_csharp_ext.x86.dll</Link>
<Visible>false</Visible>
</Content>
<Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\win\native\grpc_csharp_ext.x64.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>grpc_csharp_ext.x64.dll</Link>
<Visible>false</Visible>
</Content>
<Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux\native\libgrpc_csharp_ext.x86.so">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>libgrpc_csharp_ext.x86.so</Link>
<Visible>false</Visible>
</Content>
<Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux\native\libgrpc_csharp_ext.x64.so">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>libgrpc_csharp_ext.x64.so</Link>
<Visible>false</Visible>
</Content>
<Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\osx\native\libgrpc_csharp_ext.x86.dylib">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>libgrpc_csharp_ext.x86.dylib</Link>
<Visible>false</Visible>
</Content>
<Content Include="$(MSBuildThisFileDirectory)..\..\runtimes\osx\native\libgrpc_csharp_ext.x64.dylib">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>libgrpc_csharp_ext.x64.dylib</Link>
<Visible>false</Visible>
</Content>
</ItemGroup>
</Project>
</Project>

@ -43,7 +43,7 @@ namespace Grpc.Core
static readonly HashSet<Channel> registeredChannels = new HashSet<Channel>();
static readonly HashSet<Server> registeredServers = new HashSet<Server>();
static ILogger logger = new NullLogger();
static ILogger logger = new LogLevelFilterLogger(new ConsoleLogger(), LogLevel.Off, true);
readonly GrpcThreadPool threadPool;
readonly DebugStats debugStats = new DebugStats();

@ -39,6 +39,10 @@ namespace Grpc.Core.Logging
/// <summary>
/// Error severity.
/// </summary>
Error
Error,
/// <summary>
/// Logging is off.
/// </summary>
Off = int.MaxValue
}
}

@ -27,6 +27,8 @@ namespace Grpc.Core.Logging
/// <summary>Logger that filters out messages below certain log level.</summary>
public class LogLevelFilterLogger : ILogger
{
// Verbosity environment variable used by C core.
private const string CoreVerbosityEnvVarName = "GRPC_VERBOSITY";
readonly ILogger innerLogger;
readonly LogLevel logLevel;
@ -39,6 +41,19 @@ namespace Grpc.Core.Logging
this.logLevel = logLevel;
}
/// <summary>
/// Creates and instance of <c>LogLevelFilter.</c>
/// The <c>fromEnvironmentVariable</c> parameter allows looking up "GRPC_VERBOSITY" setting provided by C-core
/// and uses the same log level for C# logs. Using this setting is recommended as it can prevent unintentionally hiding
/// C core logs requested by "GRPC_VERBOSITY" environment variable (which could happen if C# logger's log level was set to a more restrictive value).
/// </summary>
/// <param name="logger">the logger to forward filtered logs to.</param>
/// <param name="defaultLogLevel">the default log level, unless overriden by env variable.</param>
/// <param name="fromEnvironmentVariable">if <c>true</c>, override log level with setting from environment variable.</param>
public LogLevelFilterLogger(ILogger logger, LogLevel defaultLogLevel, bool fromEnvironmentVariable) : this(logger, GetLogLevelFromEnvironment(defaultLogLevel, fromEnvironmentVariable))
{
}
/// <summary>
/// Returns a logger associated with the specified type.
/// </summary>
@ -141,5 +156,33 @@ namespace Grpc.Core.Logging
innerLogger.Error(exception, message);
}
}
/// <summary>Get log level based on a default and lookup of <c>GRPC_VERBOSITY</c> environment variable.</summary>
private static LogLevel GetLogLevelFromEnvironment(LogLevel defaultLogLevel, bool fromEnvironmentVariable)
{
if (!fromEnvironmentVariable)
{
return defaultLogLevel;
}
var verbosityString = System.Environment.GetEnvironmentVariable(CoreVerbosityEnvVarName);
if (verbosityString == null)
{
return defaultLogLevel;
}
// NOTE: C core doesn't have "WARNING" log level
switch (verbosityString.ToUpperInvariant())
{
case "DEBUG":
return LogLevel.Debug;
case "INFO":
return LogLevel.Info;
case "ERROR":
return LogLevel.Error;
default:
return defaultLogLevel;
}
}
}
}

@ -33,7 +33,7 @@ namespace Grpc.Examples.Tests
public static int Main(string[] args)
{
// Make logger immune to NUnit capturing stdout and stderr to workaround https://github.com/nunit/nunit/issues/1406.
GrpcEnvironment.SetLogger(new TextWriterLogger(Console.Error));
GrpcEnvironment.SetLogger(new ConsoleLogger());
#if NETCOREAPP1_0
return new AutoRun(typeof(NUnitMain).GetTypeInfo().Assembly).Execute(args, new ExtendedTextWrapper(Console.Out), Console.In);
#else

@ -33,7 +33,7 @@ namespace Grpc.HealthCheck.Tests
public static int Main(string[] args)
{
// Make logger immune to NUnit capturing stdout and stderr to workaround https://github.com/nunit/nunit/issues/1406.
GrpcEnvironment.SetLogger(new TextWriterLogger(Console.Error));
GrpcEnvironment.SetLogger(new ConsoleLogger());
#if NETCOREAPP1_0
return new AutoRun(typeof(NUnitMain).GetTypeInfo().Assembly).Execute(args, new ExtendedTextWrapper(Console.Out), Console.In);
#else

@ -33,7 +33,7 @@ namespace Grpc.IntegrationTesting
public static int Main(string[] args)
{
// Make logger immune to NUnit capturing stdout and stderr to workaround https://github.com/nunit/nunit/issues/1406.
GrpcEnvironment.SetLogger(new TextWriterLogger(Console.Error));
GrpcEnvironment.SetLogger(new ConsoleLogger());
#if NETCOREAPP1_0
return new AutoRun(typeof(NUnitMain).GetTypeInfo().Assembly).Execute(args, new ExtendedTextWrapper(Console.Out), Console.In);
#else

@ -27,7 +27,7 @@ namespace Grpc.Microbenchmarks
{
public static void Main(string[] args)
{
GrpcEnvironment.SetLogger(new TextWriterLogger(Console.Error));
GrpcEnvironment.SetLogger(new ConsoleLogger());
var benchmark = new SendMessageBenchmark();
benchmark.Init();
foreach (int threadCount in new int[] {1, 1, 2, 4, 8, 12})

@ -33,7 +33,7 @@ namespace Grpc.Reflection.Tests
public static int Main(string[] args)
{
// Make logger immune to NUnit capturing stdout and stderr to workaround https://github.com/nunit/nunit/issues/1406.
GrpcEnvironment.SetLogger(new TextWriterLogger(Console.Error));
GrpcEnvironment.SetLogger(new ConsoleLogger());
#if NETCOREAPP1_0
return new AutoRun(typeof(NUnitMain).GetTypeInfo().Assembly).Execute(args, new ExtendedTextWrapper(Console.Out), Console.In);
#else

@ -0,0 +1,29 @@
/*
*
* Copyright 2017 gRPC authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#import "GRPCCall.h"
#import "GRPCCall+OAuth2.h"
#import <Google/SignIn.h>
/**
* Extend GIDSignIn class to comply GRPCAuthorizationProtocol
*/
@interface GIDSignIn (GRPC) <GRPCAuthorizationProtocol>
- (void)getTokenWithHandler:(void (^)(NSString *token))hander;
@end

@ -1,6 +1,6 @@
/*
*
* Copyright 2015 gRPC authors.
* Copyright 2017 gRPC authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,3 +16,13 @@
*
*/
#import "GRPCCall+GID.h"
@implementation GIDSignIn (GRPC)
- (void)getTokenWithHandler:(void (^)(NSString *token))handler {
NSString *token = self.currentUser.authentication.accessToken;
handler(token);
}
@end

@ -18,6 +18,13 @@
#import "GRPCCall.h"
/**
* The protocol of an OAuth2 token object from which GRPCCall can acquire a token.
*/
@protocol GRPCAuthorizationProtocol
- (void)getTokenWithHandler:(void (^)(NSString *token))hander;
@end
/** Helpers for setting and reading headers compatible with OAuth2. */
@interface GRPCCall (OAuth2)
@ -33,4 +40,12 @@
/** Returns the value (if any) of the "www-authenticate" response header (the challenge header). */
@property(atomic, readonly) NSString *oauth2ChallengeHeader;
/**
* The authorization token object to be used when starting the call. If the value is set to nil, no
* oauth authentication will be used.
*
* If tokenProvider exists, it takes precedence over the token set by oauth2AccessToken.
*/
@property(atomic, strong) id<GRPCAuthorizationProtocol> tokenProvider;
@end

@ -16,6 +16,8 @@
*
*/
#import <objc/runtime.h>
#import "GRPCCall+OAuth2.h"
static NSString * const kAuthorizationHeader = @"authorization";
@ -23,6 +25,7 @@ static NSString * const kBearerPrefix = @"Bearer ";
static NSString * const kChallengeHeader = @"www-authenticate";
@implementation GRPCCall (OAuth2)
@dynamic tokenProvider;
- (NSString *)oauth2AccessToken {
NSString *headerValue = self.requestHeaders[kAuthorizationHeader];
@ -45,4 +48,12 @@ static NSString * const kChallengeHeader = @"www-authenticate";
return self.responseHeaders[kChallengeHeader];
}
- (void)setTokenProvider:(id<GRPCAuthorizationProtocol>)tokenProvider {
objc_setAssociatedObject(self, @selector(tokenProvider), tokenProvider, OBJC_ASSOCIATION_RETAIN);
}
- (id<GRPCAuthorizationProtocol>)tokenProvider {
return objc_getAssociatedObject(self, @selector(tokenProvider));
}
@end

@ -18,6 +18,8 @@
#import "GRPCCall.h"
#import "GRPCCall+OAuth2.h"
#include <grpc/grpc.h>
#include <grpc/support/time.h>
#import <RxLibrary/GRXConcurrentWriteable.h>
@ -40,10 +42,14 @@ NSString * const kGRPCHeadersKey = @"io.grpc.HeadersKey";
NSString * const kGRPCTrailersKey = @"io.grpc.TrailersKey";
static NSMutableDictionary *callFlags;
static NSString * const kAuthorizationHeader = @"authorization";
static NSString * const kBearerPrefix = @"Bearer ";
@interface GRPCCall () <GRXWriteable>
// Make them read-write.
@property(atomic, strong) NSDictionary *responseHeaders;
@property(atomic, strong) NSDictionary *responseTrailers;
@property(atomic) BOOL isWaitingForToken;
@end
// The following methods of a C gRPC call object aren't reentrant, and thus
@ -181,9 +187,6 @@ static NSMutableDictionary *callFlags;
- (void)finishWithError:(NSError *)errorOrNil {
@synchronized(self) {
if (_state == GRXWriterStateFinished) {
return;
}
_state = GRXWriterStateFinished;
}
@ -211,7 +214,11 @@ static NSMutableDictionary *callFlags;
[self finishWithError:[NSError errorWithDomain:kGRPCErrorDomain
code:GRPCErrorCodeCancelled
userInfo:@{NSLocalizedDescriptionKey: @"Canceled by app"}]];
[self cancelCall];
if (!self.isWaitingForToken) {
[self cancelCall];
} else {
self.isWaitingForToken = NO;
}
}
- (void)dealloc {
@ -410,22 +417,13 @@ static NSMutableDictionary *callFlags;
#pragma mark GRXWriter implementation
- (void)startWithWriteable:(id<GRXWriteable>)writeable {
@synchronized(self) {
_state = GRXWriterStateStarted;
}
// Create a retain cycle so that this instance lives until the RPC finishes (or is cancelled).
// This makes RPCs in which the call isn't externally retained possible (as long as it is started
// before being autoreleased).
// Care is taken not to retain self strongly in any of the blocks used in this implementation, so
// that the life of the instance is determined by this retain cycle.
_retainSelf = self;
- (void)startCallWithWriteable:(id<GRXWriteable>)writeable {
_responseWriteable = [[GRXConcurrentWriteable alloc] initWithWriteable:writeable
dispatchQueue:_responseQueue];
_wrappedCall = [[GRPCWrappedCall alloc] initWithHost:_host serverName:_serverName path:_path];
_wrappedCall = [[GRPCWrappedCall alloc] initWithHost:_host
serverName:_serverName
path:_path];
NSAssert(_wrappedCall, @"Error allocating RPC objects. Low memory?");
[self sendHeaders:_requestHeaders];
@ -437,20 +435,49 @@ static NSMutableDictionary *callFlags;
// TODO(jcanizales): Check this on init.
[NSException raise:NSInvalidArgumentException format:@"host of %@ is nil", _host];
}
__weak typeof(self) weakSelf = self;
_connectivityMonitor = [GRPCConnectivityMonitor monitorWithHost:host];
__weak typeof(self) weakSelf = self;
void (^handler)() = ^{
typeof(self) strongSelf = weakSelf;
if (strongSelf) {
[strongSelf finishWithError:[NSError errorWithDomain:kGRPCErrorDomain
code:GRPCErrorCodeUnavailable
userInfo:@{ NSLocalizedDescriptionKey : @"Connectivity lost." }]];
}
[strongSelf finishWithError:[NSError errorWithDomain:kGRPCErrorDomain
code:GRPCErrorCodeUnavailable
userInfo:@{ NSLocalizedDescriptionKey : @"Connectivity lost." }]];
};
[_connectivityMonitor handleLossWithHandler:handler
wifiStatusChangeHandler:nil];
}
- (void)startWithWriteable:(id<GRXWriteable>)writeable {
@synchronized(self) {
_state = GRXWriterStateStarted;
}
// Create a retain cycle so that this instance lives until the RPC finishes (or is cancelled).
// This makes RPCs in which the call isn't externally retained possible (as long as it is started
// before being autoreleased).
// Care is taken not to retain self strongly in any of the blocks used in this implementation, so
// that the life of the instance is determined by this retain cycle.
_retainSelf = self;
if (self.tokenProvider != nil) {
self.isWaitingForToken = YES;
__weak typeof(self) weakSelf = self;
[self.tokenProvider getTokenWithHandler:^(NSString *token){
typeof(self) strongSelf = weakSelf;
if (strongSelf && strongSelf.isWaitingForToken) {
if (token) {
NSString *t = [kBearerPrefix stringByAppendingString:token];
strongSelf.requestHeaders[kAuthorizationHeader] = t;
}
[strongSelf startCallWithWriteable:writeable];
strongSelf.isWaitingForToken = NO;
}
}];
} else {
[self startCallWithWriteable:writeable];
}
}
- (void)setState:(GRXWriterState)newState {
@synchronized(self) {
// Manual transitions are only allowed from the started or paused states.

@ -103,7 +103,6 @@ static void CheckKeyValuePairIsValid(NSString *key, id value) {
}
- (void)setObject:(id)obj forKey:(NSString *)key {
[self checkCallIsNotStarted];
CheckIsNonNilASCII(@"Header name", key);
key = key.lowercaseString;
CheckKeyValuePairIsValid(key, obj);

@ -28,7 +28,7 @@
@implementation GRXConcurrentWriteable {
dispatch_queue_t _writeableQueue;
// This ensures that writesFinishedWithError: is only sent once to the writeable.
dispatch_once_t _alreadyFinished;
BOOL _alreadyFinished;
}
- (instancetype)init {
@ -65,19 +65,35 @@
- (void)enqueueSuccessfulCompletion {
dispatch_async(_writeableQueue, ^{
dispatch_once(&_alreadyFinished, ^{
BOOL finished = NO;
@synchronized (self) {
if (!_alreadyFinished) {
_alreadyFinished = YES;
} else {
finished = YES;
}
}
if (!finished) {
// Cancellation is now impossible. None of the other three blocks can run concurrently with
// this one.
[self.writeable writesFinishedWithError:nil];
// Skip any possible message to the wrapped writeable enqueued after this one.
self.writeable = nil;
});
}
});
}
- (void)cancelWithError:(NSError *)error {
NSAssert(error, @"For a successful completion, use enqueueSuccessfulCompletion.");
dispatch_once(&_alreadyFinished, ^{
BOOL finished = NO;
@synchronized (self) {
if (!_alreadyFinished) {
_alreadyFinished = YES;
} else {
finished = YES;
}
}
if (!finished) {
// Skip any of the still-enqueued messages to the wrapped writeable. We use the atomic setter to
// nillify writeable because we might be running concurrently with the blocks in
// _writeableQueue, and assignment with ARC isn't atomic.
@ -87,15 +103,23 @@
dispatch_async(_writeableQueue, ^{
[writeable writesFinishedWithError:error];
});
});
}
}
- (void)cancelSilently {
dispatch_once(&_alreadyFinished, ^{
BOOL finished = NO;
@synchronized (self) {
if (!_alreadyFinished) {
_alreadyFinished = YES;
} else {
finished = YES;
}
}
if (!finished) {
// Skip any of the still-enqueued messages to the wrapped writeable. We use the atomic setter to
// nillify writeable because we might be running concurrently with the blocks in
// _writeableQueue, and assignment with ARC isn't atomic.
self.writeable = nil;
});
}
}
@end

@ -179,7 +179,7 @@ void plugin_get_metadata(void *ptr, grpc_auth_metadata_context context,
grpc_metadata_array metadata;
bool cleanup = true;
if (Z_TYPE_P(retval) != IS_ARRAY) {
if (retval == NULL || Z_TYPE_P(retval) != IS_ARRAY) {
cleanup = false;
code = GRPC_STATUS_INVALID_ARGUMENT;
} else if (!create_metadata_array(retval, &metadata)) {

@ -66,6 +66,8 @@ PHP_GRPC_FREE_WRAPPED_FUNC_START(wrapped_grpc_channel)
if (!(PHP_GRPC_PERSISTENT_LIST_FIND(&EG(persistent_list), p->wrapper->key,
key_len, rsrc))) {
grpc_channel_destroy(p->wrapper->wrapped);
free(p->wrapper->target);
free(p->wrapper->args_hashstr);
}
gpr_mu_unlock(&global_persistent_list_mu);
}
@ -158,7 +160,7 @@ void create_and_add_channel_to_persistent_list(
grpc_channel_args args,
wrapped_grpc_channel_credentials *creds,
char *key,
php_grpc_int key_len) {
php_grpc_int key_len TSRMLS_DC) {
php_grpc_zend_resource new_rsrc;
channel_persistent_le_t *le;
// this links each persistent list entry to a destructor
@ -187,10 +189,8 @@ void create_and_add_channel_to_persistent_list(
* credentials.
*
* If the $args array contains a "force_new" key mapping to a boolean value
* of "true", a new underlying grpc_channel will be created regardless. If
* there are any opened channels on the same hostname, user must manually
* call close() on those dangling channels before the end of the PHP
* script.
* of "true", a new and separate underlying grpc_channel will be created
* and returned. This will not affect existing channels.
*
* @param string $target The hostname to associate with this channel
* @param array $args_array The arguments to pass to the Channel
@ -273,19 +273,15 @@ PHP_METHOD(Channel, __construct) {
}
channel->wrapper = malloc(sizeof(grpc_channel_wrapper));
channel->wrapper->key = key;
channel->wrapper->target = target;
channel->wrapper->args_hashstr = sha1str;
channel->wrapper->target = strdup(target);
channel->wrapper->args_hashstr = strdup(sha1str);
if (creds != NULL && creds->hashstr != NULL) {
channel->wrapper->creds_hashstr = creds->hashstr;
}
gpr_mu_init(&channel->wrapper->mu);
smart_str_free(&buf);
if (force_new) {
php_grpc_delete_persistent_list_entry(key, key_len TSRMLS_CC);
}
if (creds != NULL && creds->has_call_creds) {
if (force_new || (creds != NULL && creds->has_call_creds)) {
// If the ChannelCredentials object was composed with a CallCredentials
// object, there is no way we can tell them apart. Do NOT persist
// them. They should be individually destroyed.
@ -293,7 +289,7 @@ PHP_METHOD(Channel, __construct) {
} else if (!(PHP_GRPC_PERSISTENT_LIST_FIND(&EG(persistent_list), key,
key_len, rsrc))) {
create_and_add_channel_to_persistent_list(
channel, target, args, creds, key, key_len);
channel, target, args, creds, key, key_len TSRMLS_CC);
} else {
// Found a previously stored channel in the persistent list
channel_persistent_le_t *le = (channel_persistent_le_t *)rsrc->ptr;
@ -303,7 +299,7 @@ PHP_METHOD(Channel, __construct) {
strcmp(creds->hashstr, le->channel->creds_hashstr) != 0)) {
// somehow hash collision
create_and_add_channel_to_persistent_list(
channel, target, args, creds, key, key_len);
channel, target, args, creds, key, key_len TSRMLS_CC);
} else {
channel->wrapper = le->channel;
}
@ -416,12 +412,14 @@ PHP_METHOD(Channel, close) {
gpr_mu_lock(&channel->wrapper->mu);
if (channel->wrapper->wrapped != NULL) {
grpc_channel_destroy(channel->wrapper->wrapped);
free(channel->wrapper->target);
free(channel->wrapper->args_hashstr);
channel->wrapper->wrapped = NULL;
}
php_grpc_delete_persistent_list_entry(channel->wrapper->key,
strlen(channel->wrapper->key)
TSRMLS_CC);
php_grpc_delete_persistent_list_entry(channel->wrapper->key,
strlen(channel->wrapper->key)
TSRMLS_CC);
}
gpr_mu_unlock(&channel->wrapper->mu);
}
@ -449,12 +447,11 @@ static void php_grpc_channel_plink_dtor(php_grpc_zend_resource *rsrc
gpr_mu_lock(&le->channel->mu);
if (le->channel->wrapped != NULL) {
grpc_channel_destroy(le->channel->wrapped);
free(le->channel->key);
free(le->channel);
free(le->channel->target);
free(le->channel->args_hashstr);
}
gpr_mu_unlock(&le->channel->mu);
}
free(le);
}
ZEND_BEGIN_ARG_INFO_EX(arginfo_construct, 0, 0, 2)
@ -496,6 +493,7 @@ GRPC_STARTUP_FUNCTION(channel) {
INIT_CLASS_ENTRY(ce, "Grpc\\Channel", channel_methods);
ce.create_object = create_wrapped_grpc_channel;
grpc_ce_channel = zend_register_internal_class(&ce TSRMLS_CC);
gpr_mu_init(&global_persistent_list_mu);
le_plink = zend_register_list_destructors_ex(
NULL, php_grpc_channel_plink_dtor, "Persistent Channel", module_number);
PHP_GRPC_INIT_HANDLER(wrapped_grpc_channel, channel_ce_handlers);

@ -135,6 +135,8 @@ PHP_METHOD(ChannelCredentials, createSsl) {
pem_key_cert_pair.private_key = pem_key_cert_pair.cert_chain = NULL;
grpc_set_ssl_roots_override_callback(get_ssl_roots_override);
/* "|s!s!s!" == 3 optional nullable strings */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!s!s!",
&pem_root_certs, &root_certs_length,
@ -148,7 +150,7 @@ PHP_METHOD(ChannelCredentials, createSsl) {
}
php_grpc_int hashkey_len = root_certs_length + cert_chain_length;
char hashkey[hashkey_len];
char *hashkey = emalloc(hashkey_len);
if (root_certs_length > 0) {
strcpy(hashkey, pem_root_certs);
}
@ -164,6 +166,7 @@ PHP_METHOD(ChannelCredentials, createSsl) {
pem_key_cert_pair.private_key == NULL ? NULL : &pem_key_cert_pair, NULL);
zval *creds_object = grpc_php_wrap_channel_credentials(creds, hashstr, false
TSRMLS_CC);
efree(hashkey);
RETURN_DESTROY_ZVAL(creds_object);
}
@ -177,6 +180,8 @@ PHP_METHOD(ChannelCredentials, createComposite) {
zval *cred1_obj;
zval *cred2_obj;
grpc_set_ssl_roots_override_callback(get_ssl_roots_override);
/* "OO" == 2 Objects */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "OO", &cred1_obj,
grpc_ce_channel_credentials, &cred2_obj,
@ -245,7 +250,6 @@ void grpc_init_channel_credentials(TSRMLS_D) {
zend_class_entry ce;
INIT_CLASS_ENTRY(ce, "Grpc\\ChannelCredentials",
channel_credentials_methods);
grpc_set_ssl_roots_override_callback(get_ssl_roots_override);
ce.create_object = create_wrapped_grpc_channel_credentials;
grpc_ce_channel_credentials = zend_register_internal_class(&ce TSRMLS_CC);
PHP_GRPC_INIT_HANDLER(wrapped_grpc_channel_credentials,

@ -34,7 +34,8 @@
#include <ext/standard/info.h>
#include "php_grpc.h"
// ZEND_DECLARE_MODULE_GLOBALS(grpc)
ZEND_DECLARE_MODULE_GLOBALS(grpc)
static PHP_GINIT_FUNCTION(grpc);
/* {{{ grpc_functions[]
*
@ -55,13 +56,17 @@ zend_module_entry grpc_module_entry = {
grpc_functions,
PHP_MINIT(grpc),
PHP_MSHUTDOWN(grpc),
NULL,
PHP_RINIT(grpc),
NULL,
PHP_MINFO(grpc),
#if ZEND_MODULE_API_NO >= 20010901
PHP_GRPC_VERSION,
#endif
STANDARD_MODULE_PROPERTIES};
PHP_MODULE_GLOBALS(grpc),
PHP_GINIT(grpc),
NULL,
NULL,
STANDARD_MODULE_PROPERTIES_EX};
/* }}} */
#ifdef COMPILE_DL_GRPC
@ -99,7 +104,6 @@ PHP_MINIT_FUNCTION(grpc) {
REGISTER_INI_ENTRIES();
*/
/* Register call error constants */
grpc_init();
REGISTER_LONG_CONSTANT("Grpc\\CALL_OK", GRPC_CALL_OK,
CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR", GRPC_CALL_ERROR,
@ -227,7 +231,6 @@ PHP_MINIT_FUNCTION(grpc) {
grpc_init_channel_credentials(TSRMLS_C);
grpc_init_call_credentials(TSRMLS_C);
grpc_init_server_credentials(TSRMLS_C);
grpc_php_init_completion_queue(TSRMLS_C);
return SUCCESS;
}
/* }}} */
@ -240,9 +243,12 @@ PHP_MSHUTDOWN_FUNCTION(grpc) {
*/
// WARNING: This function IS being called by PHP when the extension
// is unloaded but the logs were somehow suppressed.
grpc_shutdown_timeval(TSRMLS_C);
grpc_php_shutdown_completion_queue(TSRMLS_C);
grpc_shutdown();
if (GRPC_G(initialized)) {
grpc_shutdown_timeval(TSRMLS_C);
grpc_php_shutdown_completion_queue(TSRMLS_C);
grpc_shutdown();
GRPC_G(initialized) = 0;
}
return SUCCESS;
}
/* }}} */
@ -259,6 +265,26 @@ PHP_MINFO_FUNCTION(grpc) {
*/
}
/* }}} */
/* {{{ PHP_RINIT_FUNCTION
*/
PHP_RINIT_FUNCTION(grpc) {
if (!GRPC_G(initialized)) {
grpc_init();
grpc_php_init_completion_queue(TSRMLS_C);
GRPC_G(initialized) = 1;
}
return SUCCESS;
}
/* }}} */
/* {{{ PHP_GINIT_FUNCTION
*/
static PHP_GINIT_FUNCTION(grpc) {
grpc_globals->initialized = 0;
}
/* }}} */
/* The previous line is meant for vim and emacs, so it can correctly fold and
unfold functions in source code. See the corresponding marks just before
function definition, where the functions purpose is also documented. Please

@ -49,14 +49,16 @@ PHP_MINIT_FUNCTION(grpc);
PHP_MSHUTDOWN_FUNCTION(grpc);
/* Displays information about the module */
PHP_MINFO_FUNCTION(grpc);
/* Code that runs at request start */
PHP_RINIT_FUNCTION(grpc);
/*
Declare any global variables you may need between the BEGIN
and END macros here:
*/
ZEND_BEGIN_MODULE_GLOBALS(grpc)
zend_bool initialized;
ZEND_END_MODULE_GLOBALS(grpc)
*/
/* In every utility function you add that needs to use variables
in php_grpc_globals, call TSRMLS_FETCH(); after declaring other

@ -517,8 +517,6 @@ class ChannelTest extends PHPUnit_Framework_TestCase
$state = $this->channel2->getConnectivityState();
$this->assertEquals(GRPC\CHANNEL_IDLE, $state);
// any dangling old connection to the same host must be
// manually closed
$this->channel1->close();
$this->channel2->close();
}
@ -529,6 +527,7 @@ class ChannelTest extends PHPUnit_Framework_TestCase
$this->channel1 = new Grpc\Channel('localhost:1', []);
$this->channel2 = new Grpc\Channel('localhost:1',
["force_new" => true]);
// channel3 shares with channel1
$this->channel3 = new Grpc\Channel('localhost:1', []);
// try to connect on channel2
@ -540,29 +539,31 @@ class ChannelTest extends PHPUnit_Framework_TestCase
$state = $this->channel2->getConnectivityState();
$this->assertConnecting($state);
$state = $this->channel3->getConnectivityState();
$this->assertConnecting($state);
$this->assertEquals(GRPC\CHANNEL_IDLE, $state);
$this->channel1->close();
$this->channel2->close();
}
/**
* @expectedException RuntimeException
*/
public function testPersistentChannelForceNewOldChannelClose()
{
$this->channel1 = new Grpc\Channel('localhost:1', []);
$this->channel2 = new Grpc\Channel('localhost:1',
["force_new" => true]);
// channel3 shares with channel1
$this->channel3 = new Grpc\Channel('localhost:1', []);
$this->channel1->close();
$state = $this->channel2->getConnectivityState();
$this->assertEquals(GRPC\CHANNEL_IDLE, $state);
$state = $this->channel3->getConnectivityState();
$this->assertEquals(GRPC\CHANNEL_IDLE, $state);
$this->channel2->close();
$this->channel3->close();
// channel3 already closed
$state = $this->channel3->getConnectivityState();
}
public function testPersistentChannelForceNewNewChannelClose()

@ -42,12 +42,9 @@
s.header_dir = name
src_dir = 'src/objective-c/GRPCClient'
s.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}"
s.private_header_files = "#{src_dir}/private/*.h"
s.header_mappings_dir = "#{src_dir}"
s.dependency 'gRPC-Core', version
s.dependency 'gRPC-RxLibrary', version
s.default_subspec = 'Main'
# Certificates, to be able to establish TLS connections:
s.resource_bundles = { 'gRPCCertificates' => ['etc/roots.pem'] }
@ -56,4 +53,22 @@
# This is needed by all pods that depend on gRPC-RxLibrary:
'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
}
s.subspec 'Main' do |ss|
ss.header_mappings_dir = "#{src_dir}"
ss.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}"
ss.exclude_files = "#{src_dir}/GRPCCall+GID.{h,m}"
ss.private_header_files = "#{src_dir}/private/*.h"
ss.dependency 'gRPC-Core', version
end
s.subspec 'GID' do |ss|
ss.header_mappings_dir = "#{src_dir}"
ss.source_files = "#{src_dir}/GRPCCall+GID.{h,m}"
ss.dependency 'Google/SignIn'
end
end

@ -24,13 +24,9 @@
</stability>
<license>Apache 2.0</license>
<notes>
- Fixed some memory leaks #9559, #10996
- Disabled cares dependency from gRPC C Core #10940
- De-coupled protobuf dependency #11112
- Fixed extension reported version #10842
- Added config.w32 for Windows support #8161
- Fixed PHP distrib test after cc files were added #11193
- Fixed protoc plugin comment escape bug #11025
- Channel are now by default persistent #11878
- Some bug fixes from 1.4 branch #12109, #12123
- Fixed hang bug when fork() was used #11814
</notes>
<contents>
<dir baseinstalldir="/" name="/">

@ -1,27 +0,0 @@
#!/bin/sh
# Copyright 2015 gRPC authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
GRPC_CPP_PLUGIN_PATH=`which grpc_cpp_plugin`
cd `dirname $0`/../..
find ./test -type f -name "*.proto" |
while read p ; do
echo "processing $p"
DIR=$(dirname "$p")
protoc $p --grpc_out=./ --plugin=protoc-gen-grpc=$GRPC_CPP_PLUGIN_PATH
protoc $p --cpp_out=./
done

@ -1,13 +0,0 @@
%YAML 1.2
--- |
<%namespace file="sln_defs.include" import="gen_solution"/>\
<%
solution_projects = [
p for p in vsprojects
if p.build in ['test', 'tool']
and p.language == 'c'
and not p.boringssl
and not p.zlib
]
%>\
${gen_solution(solution_projects, use_dlls='yes')}

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)\..;$(SolutionDir)\..\include;$(SolutionDir)\..\third_party\protobuf\src;$(SolutionDir)\..\third_party\gtest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>EnableAllWarnings</WarningLevel>
</ClCompile>
<Link>
<AdditionalDependencies>grpc++_test_util.lib;grpc_test_util.lib;gpr_test_util.lib;gtestd.lib;gflags.lib;shlwapi.lib;gpr.lib;grpc.lib;grpc++.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\gtest\msvc\gtest\Debug;$(SolutionDir)\..\third_party\gflags\lib\Debug;$(SolutionDir)\..\Debug;$(SolutionDir)\..\packages\grpc.dependencies.openssl.${vspackages_dict['grpc.dependencies.openssl'].version}\build\native\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -1,22 +0,0 @@
%YAML 1.2
--- |
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<Jenkins>false</Jenkins>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)\..;$(SolutionDir)\..\include;$(SolutionDir)\..\third_party\protobuf\src;${';'.join('$(SolutionDir)\\packages\\%s.%s\\build\\native\\include' % (p.name, p.version) for p in vspackages)};%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_WIN32_WINNT=0x600;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>EnableAllWarnings</WarningLevel>
</ClCompile>
<Link>
<!-- LNK4271 pollutes test output. See #4521 -->
<AdditionalOptions>/ignore:4217 %(AdditionalOptions)</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -1,7 +0,0 @@
%YAML 1.2
--- |
<%namespace file="sln_defs.include" import="gen_solution"/>\
<%
solution_projects = [p for p in vsprojects if p.build not in ['protoc', 'test', 'fuzzer'] and p.language in ['c', 'c++'] and p.vs_proj_dir == '.' and not (p.build == 'private' and p.language == 'c++') and not p.name in ['z', 'boringssl', 'grpc++_reflection']]
%>\
${gen_solution(solution_projects, use_dlls='yes')}

@ -1,7 +0,0 @@
%YAML 1.2
--- |
<%namespace file="sln_defs.include" import="gen_solution"/>\
<%
solution_projects = [p for p in vsprojects if p.build == 'all' and p.language == 'csharp']
%>\
${gen_solution(solution_projects, use_dlls='only')}

@ -1,7 +0,0 @@
%YAML 1.2
--- |
<%namespace file="sln_defs.include" import="gen_solution"/>\
<%
solution_projects = [p for p in vsprojects if p.build == 'protoc']
%>\
${gen_solution(solution_projects)}

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup>
<Link>
<AdditionalDependencies>ssleay32.lib;libeay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)\packages\grpc.dependencies.openssl.${vspackages_dict['grpc.dependencies.openssl'].version}\build\native\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -1,53 +0,0 @@
<%def name="get_name(vspackages, package)">${''.join('%s.%s' % (p.name, p.version) for p in vspackages if p.name == package)}</%def>
<%def name="gen_packages_config(packages)">\
<?xml version="1.0" encoding="utf-8"?>
<packages>
% for package in vspackages:
% if packages == 'all' or package.name in packages:
<package id="${package.name}" version="${package.version}" targetFramework="Native" />
% if package.redist:
<package id="${package.name}.redist" version="${package.version}" targetFramework="Native" />
% endif
% endif
% endfor
</packages>
</%def>\
<%def name="gen_package_props(packages, repo_root)">\
% for package in vspackages:
% if packages == 'all' or package.name in packages:
% if package.props:
<Import Project="${repo_root}\vsprojects\packages\${package.name}.${package.version}\build\native\${package.name}.props" Condition="Exists('${repo_root}\vsprojects\packages\${package.name}.${package.version}\build\native\${package.version}.props')" />
% endif
% endif
% endfor
</%def>\
<%def name="gen_package_targets(packages, repo_root)">\
% for package in vspackages:
% if packages == 'all' or package.name in packages:
% if package.redist:
<Import Project="${repo_root}\vsprojects\packages\${package.name}.redist.${package.version}\build\native\${package.name}.redist.targets" Condition="Exists('${repo_root}\vsprojects\packages\${package.name}.redist.${package.version}\build\native\grpc.dependencies\${package.name}.targets')" />
% endif
<Import Project="${repo_root}\vsprojects\packages\${package.name}.${package.version}\build\native\${package.name}.targets" Condition="Exists('${repo_root}\vsprojects\packages\${package.name}.${package.version}\build\native\grpc.dependencies\${package.name}.targets')" />
% endif
% endfor
</%def>\
<%def name="check_file_inner(file)"><Error Condition="!Exists('${file}')" Text="$([System.String]::Format('$(ErrorText)', '${file}')" /></%def>\
<%def name="check_file(file, repo_root, package)">${check_file_inner(file % {'root':repo_root, 'name':package.name, 'version':package.version})}</%def>\
<%def name="gen_package_ensure(packages, repo_root)">\
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
% for package in vspackages:
% if packages == 'all' or package.name in packages:
% if package.redist:
${check_file('%(root)s\\vsprojects\\packages\\%(name)s.redist.%(version)s\\build\\native\\%(name)s.redist.targets', repo_root, package)}
% endif
% if package.props:
${check_file('%(root)s\\vsprojects\\packages\\%(name)s.%(version)s\\build\\native\\%(name)s.props', repo_root, package)}
% endif
${check_file('%(root)s\\vsprojects\\packages\\%(name)s.%(version)s\\build\\native\\%(name)s.targets', repo_root, package)}
% endif
% endfor
</Target>
</%def>\

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup>
<Link>
<AdditionalDependencies>libprotobuf.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\protobuf\cmake\build\solution\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup>
<ClCompile>
<DisableSpecificWarnings>4244;4267;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
<Link>
<AdditionalDependencies>libprotoc.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\protobuf\cmake\build\solution\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -1,119 +0,0 @@
<%def name="gen_solution(solution_top_level_projects, use_dlls = 'no')">\
## Template for Visual Studio solution
## based on http://msdn.microsoft.com/en-us/library/bb165951(v=vs.90).aspx
## NOTE: tabs in this file are needed by Visual Studio to correctly interpret
## the file.
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
<%
## Visual Studio uses GUIDs for project types
## http://msdn.microsoft.com/en-us/library/hb23x61k%28v=vs.80%29.aspx
cpp_proj_type = "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"
all_projects = set()
for project in solution_top_level_projects:
for dep in project.deps:
all_projects.add(dep)
all_projects.add(project.name)
solution_projects = [vsproject_dict[project] for project in sorted(list(all_projects))]
%>\
% for project in solution_projects:
Project("${cpp_proj_type}") = "${project.name}", "vcxproj\${project.vs_proj_dir}\${project.name}\${project.name}.vcxproj", "${project.vs_project_guid}"
ProjectSection(myProperties) = preProject
% if project.is_library:
lib = "True"
% else:
lib = "False"
% endif
EndProjectSection
% if project.get('deps', None):
ProjectSection(ProjectDependencies) = postProject
% for dep in project.get('deps', []):
${vsproject_dict[dep].vs_project_guid} = ${vsproject_dict[dep].vs_project_guid}
% endfor
EndProjectSection
% endif
EndProject
% endfor
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
% if use_dlls == 'yes':
Debug-DLL|Win32 = Debug-DLL|Win32
Debug-DLL|x64 = Debug-DLL|x64
% endif
Release|Win32 = Release|Win32
Release|x64 = Release|x64
% if use_dlls == 'yes':
Release-DLL|Win32 = Release-DLL|Win32
Release-DLL|x64 = Release-DLL|x64
% endif
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
% for project in solution_projects:
% if use_dlls != 'only':
${project.vs_project_guid}.Debug|Win32.ActiveCfg = Debug|Win32
${project.vs_project_guid}.Debug|x64.ActiveCfg = Debug|x64
${project.vs_project_guid}.Release|Win32.ActiveCfg = Release|Win32
${project.vs_project_guid}.Release|x64.ActiveCfg = Release|x64
% if project.get('dll', False) != 'only':
${project.vs_project_guid}.Debug|Win32.Build.0 = Debug|Win32
${project.vs_project_guid}.Debug|x64.Build.0 = Debug|x64
${project.vs_project_guid}.Release|Win32.Build.0 = Release|Win32
${project.vs_project_guid}.Release|x64.Build.0 = Release|x64
% endif
% endif
% if use_dlls == 'yes':
% if project.get('dll', False) == False:
${project.vs_project_guid}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
${project.vs_project_guid}.Debug-DLL|Win32.Build.0 = Debug|Win32
${project.vs_project_guid}.Debug-DLL|x64.ActiveCfg = Debug|x64
${project.vs_project_guid}.Debug-DLL|x64.Build.0 = Debug|x64
${project.vs_project_guid}.Release-DLL|Win32.ActiveCfg = Release|Win32
${project.vs_project_guid}.Release-DLL|Win32.Build.0 = Release|Win32
${project.vs_project_guid}.Release-DLL|x64.ActiveCfg = Release|x64
${project.vs_project_guid}.Release-DLL|x64.Build.0 = Release|x64
% else:
${project.vs_project_guid}.Debug-DLL|Win32.ActiveCfg = Debug-DLL|Win32
${project.vs_project_guid}.Debug-DLL|Win32.Build.0 = Debug-DLL|Win32
${project.vs_project_guid}.Debug-DLL|x64.ActiveCfg = Debug-DLL|x64
${project.vs_project_guid}.Debug-DLL|x64.Build.0 = Debug-DLL|x64
${project.vs_project_guid}.Release-DLL|Win32.ActiveCfg = Release-DLL|Win32
${project.vs_project_guid}.Release-DLL|Win32.Build.0 = Release-DLL|Win32
${project.vs_project_guid}.Release-DLL|x64.ActiveCfg = Release-DLL|x64
${project.vs_project_guid}.Release-DLL|x64.Build.0 = Release-DLL|x64
% endif
% endif
% if use_dlls == 'only':
% if project.get('dll', False) == True:
${project.vs_project_guid}.Debug|Win32.ActiveCfg = Debug-DLL|Win32
${project.vs_project_guid}.Debug|Win32.Build.0 = Debug-DLL|Win32
${project.vs_project_guid}.Debug|x64.ActiveCfg = Debug-DLL|x64
${project.vs_project_guid}.Debug|x64.Build.0 = Debug-DLL|x64
${project.vs_project_guid}.Release|Win32.ActiveCfg = Release-DLL|Win32
${project.vs_project_guid}.Release|Win32.Build.0 = Release-DLL|Win32
${project.vs_project_guid}.Release|x64.ActiveCfg = Release-DLL|x64
${project.vs_project_guid}.Release|x64.Build.0 = Release-DLL|x64
% else:
${project.vs_project_guid}.Debug|Win32.ActiveCfg = Debug|Win32
${project.vs_project_guid}.Debug|Win32.Build.0 = Debug|Win32
${project.vs_project_guid}.Debug|x64.ActiveCfg = Debug|x64
${project.vs_project_guid}.Debug|x64.Build.0 = Debug|x64
${project.vs_project_guid}.Release|Win32.ActiveCfg = Release|Win32
${project.vs_project_guid}.Release|Win32.Build.0 = Release|Win32
${project.vs_project_guid}.Release|x64.ActiveCfg = Release|x64
${project.vs_project_guid}.Release|x64.Build.0 = Release|x64
% endif
% endif
% endfor
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
</%def>\

@ -1,70 +0,0 @@
<%!
import re
import hashlib
def calc_to_filter(path):
return '\\'.join(path.split('/')[:-1])
%>\
<%def name="get_repo_root(proj)">${'$(SolutionDir)\..'}</%def>\
<%def name="to_windows_path(path)">${path.replace('/','\\')}</%def>\
<%def name="to_filter(path)">${calc_to_filter(path)}</%def>\
<%def name="filter_to_guid(proj, filter)">${re.sub('(........)(....)(....)(....)', r'\1-\2-\3-\4-', hashlib.md5(''.join([filter, proj])).hexdigest())}</%def>\
<%def name="gen_filters(name, collection)">\
% for project in vsprojects:
% if project.name == name:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
% if project.get('src',[]):
<ItemGroup>
% for src_name in project.src:
<ClCompile Include="${get_repo_root(project)}\${to_windows_path(src_name)}">
<Filter>${to_filter(src_name)}</Filter>
</ClCompile>
% endfor
</ItemGroup>
% endif
% if project.get('dll_def', None):
<ItemGroup>
<None Include="${get_repo_root(project)}\${to_windows_path(project.dll_def)}" />
</ItemGroup>
% endif
% if project.get('public_headers',[]):
<ItemGroup>
% for public_header in project.public_headers:
<ClInclude Include="${get_repo_root(project)}\${to_windows_path(public_header)}">
<Filter>${to_filter(public_header)}</Filter>
</ClInclude>
% endfor
</ItemGroup>
% endif
% if project.get('headers',[]):
<ItemGroup>
% for header in project.headers:
<ClInclude Include="${get_repo_root(project)}\${to_windows_path(header)}">
<Filter>${to_filter(header)}</Filter>
</ClInclude>
% endfor
</ItemGroup>
% endif
<%
filters = set()
files = project.get('src', []) + project.get('public_headers', []) + project.get('headers', [])
for file in files:
filter = calc_to_filter(file)
paths = filter.split('\\')
for i in range(len(paths)):
filters.add('\\'.join(paths[:i + 1]))
filters = sorted(filters)
%>
<ItemGroup>
% for filter in filters:
<Filter Include="${filter}">
<UniqueIdentifier>{${filter_to_guid(project.name, filter)}}</UniqueIdentifier>
</Filter>
% endfor
</ItemGroup>
</Project>
% endif
% endfor
</%def>\

@ -1,20 +0,0 @@
%YAML 1.2
---
foreach: vsprojects
output_name: ${selected.vs_proj_dir}/${selected.name}/${selected.name}.vcxproj
cond: selected.build not in ['fuzzer']
template: |
<%namespace file="vcxproj_defs.include" import="gen_project"/>\
${gen_project(selected.name, vsprojects)}
---
foreach: vsprojects
output_name: ${selected.vs_proj_dir}/${selected.name}/${selected.name}.vcxproj.filters
cond: selected.build not in ['fuzzer']
template: |
<%namespace file="vcxproj.filters_defs.include" import="gen_filters"/>\
${gen_filters(selected.name, vsprojects)}
---
output_name: grpc/packages.config
template: |
<%namespace file="packages.include" import="gen_packages_config"/>\
${gen_packages_config('all')}

@ -1,256 +0,0 @@
<%namespace file="packages.include" import="gen_package_props,gen_package_targets,gen_package_ensure"/>\
<%def name="to_windows_path(path)">${path.replace('/','\\')}</%def>\
<%def name="get_subsystem(is_library)">${'Windows' if is_library else 'Console'}</%def>\
<%def name="item_definition_group(project, target, debug, dll, _64bit)">\
<%
repo_root = '$(SolutionDir)\..'
%>\
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='${'%s%s|%s' % ('Debug' if debug else 'Release', '-DLL' if dll else '', 'x64' if _64bit else 'Win32')}'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>${'Disabled' if debug else 'MaxSpeed'}</Optimization>
<PreprocessorDefinitions>WIN32;${'_DEBUG' if debug else 'NDEBUG'};_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
% if not debug:
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
% endif
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>${'MultiThreadedDebug' if debug else 'MultiThreaded'}</RuntimeLibrary>
<TreatWarningAsError>${'false' if target.boringssl else 'true'}</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
## Silence D9007 warning. See #4508
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>${get_subsystem(project.is_library)}</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
% if project.get("noentry", False):
<NoEntryPoint>true</NoEntryPoint>
% endif
% if project.get("dll_def", None):
<ModuleDefinitionFile>${repo_root}\${to_windows_path(project.dll_def)}</ModuleDefinitionFile>
% endif
% if not debug:
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
% endif
</Link>
</ItemDefinitionGroup>
</%def>\
<%def name="gen_project(name, collection)">\
<%
target = None
for p in vsprojects:
if p.name == name:
project = p
for t in collection:
if t.name == name:
target = t
props = project.vs_props
packages = project.vs_packages
configuration_type = project.vs_config_type
project_guid = project.vs_project_guid
if target.build == 'test' and target.language == 'c++':
props.extend(['cpptest'])
if configuration_type == 'Application':
if target.build == 'protoc':
props.extend(['protoc', 'protobuf'])
else:
if target.language == 'c++':
props.extend(['protobuf'])
props.extend(['winsock', 'zlib'])
packages.extend(['grpc.dependencies.zlib'])
if target.get('secure', 'check'):
props.extend(['openssl'])
packages.extend(['grpc.dependencies.openssl'])
else:
props.extend(['winsock'])
props.extend(['global'])
props = sorted(list(set(props)))
packages = sorted(list(set(packages)))
dll = project.get('dll', False)
repo_root = '$(SolutionDir)\..'
%>\
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
${gen_package_props(packages, repo_root)}\
<ItemGroup Label="ProjectConfigurations">
% if dll and dll != 'only':
<ProjectConfiguration Include="Debug-DLL|Win32">
<Configuration>Debug-DLL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug-DLL|x64">
<Configuration>Debug-DLL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release-DLL|Win32">
<Configuration>Release-DLL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release-DLL|x64">
<Configuration>Release-DLL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
% endif
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>${project_guid if project_guid else project.vs_project_guid}</ProjectGuid>
## Silence MSB8029 warning. See #4506
<IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
## Use different location for intermediate directory to make path shorter than 260 characters.
<IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<ConfigurationType>${configuration_type}</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<ConfigurationType>${configuration_type}</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
% if dll and dll != 'only':
<PropertyGroup Condition="'$(Configuration)'=='Debug-DLL'" Label="Configuration">
<ConfigurationType>${configuration_type}</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release-DLL'" Label="Configuration">
<ConfigurationType>${configuration_type}</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
% endif
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
% for prop in props:
<Import Project="${repo_root}\vsprojects\${prop}.props" />
% endfor
</ImportGroup>
<PropertyGroup Label="UserMacros" />
% for config in ['Debug', 'Release']:# + (['Debug-DLL', 'Release-DLL'] if dll and dll != 'only' else []):
<PropertyGroup Condition="'$(Configuration)'=='${config}'">
<TargetName>${name}</TargetName>
% for package in vspackages:
% if packages == 'all' or package.name in packages:
% if package.get('linkage', None) is not None:
<Linkage-${package.name.replace('.', '_')}>${package.linkage}</Linkage-${package.name.replace('.', '_')}>
% endif
<Configuration-${package.name.replace('.', '_')}>${config}</Configuration-${package.name.replace('.', '_')}>
% endif
% endfor
</PropertyGroup>
% endfor
% if dll and dll != 'only':
${item_definition_group(project, target, True, True, False)}
${item_definition_group(project, target, True, True, True)}
${item_definition_group(project, target, False, True, False)}
${item_definition_group(project, target, False, True, True)}
% endif
${item_definition_group(project, target, True, False, False)}
${item_definition_group(project, target, True, False, True)}
${item_definition_group(project, target, False, False, False)}
${item_definition_group(project, target, False, False, True)}
% if project.get('public_headers',[]):
<ItemGroup>
% for public_header in project.public_headers:
<ClInclude Include="${repo_root}\${to_windows_path(public_header)}" />
% endfor
</ItemGroup>
% endif
% if project.get('headers',[]):
<ItemGroup>
% for header in project.headers:
<ClInclude Include="${repo_root}\${to_windows_path(header)}" />
% endfor
</ItemGroup>
% endif
% if project.get('dll_def', None):
<ItemGroup>
<None Include="${repo_root}\${to_windows_path(project.dll_def)}" />
</ItemGroup>
% endif
% if project.get('src',[]):
<ItemGroup>
% for src_name in project.src:
% if src_name.endswith(".proto"):
<% src_name_parts = src_name.split(".") %>\
<ClCompile Include="${repo_root}\${to_windows_path(src_name_parts[0] + ".pb.cc")}">
</ClCompile>
<ClInclude Include="${repo_root}\${to_windows_path(src_name_parts[0] + ".pb.h")}">
</ClInclude>
<ClCompile Include="${repo_root}\${to_windows_path(src_name_parts[0] + ".grpc.pb.cc")}">
</ClCompile>
<ClInclude Include="${repo_root}\${to_windows_path(src_name_parts[0] + ".grpc.pb.h")}">
</ClInclude>
% else:
<ClCompile Include="${repo_root}\${to_windows_path(src_name)}">
</ClCompile>
% endif
% endfor
</ItemGroup>
% else:
<ItemGroup>
<ClCompile Include="${repo_root}\${to_windows_path('vsprojects/dummy.c')}">
</ClCompile>
</ItemGroup>
% endif
% if project.get('deps',[]):
<ItemGroup>
% for dep in project.deps:
<ProjectReference Include="${repo_root}\vsprojects\vcxproj\${vsproject_dict[dep].vs_proj_dir}\${dep}\${dep}.vcxproj">
<Project>${vsproject_dict[dep].vs_project_guid}</Project>
</ProjectReference>
% endfor
</ItemGroup>
% endif
%if packages:
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
%endif
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
${gen_package_targets(packages, repo_root)}\
</ImportGroup>
${gen_package_ensure(packages, repo_root)}\
</Project>
</%def>\

@ -1,14 +0,0 @@
%YAML 1.2
--- |
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup>
<Link>
<AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -1,15 +0,0 @@
%YAML 1.2
--- |
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup>
<Link>
<AdditionalDependencies>zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)\packages\grpc.dependencies.zlib.${vspackages_dict['grpc.dependencies.zlib'].version}\build\native\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\dynamic\cdecl;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -1,15 +0,0 @@
%YAML 1.2
--- |
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup>
<Link>
<AdditionalDependencies>zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)\packages\grpc.dependencies.zlib.${vspackages_dict['grpc.dependencies.zlib'].version}\build\native\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\static\cdecl;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -450,6 +450,37 @@ TEST_F(ClientLbEnd2endTest, RoundRobinUpdates) {
EXPECT_EQ("round_robin", channel_->GetLoadBalancingPolicyName());
}
TEST_F(ClientLbEnd2endTest, RoundRobinUpdateInError) {
const int kNumServers = 3;
StartServers(kNumServers);
ResetStub("round_robin");
std::vector<int> ports;
// Start with a single server.
ports.emplace_back(servers_[0]->port_);
SetNextResolution(ports);
WaitForServer(0);
// Send RPCs. They should all go to servers_[0]
for (size_t i = 0; i < 10; ++i) SendRpc();
EXPECT_EQ(10, servers_[0]->service_.request_count());
EXPECT_EQ(0, servers_[1]->service_.request_count());
EXPECT_EQ(0, servers_[2]->service_.request_count());
servers_[0]->service_.ResetCounters();
// Shutdown one of the servers to be sent in the update.
servers_[1]->Shutdown(false);
ports.emplace_back(servers_[1]->port_);
ports.emplace_back(servers_[2]->port_);
SetNextResolution(ports);
WaitForServer(0);
WaitForServer(2);
// Send three RPCs, one per server.
for (size_t i = 0; i < kNumServers; ++i) SendRpc();
// The server in shutdown shouldn't receive any.
EXPECT_EQ(0, servers_[1]->service_.request_count());
}
TEST_F(ClientLbEnd2endTest, RoundRobinManyUpdates) {
// Start servers and send one RPC per server.
const int kNumServers = 3;

@ -1,69 +0,0 @@
#!/usr/bin/env python2.7
# Copyright 2016 gRPC authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import re
import sys
from lxml import etree
def main():
root_dir = os.path.abspath(
os.path.join(os.path.dirname(sys.argv[0]), '../..'))
os.chdir(root_dir)
project_re = re.compile('Project\(.*\) = ".+", "(.+)", "(.+)"')
known_projects = {}
with open(os.path.join('vsprojects', 'grpc.sln')) as f:
for line in f.readlines():
m = project_re.match(line)
if not m:
continue
vcxproj_path, project_guid = m.groups()
if os.name != 'nt':
vcxproj_path = vcxproj_path.replace('\\', '/')
known_projects[project_guid] = vcxproj_path
ok = True
for vcxproj_path in known_projects.values():
with open(os.path.join(root_dir, 'vsprojects', vcxproj_path)) as f:
tree = etree.parse(f)
namespaces = {'ns': 'http://schemas.microsoft.com/developer/msbuild/2003'}
referenced_projects = tree.getroot().xpath('/ns:Project/ns:ItemGroup'
'/ns:ProjectReference'
'/ns:Project',
namespaces=namespaces)
for referenced_project in referenced_projects:
# Project tag under ProjectReference is a GUID reference.
if referenced_project.text not in known_projects:
target_vcxproj = referenced_project.getparent().attrib['Include']
guid = referenced_project.text
print ('In project "%s", dependency "%s" (with GUID "%s") is not in '
'grpc.sln' % (vcxproj_path, target_vcxproj, guid))
ok = False
if not ok:
exit(1)
if __name__ == '__main__':
main()

@ -31,4 +31,11 @@ PYTHONWARNINGS=ignore XDG_CACHE_HOME=/tmp/xdg-cache-home sudo -E pip install cov
# Download Docker images from DockerHub
export DOCKERHUB_ORGANIZATION=grpctesting
# If this is a PR using RUN_TESTS_FLAGS var, then add flags to filter tests
if [ -n "$KOKORO_GITHUB_PULL_REQUEST_NUMBER" ] && [ -n "$RUN_TESTS_FLAGS" ]; then
sudo apt-get install -y jq
ghprbTargetBranch=$(curl -s https://api.github.com/repos/grpc/grpc/pulls/$KOKORO_GITHUB_PULL_REQUEST_NUMBER | jq -r .base.ref)
export RUN_TESTS_FLAGS="$RUN_TESTS_FLAGS --filter_pr_tests --base_branch origin/$ghprbTargetBranch"
fi
git submodule update --init

@ -26,5 +26,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f basictests linux corelang dbg --inner_jobs 16 -j 1 --internal_ci"
value: "-f basictests linux corelang dbg --inner_jobs 16 -j 1 --internal_ci --max_time=3600"
}

@ -26,5 +26,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f basictests linux corelang opt --inner_jobs 16 -j 1 --internal_ci"
value: "-f basictests linux corelang opt --inner_jobs 16 -j 1 --internal_ci --max_time=3600"
}

@ -26,5 +26,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f basictests linux multilang --inner_jobs 16 -j 2 --internal_ci"
value: "-f basictests linux multilang --inner_jobs 16 -j 2 --internal_ci --max_time=3600"
}

@ -27,5 +27,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f c asan --inner_jobs 16 -j 1 --internal_ci --filter_pr_tests --base_branch origin/master --max_time=3600"
value: "-f c asan --inner_jobs 16 -j 1 --internal_ci --max_time=3600"
}

@ -27,5 +27,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f c msan --inner_jobs 16 -j 1 --internal_ci --filter_pr_tests --base_branch origin/master --max_time=3600"
value: "-f c msan --inner_jobs 16 -j 1 --internal_ci --max_time=3600"
}

@ -27,5 +27,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f c tsan --inner_jobs 16 -j 1 --internal_ci --filter_pr_tests --base_branch origin/master --max_time=3600"
value: "-f c tsan --inner_jobs 16 -j 1 --internal_ci --max_time=3600"
}

@ -27,5 +27,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f c ubsan --inner_jobs 16 -j 1 --internal_ci --filter_pr_tests --base_branch origin/master --max_time=3600"
value: "-f c ubsan --inner_jobs 16 -j 1 --internal_ci --max_time=3600"
}

@ -27,5 +27,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f c++ asan --inner_jobs 16 -j 1 --internal_ci --filter_pr_tests --base_branch origin/master --max_time=3600"
value: "-f c++ asan --inner_jobs 16 -j 1 --internal_ci --max_time=3600"
}

@ -27,5 +27,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f c++ tsan --inner_jobs 16 -j 1 --internal_ci --filter_pr_tests --base_branch origin/master --max_time=3600"
value: "-f c++ tsan --inner_jobs 16 -j 1 --internal_ci --max_time=3600"
}

@ -27,5 +27,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f basictests macos dbg --internal_ci -j 1 --inner_jobs 4"
value: "-f basictests macos dbg --internal_ci -j 1 --inner_jobs 4 --max_time=3600"
}

@ -27,5 +27,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f basictests macos opt --internal_ci -j 1 --inner_jobs 4"
value: "-f basictests macos opt --internal_ci -j 1 --inner_jobs 4 --max_time=3600"
}

@ -26,5 +26,5 @@ action {
env_vars {
key: "RUN_TESTS_FLAGS"
value: "-f basictests windows -j 1 --inner_jobs 8 --internal_ci"
value: "-f basictests windows -j 1 --inner_jobs 8 --internal_ci --max_time=3600"
}

@ -328,12 +328,10 @@ class ProtocArtifact:
environ=environ,
use_workspace=True)
else:
generator = 'Visual Studio 12 Win64' if self.arch == 'x64' else 'Visual Studio 12'
vcplatform = 'x64' if self.arch == 'x64' else 'Win32'
generator = 'Visual Studio 14 2015 Win64' if self.arch == 'x64' else 'Visual Studio 14 2015'
return create_jobspec(self.name,
['tools\\run_tests\\artifacts\\build_artifact_protoc.bat'],
environ={'generator': generator,
'Platform': vcplatform},
environ={'generator': generator},
use_workspace=True)
def __str__(self):

@ -14,18 +14,25 @@
mkdir -p %ARTIFACTS_OUT%
setlocal
cd third_party/protobuf/cmake
@rem enter repo root
cd /d %~dp0\..\..\..
mkdir build & cd build
mkdir solution & cd solution
cmake -G "%generator%" -Dprotobuf_BUILD_TESTS=OFF ../.. || goto :error
endlocal
mkdir cmake
cd cmake
mkdir build
cd build
call vsprojects/build_plugins.bat || goto :error
@rem TODO(jtattermusch): Stop hardcoding path to yasm once Jenkins workers can locate yasm correctly
@rem If yasm is not on the path, use hardcoded path instead.
yasm --version || set USE_HARDCODED_YASM_PATH_MAYBE=-DCMAKE_ASM_NASM_COMPILER="C:/Program Files (x86)/yasm/yasm.exe"
xcopy /Y third_party\protobuf\cmake\build\solution\Release\protoc.exe %ARTIFACTS_OUT%\ || goto :error
xcopy /Y vsprojects\Release\*_plugin.exe %ARTIFACTS_OUT%\ || xcopy /Y vsprojects\x64\Release\*_plugin.exe %ARTIFACTS_OUT%\ || goto :error
cmake -G "%generator%" -DgRPC_BUILD_TESTS=OFF -DgRPC_MSVC_STATIC_RUNTIME=ON %USE_HARDCODED_YASM_PATH_MAYBE% ../.. || goto :error
cmake --build . --target protoc --config Release || goto :error
cmake --build . --target plugins --config Release || goto :error
cd ..\..
xcopy /Y cmake\build\third_party\protobuf\Release\protoc.exe %ARTIFACTS_OUT%\ || goto :error
xcopy /Y cmake\build\Release\*_plugin.exe %ARTIFACTS_OUT%\ || goto :error
goto :EOF

@ -1,35 +0,0 @@
@rem Copyright 2016 gRPC authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem http://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem Performs nuget restore step for C/C++.
setlocal
@rem enter repo root
cd /d %~dp0\..\..\..
@rem Location of nuget.exe
set NUGET=C:\nuget\nuget.exe
if exist %NUGET% (
%NUGET% restore vsprojects/grpc.sln || goto :error
)
endlocal
goto :EOF
:error
echo Failed!
exit /b %errorlevel%

@ -14,6 +14,8 @@
setlocal
set ARCHITECTURE=%1
cd /d %~dp0\..\..\..
mkdir cmake
@ -25,7 +27,7 @@ cd build
@rem If yasm is not on the path, use hardcoded path instead.
yasm --version || set USE_HARDCODED_YASM_PATH_MAYBE=-DCMAKE_ASM_NASM_COMPILER="C:/Program Files (x86)/yasm/yasm.exe"
cmake -G "Visual Studio 14 2015" -DgRPC_BUILD_TESTS=ON %USE_HARDCODED_YASM_PATH_MAYBE% ../.. || goto :error
cmake -G "Visual Studio 14 2015" -A %ARCHITECTURE% -DgRPC_BUILD_TESTS=ON %USE_HARDCODED_YASM_PATH_MAYBE% ../.. || goto :error
endlocal

@ -234,15 +234,17 @@ class CLanguage(object):
def configure(self, config, args):
self.config = config
self.args = args
if self.args.compiler == 'cmake':
if self.platform == 'windows':
_check_compiler(self.args.compiler, ['default', 'cmake'])
_check_arch(self.args.arch, ['default', 'x64', 'x86'])
self._cmake_arch_option = 'x64' if self.args.arch == 'x64' else 'Win32'
self._use_cmake = True
self._make_options = []
elif self.args.compiler == 'cmake':
_check_arch(self.args.arch, ['default'])
self._use_cmake = True
self._docker_distro = 'jessie'
self._make_options = []
elif self.platform == 'windows':
self._use_cmake = False
self._make_options = [_windows_toolset_option(self.args.compiler),
_windows_arch_option(self.args.arch)]
else:
self._use_cmake = False
self._docker_distro, self._make_options = self._compiler_options(self.args.use_docker,
@ -303,13 +305,7 @@ class CLanguage(object):
if self.args.iomgr_platform in target.get('exclude_iomgrs', []):
continue
if self.platform == 'windows':
if self._use_cmake:
binary = 'cmake/build/%s/%s.exe' % (_MSBUILD_CONFIG[self.config.build_config], target['name'])
else:
binary = 'vsprojects/%s%s/%s.exe' % (
'x64/' if self.args.arch == 'x64' else '',
_MSBUILD_CONFIG[self.config.build_config],
target['name'])
binary = 'cmake/build/%s/%s.exe' % (_MSBUILD_CONFIG[self.config.build_config], target['name'])
else:
if self._use_cmake:
binary = 'cmake/build/%s' % target['name']
@ -370,16 +366,12 @@ class CLanguage(object):
return self._make_options;
def pre_build_steps(self):
if self._use_cmake:
if self.platform == 'windows':
return [['tools\\run_tests\\helper_scripts\\pre_build_cmake.bat']]
else:
return [['tools/run_tests/helper_scripts/pre_build_cmake.sh']]
if self.platform == 'windows':
return [['tools\\run_tests\\helper_scripts\\pre_build_cmake.bat', self._cmake_arch_option]]
elif self._use_cmake:
return [['tools/run_tests/helper_scripts/pre_build_cmake.sh']]
else:
if self.platform == 'windows':
return [['tools\\run_tests\\helper_scripts\\pre_build_c.bat']]
else:
return []
return []
def build_steps(self):
return []
@ -1111,30 +1103,6 @@ def _check_arch_option(arch):
sys.exit(1)
def _windows_build_bat(compiler):
"""Returns name of build.bat for selected compiler."""
# For CoreCLR, fall back to the default compiler for C core
if compiler == 'default' or compiler == 'vs2013':
return 'vsprojects\\build_vs2013.bat'
elif compiler == 'vs2015':
return 'vsprojects\\build_vs2015.bat'
else:
print('Compiler %s not supported.' % compiler)
sys.exit(1)
def _windows_toolset_option(compiler):
"""Returns msbuild PlatformToolset for selected compiler."""
# For CoreCLR, fall back to the default compiler for C core
if compiler == 'default' or compiler == 'vs2013' or compiler == 'coreclr':
return '/p:PlatformToolset=v120'
elif compiler == 'vs2015':
return '/p:PlatformToolset=v140'
else:
print('Compiler %s not supported.' % compiler)
sys.exit(1)
def _docker_arch_suffix(arch):
"""Returns suffix to dockerfile dir to use."""
if arch == 'default' or arch == 'x64':
@ -1233,7 +1201,6 @@ argp.add_argument('--compiler',
choices=['default',
'gcc4.4', 'gcc4.6', 'gcc4.8', 'gcc4.9', 'gcc5.3', 'gcc_musl',
'clang3.4', 'clang3.5', 'clang3.6', 'clang3.7',
'vs2013', 'vs2015',
'python2.7', 'python3.4', 'python3.5', 'python3.6', 'pypy', 'pypy3', 'python_alpine',
'node0.12', 'node4', 'node5', 'node6', 'node7', 'node8',
'electron1.3', 'electron1.6',

@ -211,15 +211,25 @@ def _create_portability_test_jobs(extra_args=[], inner_jobs=_DEFAULT_INNER_JOBS)
# portability C on Windows
for arch in ['x86', 'x64']:
for compiler in ['vs2013', 'vs2015']:
test_jobs += _generate_jobs(languages=['c'],
configs=['dbg'],
platforms=['windows'],
arch=arch,
compiler=compiler,
labels=['portability', 'corelang'],
extra_args=extra_args,
inner_jobs=inner_jobs)
test_jobs += _generate_jobs(languages=['c'],
configs=['dbg'],
platforms=['windows'],
arch=arch,
compiler='default',
labels=['portability', 'corelang'],
extra_args=extra_args,
inner_jobs=inner_jobs)
# portability C++ on Windows
# TODO(jtattermusch): some of the tests are failing, so we force --build_only
test_jobs += _generate_jobs(languages=['c++'],
configs=['dbg'],
platforms=['windows'],
arch='default',
compiler='default',
labels=['portability', 'corelang'],
extra_args=extra_args + ['--build_only'],
inner_jobs=inner_jobs)
# C and C++ with the c-ares DNS resolver on Linux
test_jobs += _generate_jobs(languages=['c', 'c++'],
@ -236,12 +246,12 @@ def _create_portability_test_jobs(extra_args=[], inner_jobs=_DEFAULT_INNER_JOBS)
# extra_args=extra_args,
# extra_envs={'GRPC_DNS_RESOLVER': 'ares'})
# cmake build for C and C++
# C and C++ build with cmake on Linux
# TODO(jtattermusch): some of the tests are failing, so we force --build_only
# to make sure it's buildable at least.
test_jobs += _generate_jobs(languages=['c', 'c++'],
configs=['dbg'],
platforms=['linux', 'windows'],
platforms=['linux'],
arch='default',
compiler='cmake',
labels=['portability', 'corelang'],

@ -10,7 +10,6 @@
- script: tools/buildgen/generate_projects.sh -j 3
cpu_cost: 3
- script: tools/distrib/check_copyright.py
- script: tools/distrib/check_vsprojects.py
- script: tools/distrib/clang_format_code.sh
- script: tools/distrib/check_trailing_newlines.sh
- script: tools/distrib/check_nanopb_output.sh

@ -1,6 +1,6 @@
# Pre-generated MS Visual Studio project & solution files
# Pre-generated MS Visual Studio project & solution files: DELETED
**DEPRECATED, please use cmake instead (it can generate Visual Studio projects for you). We will continue providing pre-generated VS projects for a while, but we will likely get rid of them entirely at some point.**
**The pre-generated MS Visual Studio project & solution files are no longer available, please use cmake instead (it can generate Visual Studio projects for you).**
**Pre-generated MS Visual Studio projects used to be the recommended way to build on Windows, but there were some limitations:**
- **hard to build dependencies, expecially boringssl (deps usually support cmake quite well)**
@ -8,54 +8,4 @@
- **.proto codegen is hard to support in Visual Studio directly (but we have a pretty decent support in cmake)**
- **It's a LOT of generated files. We prefer not to have too much generated code in our github repo.**
Versions 2013 and 2015 are both supported. You can use [their respective
community
editions](https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx).
# Building
We are using [NuGet](http://www.nuget.org) to pull zlib and openssl dependencies.
If you don't have Visual Studio NuGet plugin installed, you'll need to
download nuget.exe from the web and manually restore the NuGet packages.
```
> REM Run from this directory.
> REM No need to do this if you have NuGet visual studio extension.
> nuget restore grpc.sln
```
After that, you can build the solution using one of these options:
1. open `grpc.sln` with Visual Studio and hit "Build".
2. build from commandline using `msbuild grpc.sln /p:Configuration=Debug`
# C/C++ Test Dependencies
* gtest isn't available as a git repo like the other dependencies. download it and add it to `/third_party/gtest/` (the folder will end up with `/build-aux/`, `/cmake/`, `/codegear/`, etc. folders in it).
* if using vs2013: open/import the gtest solution in `/msvc/`, and save over the first solution (you will have to change it from read-only). change all projects to use `/MDd` (Property Pages - C/C++ - Code Generation - Runtime Library) and build. This is a "multithreaded debug" setting and it needs to match grpc.
* build all
* open protobuf solution in `/third_party/protobuf/vsprojects`
* if using vs2013: on import the gtest stuff will probably fail, I think the paths are interpreted wrong. it's ok.
* tests and test_plugin will fail when built. also ok
* build all
* gflags is automatically imported as a git submodule but it needs to have CMake run on it to be ready for a specific platform
* download [CMake](http://www.cmake.org/) windows installer; install
* open visual studio developer command prompt (not sure if dev command prompt is necessary)
* run `cmake <path to gtest directory>`
* this will build a `.sln` and fill up the `/third_party/gflags/include/gflags/` directory with headers
* build all
* install [NuGet](http://www.nuget.org)
* nuget should automatically bring in built versions of zlib and openssl when building grpc.sln (the versions in `/third_party/` are not used). If it doesn't work use `tools->nuget...->manage...`. The packages are put in `/vsprojects/packages/`
# Building protoc plugins
For generating service stub code, gRPC relies on plugins for `protoc` (the protocol buffer compiler). The solution `grpc_protoc_plugins.sln` allows you to build
Windows .exe binaries of gRPC protoc plugins.
- Follow instructions in `third_party\protobuf\cmake\README.md` to create Visual Studio 2013 projects for protobuf.
```
$ cd third_party/protobuf/cmake
$ mkdir build & cd build
$ mkdir solution & cd solution
$ cmake -G "Visual Studio 12 2013" -Dprotobuf_BUILD_TESTS=OFF ../..
```
- Open solution `third_party\protobuf\cmake\build\solution\protobuf.sln` and build it in Release mode. That will build libraries `libprotobuf.lib` and `libprotoc.lib` needed for the next step.
- Open solution `vsprojects\grpc_protoc_plugins.sln` and build it in Release mode. As a result, you should obtain a set of gRPC protoc plugin binaries (`grpc_cpp_plugin.exe`, `grpc_csharp_plugin.exe`, ...)
See [INSTALL.md](/INSTALL.md) for detailed instructions how to build using cmake on Windows.

@ -1,37 +0,0 @@
@rem Copyright 2016 gRPC authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem http://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem Convenience script to build gRPC protoc plugins from command line. protoc plugins are used to generate service stub code from .proto service defintions.
setlocal
@rem enter this directory
cd /d %~dp0
@rem Set VS variables (uses Visual Studio 2013)
@call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" x86
@rem Build third_party/protobuf
msbuild ..\third_party\protobuf\cmake\build\solution\protobuf.sln /p:Configuration=Release || goto :error
@rem Build the C# protoc plugins
msbuild grpc_protoc_plugins.sln /p:Configuration=Release || goto :error
endlocal
goto :EOF
:error
echo Failed!
exit /b %errorlevel%

@ -1,24 +0,0 @@
@rem Copyright 2016 gRPC authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem http://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem Convenience wrapper that runs specified gRPC target using msbuild
@rem Usage: build_vs2013.bat TARGET_NAME
setlocal
@rem Set VS variables (uses Visual Studio 2013)
@call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" x86
msbuild %*
exit /b %ERRORLEVEL%
endlocal

@ -1,24 +0,0 @@
@rem Copyright 2016 gRPC authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem http://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem Convenience wrapper that runs specified gRPC target using msbuild
@rem Usage: build_vs2015.bat TARGET_NAME
setlocal
@rem Set VS variables (uses Visual Studio 2015)
@call "%VS140COMNTOOLS%\..\..\vc\vcvarsall.bat" x86
msbuild %*
exit /b %ERRORLEVEL%
endlocal

File diff suppressed because it is too large Load Diff

@ -1,10 +0,0 @@
*.nupkg
*.def
/nuget.exe
/packages
/Debug
/Release
/output
/x64
/dest

@ -1,38 +0,0 @@
OpenSSL Native Nuget package
-------------------------
Uses [CoApp](http://coapp.org/) project to build the zlib package.
Prerequisites
-------------
Multiple versions of VS installed to be able to build all the targets:
* Visual Studio 2015
* Visual Studio 2013
* Visual Studio 2010 (you might need SP1 to prevent LNK1123 error)
ActivePerl
CoApp toolkit: http://downloads.coapp.org/files/CoApp.Tools.Powershell.msi
More details on installation: http://coapp.org/tutorials/installation.html
Building
--------
Build all flavors of openssl library using the provided batch file.
```
buildall.bat
```
Then, create NuGet package using powershell (you'll need the CoApp toolkit installed):
```
[THIS_DIRECTORY]> Write-NuGetPackage grpc.dependencies.openssl.autopkg
```
This will create three NuGet packages:
* the main dev package
* the redistributable package that contains just the binaries and no headers
* the symbols package (debug symbols)
Later, you can push the package to NuGet.org repo.
Attention: before pusing the resulting nuget package to public nuget repo, you have to be 100% sure it works correctly - there’s no way how to delete or update an already existing package.

@ -1,84 +0,0 @@
@rem Copyright 2016 gRPC authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem http://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
rem Restore using NuGet dependencies (Download NuGet from nuget.org and put it in this directory first)
nuget restore || goto eof:
setlocal
rem First do a bit of hacking to make sure we have headers ready in openssl's inc32 directory
cd ..\..\..\third_party\openssl
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
perl Configure no-asm VC-WIN32 || goto :eof
perl util\mkfiles.pl >MINFO || goto :eof
perl util\mk1mf.pl no-asm VC-WIN32 >ms\nt.mak || goto :eof
mkdir inc32\openssl
mkdir tmp32
nmake -f ms\nt.mak headers || goto :eof
endlocal
setlocal
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
call :build x64 Release v140 || goto :eof
call :build x64 Debug v140 || goto :eof
endlocal
setlocal
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
call :build Win32 Release v140 || goto :eof
call :build Win32 Debug v140 || goto :eof
endlocal
setlocal
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" amd64
call :build x64 Release v120 || goto :eof
call :build x64 Debug v120 || goto :eof
endlocal
setlocal
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
call :build Win32 Release v120 || goto :eof
call :build Win32 Debug v120 || goto :eof
endlocal
rem setlocal
rem call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" amd64
rem call :build x64 Release v110 || goto :eof
rem call :build x64 Debug v110 || goto :eof
rem endlocal
rem setlocal
rem call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86
rem call :build Win32 Release v110 || goto :eof
rem call :build Win32 Debug v110 || goto :eof
rem endlocal
rem setlocal
rem call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64
rem call :build x64 Release v100 || goto :eof
rem call :build x64 Debug v100 || goto :eof
rem endlocal
setlocal
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
call :build Win32 Release v100 || goto :eof
call :build Win32 Debug v100 || goto :eof
endlocal
:build
msbuild /m:4 /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=dynamic /P:ConfigurationType=DynamicLibrary .\openssl.sln || goto :eof
msbuild /m:4 /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=static /P:ConfigurationType=StaticLibrary .\openssl.sln || goto :eof
goto :eof

@ -1,110 +0,0 @@
@import @"version.inc";
configurations
{
// See https://github.com/coapp/coapp.powershell/issues/112
Toolset
{
key : "PlatformToolset"; // this is CoApp pre-defined key
choices: { v140, v120, v110, v100 };
};
}
#define {
package-id = "grpc.dependencies.openssl";
}
nuget {
// the nuspec file metadata. Gets created/updated on build
nuspec {
id = ${package-id};
version : ${package-version};
title: gRPC Native Dependency: OpenSSL;
authors: {Mark J. Cox, Ralf S. Engelschall, Dr. Stephen Henson, Ben Laurie, Garrett Serack, Tim Rogers};
owners: {Jan Tattermusch};
licenseUrl: "http://www.openssl.org/source/license.html";
projectUrl: "http://github.com/grpc/grpc";
iconUrl: "http://openssl.com/images/openssl-logo.png";
requireLicenseAcceptance:false;
summary: "An OpenSSL library";
description: @"Native OpenSSL library.
OpenSSL homepage: http://www.openssl.org";
releaseNotes: "Release of OpenSSL 1.0.2d libraries.";
copyright: Copyright 2015;
tags: { openssl, native, CoApp };
};
dependencies {
packages : {
grpc.dependencies.zlib/1.2.8.10
};
}
// the files that go into the content folders
// (inserted into the nuspec file)
files {
// .targets file that are applied when redist package is installed from a managed project.
managed_build: {
#output {
package = redist;
};
#destination = "\build\portable-net45+netcore45+wpa81+wp8";
"managed_targets\${package-id}.redist.targets";
};
nestedInclude: {
#destination = "${d_include}\openssl";
#excludes : { ..\..\..\third_party\openssl\inc32\openssl\opensslconf.h };
"..\..\..\third_party\openssl\inc32\openssl\*";
};
// TODO(jtattermusch): Visual Studio 2010 and 2012 Express (v100 and v110 toolsets) don't support x64,
// so while generating the package, you will get a warning that corresponding files are missing
// (and the resulting package will be somewhat incomplete).
("v100,v120,v140", "Win32,x64", "release,debug", "Dynamic,Static") => {
[${0},${1},${2},${3}] {
lib: { .\output\${0}\${1}\${2}\${3}\libeay32.lib;
.\output\${0}\${1}\${2}\${3}\ssleay32.lib };
source: {
#destination = ${d_src}\openssl;
.\output\${0}\${1}\${2}\${3}\include\openssl\opensslconf.h
};
};
};
("v100,v120,v140", "Win32,x64", "release,debug", "Dynamic") => {
[${0},${1},${2},${3}] {
bin: { .\output\${0}\${1}\${2}\${3}\libeay32.dll;
.\output\${0}\${1}\${2}\${3}\ssleay32.dll };
symbols: { .\output\${0}\${1}\${2}\${3}\libeay32.pdb;
.\output\${0}\${1}\${2}\${3}\ssleay32.pdb };
};
};
};
// the VC++ .props file that gets generated and inserted into the ${d_content} folder
props {
PropertyGroup {
CallingConvention-zlib = cdecl;
}
};
// the VC++ .targets file that gets generated and inserted into the ${d_content} folder
targets {
// every configuration needs to reference the include directories.
Includes += ${pkg_root}${d_include};
// Defines += HAS_ZLIB;
("v100,v110,v120,v140", "Win32,x64", "release,debug", "Dynamic,Static") => {
[${0},${1},${2},${3}] {
Includes += ${pkg_root}${d_include};
};
};
};
}

@ -1,828 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<OpenSslPath>..\..\..\third_party\openssl</OpenSslPath>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{BE42CA67-7C48-4882-BE59-111CB41142BE}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>$(LibName)</RootNamespace>
<RestorePackages>true</RestorePackages>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="ConfigurationSettings">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v110</PlatformToolset>
<CallingConvention>Cdecl</CallingConvention>
<NoASM>true</NoASM>
<OutputPath>output\$(PlatformToolset)\$(Platform)\$(Configuration)\$(UsesConfigurationType)\</OutputPath>
<OutDir>$(OutputPath)</OutDir>
</PropertyGroup>
<Import Project="$(CoAppEtcDirectory)vcxproj.inc" Condition="Exists('$(CoAppEtcDirectory)vcxproj.inc')" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<Import Condition="exists('.\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.props')" Project=".\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.props" />
<Import Condition="exists('.\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.props')" Project=".\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<LinkIncremental Condition="'$(Configuration)'=='Release'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)'=='Debug'">true</LinkIncremental>
<CallingConvention-zlib>$(CallingConvention)</CallingConvention-zlib>
<Linkage-zlib>$(UsesConfigurationType)</Linkage-zlib>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(OpenSslPath);$(OpenSslPath)\inc32;$(OpenSslPath)\crypto;$(OpenSslPath)\crypto\asn1;$(OpenSslPath)\crypto\evp;$(OpenSslPath)\crypto\md2;$(OpenSslPath)\crypto\modes;$(OpenSslPath)\crypto\store;$(OpenSslPath)\include;$(OutDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>true</BufferSecurityCheck>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;L_ENDIAN;MK1MF_BUILD;WIN32_LEAN_AND_MEAN;OPENSSL_THREADS;ZLIB;OPENSSL_SYSNAME_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>OPENSSL_BUILD_SHLIBCRYPTO;OPENSSL_NO_IDEA;OPENSSL_NO_RC5;OPENSSL_NO_MD2;OPENSSL_NO_KRB5;OPENSSL_NO_JPAKE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>DSO_WIN32;UNICODE;_UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(ConfigurationType)'=='DynamicLibrary'">_WINDLL;_REENTRANT;OPENSSL_NO_STATIC_ENGINE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(ConfigurationType)'=='StaticLibrary'">OPENSSL_NO_DYNAMIC_ENGINE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Linkage-zlib)'=='dynamic'">ZLIB_SHARED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(NoASM)'=='true'">OPENSSL_NO_ASM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CallingConvention>%(CallingConvention)</CallingConvention>
<StringPooling>true</StringPooling>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWarningAsError>false</TreatWarningAsError>
<WarningLevel>Level3</WarningLevel>
</ClCompile>
<Lib>
<SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>zlib$(OutNameSuffix).lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
</Lib>
<Link>
<AllowIsolation>true</AllowIsolation>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalDependencies>ws2_32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\libeay32.def</ModuleDefinitionFile>
</Link>
<ResourceCompile>
<AdditionalIncludeDirectories>$(OpenSslPath);$(OpenSslPath)\inc32;$(OpenSslPath)\crypto;$(OpenSslPath)\crypto\asn1;$(OpenSslPath)\crypto\evp;$(OpenSslPath)\crypto\md2;$(OpenSslPath)\crypto\modes;$(OpenSslPath)\crypto\store;$(OpenSslPath)\include;$(OutDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;L_ENDIAN;MK1MF_BUILD;WIN32_LEAN_AND_MEAN;OPENSSL_THREADS;ZLIB;OPENSSL_SYSNAME_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>OPENSSL_BUILD_SHLIBCRYPTO;OPENSSL_NO_IDEA;OPENSSL_NO_RC5;OPENSSL_NO_MD2;OPENSSL_NO_KRB5;OPENSSL_NO_JPAKE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>DSO_WIN32;UNICODE;_UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(ConfigurationType)'=='DynamicLibrary'">_WINDLL;_REENTRANT;OPENSSL_NO_STATIC_ENGINE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(ConfigurationType)'=='StaticLibrary'">OPENSSL_NO_DYNAMIC_ENGINE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Linkage-zlib)'=='dynamic'">ZLIB_SHARED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>OPENSSL_NO_ASM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>CRYPTO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
<ClCompile>
<AdditionalOptions>/Gs0 %(AdditionalOptions)</AdditionalOptions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<ExceptionHandling>Sync</ExceptionHandling>
<MinimalRebuild>false</MinimalRebuild>
<OmitFramePointers>false</OmitFramePointers>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>DEBUG;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>DEBUG;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
<ClCompile>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<ExceptionHandling>false</ExceptionHandling>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<FunctionLevelLinking>true</FunctionLevelLinking>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<OmitFramePointers>true</OmitFramePointers>
<Optimization>Full</Optimization>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<WholeProgramOptimization>true</WholeProgramOptimization>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
<ResourceCompile>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
<ClCompile>
<PreprocessorDefinitions>WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MultiThreadedDebug</RuntimeLibrary>
<RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MultiThreaded</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
<ClCompile>
<PreprocessorDefinitions>WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">MultiThreadedDebug</RuntimeLibrary>
<RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MultiThreaded</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="openssl.gyp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(OpenSslPath)\ms\uplink.c" >
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\cversion.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ex_data.c" />
<ClCompile Include="$(OpenSslPath)\crypto\mem_clr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\mem_dbg.c" />
<ClCompile Include="$(OpenSslPath)\crypto\o_dir.c" />
<ClCompile Include="$(OpenSslPath)\crypto\o_fips.c" />
<ClCompile Include="$(OpenSslPath)\crypto\o_time.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cryptlib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\o_str.c" />
<ClCompile Include="$(OpenSslPath)\crypto\uid.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ebcdic.c" />
<ClCompile Include="$(OpenSslPath)\crypto\mem.c" />
<ClCompile Include="$(OpenSslPath)\crypto\o_init.c" />
<ClCompile Include="$(OpenSslPath)\crypto\fips_ers.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cpt_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\krb5\krb5_asn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rand\rand_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rand\rand_os2.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rand\rand_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rand\rand_win.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rand\rand_egd.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rand\rand_nw.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rand\randfile.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rand\rand_unix.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rand\md_rand.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_skey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_sxnet.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_ocsp.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_ncons.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\pcy_node.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_bcons.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_pci.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\pcy_data.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_ia5.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_utl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_cpols.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_conf.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_akeya.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_pku.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_addr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_int.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\pcy_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_pcons.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_genn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_purp.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\pcy_tree.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_enum.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_pmaps.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_alt.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_bitst.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_crld.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\pcy_map.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_info.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_asid.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_prn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_akey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_pcia.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\pcy_cache.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_extku.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509v3\v3_scts.c" />
<ClCompile Include="$(OpenSslPath)\crypto\txt_db\txt_db.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ecdh\ech_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ecdh\ech_key.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ecdh\ech_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ecdh\ech_ossl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ecdh\ech_kdf.c" />
<ClCompile Include="$(OpenSslPath)\crypto\idea\i_cfb64.c" >
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\idea\i_skey.c" >
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\idea\i_cbc.c" >
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\idea\i_ofb64.c" >
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\idea\i_ecb.c" >
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_attr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_asn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_utl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_add.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_crt.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_key.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_crpt.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_p8d.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\pk12err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_decr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_mutl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_kiss.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_p8e.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_init.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs12\p12_npas.c" />
<ClCompile Include="$(OpenSslPath)\crypto\seed\seed_ecb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\seed\seed_cbc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\seed\seed_ofb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\seed\seed.c" />
<ClCompile Include="$(OpenSslPath)\crypto\seed\seed_cfb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\conf\conf_mod.c" />
<ClCompile Include="$(OpenSslPath)\crypto\conf\conf_def.c" />
<ClCompile Include="$(OpenSslPath)\crypto\conf\conf_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\conf\conf_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\conf\conf_mall.c" />
<ClCompile Include="$(OpenSslPath)\crypto\conf\conf_sap.c" />
<ClCompile Include="$(OpenSslPath)\crypto\conf\conf_api.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ocsp\ocsp_ext.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ocsp\ocsp_asn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ocsp\ocsp_cl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ocsp\ocsp_vfy.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ocsp\ocsp_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ocsp\ocsp_srv.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ocsp\ocsp_ht.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ocsp\ocsp_prn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ocsp\ocsp_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\sha\sha256.c" />
<ClCompile Include="$(OpenSslPath)\crypto\sha\sha1_one.c" />
<ClCompile Include="$(OpenSslPath)\crypto\sha\sha512.c" />
<ClCompile Include="$(OpenSslPath)\crypto\sha\sha1dgst.c" />
<ClCompile Include="$(OpenSslPath)\crypto\sha\sha_dgst.c" />
<ClCompile Include="$(OpenSslPath)\crypto\sha\sha_one.c" />
<ClCompile Include="$(OpenSslPath)\crypto\mdc2\mdc2dgst.c" />
<ClCompile Include="$(OpenSslPath)\crypto\mdc2\mdc2_one.c" />
<ClCompile Include="$(OpenSslPath)\crypto\camellia\cmll_ctr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\camellia\cmll_misc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\camellia\cmll_cfb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\camellia\cmll_ofb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\camellia\cmll_ecb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\camellia\camellia.c" />
<ClCompile Include="$(OpenSslPath)\crypto\camellia\cmll_utl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\camellia\cmll_cbc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ts\ts_req_utils.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ts\ts_rsp_verify.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ts\ts_rsp_print.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ts\ts_rsp_sign.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ts\ts_conf.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ts\ts_verify_ctx.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ts\ts_asn1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ts\ts_rsp_utils.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ts\ts_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ts\ts_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ts\ts_req_print.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\evp_asn1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_sig.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\n_pkey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_object.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\d2i_pr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\tasn_new.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_attrib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_info.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\t_spki.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_long.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_time.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\tasn_typ.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\asn1_gen.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_utctm.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\tasn_prn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_bignum.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_bool.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\t_bitst.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\asn_pack.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_algor.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\t_crl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_pkey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_bytes.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\t_req.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_set.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\bio_asn1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_utf8.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\asn1_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\asn_mime.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_x509.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_enum.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_strex.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_sign.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_int.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_strnid.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\nsseq.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\i2d_pu.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\tasn_dec.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\p5_pbe.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_dup.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_nx509.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\t_pkey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_exten.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_x509a.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_octet.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\p8_pkey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_mbstr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\f_string.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\d2i_pu.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\tasn_fre.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_crl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_digest.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\f_int.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_i2d_fp.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\asn1_par.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\f_enum.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\t_x509a.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_d2i_fp.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\tasn_utl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_gentm.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\ameth_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\asn1_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_bitstr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_print.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_req.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\p5_pbev2.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_type.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_spki.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\bio_ndef.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\a_verify.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_pubkey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_name.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\i2d_pr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\asn_moid.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\tasn_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\x_val.c" />
<ClCompile Include="$(OpenSslPath)\crypto\asn1\t_x509.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pem_pk8.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pem_info.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pem_seal.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pem_x509.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pem_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pem_oth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pem_all.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pem_pkey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pem_xaux.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pvkfmt.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pem_sign.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pem\pem_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\lhash\lh_stats.c" />
<ClCompile Include="$(OpenSslPath)\crypto\lhash\lhash.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ecdsa\ecs_sign.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ecdsa\ecs_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ecdsa\ecs_ossl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ecdsa\ecs_asn1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ecdsa\ecs_vrf.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ecdsa\ecs_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\store\str_err.c">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\store\str_mem.c">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\store\str_lib.c">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\store\str_meth.c">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_asn1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_key.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_gen.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_pmeth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_vrf.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_ossl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_ameth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_prn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_depr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dsa\dsa_sign.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_openssl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_list.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\tb_rsa.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\tb_cipher.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\tb_asnmth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_ctrl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\tb_dh.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_cryptodev.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_table.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_dyn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_pkey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\tb_dsa.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_fat.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\tb_store.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\tb_digest.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_init.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\tb_pkmeth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\tb_rand.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_all.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\tb_ecdh.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_rdrand.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\eng_cnf.c" />
<ClCompile Include="$(OpenSslPath)\crypto\engine\tb_ecdsa.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bio_cb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\b_print.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bss_bio.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bss_sock.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bf_buff.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bss_mem.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bf_null.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bss_acpt.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bss_file.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bio_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bio_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bss_null.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bss_log.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\b_sock.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bss_fd.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\b_dump.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bf_nbio.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bss_dgram.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bio\bss_conn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bf\bf_ecb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bf\bf_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bf\bf_skey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bf\bf_cfb64.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bf\bf_ofb64.c" />
<ClCompile Include="$(OpenSslPath)\crypto\whrlpool\wp_dgst.c" />
<ClCompile Include="$(OpenSslPath)\crypto\whrlpool\wp_block.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_ameth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_depr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_check.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_key.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_asn1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_pmeth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_prn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_gen.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_kdf.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dh\dh_rfc5114.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_req.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_txt.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\by_file.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_obj.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_vpm.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_d2.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_set.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509spki.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x_all.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509type.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_def.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_vfy.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_cmp.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_att.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_v3.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_lu.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_ext.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_r2x.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509rset.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\by_dir.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509name.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509_trs.c" />
<ClCompile Include="$(OpenSslPath)\crypto\x509\x509cset.c" />
<ClCompile Include="$(OpenSslPath)\crypto\comp\comp_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\comp\c_zlib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\comp\c_rle.c" />
<ClCompile Include="$(OpenSslPath)\crypto\comp\comp_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_gf2m.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_add.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_blind.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_kron.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_nist.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_gcd.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_word.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_mont.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_mod.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_exp2.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_exp.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_print.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_prime.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_mpi.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_sqrt.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_mul.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_asm.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_x931p.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_recp.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_const.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_ctx.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_shift.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_sqr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_depr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_rand.c" />
<ClCompile Include="$(OpenSslPath)\crypto\bn\bn_div.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_depr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_pk1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_pmeth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_ssl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_crpt.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_asn1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_saos.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_gen.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_pss.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_none.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_null.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_x931.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_eay.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_sign.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_ameth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_oaep.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_chk.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rsa\rsa_prn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pqueue\pqueue.c" />
<ClCompile Include="$(OpenSslPath)\crypto\objects\o_names.c" />
<ClCompile Include="$(OpenSslPath)\crypto\objects\obj_xref.c" />
<ClCompile Include="$(OpenSslPath)\crypto\objects\obj_dat.c" />
<ClCompile Include="$(OpenSslPath)\crypto\objects\obj_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\objects\obj_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\buffer\buffer.c" />
<ClCompile Include="$(OpenSslPath)\crypto\buffer\buf_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\buffer\buf_str.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ecp_oct.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ecp_nistp224.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ecp_nist.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ecp_nistp256.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec2_mult.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_key.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_curve.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_ameth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\eck_prn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_oct.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec2_smpl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_check.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec2_oct.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ecp_smpl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_asn1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ecp_nistputil.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_cvt.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_pmeth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_mult.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ecp_mont.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ecp_nistp521.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ec\ec_print.c" />
<ClCompile Include="$(OpenSslPath)\crypto\md2\md2_dgst.c">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\md2\md2_one.c">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="$(OpenSslPath)\crypto\dso\dso_vms.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dso\dso_beos.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dso\dso_dl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dso\dso_null.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dso\dso_openssl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dso\dso_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dso\dso_dlfcn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dso\dso_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\dso\dso_windows.c" />
<ClCompile Include="$(OpenSslPath)\crypto\stack\stack.c" />
<ClCompile Include="$(OpenSslPath)\crypto\md4\md4_dgst.c" />
<ClCompile Include="$(OpenSslPath)\crypto\md4\md4_one.c" />
<ClCompile Include="$(OpenSslPath)\crypto\md5\md5_one.c" />
<ClCompile Include="$(OpenSslPath)\crypto\md5\md5_dgst.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cmac\cm_ameth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cmac\cm_pmeth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cmac\cmac.c" />
<ClCompile Include="$(OpenSslPath)\crypto\aes\aes_wrap.c" />
<ClCompile Include="$(OpenSslPath)\crypto\aes\aes_cbc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\aes\aes_ige.c" />
<ClCompile Include="$(OpenSslPath)\crypto\aes\aes_ecb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\aes\aes_cfb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\aes\aes_ctr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\aes\aes_misc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\aes\aes_ofb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\aes\aes_core.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ripemd\rmd_dgst.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ripemd\rmd_one.c" />
<ClCompile Include="$(OpenSslPath)\crypto\modes\cbc128.c" />
<ClCompile Include="$(OpenSslPath)\crypto\modes\xts128.c" />
<ClCompile Include="$(OpenSslPath)\crypto\modes\ofb128.c" />
<ClCompile Include="$(OpenSslPath)\crypto\modes\ccm128.c" />
<ClCompile Include="$(OpenSslPath)\crypto\modes\cfb128.c" />
<ClCompile Include="$(OpenSslPath)\crypto\modes\ctr128.c" />
<ClCompile Include="$(OpenSslPath)\crypto\modes\cts128.c" />
<ClCompile Include="$(OpenSslPath)\crypto\modes\gcm128.c" />
<ClCompile Include="$(OpenSslPath)\crypto\modes\wrap128.c" />
<ClCompile Include="$(OpenSslPath)\crypto\err\err_all.c" />
<ClCompile Include="$(OpenSslPath)\crypto\err\err_prn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\err\err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rc4\rc4_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rc4\rc4_skey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rc4\rc4_utl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\set_key.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\des_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\cfb64enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\cbc_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\ofb_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\enc_writ.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\fcrypt_b.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\read2pwd.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\rpc_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\fcrypt.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\ecb3_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\cbc_cksm.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\cfb_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\xcbc_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\ecb_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\enc_read.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\des_old.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\ofb64ede.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\str2key.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\cfb64ede.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\ofb64enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\des_old2.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\pcbc_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\qud_cksm.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\rand_key.c" />
<ClCompile Include="$(OpenSslPath)\crypto\des\ede_cbcm_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rc2\rc2ofb64.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rc2\rc2cfb64.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rc2\rc2_cbc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rc2\rc2_ecb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\rc2\rc2_skey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs7\pk7_asn1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs7\pkcs7err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs7\pk7_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs7\pk7_mime.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs7\pk7_attr.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs7\pk7_smime.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs7\bio_pk7.c" />
<ClCompile Include="$(OpenSslPath)\crypto\pkcs7\pk7_doit.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cast\c_ofb64.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cast\c_skey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cast\c_cfb64.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cast\c_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cast\c_ecb.c" />
<ClCompile Include="$(OpenSslPath)\crypto\srp\srp_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\srp\srp_vfy.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ui\ui_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ui\ui_compat.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ui\ui_util.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ui\ui_openssl.c" />
<ClCompile Include="$(OpenSslPath)\crypto\ui\ui_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\bio_b64.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\evp_cnf.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_wp.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\evp_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\bio_ok.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_dss1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\p_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_md4.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_bf.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_rc4_hmac_md5.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\p_sign.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\c_all.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\p_seal.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\evp_pkey.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_ecdsa.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_aes_cbc_hmac_sha1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_sha.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\p5_crpt2.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_seed.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_sha1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_old.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_dss.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_cast.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_des.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_ripemd.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\pmeth_gn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_null.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_des3.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_rc2.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_rc4.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\bio_md.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_md5.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\p_open.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_mdc2.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\evp_pbe.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\c_allc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\p5_crpt.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\p_verify.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_null.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\evp_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\evp_acnf.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_xcbc_d.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\names.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_idea.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\encode.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_camellia.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_sigver.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\evp_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\p_dec.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\bio_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\digest.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\evp_key.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_aes.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\p_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\pmeth_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\m_md2.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\c_alld.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_rc5.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\e_aes_cbc_hmac_sha256.c" />
<ClCompile Include="$(OpenSslPath)\crypto\evp\pmeth_fn.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_io.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_cd.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_lib.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_att.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_asn1.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_enc.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_env.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_smime.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_dd.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_pwri.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_ess.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_sd.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_err.c" />
<ClCompile Include="$(OpenSslPath)\crypto\cms\cms_kari.c" />
<ClCompile Include="$(OpenSslPath)\crypto\hmac\hm_pmeth.c" />
<ClCompile Include="$(OpenSslPath)\crypto\hmac\hmac.c" />
<ClCompile Include="$(OpenSslPath)\crypto\hmac\hm_ameth.c" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(OpenSslPath)\ms\version32.rc" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<Import Condition="exists('.\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" Project=".\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets" />
<Import Condition="exists('.\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" Project=".\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets" />
<ImportGroup Label="ExtensionTargets" />
<PropertyGroup>
<Build-Perl-zlib Condition="'$(Linkage-zlib)'=='dynamic'">zlib-dynamic</Build-Perl-zlib>
<Build-Perl-zlib Condition="'$(Linkage-zlib)'=='static'">zlib</Build-Perl-zlib>
<Build-Perl-asm Condition="'$(NoASM)'=='true'">no-asm</Build-Perl-asm>
<Build-Perl-asm Condition="'$(NoASM)'=='false'"></Build-Perl-asm>
<Build-Perl-platform Condition="'$(Platform)'=='Win32'">VC-WIN32</Build-Perl-platform>
<Build-Perl-platform Condition="'$(Platform)'=='x64'">VC-WIN64A</Build-Perl-platform>
<Build-Perl-dll Condition="'$(ConfigurationType)'=='DynamicLibrary'">shared</Build-Perl-dll>
<Build-Perl-dll Condition="'$(ConfigurationType)'=='StaticLibrary'">no-shared</Build-Perl-dll>
</PropertyGroup>
<Target Name="PerlDefs">
<Exec
Command="
perl Configure no-rc5 no-idea enable-mdc2 threads $(Build-Perl-zlib) $(Build-Perl-dll) $(Build-Perl-asm) $(Build-Perl-platform)
perl util\mkfiles.pl >MINFO
perl .\util\mkdef.pl 32 libeay >..\..\vsprojects\coapp\openssl\libeay32.def
"
WorkingDirectory="$(MSBuildThisFileDirectory)$(OpenSslPath)\" />
<Copy
SourceFiles="$(MSBuildThisFileDirectory)$(OpenSslPath)\crypto\opensslconf.h"
DestinationFolder="$(OutDir)Include\openssl\" />
</Target>
<PropertyGroup>
<AA1 Condition="( $(PlatformToolset.ToLower().IndexOf('v110')) &gt; -1 Or '$(PlatformToolset.ToLower())' == 'windowskernelmodedriver8.0' Or '$(PlatformToolset.ToLower())' == 'windowsapplicationfordrivers8.0' Or '$(PlatformToolset.ToLower())' == 'windowsusermodedriver8.0' )">true</AA1>
<AA2 Condition="'$(Platform.ToLower())' == 'win32'">true</AA2>
<AA3 Condition="( $(Configuration.ToLower().IndexOf('debug')) == -1 )">true</AA3>
<AA4 Condition="'$(Linkage-zlib.ToLower())' == 'dynamic'">true</AA4>
<AA5 Condition="'$(CallingConvention-zlib.ToLower())' == 'cdecl'">true</AA5>
</PropertyGroup>
<Target Name="Info2" BeforeTargets="Build">
<Message Text="*******************************************************************************" Importance="high" />
<Message Text="* PlatformToolset : '$(AA1)'" Importance="high" />
<Message Text="* Platform : '$(AA2)'" Importance="high" />
<Message Text="* Configuration : '$(AA3)'" Importance="high" />
<Message Text="* Linkage : '$(AA4)'" Importance="high" />
<Message Text="* CallingConv : '$(AA5)'" Importance="high" />
<Message Text="*******************************************************************************" Importance="high" />
<MakeDir Directories="$(OutDir);$(IntDir);$(TargetDir)"/>
</Target>
<PropertyGroup>
<BuildDependsOn>Info2;PerlDefs;$(BuildDependsOn)</BuildDependsOn>
</PropertyGroup>
</Project>

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!--
Whether or not to copy native dependencies to output directory as part of build.
If not explicitly specified in the project file, this defaults to true on Windows
and false on Unix systems.
-->
<CopyNativeDependencies Condition=" '$(CopyNativeDependencies)' == '' And '$(OS)' != 'Unix' ">true</CopyNativeDependencies>
<CopyNativeDependencies Condition=" '$(CopyNativeDependencies)' == '' And '$(OS)' == 'Unix' ">false</CopyNativeDependencies>
<!--
Select which platform toolset of native dependencies to use based on VS version (v120 is the default).
Value can be explicitly specified in the project file.
-->
<NativeDependenciesToolset Condition=" '$(NativeDependenciesToolset)' == '' And '$(VisualStudioVersion)' == '14.0' ">v140</NativeDependenciesToolset>
<NativeDependenciesToolset Condition=" '$(NativeDependenciesToolset)' == '' And '$(VisualStudioVersion)' == '10.0' ">v100</NativeDependenciesToolset>
<NativeDependenciesToolset Condition=" '$(NativeDependenciesToolset)' == '' ">v120</NativeDependenciesToolset>
<!-- Select which platform of native dependencies to use. Value can be explicitly specified in the project file. -->
<NativeDependenciesPlatform Condition=" '$(NativeDependenciesPlatform)' == '' ">Win32</NativeDependenciesPlatform>
<!--
Select which configuration of native dependencies to use. Uses release build if project configuration is Release,
otherwise defaults to Debug. Value can be explicitly specified in the project file.
-->
<NativeDependenciesConfiguration Condition=" '$(NativeDependenciesConfiguration)' == '' And '$(Configuration)' == 'Release' ">Release</NativeDependenciesConfiguration>
<NativeDependenciesConfiguration Condition=" '$(NativeDependenciesConfiguration)' == '' ">Debug</NativeDependenciesConfiguration>
</PropertyGroup>
<Choose>
<!-- Under older versions of Monodevelop, Choose is not supported and is just ignored, which gives us the desired effect. -->
<When Condition=" '$(CopyNativeDependencies)' == 'true' ">
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)..\..\build\native\bin\$(NativeDependenciesToolset)\$(NativeDependenciesPlatform)\$(NativeDependenciesConfiguration)\dynamic\libeay32.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="$(MSBuildThisFileDirectory)..\..\build\native\bin\$(NativeDependenciesToolset)\$(NativeDependenciesPlatform)\$(NativeDependenciesConfiguration)\dynamic\ssleay32.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</When>
<Otherwise />
</Choose>
</Project>

@ -1,39 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libeay32", "libeay32.vcxproj", "{BE42CA67-7C48-4882-BE59-111CB41142BE}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssleay32", "ssleay32.vcxproj", "{7E05608D-A775-418F-946A-E9A0B84C6DFF}"
ProjectSection(ProjectDependencies) = postProject
{BE42CA67-7C48-4882-BE59-111CB41142BE} = {BE42CA67-7C48-4882-BE59-111CB41142BE}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{BE42CA67-7C48-4882-BE59-111CB41142BE}.Debug|Win32.ActiveCfg = Debug|Win32
{BE42CA67-7C48-4882-BE59-111CB41142BE}.Debug|Win32.Build.0 = Debug|Win32
{BE42CA67-7C48-4882-BE59-111CB41142BE}.Debug|x64.ActiveCfg = Debug|x64
{BE42CA67-7C48-4882-BE59-111CB41142BE}.Debug|x64.Build.0 = Debug|x64
{BE42CA67-7C48-4882-BE59-111CB41142BE}.Release|Win32.ActiveCfg = Release|Win32
{BE42CA67-7C48-4882-BE59-111CB41142BE}.Release|Win32.Build.0 = Release|Win32
{BE42CA67-7C48-4882-BE59-111CB41142BE}.Release|x64.ActiveCfg = Release|x64
{BE42CA67-7C48-4882-BE59-111CB41142BE}.Release|x64.Build.0 = Release|x64
{7E05608D-A775-418F-946A-E9A0B84C6DFF}.Debug|Win32.ActiveCfg = Debug|Win32
{7E05608D-A775-418F-946A-E9A0B84C6DFF}.Debug|Win32.Build.0 = Debug|Win32
{7E05608D-A775-418F-946A-E9A0B84C6DFF}.Debug|x64.ActiveCfg = Debug|x64
{7E05608D-A775-418F-946A-E9A0B84C6DFF}.Debug|x64.Build.0 = Debug|x64
{7E05608D-A775-418F-946A-E9A0B84C6DFF}.Release|Win32.ActiveCfg = Release|Win32
{7E05608D-A775-418F-946A-E9A0B84C6DFF}.Release|Win32.Build.0 = Release|Win32
{7E05608D-A775-418F-946A-E9A0B84C6DFF}.Release|x64.ActiveCfg = Release|x64
{7E05608D-A775-418F-946A-E9A0B84C6DFF}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="grpc.dependencies.zlib" version="1.2.8.10" targetFramework="Native" />
<package id="grpc.dependencies.zlib.redist" version="1.2.8.10" targetFramework="Native" />
</packages>

@ -1,240 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<OpenSslPath>..\..\..\third_party\openssl</OpenSslPath>
</PropertyGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7E05608D-A775-418F-946A-E9A0B84C6DFF}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>$(LibName)</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="ConfigurationSettings">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v110</PlatformToolset>
<CallingConvention>Cdecl</CallingConvention>
<OutputPath>output\$(PlatformToolset)\$(Platform)\$(Configuration)\$(UsesConfigurationType)\</OutputPath>
<OutDir>$(OutputPath)</OutDir>
</PropertyGroup>
<Import Project="$(CoAppEtcDirectory)vcxproj.inc" Condition="Exists('$(CoAppEtcDirectory)vcxproj.inc')" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<Import Condition="exists('.\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.props')" Project=".\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.props" />
<Import Condition="exists('.\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.props')" Project=".\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<LinkIncremental Condition="'$(Configuration)'=='Release'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)'=='Debug'">true</LinkIncremental>
<CallingConvention-zlib>$(CallingConvention)</CallingConvention-zlib>
<Linkage-zlib>$(UsesConfigurationType)</Linkage-zlib>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(OpenSslPath);$(OpenSslPath)\inc32;$(OpenSslPath)\crypto;$(OpenSslPath)\include;$(OutDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>true</BufferSecurityCheck>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<!-- <PreprocessorDefinitions>OPENSSL_USE_APPLINK;%(PreprocessorDefinitions)</PreprocessorDefinitions> -->
<!-- <PreprocessorDefinitions>BUILDING_V8_SHARED=1;BUILDING_UV_SHARED=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> -->
<!-- <PreprocessorDefinitions>OPENSSL_EXPORT_VAR_AS_FUNCTION;PURIFY;%(PreprocessorDefinitions)</PreprocessorDefinitions> -->
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;L_ENDIAN;MK1MF_BUILD;WIN32_LEAN_AND_MEAN;OPENSSL_THREADS;ZLIB;OPENSSL_SYSNAME_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>OPENSSL_BUILD_SHLIBSSL;OPENSSL_NO_IDEA;OPENSSL_NO_RC5;OPENSSL_NO_MD2;OPENSSL_NO_KRB5;OPENSSL_NO_JPAKE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>DSO_WIN32;UNICODE;_UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(ConfigurationType)'=='DynamicLibrary'">_WINDLL;_REENTRANT;OPENSSL_NO_STATIC_ENGINE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(ConfigurationType)'=='StaticLibrary'">OPENSSL_NO_DYNAMIC_ENGINE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Linkage-zlib)'=='dynamic'">ZLIB_SHARED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>OPENSSL_NO_ASM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CallingConvention>%(CallingConvention)</CallingConvention>
<StringPooling>true</StringPooling>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TreatWarningAsError>false</TreatWarningAsError>
<WarningLevel>Level3</WarningLevel>
</ClCompile>
<Lib>
<SuppressStartupBanner>true</SuppressStartupBanner>
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<!--
<IgnoreSpecificDefaultLibraries>zlib$(OutNameSuffix).lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
-->
</Lib>
<Link>
<AllowIsolation>true</AllowIsolation>
<DataExecutionPrevention>true</DataExecutionPrevention>
<GenerateDebugInformation>true</GenerateDebugInformation>
<RandomizedBaseAddress>true</RandomizedBaseAddress>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalDependencies>ws2_32.lib;crypt32.lib;libeay32$(OutNameSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(OutDir)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>.\ssleay32.def</ModuleDefinitionFile>
</Link>
<ResourceCompile>
<AdditionalIncludeDirectories>$(OpenSslPath);$(OpenSslPath)\inc32;$(OpenSslPath)\crypto;$(OpenSslPath)\include;$(OutDir);$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;L_ENDIAN;MK1MF_BUILD;WIN32_LEAN_AND_MEAN;OPENSSL_THREADS;ZLIB;OPENSSL_SYSNAME_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>OPENSSL_BUILD_SHLIBSSL;OPENSSL_NO_IDEA;OPENSSL_NO_RC5;OPENSSL_NO_MD2;OPENSSL_NO_KRB5;OPENSSL_NO_JPAKE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>DSO_WIN32;UNICODE;_UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(ConfigurationType)'=='DynamicLibrary'">_WINDLL;_REENTRANT;OPENSSL_NO_STATIC_ENGINE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(ConfigurationType)'=='StaticLibrary'">OPENSSL_NO_DYNAMIC_ENGINE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Linkage-zlib)'=='dynamic'">ZLIB_SHARED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>OPENSSL_NO_ASM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>SSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
<ClCompile>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<ExceptionHandling>Sync</ExceptionHandling>
<MinimalRebuild>false</MinimalRebuild>
<OmitFramePointers>false</OmitFramePointers>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>DEBUG;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>DEBUG;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
<ClCompile>
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<ExceptionHandling>false</ExceptionHandling>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<FunctionLevelLinking>true</FunctionLevelLinking>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<OmitFramePointers>true</OmitFramePointers>
<Optimization>Full</Optimization>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<WholeProgramOptimization>true</WholeProgramOptimization>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
<OptimizeReferences>true</OptimizeReferences>
</Link>
<ResourceCompile>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
<ClCompile>
<PreprocessorDefinitions>WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MultiThreadedDebug</RuntimeLibrary>
<RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MultiThreaded</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
<ClCompile>
<PreprocessorDefinitions>WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">MultiThreadedDebug</RuntimeLibrary>
<RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MultiThreaded</RuntimeLibrary>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="openssl.gyp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(OpenSslPath)\ssl\s2_pkt.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s3_enc.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s23_pkt.c" />
<ClCompile Include="$(OpenSslPath)\ssl\t1_meth.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_lib.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_asn1.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s23_lib.c" />
<ClCompile Include="$(OpenSslPath)\ssl\tls_srp.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_txt.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_algs.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s23_srvr.c" />
<ClCompile Include="$(OpenSslPath)\ssl\d1_both.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s3_meth.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_err2.c" />
<ClCompile Include="$(OpenSslPath)\ssl\bio_ssl.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s2_meth.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s3_clnt.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s3_lib.c" />
<ClCompile Include="$(OpenSslPath)\ssl\kssl.c" />
<ClCompile Include="$(OpenSslPath)\ssl\t1_enc.c" />
<ClCompile Include="$(OpenSslPath)\ssl\d1_clnt.c" />
<ClCompile Include="$(OpenSslPath)\ssl\t1_lib.c" />
<ClCompile Include="$(OpenSslPath)\ssl\t1_srvr.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_cert.c" />
<ClCompile Include="$(OpenSslPath)\ssl\t1_clnt.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_stat.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_sess.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s3_both.c" />
<ClCompile Include="$(OpenSslPath)\ssl\d1_srtp.c" />
<ClCompile Include="$(OpenSslPath)\ssl\d1_pkt.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s23_clnt.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s2_lib.c" />
<ClCompile Include="$(OpenSslPath)\ssl\t1_reneg.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s2_enc.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_rsa.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s23_meth.c" />
<ClCompile Include="$(OpenSslPath)\ssl\d1_lib.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_ciph.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s2_srvr.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_err.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_utst.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s2_clnt.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s3_pkt.c" />
<ClCompile Include="$(OpenSslPath)\ssl\d1_srvr.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s3_srvr.c" />
<ClCompile Include="$(OpenSslPath)\ssl\s3_cbc.c" />
<ClCompile Include="$(OpenSslPath)\ssl\d1_meth.c" />
<ClCompile Include="$(OpenSslPath)\ssl\ssl_conf.c" />
<ClCompile Include="$(OpenSslPath)\ssl\t1_ext.c" />
<ClCompile Include="$(OpenSslPath)\ssl\t1_trce.c" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(OpenSslPath)\ms\version32.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<Import Condition="exists('.\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" Project=".\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets" />
<Import Condition="exists('.\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" Project=".\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets" />
<ImportGroup Label="ExtensionTargets" />
<PropertyGroup>
<Build-Perl-zlib Condition="'$(Linkage-zlib)'=='dynamic'">zlib-dynamic</Build-Perl-zlib>
<Build-Perl-zlib Condition="'$(Linkage-zlib)'=='static'">zlib</Build-Perl-zlib>
<Build-Perl-asm Condition="'$(NoASM)'=='true'">no-asm</Build-Perl-asm>
<Build-Perl-asm Condition="'$(NoASM)'=='false'"></Build-Perl-asm>
<Build-Perl-platform Condition="'$(Platform)'=='Win32'">VC-WIN32</Build-Perl-platform>
<Build-Perl-platform Condition="'$(Platform)'=='x64'">VC-WIN64A</Build-Perl-platform>
<Build-Perl-dll Condition="'$(ConfigurationType)'=='DynamicLibrary'">shared</Build-Perl-dll>
<Build-Perl-dll Condition="'$(ConfigurationType)'=='StaticLibrary'">no-shared</Build-Perl-dll>
</PropertyGroup>
<Target Name="PerlDefs">
<Exec
Command="
perl Configure no-rc5 no-idea enable-mdc2 threads $(Build-Perl-zlib) $(Build-Perl-dll) $(Build-Perl-asm) $(Build-Perl-platform)
perl util\mkfiles.pl >MINFO
perl .\util\mkdef.pl 32 ssleay >..\..\vsprojects\coapp\openssl\ssleay32.def
"
WorkingDirectory="$(MSBuildThisFileDirectory)$(OpenSslPath)\" />
</Target>
<PropertyGroup>
<BuildDependsOn>PerlDefs;$(BuildDependsOn)</BuildDependsOn>
</PropertyGroup>
</Project>

@ -1 +0,0 @@
#define { package-version: 1.0.204.1; }

@ -1,5 +0,0 @@
*.nupkg
/nuget.exe
/Intermediate
/Output

@ -1,36 +0,0 @@
Zlib Native Nuget package
-------------------------
Uses [CoApp](http://coapp.org/) project to build the zlib package.
Prerequisites
-------------
Multiple versions of VS installed to be able to build all the targets:
* Visual Studio 2015
* Visual Studio 2013
* Visual Studio 2010 (you might need SP1 to prevent LNK1123 error)
CoApp toolkit: http://coapp.org/files/CoApp.Tools.Powershell.msi
More details on installation: http://coapp.org/tutorials/installation.html
Building
--------
Build all flavors of zlib library using the provided batch file.
```
buildall.bat
```
Then, create NuGet package using powershell (you'll need the CoApp toolkit installed):
```
[THIS_DIRECTORY]> Write-NuGetPackage grpc.dependencies.zlib.autopkg
```
This will create three NuGet packages:
* the main dev package
* the redistributable package that contains just the binaries and no headers
* the symbols package (debug symbols)
Later, you can push the package to NuGet.org repo.
Attention: before pusing the resulting nuget package to public nuget repo, you have to be 100% sure it works correctly - there’s no way how to delete or update an already existing package.

@ -1,77 +0,0 @@
@rem Copyright 2016 gRPC authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem http://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@echo off
setlocal
REM setlocal
REM call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64
REM call :build x64 Release v100 || goto :eof
REM call :build x64 Debug v100 || goto :eof
REM endlocal
setlocal
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
call :build Win32 Release v100 || goto :eof
call :build Win32 Debug v100 || goto :eof
endlocal
setlocal
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
call :build x64 Release v140 || goto :eof
call :build x64 Debug v140 || goto :eof
endlocal
setlocal
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
call :build Win32 Release v140 || goto :eof
call :build Win32 Debug v140 || goto :eof
endlocal
setlocal
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" amd64
call :build x64 Release v120 || goto :eof
call :build x64 Debug v120 || goto :eof
endlocal
setlocal
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
call :build Win32 Release v120 || goto :eof
call :build Win32 Debug v120 || goto :eof
endlocal
REM setlocal
REM call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" amd64
REM call :build x64 Release v110 || goto :eof
REM call :build x64 Debug v110 || goto :eof
REM endlocal
REM setlocal
REM call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86
REM call :build Win32 Release v110 || goto :eof
REM call :build Win32 Debug v110 || goto :eof
REM endlocal
goto :eof
:build
msbuild /m:4 /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=Dynamic /P:CallingConvention=cdecl .\zlib.sln || goto :eof
msbuild /m:4 /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=Dynamic /P:CallingConvention=stdcall .\zlib.sln || goto :eof
msbuild /m:4 /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=Static /P:CallingConvention=cdecl .\zlib.sln || goto :eof
msbuild /m:4 /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=Static /P:CallingConvention=stdcall .\zlib.sln || goto :eof
msbuild /m:4 /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=ltcg /P:CallingConvention=cdecl .\zlib.sln || goto :eof
msbuild /m:4 /P:Platform=%1 /P:Configuration=%2 /P:PlatformToolset=%3 /P:UsesConfigurationType=ltcg /P:CallingConvention=stdcall .\zlib.sln || goto :eof
goto :eof

@ -1,108 +0,0 @@
@import @"version.inc";
configurations
{
// See https://github.com/coapp/coapp.powershell/issues/112
Toolset
{
key : "PlatformToolset"; // this is CoApp pre-defined key
choices: { v140, v120, v110, v100 };
};
}
#define {
package-id = "grpc.dependencies.zlib";
}
nuget {
// the nuspec file metadata. Gets created/updated on build
nuspec {
id = ${package-id};
version : ${package-version};
title: gRPC Native Dependency: ZLib compression library;
authors: {Jean-loup Gailly, Mark Adler, Garrett Serack, Tim Rogers};
owners: {Jan Tattermusch};
licenseUrl: "http://zlib.net/zlib-license.html";
projectUrl: "http://github.com/grpc/grpc";
iconUrl: "http://zlib.net/images/zlib3d-b1.png";
requireLicenseAcceptance:false;
summary:A zlib library;
description: @"A native zlib library.
zlib homepage: http://zlib.net";
releaseNotes: "Release of zlib 1.2.8 libraries.";
copyright: Copyright 2013;
tags: { zlib, native, CoApp };
};
// the files that go into the content folders
// (inserted into the nuspec file)
files {
// .targets file that are applied when redist package is installed from a managed project.
managed_build: {
#output {
package = redist;
};
#destination = "\build\portable-net45+netcore45+wpa81+wp8";
"managed_targets\${package-id}.redist.targets";
};
include: { ..\..\..\third_party\zlib\zlib.h, ..\..\..\third_party\zlib\zconf.h };
docs: { ..\..\..\third_party\zlib\doc\**\* };
source += {
"..\..\..\third_party\zlib\adler32.c",
"..\..\..\third_party\zlib\compress.c",
"..\..\..\third_party\zlib\crc32.c",
"..\..\..\third_party\zlib\deflate.c",
"..\..\..\third_party\zlib\gzclose.c",
"..\..\..\third_party\zlib\gzlib.c",
"..\..\..\third_party\zlib\gzread.c",
"..\..\..\third_party\zlib\gzwrite.c",
"..\..\..\third_party\zlib\infback.c",
"..\..\..\third_party\zlib\inffast.c",
"..\..\..\third_party\zlib\inflate.c",
"..\..\..\third_party\zlib\inftrees.c",
"..\..\..\third_party\zlib\trees.c",
"..\..\..\third_party\zlib\uncompr.c",
"..\..\..\third_party\zlib\zutil.c",
"..\..\..\third_party\zlib\crc32.h",
"..\..\..\third_party\zlib\deflate.h",
"..\..\..\third_party\zlib\gzguts.h",
"..\..\..\third_party\zlib\inffast.h",
"..\..\..\third_party\zlib\inffixed.h",
"..\..\..\third_party\zlib\inflate.h",
"..\..\..\third_party\zlib\inftrees.h",
"..\..\..\third_party\zlib\trees.h",
"..\..\..\third_party\zlib\zconf.h",
"..\..\..\third_party\zlib\zlib.h",
"..\..\..\third_party\zlib\zutil.h",
"..\..\..\third_party\zlib\contrib\masmx64\inffas8664.c",
};
("v100,v120,v140", "Win32,x64", "Release,Debug", "Dynamic", "cdecl,stdcall", "MultiByte") => {
[${0},${1},${2},${3},${4}] {
lib: { .\output\${0}\${1}\${2}\${3}\${4}\${5}\*.lib };
bin: { .\output\${0}\${1}\${2}\${3}\${4}\${5}\*.dll };
symbols: { .\output\${0}\${1}\${2}\${3}\${4}\${5}\*.pdb };
};
};
("v100,v120,v140", "Win32,x64", "Release,Debug", "Static,ltcg", "cdecl,stdcall", "MultiByte") => {
[${0},${1},${2},${3},${4}] {
lib: { .\output\${0}\${1}\${2}\${3}\${4}\${5}\*.lib };
};
};
};
// the VC++ .targets file that gets generated and inserted into the ${d_content} folder
targets {
Defines += HAS_ZLIB;
[dynamic]
Defines += ZLIB_DLL;
[stdcall]
Defines += ZLIB_WINAPI;
};
}

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!--
Whether or not to copy native dependencies to output directory as part of build.
If not explicitly specified in the project file, this defaults to true on Windows
and false on Unix systems.
-->
<CopyNativeDependencies Condition=" '$(CopyNativeDependencies)' == '' And '$(OS)' != 'Unix' ">true</CopyNativeDependencies>
<CopyNativeDependencies Condition=" '$(CopyNativeDependencies)' == '' And '$(OS)' == 'Unix' ">false</CopyNativeDependencies>
<!--
Select which platform toolset of native dependencies to use based on VS version (v120 is the default).
Value can be explicitly specified in the project file.
-->
<NativeDependenciesToolset Condition=" '$(NativeDependenciesToolset)' == '' And '$(VisualStudioVersion)' == '14.0' ">v140</NativeDependenciesToolset>
<NativeDependenciesToolset Condition=" '$(NativeDependenciesToolset)' == '' And '$(VisualStudioVersion)' == '10.0' ">v100</NativeDependenciesToolset>
<NativeDependenciesToolset Condition=" '$(NativeDependenciesToolset)' == '' ">v120</NativeDependenciesToolset>
<!-- Select which platform of native dependencies to use. Value can be explicitly specified in the project file. -->
<NativeDependenciesPlatform Condition=" '$(NativeDependenciesPlatform)' == '' ">Win32</NativeDependenciesPlatform>
<!--
Select which configuration of native dependencies to use. Uses release build if project configuration is Release,
otherwise defaults to Debug. Value can be explicitly specified in the project file.
-->
<NativeDependenciesConfiguration Condition=" '$(NativeDependenciesConfiguration)' == '' And '$(Configuration)' == 'Release' ">Release</NativeDependenciesConfiguration>
<NativeDependenciesConfiguration Condition=" '$(NativeDependenciesConfiguration)' == '' ">Debug</NativeDependenciesConfiguration>
<ZlibCallingConvention Condition=" '$(ZlibCallingConvention)' == '' ">cdecl</ZlibCallingConvention>
</PropertyGroup>
<Choose>
<!-- Under older versions of Monodevelop, Choose is not supported and is just ignored, which gives us the desired effect. -->
<When Condition=" '$(CopyNativeDependencies)' == 'true' ">
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)..\..\build\native\bin\$(NativeDependenciesToolset)\$(NativeDependenciesPlatform)\$(NativeDependenciesConfiguration)\dynamic\$(ZlibCallingConvention)\zlib.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</When>
<Otherwise />
</Choose>
</Project>

@ -1 +0,0 @@
#define { package-version : 1.2.8.10; }

@ -1,26 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcxproj", "{63BED288-E8C3-4345-B84D-2E64598DCF3A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
Debug|x64 = Debug|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{63BED288-E8C3-4345-B84D-2E64598DCF3A}.Debug|Win32.ActiveCfg = Debug|Win32
{63BED288-E8C3-4345-B84D-2E64598DCF3A}.Debug|Win32.Build.0 = Debug|Win32
{63BED288-E8C3-4345-B84D-2E64598DCF3A}.Release|Win32.ActiveCfg = Release|Win32
{63BED288-E8C3-4345-B84D-2E64598DCF3A}.Release|Win32.Build.0 = Release|Win32
{63BED288-E8C3-4345-B84D-2E64598DCF3A}.Debug|x64.ActiveCfg = Debug|x64
{63BED288-E8C3-4345-B84D-2E64598DCF3A}.Debug|x64.Build.0 = Debug|x64
{63BED288-E8C3-4345-B84D-2E64598DCF3A}.Release|x64.ActiveCfg = Release|x64
{63BED288-E8C3-4345-B84D-2E64598DCF3A}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

@ -1,147 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="PreBuildCmds;PreBuildTargets;Build;PostBuildCmds;PostBuildTargets" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="CoApp" >
<CoAppEtcDirectory>$(registry:HKEY_LOCAL_MACHINE\Software\Outercurve\CoApp.Powershell\etc)</CoAppEtcDirectory>
<!-- Set to true to make visual studio use PTK when building.-->
<UsePTKFromVisualStudio>false</UsePTKFromVisualStudio>
</PropertyGroup>
<PropertyGroup Label="Configuration" >
<!-- This lets Visual Studio see this as a VC12 project by default -->
<PlatformToolset Condition="'$(PlatformToolset)' == ''">v120</PlatformToolset>
</PropertyGroup>
<Import Condition="Exists('$(CoAppEtcDirectory)\common-variables.vcxproj')" Project="$(CoAppEtcDirectory)\common-variables.vcxproj" />
<PropertyGroup Label="CustomSettings" />
<PropertyGroup Label="Globals">
<ProjectGuid>{63BED288-E8C3-4345-B84D-2E64598DCF3A}</ProjectGuid>
<RootNamespace>$(MSBuildProjectName)</RootNamespace>
<OutNameSuffix Condition="$(IS_CDECL) AND $(IS_DYNAMIC)">1</OutNameSuffix>
<!-- set to Application or DynamicLibrary (DynamicLibrary can get altered to StaticLibrary by PTK -->
<ConfigurationType>DynamicLibrary</ConfigurationType>
<!-- Common Compiler Defines (semicolon delimited) -->
<Defines>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;</Defines>
<Defines Condition="$(IS_STDCALL)">$(Defines);ZLIB_WINAPI;</Defines>
<Defines Condition="$(IS_DYNAMIC)">$(Defines);ZLIB_DLL;</Defines>
<Defines Condition="'$(AppContainer)' == 'App'">$(Defines);IOWIN32_USING_WINRT_API=1;</Defines>
<Defines Condition="'$(AppContainer)' != 'App'">$(Defines);IOWIN32_USING_WINRT_API=0;</Defines>
<Defines Condition="'$(UseASM)' == 'ASM'">$(Defines);ASMV;ASMINF;</Defines>
<Defines Condition="$(IS_X64)">$(Defines);WIN64;</Defines>
<!-- Additional Include folders (semicolon delimited) -->
<IncludeDirectories>..\..\..\third_party\zlib;</IncludeDirectories>
<!-- Additional Library folders (semicolon delimited) -->
<LibraryDirectories></LibraryDirectories>
<!-- Libraries to Link with -->
<Libraries></Libraries>
<!-- Batch script to run before Build-->
<PreBuild></PreBuild>
<!-- Batch script to run after Build-->
<PostBuild></PostBuild>
<!-- Batch script to run before Link step-->
<PreLink></PreLink>
<!-- Batch script to run after Link-->
<PostLink></PostLink>
<!-- Batch script to run before Lib step-->
<PreLib></PreLib>
<!-- Batch script to run after Lib-->
<PostLib></PostLib>
<!-- Targets to run before Build (semcolon delimited)-->
<PreBuildTargets></PreBuildTargets>
<!-- Targets to run before Build (semcolon delimited)-->
<PostBuildTargets></PostBuildTargets>
<!-- for Dynamic libs, you can specify the Module .DEF file path -->
<ModuleDefinitionFile></ModuleDefinitionFile>
</PropertyGroup>
<Import Condition="Exists('$(CoAppEtcDirectory)\common-header.vcxproj')" Project="$(CoAppEtcDirectory)\common-header.vcxproj" />
<Import Condition="'$(UseASM)' == 'ASM'" Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
<PropertyGroup>
<OutDir>$(ProjectRootDir)Output/$(PlatformToolset)/$(Platform)/$(Configuration)/$(UsesConfigurationType)/$(CallingConvention)/$(CharacterSet)/$(AppContainer)/$(UseASM)/</OutDir>
<IntDir>$(ProjectRootDir)Intermediate/$(TargetName)/$(PlatformToolset)/$(Platform)/$(Configuration)/$(UsesConfigurationType)/$(CallingConvention)/$(CharacterSet)/$(AppContainer)/$(UseASM)/</IntDir>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<BaseAddress>0x5A4C0000</BaseAddress>
</Link>
</ItemDefinitionGroup>
<ItemGroup Condition="'$(UseASM)' == 'ASM'">
<MASM Include="..\..\..\third_party\zlib\contrib\masmx64\gvmat64.asm" Condition="$(IS_X64)">
<AssembledCodeListingFile>$(IntDir)gvmat64.lst</AssembledCodeListingFile>
<MASMBeforeTargets>Build</MASMBeforeTargets>
<ObjectFileName>$(IntDir)gvmat64.obj</ObjectFileName>
</MASM>
<MASM Include="..\..\..\third_party\zlib\contrib\masmx64\inffasx64.asm" Condition="$(IS_X64)">
<AssembledCodeListingFile>$(IntDir)inffasx64.lst</AssembledCodeListingFile>
<MASMBeforeTargets>Build</MASMBeforeTargets>
<ObjectFileName>$(IntDir)inffasx64.obj</ObjectFileName>
</MASM>
<MASM Include="..\..\..\third_party\zlib\contrib\masmx86\inffas32.asm" Condition="$(IS_X86) AND $(IS_STDCALL)">
<AssembledCodeListingFile>$(IntDir)inffas32.lst</AssembledCodeListingFile>
<MASMBeforeTargets>Build</MASMBeforeTargets>
<UseSafeExceptionHandlers>true</UseSafeExceptionHandlers>
<AdditionalOptions>/coff %(AdditionalOptions)</AdditionalOptions>
<ObjectFileName>$(IntDir)inffas32.obj</ObjectFileName>
</MASM>
<MASM Include="..\..\..\third_party\zlib\contrib\masmx86\match686.asm" Condition="$(IS_X86) AND $(IS_STDCALL)">
<AssembledCodeListingFile>$(IntDir)match686.lst</AssembledCodeListingFile>
<MASMBeforeTargets>Build</MASMBeforeTargets>
<UseSafeExceptionHandlers>true</UseSafeExceptionHandlers>
<AdditionalOptions>/coff %(AdditionalOptions)</AdditionalOptions>
<ObjectFileName>$(IntDir)match686.obj</ObjectFileName>
</MASM>
</ItemGroup>
<ItemGroup Label="C Source Files">
<!-- Include the source files to compile here -->
<!-- <ClCompile Include="..\src\foo.c" /> -->
<ClCompile Include="..\..\..\third_party\zlib\adler32.c" />
<ClCompile Include="..\..\..\third_party\zlib\compress.c" />
<ClCompile Include="..\..\..\third_party\zlib\crc32.c" />
<ClCompile Include="..\..\..\third_party\zlib\deflate.c" />
<ClCompile Include="..\..\..\third_party\zlib\gzclose.c" />
<ClCompile Include="..\..\..\third_party\zlib\gzlib.c" />
<ClCompile Include="..\..\..\third_party\zlib\gzread.c" />
<ClCompile Include="..\..\..\third_party\zlib\gzwrite.c" />
<ClCompile Include="..\..\..\third_party\zlib\infback.c" />
<ClCompile Include="..\..\..\third_party\zlib\contrib\masmx64\inffas8664.c" Condition="$(IS_X64)" />
<ClCompile Include="..\..\..\third_party\zlib\inffast.c" />
<ClCompile Include="..\..\..\third_party\zlib\inflate.c" />
<ClCompile Include="..\..\..\third_party\zlib\inftrees.c" />
<ClCompile Include="..\..\..\third_party\zlib\trees.c" />
<ClCompile Include="..\..\..\third_party\zlib\uncompr.c" />
<ClCompile Include="..\..\..\third_party\zlib\zutil.c" />
</ItemGroup>
<ItemGroup Label="Resource Files">
<!-- Include the source files to compile here -->
<!-- <ResourceCompile Include="..\src\foo.rc" /> -->
<ResourceCompile Include="..\..\..\third_party\zlib\win32\zlib1.rc" />
</ItemGroup>
<Import Condition="'$(UseASM)' == 'ASM'" Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
<Import Condition="Exists('$(CoAppEtcDirectory)\common-footer.vcxproj')" Project="$(CoAppEtcDirectory)\common-footer.vcxproj" />
</Project>

@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ImportGroup Label="PropertySheets" /> <PropertyGroup Label="UserMacros" /> <PropertyGroup /> <ItemDefinitionGroup> <ClCompile> <AdditionalIncludeDirectories>$(SolutionDir)\..;$(SolutionDir)\..\include;$(SolutionDir)\..\third_party\protobuf\src;$(SolutionDir)\..\third_party\gtest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <WarningLevel>EnableAllWarnings</WarningLevel> </ClCompile> <Link> <AdditionalDependencies>grpc++_test_util.lib;grpc_test_util.lib;gpr_test_util.lib;gtestd.lib;gflags.lib;shlwapi.lib;gpr.lib;grpc.lib;grpc++.lib;%(AdditionalDependencies)</AdditionalDependencies> <AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\gtest\msvc\gtest\Debug;$(SolutionDir)\..\third_party\gflags\lib\Debug;$(SolutionDir)\..\Debug;$(SolutionDir)\..\packages\grpc.dependencies.openssl.1.0.204.1\build\native\lib\$(PlatformToolset)\$(Platform)\$(Configuration)\static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> </Link> </ItemDefinitionGroup> <ItemGroup /> </Project>

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<Jenkins>false</Jenkins>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)\..;$(SolutionDir)\..\include;$(SolutionDir)\..\third_party\protobuf\src;$(SolutionDir)\packages\grpc.dependencies.zlib.1.2.8.10\build\native\include;$(SolutionDir)\packages\grpc.dependencies.openssl.1.0.204.1\build\native\include;$(SolutionDir)\packages\gflags.2.1.2.1\build\native\include;$(SolutionDir)\packages\gtest.1.7.0.1\build\native\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_WIN32_WINNT=0x600;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>EnableAllWarnings</WarningLevel>
</ClCompile>
<Link>
<!-- LNK4271 pollutes test output. See #4521 -->
<AdditionalOptions>/ignore:4217 %(AdditionalOptions)</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -1,383 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug-DLL|Win32">
<Configuration>Debug-DLL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug-DLL|x64">
<Configuration>Debug-DLL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release-DLL|Win32">
<Configuration>Release-DLL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release-DLL|x64">
<Configuration>Release-DLL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}</ProjectGuid>
<IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug-DLL'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release-DLL'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\vsprojects\global.props" />
<Import Project="..\..\..\vsprojects\winsock.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<TargetName>grpc++_unsecure</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<TargetName>grpc++_unsecure</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\..\include\grpc++\channel.h" />
<ClInclude Include="..\..\..\include\grpc++\client_context.h" />
<ClInclude Include="..\..\..\include\grpc++\completion_queue.h" />
<ClInclude Include="..\..\..\include\grpc++\create_channel.h" />
<ClInclude Include="..\..\..\include\grpc++\generic\async_generic_service.h" />
<ClInclude Include="..\..\..\include\grpc++\generic\generic_stub.h" />
<ClInclude Include="..\..\..\include\grpc++\grpc++.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\call.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\client_unary_call.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\grpc_library.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\proto_utils.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\rpc_method.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\rpc_service_method.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\serialization_traits.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\server_builder_option.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\service_type.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\sync.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\sync_cxx11.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\sync_no_cxx11.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\thd.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\thd_cxx11.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\thd_no_cxx11.h" />
<ClInclude Include="..\..\..\include\grpc++\security\auth_context.h" />
<ClInclude Include="..\..\..\include\grpc++\security\auth_metadata_processor.h" />
<ClInclude Include="..\..\..\include\grpc++\security\credentials.h" />
<ClInclude Include="..\..\..\include\grpc++\security\server_credentials.h" />
<ClInclude Include="..\..\..\include\grpc++\server.h" />
<ClInclude Include="..\..\..\include\grpc++\server_builder.h" />
<ClInclude Include="..\..\..\include\grpc++\server_context.h" />
<ClInclude Include="..\..\..\include\grpc++\support\async_stream.h" />
<ClInclude Include="..\..\..\include\grpc++\support\async_unary_call.h" />
<ClInclude Include="..\..\..\include\grpc++\support\byte_buffer.h" />
<ClInclude Include="..\..\..\include\grpc++\support\channel_arguments.h" />
<ClInclude Include="..\..\..\include\grpc++\support\config.h" />
<ClInclude Include="..\..\..\include\grpc++\support\config_protobuf.h" />
<ClInclude Include="..\..\..\include\grpc++\support\slice.h" />
<ClInclude Include="..\..\..\include\grpc++\support\status.h" />
<ClInclude Include="..\..\..\include\grpc++\support\status_code_enum.h" />
<ClInclude Include="..\..\..\include\grpc++\support\string_ref.h" />
<ClInclude Include="..\..\..\include\grpc++\support\stub_options.h" />
<ClInclude Include="..\..\..\include\grpc++\support\sync_stream.h" />
<ClInclude Include="..\..\..\include\grpc++\support\time.h" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\cpp\client\create_channel_internal.h" />
<ClInclude Include="..\..\..\src\cpp\common\create_auth_context.h" />
<ClInclude Include="..\..\..\src\cpp\server\dynamic_thread_pool.h" />
<ClInclude Include="..\..\..\src\cpp\server\fixed_size_thread_pool.h" />
<ClInclude Include="..\..\..\src\cpp\server\thread_pool_interface.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\cpp\common\insecure_create_auth_context.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\channel.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\client_context.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\create_channel.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\create_channel_internal.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\credentials.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\generic_stub.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\insecure_credentials.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\common\call.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\common\channel_arguments.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\common\completion_queue.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\common\rpc_method.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\proto\proto_utils.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\async_generic_service.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\create_default_thread_pool.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\dynamic_thread_pool.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\fixed_size_thread_pool.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\insecure_server_credentials.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\server.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\server_builder.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\server_context.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\server_credentials.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\util\byte_buffer.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\util\slice.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\util\status.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\util\string_ref.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\util\time.cc">
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
<Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\vsprojects\vcxproj\.\grpc_unsecure\grpc_unsecure.vcxproj">
<Project>{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
</Target>
</Project>

@ -1,510 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ares", "vcxproj\.\ares\ares.vcxproj", "{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "check_epollexclusive", "vcxproj\.\check_epollexclusive\check_epollexclusive.vcxproj", "{03306445-5BA0-289C-02AB-513DE6C52124}"
ProjectSection(myProperties) = preProject
lib = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gen_hpack_tables", "vcxproj\.\gen_hpack_tables\gen_hpack_tables.vcxproj", "{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}"
ProjectSection(myProperties) = preProject
lib = "False"
EndProjectSection
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}") = "gen_legal_metadata_characters", "vcxproj\.\gen_legal_metadata_characters\gen_legal_metadata_characters.vcxproj", "{A635DE99-B131-CA00-2D3B-8691D60B76C2}"
ProjectSection(myProperties) = preProject
lib = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gen_percent_encoding_tables", "vcxproj\.\gen_percent_encoding_tables\gen_percent_encoding_tables.vcxproj", "{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}"
ProjectSection(myProperties) = preProject
lib = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr", "vcxproj\.\gpr\gpr.vcxproj", "{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr_test_util", "vcxproj\.\gpr_test_util\gpr_test_util.vcxproj", "{EAB0A629-17A9-44DB-B5FF-E91A721FE037}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc", "vcxproj\.\grpc\grpc.vcxproj", "{29D16885-7228-4C31-81ED-5F9187C7F2A9}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc++", "vcxproj\.\grpc++\grpc++.vcxproj", "{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc++_error_details", "vcxproj\.\grpc++_error_details\grpc++_error_details.vcxproj", "{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB} = {C187A093-A0FE-489D-A40A-6E33DE0F9FEB}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc++_unsecure", "vcxproj\.\grpc++_unsecure\grpc++_unsecure.vcxproj", "{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5} = {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_create_jwt", "vcxproj\.\grpc_create_jwt\grpc_create_jwt.vcxproj", "{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}"
ProjectSection(myProperties) = preProject
lib = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_dll", "vcxproj\.\grpc_dll\grpc_dll.vcxproj", "{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
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_print_google_default_creds_token", "vcxproj\.\grpc_print_google_default_creds_token\grpc_print_google_default_creds_token.vcxproj", "{C002965C-8457-CCE5-B1BA-E748FF9A11B6}"
ProjectSection(myProperties) = preProject
lib = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_test_util", "vcxproj\.\grpc_test_util\grpc_test_util.vcxproj", "{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
{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_test_util_unsecure", "vcxproj\.\grpc_test_util_unsecure\grpc_test_util_unsecure.vcxproj", "{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5} = {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_unsecure", "vcxproj\.\grpc_unsecure\grpc_unsecure.vcxproj", "{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_verify_jwt", "vcxproj\.\grpc_verify_jwt\grpc_verify_jwt.vcxproj", "{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}"
ProjectSection(myProperties) = preProject
lib = "False"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reconnect_server", "vcxproj\.\reconnect_server\reconnect_server.vcxproj", "{929C90AE-483F-AC80-EF93-226199F9E428}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{E3110C46-A148-FF65-08FD-3324829BE7FE} = {E3110C46-A148-FF65-08FD-3324829BE7FE}
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_tcp_server", "vcxproj\.\test_tcp_server\test_tcp_server.vcxproj", "{E3110C46-A148-FF65-08FD-3324829BE7FE}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Debug-DLL|Win32 = Debug-DLL|Win32
Debug-DLL|x64 = Debug-DLL|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release-DLL|Win32 = Release-DLL|Win32
Release-DLL|x64 = Release-DLL|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug|Win32.ActiveCfg = Debug|Win32
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug|x64.ActiveCfg = Debug|x64
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release|Win32.ActiveCfg = Release|Win32
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release|x64.ActiveCfg = Release|x64
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug|Win32.Build.0 = Debug|Win32
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug|x64.Build.0 = Debug|x64
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release|Win32.Build.0 = Release|Win32
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release|x64.Build.0 = Release|x64
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug-DLL|Win32.Build.0 = Debug|Win32
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug-DLL|x64.ActiveCfg = Debug|x64
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug-DLL|x64.Build.0 = Debug|x64
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release-DLL|Win32.ActiveCfg = Release|Win32
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release-DLL|Win32.Build.0 = Release|Win32
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release-DLL|x64.ActiveCfg = Release|x64
{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release-DLL|x64.Build.0 = Release|x64
{03306445-5BA0-289C-02AB-513DE6C52124}.Debug|Win32.ActiveCfg = Debug|Win32
{03306445-5BA0-289C-02AB-513DE6C52124}.Debug|x64.ActiveCfg = Debug|x64
{03306445-5BA0-289C-02AB-513DE6C52124}.Release|Win32.ActiveCfg = Release|Win32
{03306445-5BA0-289C-02AB-513DE6C52124}.Release|x64.ActiveCfg = Release|x64
{03306445-5BA0-289C-02AB-513DE6C52124}.Debug|Win32.Build.0 = Debug|Win32
{03306445-5BA0-289C-02AB-513DE6C52124}.Debug|x64.Build.0 = Debug|x64
{03306445-5BA0-289C-02AB-513DE6C52124}.Release|Win32.Build.0 = Release|Win32
{03306445-5BA0-289C-02AB-513DE6C52124}.Release|x64.Build.0 = Release|x64
{03306445-5BA0-289C-02AB-513DE6C52124}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{03306445-5BA0-289C-02AB-513DE6C52124}.Debug-DLL|Win32.Build.0 = Debug|Win32
{03306445-5BA0-289C-02AB-513DE6C52124}.Debug-DLL|x64.ActiveCfg = Debug|x64
{03306445-5BA0-289C-02AB-513DE6C52124}.Debug-DLL|x64.Build.0 = Debug|x64
{03306445-5BA0-289C-02AB-513DE6C52124}.Release-DLL|Win32.ActiveCfg = Release|Win32
{03306445-5BA0-289C-02AB-513DE6C52124}.Release-DLL|Win32.Build.0 = Release|Win32
{03306445-5BA0-289C-02AB-513DE6C52124}.Release-DLL|x64.ActiveCfg = Release|x64
{03306445-5BA0-289C-02AB-513DE6C52124}.Release-DLL|x64.Build.0 = Release|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug|Win32.ActiveCfg = Debug|Win32
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug|x64.ActiveCfg = Debug|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Release|Win32.ActiveCfg = Release|Win32
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Release|x64.ActiveCfg = Release|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug|Win32.Build.0 = Debug|Win32
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug|x64.Build.0 = Debug|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Release|Win32.Build.0 = Release|Win32
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Release|x64.Build.0 = Release|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug-DLL|Win32.Build.0 = Debug|Win32
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug-DLL|x64.ActiveCfg = Debug|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug-DLL|x64.Build.0 = Debug|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Release-DLL|Win32.ActiveCfg = Release|Win32
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Release-DLL|Win32.Build.0 = Release|Win32
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Release-DLL|x64.ActiveCfg = Release|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Release-DLL|x64.Build.0 = Release|x64
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Debug|Win32.ActiveCfg = Debug|Win32
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Debug|x64.ActiveCfg = Debug|x64
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Release|Win32.ActiveCfg = Release|Win32
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Release|x64.ActiveCfg = Release|x64
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Debug|Win32.Build.0 = Debug|Win32
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Debug|x64.Build.0 = Debug|x64
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Release|Win32.Build.0 = Release|Win32
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Release|x64.Build.0 = Release|x64
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Debug-DLL|Win32.Build.0 = Debug|Win32
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Debug-DLL|x64.ActiveCfg = Debug|x64
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Debug-DLL|x64.Build.0 = Debug|x64
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Release-DLL|Win32.ActiveCfg = Release|Win32
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Release-DLL|Win32.Build.0 = Release|Win32
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Release-DLL|x64.ActiveCfg = Release|x64
{A635DE99-B131-CA00-2D3B-8691D60B76C2}.Release-DLL|x64.Build.0 = Release|x64
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Debug|Win32.ActiveCfg = Debug|Win32
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Debug|x64.ActiveCfg = Debug|x64
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Release|Win32.ActiveCfg = Release|Win32
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Release|x64.ActiveCfg = Release|x64
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Debug|Win32.Build.0 = Debug|Win32
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Debug|x64.Build.0 = Debug|x64
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Release|Win32.Build.0 = Release|Win32
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Release|x64.Build.0 = Release|x64
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Debug-DLL|Win32.Build.0 = Debug|Win32
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Debug-DLL|x64.ActiveCfg = Debug|x64
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Debug-DLL|x64.Build.0 = Debug|x64
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Release-DLL|Win32.ActiveCfg = Release|Win32
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Release-DLL|Win32.Build.0 = Release|Win32
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Release-DLL|x64.ActiveCfg = Release|x64
{95D6E277-5ED9-EBDB-3DB8-19C610D2C6F5}.Release-DLL|x64.Build.0 = Release|x64
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug|Win32.ActiveCfg = Debug|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug|x64.ActiveCfg = Debug|x64
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|Win32.ActiveCfg = Release|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|x64.ActiveCfg = Release|x64
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug|Win32.Build.0 = Debug|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug|x64.Build.0 = Debug|x64
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|Win32.Build.0 = Release|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|x64.Build.0 = Release|x64
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug-DLL|Win32.Build.0 = Debug|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug-DLL|x64.ActiveCfg = Debug|x64
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug-DLL|x64.Build.0 = Debug|x64
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release-DLL|Win32.ActiveCfg = Release|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release-DLL|Win32.Build.0 = Release|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release-DLL|x64.ActiveCfg = Release|x64
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release-DLL|x64.Build.0 = Release|x64
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Debug|Win32.ActiveCfg = Debug|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Debug|x64.ActiveCfg = Debug|x64
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Release|Win32.ActiveCfg = Release|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Release|x64.ActiveCfg = Release|x64
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Debug|Win32.Build.0 = Debug|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Debug|x64.Build.0 = Debug|x64
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Release|Win32.Build.0 = Release|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Release|x64.Build.0 = Release|x64
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Debug-DLL|Win32.Build.0 = Debug|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Debug-DLL|x64.ActiveCfg = Debug|x64
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Debug-DLL|x64.Build.0 = Debug|x64
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Release-DLL|Win32.ActiveCfg = Release|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Release-DLL|Win32.Build.0 = Release|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Release-DLL|x64.ActiveCfg = Release|x64
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Release-DLL|x64.Build.0 = Release|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|Win32.ActiveCfg = Debug|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|x64.ActiveCfg = Debug|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|Win32.ActiveCfg = Release|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|x64.ActiveCfg = Release|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|Win32.Build.0 = Debug|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|x64.Build.0 = Debug|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|Win32.Build.0 = Release|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|x64.Build.0 = Release|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug-DLL|Win32.ActiveCfg = Debug-DLL|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug-DLL|Win32.Build.0 = Debug-DLL|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug-DLL|x64.ActiveCfg = Debug-DLL|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug-DLL|x64.Build.0 = Debug-DLL|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release-DLL|Win32.ActiveCfg = Release-DLL|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release-DLL|Win32.Build.0 = Release-DLL|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release-DLL|x64.ActiveCfg = Release-DLL|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release-DLL|x64.Build.0 = Release-DLL|x64
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Debug|Win32.ActiveCfg = Debug|Win32
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Debug|x64.ActiveCfg = Debug|x64
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Release|Win32.ActiveCfg = Release|Win32
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Release|x64.ActiveCfg = Release|x64
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Debug|Win32.Build.0 = Debug|Win32
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Debug|x64.Build.0 = Debug|x64
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Release|Win32.Build.0 = Release|Win32
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Release|x64.Build.0 = Release|x64
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Debug-DLL|Win32.ActiveCfg = Debug-DLL|Win32
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Debug-DLL|Win32.Build.0 = Debug-DLL|Win32
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Debug-DLL|x64.ActiveCfg = Debug-DLL|x64
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Debug-DLL|x64.Build.0 = Debug-DLL|x64
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Release-DLL|Win32.ActiveCfg = Release-DLL|Win32
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Release-DLL|Win32.Build.0 = Release-DLL|Win32
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Release-DLL|x64.ActiveCfg = Release-DLL|x64
{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}.Release-DLL|x64.Build.0 = Release-DLL|x64
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Debug|Win32.ActiveCfg = Debug|Win32
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Debug|x64.ActiveCfg = Debug|x64
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Release|Win32.ActiveCfg = Release|Win32
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Release|x64.ActiveCfg = Release|x64
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Debug|Win32.Build.0 = Debug|Win32
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Debug|x64.Build.0 = Debug|x64
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Release|Win32.Build.0 = Release|Win32
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Release|x64.Build.0 = Release|x64
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Debug-DLL|Win32.Build.0 = Debug|Win32
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Debug-DLL|x64.ActiveCfg = Debug|x64
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Debug-DLL|x64.Build.0 = Debug|x64
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Release-DLL|Win32.ActiveCfg = Release|Win32
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Release-DLL|Win32.Build.0 = Release|Win32
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Release-DLL|x64.ActiveCfg = Release|x64
{9F58AD72-49E1-4D10-B826-9E190AB0AAC0}.Release-DLL|x64.Build.0 = Release|x64
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Debug|Win32.ActiveCfg = Debug|Win32
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Debug|x64.ActiveCfg = Debug|x64
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Release|Win32.ActiveCfg = Release|Win32
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Release|x64.ActiveCfg = Release|x64
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Debug|Win32.Build.0 = Debug|Win32
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Debug|x64.Build.0 = Debug|x64
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Release|Win32.Build.0 = Release|Win32
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Release|x64.Build.0 = Release|x64
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Debug-DLL|Win32.ActiveCfg = Debug-DLL|Win32
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Debug-DLL|Win32.Build.0 = Debug-DLL|Win32
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Debug-DLL|x64.ActiveCfg = Debug-DLL|x64
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Debug-DLL|x64.Build.0 = Debug-DLL|x64
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Release-DLL|Win32.ActiveCfg = Release-DLL|Win32
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Release-DLL|Win32.Build.0 = Release-DLL|Win32
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Release-DLL|x64.ActiveCfg = Release-DLL|x64
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Release-DLL|x64.Build.0 = Release-DLL|x64
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Debug|Win32.ActiveCfg = Debug|Win32
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Debug|x64.ActiveCfg = Debug|x64
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Release|Win32.ActiveCfg = Release|Win32
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Release|x64.ActiveCfg = Release|x64
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Debug|Win32.Build.0 = Debug|Win32
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Debug|x64.Build.0 = Debug|x64
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Release|Win32.Build.0 = Release|Win32
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Release|x64.Build.0 = Release|x64
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Debug-DLL|Win32.Build.0 = Debug|Win32
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Debug-DLL|x64.ActiveCfg = Debug|x64
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Debug-DLL|x64.Build.0 = Debug|x64
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Release-DLL|Win32.ActiveCfg = Release|Win32
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Release-DLL|Win32.Build.0 = Release|Win32
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Release-DLL|x64.ActiveCfg = Release|x64
{77971F8D-F583-3E77-0E3C-6C1FB6B1749C}.Release-DLL|x64.Build.0 = Release|x64
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Debug|Win32.ActiveCfg = Debug|Win32
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Debug|x64.ActiveCfg = Debug|x64
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Release|Win32.ActiveCfg = Release|Win32
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Release|x64.ActiveCfg = Release|x64
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Debug|Win32.Build.0 = Debug|Win32
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Debug|x64.Build.0 = Debug|x64
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Release|Win32.Build.0 = Release|Win32
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Release|x64.Build.0 = Release|x64
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Debug-DLL|Win32.Build.0 = Debug|Win32
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Debug-DLL|x64.ActiveCfg = Debug|x64
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Debug-DLL|x64.Build.0 = Debug|x64
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Release-DLL|Win32.ActiveCfg = Release|Win32
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Release-DLL|Win32.Build.0 = Release|Win32
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Release-DLL|x64.ActiveCfg = Release|x64
{A2F6CBBA-A553-41B3-A7DE-F26DECCC27F0}.Release-DLL|x64.Build.0 = Release|x64
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Debug|Win32.ActiveCfg = Debug|Win32
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Debug|x64.ActiveCfg = Debug|x64
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Release|Win32.ActiveCfg = Release|Win32
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Release|x64.ActiveCfg = Release|x64
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Debug|Win32.Build.0 = Debug|Win32
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Debug|x64.Build.0 = Debug|x64
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Release|Win32.Build.0 = Release|Win32
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Release|x64.Build.0 = Release|x64
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Debug-DLL|Win32.Build.0 = Debug|Win32
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Debug-DLL|x64.ActiveCfg = Debug|x64
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Debug-DLL|x64.Build.0 = Debug|x64
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Release-DLL|Win32.ActiveCfg = Release|Win32
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Release-DLL|Win32.Build.0 = Release|Win32
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Release-DLL|x64.ActiveCfg = Release|x64
{C002965C-8457-CCE5-B1BA-E748FF9A11B6}.Release-DLL|x64.Build.0 = Release|x64
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug|Win32.ActiveCfg = Debug|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug|x64.ActiveCfg = Debug|x64
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release|Win32.ActiveCfg = Release|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release|x64.ActiveCfg = Release|x64
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug|Win32.Build.0 = Debug|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug|x64.Build.0 = Debug|x64
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release|Win32.Build.0 = Release|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release|x64.Build.0 = Release|x64
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug-DLL|Win32.Build.0 = Debug|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug-DLL|x64.ActiveCfg = Debug|x64
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug-DLL|x64.Build.0 = Debug|x64
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release-DLL|Win32.ActiveCfg = Release|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release-DLL|Win32.Build.0 = Release|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release-DLL|x64.ActiveCfg = Release|x64
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release-DLL|x64.Build.0 = Release|x64
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Debug|Win32.ActiveCfg = Debug|Win32
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Debug|x64.ActiveCfg = Debug|x64
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Release|Win32.ActiveCfg = Release|Win32
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Release|x64.ActiveCfg = Release|x64
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Debug|Win32.Build.0 = Debug|Win32
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Debug|x64.Build.0 = Debug|x64
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Release|Win32.Build.0 = Release|Win32
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Release|x64.Build.0 = Release|x64
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Debug-DLL|Win32.Build.0 = Debug|Win32
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Debug-DLL|x64.ActiveCfg = Debug|x64
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Debug-DLL|x64.Build.0 = Debug|x64
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Release-DLL|Win32.ActiveCfg = Release|Win32
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Release-DLL|Win32.Build.0 = Release|Win32
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Release-DLL|x64.ActiveCfg = Release|x64
{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}.Release-DLL|x64.Build.0 = Release|x64
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug|Win32.ActiveCfg = Debug|Win32
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug|x64.ActiveCfg = Debug|x64
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release|Win32.ActiveCfg = Release|Win32
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release|x64.ActiveCfg = Release|x64
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug|Win32.Build.0 = Debug|Win32
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug|x64.Build.0 = Debug|x64
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release|Win32.Build.0 = Release|Win32
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release|x64.Build.0 = Release|x64
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug-DLL|Win32.ActiveCfg = Debug-DLL|Win32
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug-DLL|Win32.Build.0 = Debug-DLL|Win32
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug-DLL|x64.ActiveCfg = Debug-DLL|x64
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug-DLL|x64.Build.0 = Debug-DLL|x64
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release-DLL|Win32.ActiveCfg = Release-DLL|Win32
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release-DLL|Win32.Build.0 = Release-DLL|Win32
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release-DLL|x64.ActiveCfg = Release-DLL|x64
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release-DLL|x64.Build.0 = Release-DLL|x64
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Debug|Win32.ActiveCfg = Debug|Win32
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Debug|x64.ActiveCfg = Debug|x64
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Release|Win32.ActiveCfg = Release|Win32
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Release|x64.ActiveCfg = Release|x64
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Debug|Win32.Build.0 = Debug|Win32
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Debug|x64.Build.0 = Debug|x64
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Release|Win32.Build.0 = Release|Win32
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Release|x64.Build.0 = Release|x64
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Debug-DLL|Win32.Build.0 = Debug|Win32
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Debug-DLL|x64.ActiveCfg = Debug|x64
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Debug-DLL|x64.Build.0 = Debug|x64
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Release-DLL|Win32.ActiveCfg = Release|Win32
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Release-DLL|Win32.Build.0 = Release|Win32
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Release-DLL|x64.ActiveCfg = Release|x64
{02FAC25F-5FF6-34A0-00AE-B82BFBA851A9}.Release-DLL|x64.Build.0 = Release|x64
{929C90AE-483F-AC80-EF93-226199F9E428}.Debug|Win32.ActiveCfg = Debug|Win32
{929C90AE-483F-AC80-EF93-226199F9E428}.Debug|x64.ActiveCfg = Debug|x64
{929C90AE-483F-AC80-EF93-226199F9E428}.Release|Win32.ActiveCfg = Release|Win32
{929C90AE-483F-AC80-EF93-226199F9E428}.Release|x64.ActiveCfg = Release|x64
{929C90AE-483F-AC80-EF93-226199F9E428}.Debug|Win32.Build.0 = Debug|Win32
{929C90AE-483F-AC80-EF93-226199F9E428}.Debug|x64.Build.0 = Debug|x64
{929C90AE-483F-AC80-EF93-226199F9E428}.Release|Win32.Build.0 = Release|Win32
{929C90AE-483F-AC80-EF93-226199F9E428}.Release|x64.Build.0 = Release|x64
{929C90AE-483F-AC80-EF93-226199F9E428}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{929C90AE-483F-AC80-EF93-226199F9E428}.Debug-DLL|Win32.Build.0 = Debug|Win32
{929C90AE-483F-AC80-EF93-226199F9E428}.Debug-DLL|x64.ActiveCfg = Debug|x64
{929C90AE-483F-AC80-EF93-226199F9E428}.Debug-DLL|x64.Build.0 = Debug|x64
{929C90AE-483F-AC80-EF93-226199F9E428}.Release-DLL|Win32.ActiveCfg = Release|Win32
{929C90AE-483F-AC80-EF93-226199F9E428}.Release-DLL|Win32.Build.0 = Release|Win32
{929C90AE-483F-AC80-EF93-226199F9E428}.Release-DLL|x64.ActiveCfg = Release|x64
{929C90AE-483F-AC80-EF93-226199F9E428}.Release-DLL|x64.Build.0 = Release|x64
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Debug|Win32.ActiveCfg = Debug|Win32
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Debug|x64.ActiveCfg = Debug|x64
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Release|Win32.ActiveCfg = Release|Win32
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Release|x64.ActiveCfg = Release|x64
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Debug|Win32.Build.0 = Debug|Win32
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Debug|x64.Build.0 = Debug|x64
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Release|Win32.Build.0 = Release|Win32
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Release|x64.Build.0 = Release|x64
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Debug-DLL|Win32.Build.0 = Debug|Win32
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Debug-DLL|x64.ActiveCfg = Debug|x64
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Debug-DLL|x64.Build.0 = Debug|x64
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Release-DLL|Win32.ActiveCfg = Release|Win32
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Release-DLL|Win32.Build.0 = Release|Win32
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Release-DLL|x64.ActiveCfg = Release|x64
{E3110C46-A148-FF65-08FD-3324829BE7FE}.Release-DLL|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

@ -1,65 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr", "vcxproj\.\gpr\gpr.vcxproj", "{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc", "vcxproj\.\grpc\grpc.vcxproj", "{29D16885-7228-4C31-81ED-5F9187C7F2A9}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_csharp_ext", "vcxproj\.\grpc_csharp_ext\grpc_csharp_ext.vcxproj", "{D64C6D63-4458-4A88-AB38-35678384A7E4}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
ProjectSection(ProjectDependencies) = postProject
{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug|Win32.ActiveCfg = Debug|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug|Win32.Build.0 = Debug|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug|x64.ActiveCfg = Debug|x64
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug|x64.Build.0 = Debug|x64
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|Win32.ActiveCfg = Release|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|Win32.Build.0 = Release|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|x64.ActiveCfg = Release|x64
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|x64.Build.0 = Release|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|Win32.ActiveCfg = Debug-DLL|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|Win32.Build.0 = Debug-DLL|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|x64.ActiveCfg = Debug-DLL|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|x64.Build.0 = Debug-DLL|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|Win32.ActiveCfg = Release-DLL|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|Win32.Build.0 = Release-DLL|Win32
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|x64.ActiveCfg = Release-DLL|x64
{29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|x64.Build.0 = Release-DLL|x64
{D64C6D63-4458-4A88-AB38-35678384A7E4}.Debug|Win32.ActiveCfg = Debug|Win32
{D64C6D63-4458-4A88-AB38-35678384A7E4}.Debug|Win32.Build.0 = Debug|Win32
{D64C6D63-4458-4A88-AB38-35678384A7E4}.Debug|x64.ActiveCfg = Debug|x64
{D64C6D63-4458-4A88-AB38-35678384A7E4}.Debug|x64.Build.0 = Debug|x64
{D64C6D63-4458-4A88-AB38-35678384A7E4}.Release|Win32.ActiveCfg = Release|Win32
{D64C6D63-4458-4A88-AB38-35678384A7E4}.Release|Win32.Build.0 = Release|Win32
{D64C6D63-4458-4A88-AB38-35678384A7E4}.Release|x64.ActiveCfg = Release|x64
{D64C6D63-4458-4A88-AB38-35678384A7E4}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save