Merge pull request #3119 from ctiller/cleaner-build

Cleaning up our build process for windows a little
pull/3180/head
Nicolas Noble 10 years ago
commit 50ad1bbbf1
  1. 1
      BUILD
  2. 8710
      Makefile
  3. 2675
      build.json
  4. 995
      build.yaml
  5. 454
      templates/BUILD.template
  6. 3696
      templates/Makefile.template
  7. 308
      templates/gRPC.podspec.template
  8. 84
      templates/src/core/surface/version.c.template
  9. 6
      templates/tools/doxygen/Doxyfile.c++.internal.template
  10. 6
      templates/tools/doxygen/Doxyfile.c++.template
  11. 6
      templates/tools/doxygen/Doxyfile.core.internal.template
  12. 6
      templates/tools/doxygen/Doxyfile.core.template
  13. 68
      templates/tools/run_tests/sources_and_headers.json.template
  14. 28
      templates/tools/run_tests/tests.json.template
  15. 414
      templates/vsprojects/Grpc.mak.template
  16. 18
      templates/vsprojects/cpptest.props.template
  17. 16
      templates/vsprojects/global.props.template
  18. 2
      templates/vsprojects/gpr/gpr.vcxproj.filters.template
  19. 2
      templates/vsprojects/gpr/gpr.vcxproj.template
  20. 2
      templates/vsprojects/gpr_test_util/gpr_test_util.vcxproj.template
  21. 2
      templates/vsprojects/grpc++/grpc++.vcxproj.filters.template
  22. 2
      templates/vsprojects/grpc++/grpc++.vcxproj.template
  23. 6
      templates/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.filters.template
  24. 6
      templates/vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj.template
  25. 7
      templates/vsprojects/grpc+tests.sln.template
  26. 12
      templates/vsprojects/grpc.sln.template
  27. 2
      templates/vsprojects/grpc/grpc.vcxproj.filters.template
  28. 2
      templates/vsprojects/grpc/grpc.vcxproj.template
  29. 2
      templates/vsprojects/grpc/packages.config.template
  30. 6
      templates/vsprojects/grpc_cpp_plugin/grpc_cpp_plugin.vcxproj.template
  31. 12
      templates/vsprojects/grpc_csharp_ext.sln.template
  32. 2
      templates/vsprojects/grpc_csharp_ext/grpc_csharp_ext.vcxproj.template
  33. 2
      templates/vsprojects/grpc_csharp_ext/packages.config.template
  34. 6
      templates/vsprojects/grpc_csharp_plugin/grpc_csharp_plugin.vcxproj.template
  35. 6
      templates/vsprojects/grpc_objective_c_plugin/grpc_objective_c_plugin.vcxproj.template
  36. 2
      templates/vsprojects/grpc_plugin_support/grpc_plugin_support.vcxproj.template
  37. 12
      templates/vsprojects/grpc_protoc_plugins.sln.template
  38. 6
      templates/vsprojects/grpc_python_plugin/grpc_python_plugin.vcxproj.template
  39. 6
      templates/vsprojects/grpc_ruby_plugin/grpc_ruby_plugin.vcxproj.template
  40. 2
      templates/vsprojects/grpc_test_util/grpc_test_util.vcxproj.template
  41. 2
      templates/vsprojects/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj.template
  42. 2
      templates/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters.template
  43. 2
      templates/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.template
  44. 2
      templates/vsprojects/grpc_unsecure/packages.config.template
  45. 13
      templates/vsprojects/openssl.props.template
  46. 81
      templates/vsprojects/packages.include
  47. 13
      templates/vsprojects/protobuf.props.template
  48. 13
      templates/vsprojects/protoc.props.template
  49. 8
      templates/vsprojects/sln_defs.include
  50. 8
      templates/vsprojects/vcxproj.filters_defs.include
  51. 18
      templates/vsprojects/vcxproj.template
  52. 80
      templates/vsprojects/vcxproj_defs.include
  53. 14
      templates/vsprojects/winsock.props.template
  54. 15
      templates/vsprojects/zlib-dll.props.template
  55. 15
      templates/vsprojects/zlib.props.template
  56. 7
      test/core/bad_client/gen_build_yaml.py
  57. 0
      test/core/end2end/fixtures/h2_compress.c
  58. 0
      test/core/end2end/fixtures/h2_fakesec.c
  59. 0
      test/core/end2end/fixtures/h2_full+poll.c
  60. 0
      test/core/end2end/fixtures/h2_full.c
  61. 0
      test/core/end2end/fixtures/h2_oauth2.c
  62. 0
      test/core/end2end/fixtures/h2_proxy.c
  63. 0
      test/core/end2end/fixtures/h2_sockpair+trace.c
  64. 0
      test/core/end2end/fixtures/h2_sockpair.c
  65. 0
      test/core/end2end/fixtures/h2_sockpair_1byte.c
  66. 0
      test/core/end2end/fixtures/h2_ssl+poll.c
  67. 0
      test/core/end2end/fixtures/h2_ssl.c
  68. 0
      test/core/end2end/fixtures/h2_ssl_proxy.c
  69. 0
      test/core/end2end/fixtures/h2_uds+poll.c
  70. 0
      test/core/end2end/fixtures/h2_uds.c
  71. 71
      test/core/end2end/gen_build_yaml.py
  72. 0
      test/core/end2end/tests/binary_metadata.c
  73. 0
      test/core/end2end/tests/call_creds.c
  74. 0
      test/core/end2end/tests/cancel_after_client_done.c
  75. 0
      test/core/end2end/tests/compressed_payload.c
  76. 0
      test/core/end2end/tests/high_initial_seqno.c
  77. 0
      test/core/end2end/tests/large_metadata.c
  78. 0
      test/core/end2end/tests/metadata.c
  79. 0
      test/core/end2end/tests/payload.c
  80. 0
      test/core/end2end/tests/shutdown_finishes_calls.c
  81. 0
      test/core/end2end/tests/shutdown_finishes_tags.c
  82. 0
      test/core/end2end/tests/trailing_metadata.c
  83. 4
      test/core/util/reconnect_server.c
  84. 2
      test/cpp/qps/client_sync.cc
  85. 1
      test/cpp/qps/driver.cc
  86. 3
      test/cpp/qps/server_async.cc
  87. 2
      test/cpp/qps/server_sync.cc
  88. 15
      tools/buildgen/build-cleaner.py
  89. 6
      tools/buildgen/generate_build_additions.sh
  90. 6
      tools/buildgen/generate_projects-old.sh
  91. 9
      tools/buildgen/generate_projects.py
  92. 4
      tools/buildgen/generate_projects.sh
  93. 62
      tools/buildgen/mako_renderer.py
  94. 2
      tools/buildgen/plugins/expand_bin_attrs.py
  95. 4
      tools/buildgen/plugins/expand_filegroups.py
  96. 33
      tools/buildgen/plugins/generate_vsprojects.py
  97. 2
      tools/buildgen/plugins/list_protos.py
  98. 1
      tools/jenkins/grpc_jenkins_slave/Dockerfile
  99. 1
      tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile
  100. 18
      tools/run_tests/run_sanity.sh
  101. Some files were not shown because too many files have changed in this diff Show More

@ -769,6 +769,7 @@ cc_library(
".",
],
deps = [
"//external:libssl",
"//external:protobuf_clib",
":gpr",
":grpc",

8710
Makefile

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

@ -0,0 +1,995 @@
'#1': This file describes the list of targets and dependencies.
'#2': It is used among other things to generate all of our project files.
'#3': Please refer to the templates directory for more information.
settings:
'#': The public version number of the library.
version: {major: 0, minor: 10, micro: 1, build: 0}
filegroups:
- name: census
public_headers: [include/grpc/census.h]
headers: [src/core/census/aggregation.h, src/core/census/context.h, src/core/census/rpc_metric_id.h]
src: [src/core/census/context.c, src/core/census/initialize.c, src/core/census/operation.c,
src/core/census/tracing.c]
- name: grpc++_base
public_headers: [include/grpc++/channel.h, include/grpc++/client_context.h, include/grpc++/completion_queue.h,
include/grpc++/create_channel.h, include/grpc++/generic/async_generic_service.h,
include/grpc++/generic/generic_stub.h, include/grpc++/impl/call.h, include/grpc++/impl/client_unary_call.h,
include/grpc++/impl/grpc_library.h, include/grpc++/impl/proto_utils.h, include/grpc++/impl/rpc_method.h,
include/grpc++/impl/rpc_service_method.h, include/grpc++/impl/serialization_traits.h,
include/grpc++/impl/service_type.h, include/grpc++/impl/sync.h, include/grpc++/impl/sync_cxx11.h,
include/grpc++/impl/sync_no_cxx11.h, include/grpc++/impl/thd.h, include/grpc++/impl/thd_cxx11.h,
include/grpc++/impl/thd_no_cxx11.h, include/grpc++/security/auth_context.h, include/grpc++/security/auth_metadata_processor.h,
include/grpc++/security/credentials.h, include/grpc++/security/server_credentials.h,
include/grpc++/server.h, include/grpc++/server_builder.h, include/grpc++/server_context.h,
include/grpc++/support/async_stream.h, include/grpc++/support/async_unary_call.h,
include/grpc++/support/byte_buffer.h, include/grpc++/support/channel_arguments.h,
include/grpc++/support/config.h, include/grpc++/support/config_protobuf.h, include/grpc++/support/slice.h,
include/grpc++/support/status.h, include/grpc++/support/status_code_enum.h, include/grpc++/support/string_ref.h,
include/grpc++/support/stub_options.h, include/grpc++/support/sync_stream.h, include/grpc++/support/time.h]
headers: [src/cpp/client/create_channel_internal.h, src/cpp/common/create_auth_context.h,
src/cpp/server/dynamic_thread_pool.h, src/cpp/server/fixed_size_thread_pool.h,
src/cpp/server/thread_pool_interface.h]
src: [src/cpp/client/channel.cc, src/cpp/client/channel_arguments.cc, src/cpp/client/client_context.cc,
src/cpp/client/create_channel.cc, src/cpp/client/create_channel_internal.cc, src/cpp/client/credentials.cc,
src/cpp/client/generic_stub.cc, src/cpp/client/insecure_credentials.cc, src/cpp/common/call.cc,
src/cpp/common/completion_queue.cc, src/cpp/common/rpc_method.cc, src/cpp/proto/proto_utils.cc,
src/cpp/server/async_generic_service.cc, src/cpp/server/create_default_thread_pool.cc,
src/cpp/server/dynamic_thread_pool.cc, src/cpp/server/fixed_size_thread_pool.cc,
src/cpp/server/insecure_server_credentials.cc, src/cpp/server/server.cc, src/cpp/server/server_builder.cc,
src/cpp/server/server_context.cc, src/cpp/server/server_credentials.cc, src/cpp/util/byte_buffer.cc,
src/cpp/util/slice.cc, src/cpp/util/status.cc, src/cpp/util/string_ref.cc, src/cpp/util/time.cc]
- name: grpc_base
public_headers: [include/grpc/byte_buffer.h, include/grpc/byte_buffer_reader.h,
include/grpc/compression.h, include/grpc/grpc.h, include/grpc/status.h]
headers: [src/core/census/grpc_filter.h, src/core/channel/channel_args.h, src/core/channel/channel_stack.h,
src/core/channel/client_channel.h, src/core/channel/compress_filter.h, src/core/channel/connected_channel.h,
src/core/channel/context.h, src/core/channel/http_client_filter.h, src/core/channel/http_server_filter.h,
src/core/channel/noop_filter.h, src/core/client_config/client_config.h, src/core/client_config/connector.h,
src/core/client_config/lb_policies/pick_first.h, src/core/client_config/lb_policy.h,
src/core/client_config/resolver.h, src/core/client_config/resolver_factory.h,
src/core/client_config/resolver_registry.h, src/core/client_config/resolvers/dns_resolver.h,
src/core/client_config/resolvers/sockaddr_resolver.h, src/core/client_config/subchannel.h,
src/core/client_config/subchannel_factory.h, src/core/client_config/subchannel_factory_decorators/add_channel_arg.h,
src/core/client_config/subchannel_factory_decorators/merge_channel_args.h, src/core/client_config/uri_parser.h,
src/core/compression/message_compress.h, src/core/debug/trace.h, src/core/httpcli/format_request.h,
src/core/httpcli/httpcli.h, src/core/httpcli/parser.h, src/core/iomgr/alarm.h,
src/core/iomgr/alarm_heap.h, src/core/iomgr/alarm_internal.h, src/core/iomgr/endpoint.h,
src/core/iomgr/endpoint_pair.h, src/core/iomgr/fd_posix.h, src/core/iomgr/iocp_windows.h,
src/core/iomgr/iomgr.h, src/core/iomgr/iomgr_internal.h, src/core/iomgr/iomgr_posix.h,
src/core/iomgr/pollset.h, src/core/iomgr/pollset_posix.h, src/core/iomgr/pollset_set.h,
src/core/iomgr/pollset_set_posix.h, src/core/iomgr/pollset_set_windows.h, src/core/iomgr/pollset_windows.h,
src/core/iomgr/resolve_address.h, src/core/iomgr/sockaddr.h, src/core/iomgr/sockaddr_posix.h,
src/core/iomgr/sockaddr_utils.h, src/core/iomgr/sockaddr_win32.h, src/core/iomgr/socket_utils_posix.h,
src/core/iomgr/socket_windows.h, src/core/iomgr/tcp_client.h, src/core/iomgr/tcp_posix.h,
src/core/iomgr/tcp_server.h, src/core/iomgr/tcp_windows.h, src/core/iomgr/time_averaged_stats.h,
src/core/iomgr/udp_server.h, src/core/iomgr/wakeup_fd_pipe.h, src/core/iomgr/wakeup_fd_posix.h,
src/core/json/json.h, src/core/json/json_common.h, src/core/json/json_reader.h,
src/core/json/json_writer.h, src/core/profiling/timers.h, src/core/statistics/census_interface.h,
src/core/statistics/census_rpc_stats.h, src/core/surface/byte_buffer_queue.h,
src/core/surface/call.h, src/core/surface/channel.h, src/core/surface/completion_queue.h,
src/core/surface/event_string.h, src/core/surface/init.h, src/core/surface/server.h,
src/core/surface/surface_trace.h, src/core/transport/chttp2/alpn.h, src/core/transport/chttp2/bin_encoder.h,
src/core/transport/chttp2/frame.h, src/core/transport/chttp2/frame_data.h, src/core/transport/chttp2/frame_goaway.h,
src/core/transport/chttp2/frame_ping.h, src/core/transport/chttp2/frame_rst_stream.h,
src/core/transport/chttp2/frame_settings.h, src/core/transport/chttp2/frame_window_update.h,
src/core/transport/chttp2/hpack_parser.h, src/core/transport/chttp2/hpack_table.h,
src/core/transport/chttp2/http2_errors.h, src/core/transport/chttp2/huffsyms.h,
src/core/transport/chttp2/incoming_metadata.h, src/core/transport/chttp2/internal.h,
src/core/transport/chttp2/status_conversion.h, src/core/transport/chttp2/stream_encoder.h,
src/core/transport/chttp2/stream_map.h, src/core/transport/chttp2/timeout_encoding.h,
src/core/transport/chttp2/varint.h, src/core/transport/chttp2_transport.h, src/core/transport/connectivity_state.h,
src/core/transport/metadata.h, src/core/transport/stream_op.h, src/core/transport/transport.h,
src/core/transport/transport_impl.h]
src: [src/core/census/grpc_context.c, src/core/census/grpc_filter.c, src/core/channel/channel_args.c,
src/core/channel/channel_stack.c, src/core/channel/client_channel.c, src/core/channel/compress_filter.c,
src/core/channel/connected_channel.c, src/core/channel/http_client_filter.c, src/core/channel/http_server_filter.c,
src/core/channel/noop_filter.c, src/core/client_config/client_config.c, src/core/client_config/connector.c,
src/core/client_config/lb_policies/pick_first.c, src/core/client_config/lb_policy.c,
src/core/client_config/resolver.c, src/core/client_config/resolver_factory.c,
src/core/client_config/resolver_registry.c, src/core/client_config/resolvers/dns_resolver.c,
src/core/client_config/resolvers/sockaddr_resolver.c, src/core/client_config/subchannel.c,
src/core/client_config/subchannel_factory.c, src/core/client_config/subchannel_factory_decorators/add_channel_arg.c,
src/core/client_config/subchannel_factory_decorators/merge_channel_args.c, src/core/client_config/uri_parser.c,
src/core/compression/algorithm.c, src/core/compression/message_compress.c, src/core/debug/trace.c,
src/core/httpcli/format_request.c, src/core/httpcli/httpcli.c, src/core/httpcli/parser.c,
src/core/iomgr/alarm.c, src/core/iomgr/alarm_heap.c, src/core/iomgr/endpoint.c,
src/core/iomgr/endpoint_pair_posix.c, src/core/iomgr/endpoint_pair_windows.c,
src/core/iomgr/fd_posix.c, src/core/iomgr/iocp_windows.c, src/core/iomgr/iomgr.c,
src/core/iomgr/iomgr_posix.c, src/core/iomgr/iomgr_windows.c, src/core/iomgr/pollset_multipoller_with_epoll.c,
src/core/iomgr/pollset_multipoller_with_poll_posix.c, src/core/iomgr/pollset_posix.c,
src/core/iomgr/pollset_set_posix.c, src/core/iomgr/pollset_set_windows.c, src/core/iomgr/pollset_windows.c,
src/core/iomgr/resolve_address_posix.c, src/core/iomgr/resolve_address_windows.c,
src/core/iomgr/sockaddr_utils.c, src/core/iomgr/socket_utils_common_posix.c, src/core/iomgr/socket_utils_linux.c,
src/core/iomgr/socket_utils_posix.c, src/core/iomgr/socket_windows.c, src/core/iomgr/tcp_client_posix.c,
src/core/iomgr/tcp_client_windows.c, src/core/iomgr/tcp_posix.c, src/core/iomgr/tcp_server_posix.c,
src/core/iomgr/tcp_server_windows.c, src/core/iomgr/tcp_windows.c, src/core/iomgr/time_averaged_stats.c,
src/core/iomgr/udp_server.c, src/core/iomgr/wakeup_fd_eventfd.c, src/core/iomgr/wakeup_fd_nospecial.c,
src/core/iomgr/wakeup_fd_pipe.c, src/core/iomgr/wakeup_fd_posix.c, src/core/json/json.c,
src/core/json/json_reader.c, src/core/json/json_string.c, src/core/json/json_writer.c,
src/core/profiling/basic_timers.c, src/core/profiling/stap_timers.c, src/core/surface/byte_buffer.c,
src/core/surface/byte_buffer_queue.c, src/core/surface/byte_buffer_reader.c, src/core/surface/call.c,
src/core/surface/call_details.c, src/core/surface/call_log_batch.c, src/core/surface/channel.c,
src/core/surface/channel_connectivity.c, src/core/surface/channel_create.c, src/core/surface/completion_queue.c,
src/core/surface/event_string.c, src/core/surface/init.c, src/core/surface/lame_client.c,
src/core/surface/metadata_array.c, src/core/surface/server.c, src/core/surface/server_chttp2.c,
src/core/surface/server_create.c, src/core/surface/surface_trace.c, src/core/surface/version.c,
src/core/transport/chttp2/alpn.c, src/core/transport/chttp2/bin_encoder.c, src/core/transport/chttp2/frame_data.c,
src/core/transport/chttp2/frame_goaway.c, src/core/transport/chttp2/frame_ping.c,
src/core/transport/chttp2/frame_rst_stream.c, src/core/transport/chttp2/frame_settings.c,
src/core/transport/chttp2/frame_window_update.c, src/core/transport/chttp2/hpack_parser.c,
src/core/transport/chttp2/hpack_table.c, src/core/transport/chttp2/huffsyms.c,
src/core/transport/chttp2/incoming_metadata.c, src/core/transport/chttp2/parsing.c,
src/core/transport/chttp2/status_conversion.c, src/core/transport/chttp2/stream_encoder.c,
src/core/transport/chttp2/stream_lists.c, src/core/transport/chttp2/stream_map.c,
src/core/transport/chttp2/timeout_encoding.c, src/core/transport/chttp2/varint.c,
src/core/transport/chttp2/writing.c, src/core/transport/chttp2_transport.c, src/core/transport/connectivity_state.c,
src/core/transport/metadata.c, src/core/transport/stream_op.c, src/core/transport/transport.c,
src/core/transport/transport_op_string.c]
- name: grpc_test_util_base
headers: [test/core/end2end/cq_verifier.h, test/core/end2end/fixtures/proxy.h, test/core/iomgr/endpoint_tests.h,
test/core/security/oauth2_utils.h, test/core/util/grpc_profiler.h, test/core/util/parse_hexstring.h,
test/core/util/port.h, test/core/util/slice_splitter.h]
src: [test/core/end2end/cq_verifier.c, test/core/end2end/fixtures/proxy.c, test/core/iomgr/endpoint_tests.c,
test/core/security/oauth2_utils.c, test/core/util/grpc_profiler.c, test/core/util/parse_hexstring.c,
test/core/util/port_posix.c, test/core/util/port_windows.c, test/core/util/slice_splitter.c]
libs:
- name: gpr
build: all
language: c
public_headers: [include/grpc/support/alloc.h, include/grpc/support/atm.h, include/grpc/support/atm_gcc_atomic.h,
include/grpc/support/atm_gcc_sync.h, include/grpc/support/atm_win32.h, include/grpc/support/cmdline.h,
include/grpc/support/cpu.h, include/grpc/support/histogram.h, include/grpc/support/host_port.h,
include/grpc/support/log.h, include/grpc/support/log_win32.h, include/grpc/support/port_platform.h,
include/grpc/support/slice.h, include/grpc/support/slice_buffer.h, include/grpc/support/string_util.h,
include/grpc/support/subprocess.h, include/grpc/support/sync.h, include/grpc/support/sync_generic.h,
include/grpc/support/sync_posix.h, include/grpc/support/sync_win32.h, include/grpc/support/thd.h,
include/grpc/support/time.h, include/grpc/support/tls.h, include/grpc/support/tls_gcc.h,
include/grpc/support/tls_msvc.h, include/grpc/support/tls_pthread.h, include/grpc/support/useful.h]
headers: [src/core/support/env.h, src/core/support/file.h, src/core/support/murmur_hash.h,
src/core/support/stack_lockfree.h, src/core/support/string.h, src/core/support/string_win32.h,
src/core/support/thd_internal.h, src/core/support/time_precise.h]
src: [src/core/support/alloc.c, src/core/support/cmdline.c, src/core/support/cpu_iphone.c,
src/core/support/cpu_linux.c, src/core/support/cpu_posix.c, src/core/support/cpu_windows.c,
src/core/support/env_linux.c, src/core/support/env_posix.c, src/core/support/env_win32.c,
src/core/support/file.c, src/core/support/file_posix.c, src/core/support/file_win32.c,
src/core/support/histogram.c, src/core/support/host_port.c, src/core/support/log.c,
src/core/support/log_android.c, src/core/support/log_linux.c, src/core/support/log_posix.c,
src/core/support/log_win32.c, src/core/support/murmur_hash.c, src/core/support/slice.c,
src/core/support/slice_buffer.c, src/core/support/stack_lockfree.c, src/core/support/string.c,
src/core/support/string_posix.c, src/core/support/string_win32.c, src/core/support/subprocess_posix.c,
src/core/support/sync.c, src/core/support/sync_posix.c, src/core/support/sync_win32.c,
src/core/support/thd.c, src/core/support/thd_posix.c, src/core/support/thd_win32.c,
src/core/support/time.c, src/core/support/time_posix.c, src/core/support/time_win32.c,
src/core/support/tls_pthread.c]
secure: false
vs_project_guid: '{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}'
- name: gpr_test_util
build: private
language: c
headers: [test/core/util/test_config.h]
src: [test/core/util/test_config.c]
deps: [gpr]
secure: false
vs_project_guid: '{EAB0A629-17A9-44DB-B5FF-E91A721FE037}'
- name: grpc
build: all
language: c
public_headers: [include/grpc/grpc_security.h]
headers: [src/core/security/auth_filters.h, src/core/security/base64.h, src/core/security/credentials.h,
src/core/security/json_token.h, src/core/security/jwt_verifier.h, src/core/security/secure_endpoint.h,
src/core/security/secure_transport_setup.h, src/core/security/security_connector.h,
src/core/security/security_context.h, src/core/tsi/fake_transport_security.h,
src/core/tsi/ssl_transport_security.h, src/core/tsi/transport_security.h, src/core/tsi/transport_security_interface.h]
src: [src/core/httpcli/httpcli_security_connector.c, src/core/security/base64.c,
src/core/security/client_auth_filter.c, src/core/security/credentials.c, src/core/security/credentials_metadata.c,
src/core/security/credentials_posix.c, src/core/security/credentials_win32.c,
src/core/security/google_default_credentials.c, src/core/security/json_token.c,
src/core/security/jwt_verifier.c, src/core/security/secure_endpoint.c, src/core/security/secure_transport_setup.c,
src/core/security/security_connector.c, src/core/security/security_context.c,
src/core/security/server_auth_filter.c, src/core/security/server_secure_chttp2.c,
src/core/surface/init_secure.c, src/core/surface/secure_channel_create.c, src/core/tsi/fake_transport_security.c,
src/core/tsi/ssl_transport_security.c, src/core/tsi/transport_security.c]
deps: [gpr]
baselib: true
dll: true
filegroups: [grpc_base, census]
secure: true
vs_packages: [grpc.dependencies.openssl, grpc.dependencies.zlib]
vs_project_guid: '{29D16885-7228-4C31-81ED-5F9187C7F2A9}'
- name: grpc_test_util
build: private
language: c
headers: [test/core/end2end/data/ssl_test_data.h]
src: [test/core/end2end/data/server1_cert.c, test/core/end2end/data/server1_key.c,
test/core/end2end/data/test_root_cert.c]
deps: [gpr, gpr_test_util, grpc]
filegroups: [grpc_test_util_base]
vs_project_guid: '{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}'
- name: grpc_test_util_unsecure
build: private
language: c
deps: [gpr, gpr_test_util, grpc]
filegroups: [grpc_test_util_base]
secure: false
vs_project_guid: '{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}'
- name: grpc_unsecure
build: all
language: c
src: [src/core/surface/init_unsecure.c]
deps: [gpr]
baselib: true
dll: true
filegroups: [grpc_base, census]
secure: false
vs_project_guid: '{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}'
- name: grpc_zookeeper
build: all
language: c
public_headers: [include/grpc/grpc_zookeeper.h]
headers: [src/core/client_config/resolvers/zookeeper_resolver.h]
src: [src/core/client_config/resolvers/zookeeper_resolver.c]
deps: [gpr, grpc]
external_deps: [zookeeper]
platforms: [linux]
secure: false
- name: reconnect_server
build: private
language: c
headers: [test/core/util/reconnect_server.h]
src: [test/core/util/reconnect_server.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc++
build: all
language: c++
headers: [src/cpp/client/secure_credentials.h, src/cpp/common/secure_auth_context.h,
src/cpp/server/secure_server_credentials.h]
src: [src/cpp/client/secure_channel_arguments.cc, src/cpp/client/secure_credentials.cc,
src/cpp/common/auth_property_iterator.cc, src/cpp/common/secure_auth_context.cc,
src/cpp/common/secure_create_auth_context.cc, src/cpp/server/secure_server_credentials.cc]
deps: [gpr, grpc]
baselib: true
dll: true
filegroups: [grpc++_base]
secure: check
vs_project_guid: '{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}'
- name: grpc++_test_config
build: private
language: c++
headers: [test/cpp/util/test_config.h]
src: [test/cpp/util/test_config.cc]
- name: grpc++_test_util
build: private
language: c++
headers: [test/cpp/util/cli_call.h, test/cpp/util/create_test_channel.h, test/cpp/util/string_ref_helper.h,
test/cpp/util/subprocess.h]
src: [test/cpp/util/messages.proto, test/cpp/util/echo.proto, test/cpp/util/echo_duplicate.proto,
test/cpp/util/cli_call.cc, test/cpp/util/create_test_channel.cc, test/cpp/util/string_ref_helper.cc,
test/cpp/util/subprocess.cc]
deps: [grpc++, grpc_test_util]
- name: grpc++_unsecure
build: all
language: c++
src: [src/cpp/common/insecure_create_auth_context.cc]
deps: [gpr, grpc_unsecure]
baselib: true
dll: true
filegroups: [grpc++_base]
secure: false
vs_project_guid: '{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}'
- name: grpc_plugin_support
build: protoc
language: c++
headers: [include/grpc++/support/config.h, include/grpc++/support/config_protobuf.h,
src/compiler/config.h, src/compiler/cpp_generator.h, src/compiler/cpp_generator_helpers.h,
src/compiler/csharp_generator.h, src/compiler/csharp_generator_helpers.h, src/compiler/generator_helpers.h,
src/compiler/objective_c_generator.h, src/compiler/objective_c_generator_helpers.h,
src/compiler/python_generator.h, src/compiler/ruby_generator.h, src/compiler/ruby_generator_helpers-inl.h,
src/compiler/ruby_generator_map-inl.h, src/compiler/ruby_generator_string-inl.h]
src: [src/compiler/cpp_generator.cc, src/compiler/csharp_generator.cc, src/compiler/objective_c_generator.cc,
src/compiler/python_generator.cc, src/compiler/ruby_generator.cc]
deps: []
secure: false
vs_project_guid: '{B6E81D84-2ACB-41B8-8781-493A944C7817}'
- name: interop_client_helper
build: private
language: c++
headers: [test/cpp/interop/client_helper.h]
src: [test/proto/messages.proto, test/cpp/interop/client_helper.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr]
- name: interop_client_main
build: private
language: c++
headers: [test/cpp/interop/interop_client.h]
src: [test/proto/empty.proto, test/proto/messages.proto, test/proto/test.proto,
test/cpp/interop/client.cc, test/cpp/interop/interop_client.cc]
deps: [interop_client_helper, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util,
gpr, grpc++_test_config]
- name: interop_server_helper
build: private
language: c++
headers: [test/cpp/interop/server_helper.h]
src: [test/cpp/interop/server_helper.cc]
deps: [grpc_test_util, grpc++, grpc, gpr]
- name: interop_server_main
build: private
language: c++
src: [test/proto/empty.proto, test/proto/messages.proto, test/proto/test.proto,
test/cpp/interop/server.cc]
deps: [interop_server_helper, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util,
gpr, grpc++_test_config]
- name: qps
build: private
language: c++
headers: [test/cpp/qps/client.h, test/cpp/qps/driver.h, test/cpp/qps/histogram.h,
test/cpp/qps/interarrival.h, test/cpp/qps/perf_db_client.h, test/cpp/qps/qps_worker.h,
test/cpp/qps/report.h, test/cpp/qps/server.h, test/cpp/qps/stats.h, test/cpp/qps/timer.h,
test/cpp/util/benchmark_config.h]
src: [test/cpp/qps/qpstest.proto, test/cpp/qps/perf_db.proto, test/cpp/qps/client_async.cc,
test/cpp/qps/client_sync.cc, test/cpp/qps/driver.cc, test/cpp/qps/perf_db_client.cc,
test/cpp/qps/qps_worker.cc, test/cpp/qps/report.cc, test/cpp/qps/server_async.cc,
test/cpp/qps/server_sync.cc, test/cpp/qps/timer.cc, test/cpp/util/benchmark_config.cc]
deps: [grpc_test_util, grpc++_test_util, grpc++]
- name: grpc_csharp_ext
build: all
language: csharp
src: [src/csharp/ext/grpc_csharp_ext.c]
deps: [gpr, grpc]
dll: only
vs_config_type: DynamicLibrary
vs_packages: [grpc.dependencies.openssl, grpc.dependencies.zlib]
vs_project_guid: '{D64C6D63-4458-4A88-AB38-35678384A7E4}'
vs_props: [zlib, openssl, winsock, global]
targets:
- name: alarm_heap_test
build: test
language: c
src: [test/core/iomgr/alarm_heap_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: alarm_list_test
build: test
language: c
src: [test/core/iomgr/alarm_list_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: alarm_test
build: test
language: c
src: [test/core/iomgr/alarm_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: alpn_test
build: test
language: c
src: [test/core/transport/chttp2/alpn_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: bin_encoder_test
build: test
language: c
src: [test/core/transport/chttp2/bin_encoder_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: chttp2_status_conversion_test
build: test
language: c
src: [test/core/transport/chttp2/status_conversion_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: chttp2_stream_encoder_test
build: test
language: c
src: [test/core/transport/chttp2/stream_encoder_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: chttp2_stream_map_test
build: test
language: c
src: [test/core/transport/chttp2/stream_map_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: compression_test
build: test
language: c
src: [test/core/compression/compression_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: dualstack_socket_test
build: test
language: c
src: [test/core/end2end/dualstack_socket_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: fd_conservation_posix_test
build: test
language: c
src: [test/core/iomgr/fd_conservation_posix_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: fd_posix_test
build: test
language: c
src: [test/core/iomgr/fd_posix_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: fling_client
build: test
run: false
language: c
src: [test/core/fling/client.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: fling_server
build: test
run: false
language: c
src: [test/core/fling/server.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: fling_stream_test
build: test
language: c
src: [test/core/fling/fling_stream_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: fling_test
build: test
language: c
src: [test/core/fling/fling_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: gen_hpack_tables
build: tool
language: c
src: [tools/codegen/core/gen_hpack_tables.c]
deps: [gpr, grpc]
- name: gen_legal_metadata_characters
build: tool
language: c
src: [tools/codegen/core/gen_legal_metadata_characters.c]
deps: []
- name: gpr_cmdline_test
build: test
language: c
src: [test/core/support/cmdline_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_env_test
build: test
language: c
src: [test/core/support/env_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_file_test
build: test
language: c
src: [test/core/support/file_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_histogram_test
build: test
language: c
src: [test/core/support/histogram_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_host_port_test
build: test
language: c
src: [test/core/support/host_port_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_log_test
build: test
language: c
src: [test/core/support/log_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_slice_buffer_test
build: test
language: c
src: [test/core/support/slice_buffer_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_slice_test
build: test
language: c
src: [test/core/support/slice_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_stack_lockfree_test
build: test
language: c
src: [test/core/support/stack_lockfree_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_string_test
build: test
language: c
src: [test/core/support/string_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_sync_test
build: test
language: c
src: [test/core/support/sync_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_thd_test
build: test
language: c
src: [test/core/support/thd_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_time_test
build: test
language: c
src: [test/core/support/time_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_tls_test
build: test
language: c
src: [test/core/support/tls_test.c]
deps: [gpr_test_util, gpr]
- name: gpr_useful_test
build: test
language: c
src: [test/core/support/useful_test.c]
deps: [gpr_test_util, gpr]
- name: grpc_auth_context_test
build: test
language: c
src: [test/core/security/auth_context_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_base64_test
build: test
language: c
src: [test/core/security/base64_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_byte_buffer_reader_test
build: test
language: c
src: [test/core/surface/byte_buffer_reader_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_channel_args_test
build: test
language: c
src: [test/core/channel/channel_args_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_channel_stack_test
build: test
language: c
src: [test/core/channel/channel_stack_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_completion_queue_test
build: test
language: c
src: [test/core/surface/completion_queue_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_create_jwt
build: tool
language: c
src: [test/core/security/create_jwt.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_credentials_test
build: test
language: c
src: [test/core/security/credentials_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_fetch_oauth2
build: tool
language: c
src: [test/core/security/fetch_oauth2.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_json_token_test
build: test
language: c
src: [test/core/security/json_token_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_jwt_verifier_test
build: test
language: c
src: [test/core/security/jwt_verifier_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_print_google_default_creds_token
build: tool
language: c
src: [test/core/security/print_google_default_creds_token.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_security_connector_test
build: test
language: c
src: [test/core/security/security_connector_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_stream_op_test
build: test
language: c
src: [test/core/transport/stream_op_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: grpc_verify_jwt
build: tool
language: c
src: [test/core/security/verify_jwt.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: hpack_parser_test
build: test
language: c
src: [test/core/transport/chttp2/hpack_parser_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: hpack_table_test
build: test
language: c
src: [test/core/transport/chttp2/hpack_table_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: httpcli_format_request_test
build: test
language: c
src: [test/core/httpcli/format_request_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: httpcli_parser_test
build: test
language: c
src: [test/core/httpcli/parser_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: httpcli_test
build: test
language: c
src: [test/core/httpcli/httpcli_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: json_rewrite
build: test
run: false
language: c
src: [test/core/json/json_rewrite.c]
deps: [grpc, gpr]
- name: json_rewrite_test
build: test
language: c
src: [test/core/json/json_rewrite_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: json_test
build: test
language: c
src: [test/core/json/json_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: lame_client_test
build: test
language: c
src: [test/core/surface/lame_client_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: low_level_ping_pong_benchmark
build: benchmark
language: c
src: [test/core/network_benchmarks/low_level_ping_pong.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: message_compress_test
build: test
language: c
src: [test/core/compression/message_compress_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: multi_init_test
build: test
language: c
src: [test/core/surface/multi_init_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: multiple_server_queues_test
build: test
language: c
src: [test/core/end2end/multiple_server_queues_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: murmur_hash_test
build: test
language: c
src: [test/core/support/murmur_hash_test.c]
deps: [gpr_test_util, gpr]
- name: no_server_test
build: test
language: c
src: [test/core/end2end/no_server_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: resolve_address_test
build: test
language: c
src: [test/core/iomgr/resolve_address_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: secure_endpoint_test
build: test
language: c
src: [test/core/security/secure_endpoint_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: sockaddr_utils_test
build: test
language: c
src: [test/core/iomgr/sockaddr_utils_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: tcp_client_posix_test
build: test
language: c
src: [test/core/iomgr/tcp_client_posix_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: tcp_posix_test
build: test
language: c
src: [test/core/iomgr/tcp_posix_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: tcp_server_posix_test
build: test
language: c
src: [test/core/iomgr/tcp_server_posix_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: time_averaged_stats_test
build: test
language: c
src: [test/core/iomgr/time_averaged_stats_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: timeout_encoding_test
build: test
language: c
src: [test/core/transport/chttp2/timeout_encoding_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: timers_test
build: test
language: c
src: [test/core/profiling/timers_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: transport_metadata_test
build: test
language: c
src: [test/core/transport/metadata_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: transport_security_test
build: test
language: c
src: [test/core/tsi/transport_security_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: udp_server_test
build: test
language: c
src: [test/core/iomgr/udp_server_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [posix]
- name: uri_parser_test
build: test
language: c
src: [test/core/client_config/uri_parser_test.c]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
- name: async_end2end_test
build: test
language: c++
src: [test/cpp/end2end/async_end2end_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: async_streaming_ping_pong_test
build: test
language: c++
src: [test/cpp/qps/async_streaming_ping_pong_test.cc]
deps: [qps, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: async_unary_ping_pong_test
build: test
language: c++
src: [test/cpp/qps/async_unary_ping_pong_test.cc]
deps: [qps, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: auth_property_iterator_test
build: test
language: c++
src: [test/cpp/common/auth_property_iterator_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: channel_arguments_test
build: test
language: c++
src: [test/cpp/client/channel_arguments_test.cc]
deps: [grpc++, grpc, gpr]
- name: cli_call_test
build: test
language: c++
src: [test/cpp/util/cli_call_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: client_crash_test
build: test
language: c++
src: [test/cpp/end2end/client_crash_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: client_crash_test_server
build: test
run: false
language: c++
src: [test/cpp/end2end/client_crash_test_server.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: credentials_test
build: test
language: c++
src: [test/cpp/client/credentials_test.cc]
deps: [grpc++, grpc, gpr]
- name: cxx_byte_buffer_test
build: test
language: c++
src: [test/cpp/util/byte_buffer_test.cc]
deps: [grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: cxx_slice_test
build: test
language: c++
src: [test/cpp/util/slice_test.cc]
deps: [grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: cxx_string_ref_test
build: test
language: c++
src: [test/cpp/util/string_ref_test.cc]
deps: [grpc++]
- name: cxx_time_test
build: test
language: c++
src: [test/cpp/util/time_test.cc]
deps: [grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: end2end_test
build: test
language: c++
src: [test/cpp/end2end/end2end_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: generic_end2end_test
build: test
language: c++
src: [test/cpp/end2end/generic_end2end_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: grpc_cli
build: test
run: false
language: c++
src: [test/cpp/util/grpc_cli.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr, grpc++_test_config]
- name: grpc_cpp_plugin
build: protoc
language: c++
src: [src/compiler/cpp_plugin.cc]
deps: [grpc_plugin_support]
secure: false
vs_config_type: Application
vs_project_guid: '{7E51A25F-AC59-488F-906C-C60FAAE706AA}'
- name: grpc_csharp_plugin
build: protoc
language: c++
src: [src/compiler/csharp_plugin.cc]
deps: [grpc_plugin_support]
secure: false
vs_config_type: Application
vs_project_guid: '{3C813052-A49A-4662-B90A-1ADBEC7EE453}'
- name: grpc_objective_c_plugin
build: protoc
language: c++
src: [src/compiler/objective_c_plugin.cc]
deps: [grpc_plugin_support]
secure: false
vs_config_type: Application
vs_project_guid: '{19564640-CEE6-4921-ABA5-676ED79A36F6}'
- name: grpc_python_plugin
build: protoc
language: c++
src: [src/compiler/python_plugin.cc]
deps: [grpc_plugin_support]
secure: false
vs_config_type: Application
vs_project_guid: '{DF52D501-A6CF-4E6F-BA38-6EBE2E8DAFB2}'
- name: grpc_ruby_plugin
build: protoc
language: c++
src: [src/compiler/ruby_plugin.cc]
deps: [grpc_plugin_support]
secure: false
vs_config_type: Application
vs_project_guid: '{069E9D05-B78B-4751-9252-D21EBAE7DE8E}'
- name: interop_client
build: test
run: false
language: c++
src: []
deps: [interop_client_main, interop_client_helper, grpc++_test_util, grpc_test_util,
grpc++, grpc, gpr_test_util, gpr, grpc++_test_config]
platforms: [mac, linux, posix]
- name: interop_server
build: test
run: false
language: c++
src: []
deps: [interop_server_main, interop_server_helper, grpc++_test_util, grpc_test_util,
grpc++, grpc, gpr_test_util, gpr, grpc++_test_config]
platforms: [mac, linux, posix]
- name: interop_test
build: test
language: c++
src: [test/cpp/interop/interop_test.cc]
deps: [grpc_test_util, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: mock_test
build: test
language: c++
src: [test/cpp/end2end/mock_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: qps_driver
build: benchmark
language: c++
src: [test/cpp/qps/qps_driver.cc]
deps: [qps, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr,
grpc++_test_config]
- name: qps_interarrival_test
build: test
run: false
language: c++
src: [test/cpp/qps/qps_interarrival_test.cc]
deps: [qps, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: qps_openloop_test
build: test
language: c++
src: [test/cpp/qps/qps_openloop_test.cc]
deps: [qps, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr,
grpc++_test_config]
platforms: [mac, linux, posix]
- name: qps_test
build: test
language: c++
src: [test/cpp/qps/qps_test.cc]
deps: [qps, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr,
grpc++_test_config]
exclude_configs: [tsan]
platforms: [mac, linux, posix]
- name: qps_worker
build: benchmark
language: c++
headers: [test/cpp/qps/client.h, test/cpp/qps/server.h]
src: [test/cpp/qps/worker.cc]
deps: [qps, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr,
grpc++_test_config]
- name: reconnect_interop_client
build: test
run: false
language: c++
src: [test/proto/empty.proto, test/proto/messages.proto, test/proto/test.proto,
test/cpp/interop/reconnect_interop_client.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr, grpc++_test_config]
- name: reconnect_interop_server
build: test
run: false
language: c++
src: [test/proto/empty.proto, test/proto/messages.proto, test/proto/test.proto,
test/cpp/interop/reconnect_interop_server.cc]
deps: [reconnect_server, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util,
gpr, grpc++_test_config]
- name: secure_auth_context_test
build: test
language: c++
src: [test/cpp/common/secure_auth_context_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: server_crash_test
build: test
language: c++
src: [test/cpp/end2end/server_crash_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: server_crash_test_client
build: test
run: false
language: c++
src: [test/cpp/end2end/server_crash_test_client.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: shutdown_test
build: test
language: c++
src: [test/cpp/end2end/shutdown_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: status_test
build: test
language: c++
src: [test/cpp/util/status_test.cc]
deps: [grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: sync_streaming_ping_pong_test
build: test
language: c++
src: [test/cpp/qps/sync_streaming_ping_pong_test.cc]
deps: [qps, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: sync_unary_ping_pong_test
build: test
language: c++
src: [test/cpp/qps/sync_unary_ping_pong_test.cc]
deps: [qps, grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
platforms: [mac, linux, posix]
- name: thread_stress_test
build: test
language: c++
src: [test/cpp/end2end/thread_stress_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc, gpr_test_util, gpr]
- name: zookeeper_test
build: test
language: c++
src: [test/cpp/end2end/zookeeper_test.cc]
deps: [grpc++_test_util, grpc_test_util, grpc++, grpc_zookeeper, grpc, gpr_test_util,
gpr]
external_deps: [zookeeper]
platforms: [linux]
vspackages:
- {linkage: static, name: grpc.dependencies.zlib, props: false, redist: true, version: 1.2.8.9}
- {name: grpc.dependencies.openssl, props: true, redist: true, version: 1.0.2.3}
- {name: gflags, props: false, redist: false, version: 2.1.2.1}
- {name: gtest, props: false, redist: false, version: 1.7.0.1}

@ -1,227 +1,229 @@
# GRPC Bazel BUILD file.
# This currently builds C, C++ and Objective-C code.
# This file has been automatically generated from a template file.
# Please look at the templates directory instead.
# This file can be regenerated from the template by running
# tools/buildgen/generate_projects.sh
# Copyright 2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
licenses(["notice"]) # 3-clause BSD
package(default_visibility = ["//visibility:public"])
<%!
def get_deps(target_dict):
deps = []
if target_dict.get('secure', 'no') == 'yes':
%YAML 1.2
--- |
# GRPC Bazel BUILD file.
# This currently builds C, C++ and Objective-C code.
# This file has been automatically generated from a template file.
# Please look at the templates directory instead.
# This file can be regenerated from the template by running
# tools/buildgen/generate_projects.sh
# Copyright 2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
licenses(["notice"]) # 3-clause BSD
package(default_visibility = ["//visibility:public"])
<%!
def get_deps(target_dict):
deps = []
if target_dict.get('secure', False):
deps = [
"//external:libssl",
]
if target_dict.get('build', None) == 'protoc':
deps.append("//external:protobuf_compiler")
if target_dict['name'] == 'grpc++_unsecure' or target_dict['name'] == 'grpc++':
deps.append("//external:protobuf_clib")
elif target_dict['name'] == 'grpc':
deps.append("//external:zlib")
for d in target_dict.get('deps', []):
if d.find('//') == 0 or d[0] == ':':
deps.append(d)
else:
deps.append(':%s' % (d))
return deps
%>
% for lib in libs:
% if lib.build in ("all", "protoc"):
${cc_library(lib)}
% endif
% endfor
% for lib in libs:
% if lib.name in ("grpc", "gpr"):
${objc_library(lib)}
% endif
% endfor
% for tgt in targets:
% if tgt.build == 'protoc':
${cc_binary(tgt)}
% endif
% endfor
<%def name="cc_library(lib)">
cc_library(
name = "${lib.name}",
srcs = [
% for hdr in lib.get("headers", []):
"${hdr}",
% endfor
% for src in lib.src:
"${src}",
% endfor
],
hdrs = [
% for hdr in lib.get("public_headers", []):
"${hdr}",
% endfor
],
includes = [
"include",
".",
],
deps = [
"//external:libssl",
]
if target_dict.get('build', None) == 'protoc':
deps.append("//external:protobuf_compiler")
if target_dict['name'] == 'grpc++_unsecure' or target_dict['name'] == 'grpc++':
deps.append("//external:protobuf_clib")
elif target_dict['name'] == 'grpc':
deps.append("//external:zlib")
for d in target_dict.get('deps', []):
if d.find('//') == 0 or d[0] == ':':
deps.append(d)
else:
deps.append(':%s' % (d))
return deps
%>
% for lib in libs:
% if lib.build in ("all", "protoc"):
${cc_library(lib)}
% endif
% endfor
% for lib in libs:
% if lib.name in ("grpc", "gpr"):
${objc_library(lib)}
% endif
% endfor
% for tgt in targets:
% if tgt.build == 'protoc':
${cc_binary(tgt)}
% endif
% endfor
<%def name="cc_library(lib)">
cc_library(
name = "${lib.name}",
srcs = [
% for hdr in lib.get("headers", []):
"${hdr}",
% endfor
% for src in lib.src:
"${src}",
% endfor
],
hdrs = [
% for hdr in lib.get("public_headers", []):
"${hdr}",
% endfor
],
includes = [
"include",
".",
],
deps = [
% for dep in get_deps(lib):
"${dep}",
% endfor
],
)
</%def>
<%def name="objc_library(lib)">
objc_library(
name = "${lib.name}_objc",
srcs = [
% for src in lib.src:
"${src}",
% endfor
],
hdrs = [
% for hdr in lib.get("public_headers", []):
"${hdr}",
% endfor
% for hdr in lib.get("headers", []):
"${hdr}",
% endfor
],
includes = [
"include",
".",
],
deps = [
% for dep in lib.get("deps", []):
":${dep}_objc",
% endfor
% if lib.get('secure', 'no') == 'yes':
"//external:libssl_objc",
% endif
],
% if lib.get("baselib", false):
sdk_dylibs = ["libz"],
% endif
)
</%def>
<%def name="cc_binary(tgt)">
cc_binary(
name = "${tgt.name}",
srcs = [
% for src in tgt.src:
"${src}",
% endfor
],
deps = [
% for dep in get_deps(tgt):
"${dep}",
% endfor
],
)
</%def>
objc_path = "src/objective-c"
rx_library_path = objc_path + "/RxLibrary"
objc_library(
name = "rx_library",
hdrs = glob([
rx_library_path + "/*.h",
rx_library_path + "/transformations/*.h",
]),
srcs = glob([
rx_library_path + "/*.m",
rx_library_path + "/transformations/*.m",
]),
includes = [objc_path],
deps = [
":rx_library_private",
],
)
objc_library(
name = "rx_library_private",
hdrs = glob([rx_library_path + "/private/*.h"]),
srcs = glob([rx_library_path + "/private/*.m"]),
visibility = ["//visibility:private"],
)
objc_client_path = objc_path + "/GRPCClient"
objc_library(
name = "grpc_client",
hdrs = glob([
objc_client_path + "/*.h",
objc_client_path + "/private/*.h",
]),
srcs = glob([
objc_client_path + "/*.m",
objc_client_path + "/private/*.m",
]),
includes = [objc_path],
bundles = [":gRPCCertificates"],
deps = [
":grpc_objc",
":rx_library",
],
)
objc_bundle_library(
# The choice of name is signicant here, since it determines the bundle name.
name = "gRPCCertificates",
resources = ["etc/roots.pem"],
)
proto_objc_rpc_path = objc_path + "/ProtoRPC"
objc_library(
name = "proto_objc_rpc",
hdrs = glob([
proto_objc_rpc_path + "/*.h",
]),
srcs = glob([
proto_objc_rpc_path + "/*.m",
]),
includes = [objc_path],
deps = [
":grpc_client",
":rx_library",
"//external:protobuf_objc",
],
)
% for dep in get_deps(lib):
"${dep}",
% endfor
],
)
</%def>
<%def name="objc_library(lib)">
objc_library(
name = "${lib.name}_objc",
srcs = [
% for src in lib.src:
"${src}",
% endfor
],
hdrs = [
% for hdr in lib.get("public_headers", []):
"${hdr}",
% endfor
% for hdr in lib.get("headers", []):
"${hdr}",
% endfor
],
includes = [
"include",
".",
],
deps = [
% for dep in lib.get("deps", []):
":${dep}_objc",
% endfor
% if lib.get('secure', False):
"//external:libssl_objc",
% endif
],
% if lib.get("baselib", false):
sdk_dylibs = ["libz"],
% endif
)
</%def>
<%def name="cc_binary(tgt)">
cc_binary(
name = "${tgt.name}",
srcs = [
% for src in tgt.src:
"${src}",
% endfor
],
deps = [
% for dep in get_deps(tgt):
"${dep}",
% endfor
],
)
</%def>
objc_path = "src/objective-c"
rx_library_path = objc_path + "/RxLibrary"
objc_library(
name = "rx_library",
hdrs = glob([
rx_library_path + "/*.h",
rx_library_path + "/transformations/*.h",
]),
srcs = glob([
rx_library_path + "/*.m",
rx_library_path + "/transformations/*.m",
]),
includes = [objc_path],
deps = [
":rx_library_private",
],
)
objc_library(
name = "rx_library_private",
hdrs = glob([rx_library_path + "/private/*.h"]),
srcs = glob([rx_library_path + "/private/*.m"]),
visibility = ["//visibility:private"],
)
objc_client_path = objc_path + "/GRPCClient"
objc_library(
name = "grpc_client",
hdrs = glob([
objc_client_path + "/*.h",
objc_client_path + "/private/*.h",
]),
srcs = glob([
objc_client_path + "/*.m",
objc_client_path + "/private/*.m",
]),
includes = [objc_path],
bundles = [":gRPCCertificates"],
deps = [
":grpc_objc",
":rx_library",
],
)
objc_bundle_library(
# The choice of name is signicant here, since it determines the bundle name.
name = "gRPCCertificates",
resources = ["etc/roots.pem"],
)
proto_objc_rpc_path = objc_path + "/ProtoRPC"
objc_library(
name = "proto_objc_rpc",
hdrs = glob([
proto_objc_rpc_path + "/*.h",
]),
srcs = glob([
proto_objc_rpc_path + "/*.m",
]),
includes = [objc_path],
deps = [
":grpc_client",
":rx_library",
"//external:protobuf_objc",
],
)

File diff suppressed because it is too large Load Diff

@ -1,155 +1,157 @@
# GRPC CocoaPods podspec
# This file has been automatically generated from a template file.
# Please look at the templates directory instead.
# This file can be regenerated from the template by running
# tools/buildgen/generate_projects.sh
# Copyright 2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<%!
bad_header_names = ('time.h', 'string.h')
def fix_header_name(name):
split_name = name.split('/')
if split_name[-1] in bad_header_names:
split_name[-1] = 'grpc_' + split_name[-1]
if split_name[0] == 'include':
split_name = split_name[1:]
return '/'.join(split_name)
def grpc_files(libs):
out = []
for lib in libs:
if lib.name in ("grpc", "gpr"):
out.extend(fix_header_name(h) for h in lib.get('headers', []))
out.extend(fix_header_name(h) for h in lib.get('public_headers', []))
out.extend(lib.get('src', []))
return out;
def grpc_private_headers(libs):
out = []
for lib in libs:
if lib.name in ("grpc", "gpr"):
out.extend(lib.get('headers', []))
return out
%>
Pod::Spec.new do |s|
s.name = 'gRPC'
s.version = '0.7.0'
s.summary = 'gRPC client library for iOS/OSX'
s.homepage = 'http://www.grpc.io'
s.license = 'New BSD'
s.authors = { 'The gRPC contributors' => 'grpc-packages@google.com' }
# s.source = { :git => 'https://github.com/grpc/grpc.git',
# :tag => 'release-0_10_0-objectivec-0.6.0' }
s.ios.deployment_target = '6.0'
s.osx.deployment_target = '10.8'
s.requires_arc = true
objc_dir = 'src/objective-c'
# Reactive Extensions library for iOS.
s.subspec 'RxLibrary' do |ss|
src_dir = "#{objc_dir}/RxLibrary"
ss.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}"
ss.private_header_files = "#{src_dir}/private/*.h"
ss.header_mappings_dir = "#{objc_dir}"
end
# Core cross-platform gRPC library, written in C.
s.subspec 'C-Core' do |ss|
ss.source_files = ${(',\n' + 22*' ').join('\'%s\'' % f for f in grpc_files(libs))}
ss.private_header_files = ${(',\n' + 30*' ').join('\'%s\'' % f for f in grpc_private_headers(libs))}
ss.header_mappings_dir = '.'
ss.requires_arc = false
ss.libraries = 'z'
ss.dependency 'OpenSSL', '~> 1.0.200'
# ss.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w'
end
# This is a workaround for Cocoapods Issue #1437.
# It renames time.h and string.h to grpc_time.h and grpc_string.h.
# It needs to be here (top-level) instead of in the C-Core subspec because Cocoapods doesn't run
# prepare_command's of subspecs.
%YAML 1.2
--- |
# GRPC CocoaPods podspec
# This file has been automatically generated from a template file.
# Please look at the templates directory instead.
# This file can be regenerated from the template by running
# tools/buildgen/generate_projects.sh
# Copyright 2015, Google Inc.
# All rights reserved.
#
# TODO(jcanizales): Try out others' solutions at Issue #1437.
s.prepare_command = <<-CMD
# Move contents of include up a level to avoid manually specifying include paths
cp -r "include/grpc" "."
DIR_TIME="grpc/support"
BAD_TIME="$DIR_TIME/time.h"
GOOD_TIME="$DIR_TIME/grpc_time.h"
grep -rl "$BAD_TIME" grpc src/core src/objective-c/GRPCClient | xargs sed -i '' -e s@$BAD_TIME@$GOOD_TIME@g
if [ -f "$BAD_TIME" ];
then
mv -f "$BAD_TIME" "$GOOD_TIME"
fi
DIR_STRING="src/core/support"
BAD_STRING="$DIR_STRING/string.h"
GOOD_STRING="$DIR_STRING/grpc_string.h"
grep -rl "$BAD_STRING" grpc src/core src/objective-c/GRPCClient | xargs sed -i '' -e s@$BAD_STRING@$GOOD_STRING@g
if [ -f "$BAD_STRING" ];
then
mv -f "$BAD_STRING" "$GOOD_STRING"
fi
CMD
# Objective-C wrapper around the core gRPC library.
s.subspec 'GRPCClient' do |ss|
src_dir = "#{objc_dir}/GRPCClient"
ss.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}"
ss.private_header_files = "#{src_dir}/private/*.h"
ss.header_mappings_dir = "#{objc_dir}"
ss.dependency 'gRPC/C-Core'
ss.dependency 'gRPC/RxLibrary'
# Certificates, to be able to establish TLS connections:
ss.resource_bundles = { 'gRPCCertificates' => ['etc/roots.pem'] }
end
# RPC library for ProtocolBuffers, based on gRPC
s.subspec 'ProtoRPC' do |ss|
src_dir = "#{objc_dir}/ProtoRPC"
ss.source_files = "#{src_dir}/*.{h,m}"
ss.header_mappings_dir = "#{objc_dir}"
ss.dependency 'gRPC/GRPCClient'
ss.dependency 'gRPC/RxLibrary'
ss.dependency 'Protobuf', '~> 3.0.0-alpha-3'
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<%!
bad_header_names = ('time.h', 'string.h')
def fix_header_name(name):
split_name = name.split('/')
if split_name[-1] in bad_header_names:
split_name[-1] = 'grpc_' + split_name[-1]
if split_name[0] == 'include':
split_name = split_name[1:]
return '/'.join(split_name)
def grpc_files(libs):
out = []
for lib in libs:
if lib.name in ("grpc", "gpr"):
out.extend(fix_header_name(h) for h in lib.get('headers', []))
out.extend(fix_header_name(h) for h in lib.get('public_headers', []))
out.extend(lib.get('src', []))
return out;
def grpc_private_headers(libs):
out = []
for lib in libs:
if lib.name in ("grpc", "gpr"):
out.extend(lib.get('headers', []))
return out
%>
Pod::Spec.new do |s|
s.name = 'gRPC'
s.version = '0.7.0'
s.summary = 'gRPC client library for iOS/OSX'
s.homepage = 'http://www.grpc.io'
s.license = 'New BSD'
s.authors = { 'The gRPC contributors' => 'grpc-packages@google.com' }
# s.source = { :git => 'https://github.com/grpc/grpc.git',
# :tag => 'release-0_10_0-objectivec-0.6.0' }
s.ios.deployment_target = '6.0'
s.osx.deployment_target = '10.8'
s.requires_arc = true
objc_dir = 'src/objective-c'
# Reactive Extensions library for iOS.
s.subspec 'RxLibrary' do |ss|
src_dir = "#{objc_dir}/RxLibrary"
ss.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}"
ss.private_header_files = "#{src_dir}/private/*.h"
ss.header_mappings_dir = "#{objc_dir}"
end
# Core cross-platform gRPC library, written in C.
s.subspec 'C-Core' do |ss|
ss.source_files = ${(',\n' + 22*' ').join('\'%s\'' % f for f in grpc_files(libs))}
ss.private_header_files = ${(',\n' + 30*' ').join('\'%s\'' % f for f in grpc_private_headers(libs))}
ss.header_mappings_dir = '.'
ss.requires_arc = false
ss.libraries = 'z'
ss.dependency 'OpenSSL', '~> 1.0.200'
# ss.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w'
end
# This is a workaround for Cocoapods Issue #1437.
# It renames time.h and string.h to grpc_time.h and grpc_string.h.
# It needs to be here (top-level) instead of in the C-Core subspec because Cocoapods doesn't run
# prepare_command's of subspecs.
#
# TODO(jcanizales): Try out others' solutions at Issue #1437.
s.prepare_command = <<-CMD
# Move contents of include up a level to avoid manually specifying include paths
cp -r "include/grpc" "."
DIR_TIME="grpc/support"
BAD_TIME="$DIR_TIME/time.h"
GOOD_TIME="$DIR_TIME/grpc_time.h"
grep -rl "$BAD_TIME" grpc src/core src/objective-c/GRPCClient | xargs sed -i '' -e s@$BAD_TIME@$GOOD_TIME@g
if [ -f "$BAD_TIME" ];
then
mv -f "$BAD_TIME" "$GOOD_TIME"
fi
DIR_STRING="src/core/support"
BAD_STRING="$DIR_STRING/string.h"
GOOD_STRING="$DIR_STRING/grpc_string.h"
grep -rl "$BAD_STRING" grpc src/core src/objective-c/GRPCClient | xargs sed -i '' -e s@$BAD_STRING@$GOOD_STRING@g
if [ -f "$BAD_STRING" ];
then
mv -f "$BAD_STRING" "$GOOD_STRING"
fi
CMD
# Objective-C wrapper around the core gRPC library.
s.subspec 'GRPCClient' do |ss|
src_dir = "#{objc_dir}/GRPCClient"
ss.source_files = "#{src_dir}/*.{h,m}", "#{src_dir}/**/*.{h,m}"
ss.private_header_files = "#{src_dir}/private/*.h"
ss.header_mappings_dir = "#{objc_dir}"
ss.dependency 'gRPC/C-Core'
ss.dependency 'gRPC/RxLibrary'
# Certificates, to be able to establish TLS connections:
ss.resource_bundles = { 'gRPCCertificates' => ['etc/roots.pem'] }
end
# RPC library for ProtocolBuffers, based on gRPC
s.subspec 'ProtoRPC' do |ss|
src_dir = "#{objc_dir}/ProtoRPC"
ss.source_files = "#{src_dir}/*.{h,m}"
ss.header_mappings_dir = "#{objc_dir}"
ss.dependency 'gRPC/GRPCClient'
ss.dependency 'gRPC/RxLibrary'
ss.dependency 'Protobuf', '~> 3.0.0-alpha-3'
end
end
end

@ -1,41 +1,43 @@
/*
*
* Copyright 2015, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/* This file is autogenerated from:
templates/src/core/surface/version.c.template */
#include <grpc/grpc.h>
const char *grpc_version_string(void) {
return "${settings.version.major}.${settings.version.minor}.${settings.version.micro}.${settings.version.build}";
}
%YAML 1.2
--- |
/*
*
* Copyright 2015, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/* This file is autogenerated from:
templates/src/core/surface/version.c.template */
#include <grpc/grpc.h>
const char *grpc_version_string(void) {
return "${settings.version.major}.${settings.version.minor}.${settings.version.micro}.${settings.version.build}";
}

@ -1,2 +1,4 @@
<%namespace file="Doxyfile.include" import="gen_doxyfile"/>\
${gen_doxyfile(['grpc++'], 'C++', libs, True)}
%YAML 1.2
--- |
<%namespace file="Doxyfile.include" import="gen_doxyfile"/>\
${gen_doxyfile(['grpc++'], 'C++', libs, True)}

@ -1,2 +1,4 @@
<%namespace file="Doxyfile.include" import="gen_doxyfile"/>\
${gen_doxyfile(['grpc++'], 'C++', libs, False)}
%YAML 1.2
--- |
<%namespace file="Doxyfile.include" import="gen_doxyfile"/>\
${gen_doxyfile(['grpc++'], 'C++', libs, False)}

@ -1,2 +1,4 @@
<%namespace file="Doxyfile.include" import="gen_doxyfile"/>\
${gen_doxyfile(['grpc', 'gpr'], 'Core', libs, True)}
%YAML 1.2
--- |
<%namespace file="Doxyfile.include" import="gen_doxyfile"/>\
${gen_doxyfile(['grpc', 'gpr'], 'Core', libs, True)}

@ -1,2 +1,4 @@
<%namespace file="Doxyfile.include" import="gen_doxyfile"/>\
${gen_doxyfile(['grpc', 'gpr'], 'Core', libs, False)}
%YAML 1.2
--- |
<%namespace file="Doxyfile.include" import="gen_doxyfile"/>\
${gen_doxyfile(['grpc', 'gpr'], 'Core', libs, False)}

@ -1,33 +1,35 @@
<%!
import json
import os
def proto_headers(src):
out = []
for f in src:
name, ext = os.path.splitext(f)
if ext == '.proto':
out.extend(fmt % name for fmt in ['%s.grpc.pb.h', '%s.pb.h'])
return out
def no_protos(src):
out = []
for f in src:
if os.path.splitext(f)[1] != '.proto':
out.append(f)
return out
%>
${json.dumps([{"name": tgt.name,
"language": tgt.language,
"src": sorted(
no_protos(tgt.src) +
tgt.get('public_headers', []) +
tgt.get('headers', [])),
"headers": sorted(
tgt.get('public_headers', []) +
tgt.get('headers', []) +
proto_headers(tgt.src)),
"deps": sorted(tgt.get('deps', []))}
for tgt in (targets + libs)],
sort_keys=True, indent=2)}
%YAML 1.2
--- |
<%!
import json
import os
def proto_headers(src):
out = []
for f in src:
name, ext = os.path.splitext(f)
if ext == '.proto':
out.extend(fmt % name for fmt in ['%s.grpc.pb.h', '%s.pb.h'])
return out
def no_protos(src):
out = []
for f in src:
if os.path.splitext(f)[1] != '.proto':
out.append(f)
return out
%>
${json.dumps([{"name": tgt.name,
"language": tgt.language,
"src": sorted(
no_protos(tgt.src) +
tgt.get('public_headers', []) +
tgt.get('headers', [])),
"headers": sorted(
tgt.get('public_headers', []) +
tgt.get('headers', []) +
proto_headers(tgt.src)),
"deps": sorted(tgt.get('deps', []))}
for tgt in (targets + libs)],
sort_keys=True, indent=2)}

@ -1,13 +1,15 @@
<%!
import json
%>
${json.dumps([{"name": tgt.name,
"language": tgt.language,
"platforms": tgt.platforms,
"ci_platforms": tgt.ci_platforms,
"exclude_configs": tgt.get("exclude_configs", []),
"flaky": tgt.flaky}
for tgt in targets
if tgt.get('run', True) and tgt.build == 'test'],
sort_keys=True, indent=2)}
%YAML 1.2
--- |
<%!
import json
%>
${json.dumps([{"name": tgt.name,
"language": tgt.language,
"platforms": tgt.platforms,
"ci_platforms": tgt.ci_platforms,
"exclude_configs": tgt.get("exclude_configs", []),
"flaky": tgt.flaky}
for tgt in targets
if tgt.get('run', True) and tgt.build == 'test'],
sort_keys=True, indent=2)}

@ -1,206 +1,208 @@
# Copyright 2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<%!
import re
%>\
<%namespace file="packages.include" import="get_openssl,get_zlib"/>\
<%def name="to_windows_path(path)">${path.replace('/','\\')}</%def>\
<%
build_from_project_file = set(['gpr',
'gpr_test_util',
'grpc',
'grpc_test_util',
'grpc_test_util_unsecure',
'grpc_unsecure',
'grpc++',
'grpc++_unsecure'
])
buildable_targets = [ target for target in targets + libs
if target.build in ['all', 'test', 'private', 'tool', 'benchmark'] and
target.language in ['c', 'c++'] and
all([(src.endswith('.c') or src.endswith('.cc') or src.endswith('.proto')) for src in target.src]) and
'windows' in target.get('platforms', ['windows']) ]
c_test_targets = [ target for target in buildable_targets if target.build == 'test' and not target.language == 'c++' ]
cxx_test_targets = [ target for target in buildable_targets if target.build == 'test' and target.language == 'c++' ]
%>\
# NMake file to build secondary gRPC targets on Windows.
# Use grpc.sln to solution to build the gRPC libraries.
OUT_DIR=test_bin
CC=cl.exe /nologo
LINK=link.exe /nologo
LIBTOOL=lib.exe /nologo /nodefaultlib
REPO_ROOT=..
OPENSSL_INCLUDES = .\packages\${get_openssl()}\build\native\include
ZLIB_INCLUDES = .\packages\${get_zlib()}\build\native\include
INCLUDES=/I$(REPO_ROOT) /I$(REPO_ROOT)\include /I$(OPENSSL_INCLUDES) /I$(ZLIB_INCLUDES)
GFLAGS_INCLUDES = .\..\third_party\gflags\include
GTEST_INCLUDES = .\..\third_party\gtest\include
PROTOBUF_INCLUDES = .\..\third_party\protobuf\src
CXX_INCLUDES=/I$(GFLAGS_INCLUDES) /I$(GTEST_INCLUDES) /I$(PROTOBUF_INCLUDES)
#_SCL_SECURE_NO_WARNINGS supresses a ton of "potentially unsafe use of std lib" warnings
DEFINES=/D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /D _CRT_SECURE_NO_WARNINGS /D _SCL_SECURE_NO_WARNINGS
#important options: /TC vs. /TP: compile as C vs. compile as C++
CFLAGS=/c $(INCLUDES) /Z7 /W3 /WX- /sdl $(DEFINES) /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze-
CXXFLAGS=/c $(INCLUDES) $(CXX_INCLUDES) /Z7 /W3 /WX- /sdl $(DEFINES) /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TP /analyze-
LFLAGS=/DEBUG /INCREMENTAL /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86
OPENSSL_LIBS=.\packages\${get_openssl()}\build\native\lib\v120\Win32\Debug\static\ssleay32.lib .\packages\${get_openssl()}\build\native\lib\v120\Win32\Debug\static\libeay32.lib
WINSOCK_LIBS=ws2_32.lib
GENERAL_LIBS=advapi32.lib comdlg32.lib gdi32.lib kernel32.lib odbc32.lib odbccp32.lib ole32.lib oleaut32.lib shell32.lib user32.lib uuid.lib winspool.lib
ZLIB_LIBS=.\packages\${get_zlib()}\build\native\lib\v120\Win32\Debug\static\cdecl\zlib.lib
LIBS=$(OPENSSL_LIBS) $(ZLIB_LIBS) $(GENERAL_LIBS) $(WINSOCK_LIBS)
#shlwapi.lib provides PathMatchSpec() for gflags in windows
GFLAGS_LIBS=.\..\third_party\gflags\lib\Debug\gflags.lib shlwapi.lib
GTEST_LIBS=.\..\third_party\gtest\msvc\gtest\Debug\gtestd.lib
PROTOBUF_LIBS=.\..\third_party\protobuf\vsprojects\Debug\libprotobuf.lib
CXX_LIBS=$(GFLAGS_LIBS) $(GTEST_LIBS) $(PROTOBUF_LIBS)
all: buildtests
tools:
tools_c:
tools_cxx:
$(OUT_DIR):
mkdir $(OUT_DIR)
build_libs: \
% for target in buildable_targets:
% if target.build == 'private' or target.build == 'all':
% if target.name in build_from_project_file:
build_${target.name} \
% else:
Debug\${target.name}.lib \
% endif
% endif
% endfor
buildtests: buildtests_c buildtests_cxx
buildtests_c: \
% for target in c_test_targets:
${target.name}.exe \
% endfor
echo All C tests built.
buildtests_cxx: \
% for target in cxx_test_targets:
${target.name}.exe \
% endfor
echo All C++ tests built.
% for target in buildable_targets:
## replace all .proto includes with .pb.cc / .grpc.pb.cc
%if target.src:
%for source in target.src:
%if source.endswith(".proto"):
<%
src_name_parts = source.split(".")
target.src.append(src_name_parts[0] + ".pb.cc")
target.src.append(src_name_parts[0] + ".grpc.pb.cc")
%>\
%endif
%endfor
%endif
## remove all .proto includes
<%
target.src = [item for item in target.src if not re.search('([^/]+)\.proto$', item)]
%>\
%if target.name in build_from_project_file:
build_${target.name}:
msbuild grpc.sln /t:${target.name} /p:Configuration=Debug /p:Linkage-grpc_dependencies_zlib=static
%else:
%if target.build == 'private':
Debug\${target.name}.lib: \
%else:
${target.name}.exe: \
%for dep in target.get('deps', []):
%if dep in build_from_project_file:
build_${dep} \
%else:
Debug\${dep}.lib \
%endif
%endfor
%endif
$(OUT_DIR)
echo Building ${target.name}
%if target.language == 'c++':
$(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ \
%else:
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ \
%endif
%for source in target.src:
$(REPO_ROOT)\${to_windows_path(source)} \
%endfor
%if not target.src:
$(REPO_ROOT)\${to_windows_path('vsprojects/dummy.c')} \
%endif
%if target.build == 'private':
$(LIBTOOL) /OUT:"Debug\${target.name}.lib" \
%else:
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\${target.name}.exe" \
%for dep in target.get('deps', []):
Debug\${dep}.lib \
%endfor
%if target.language == 'c++':
$(CXX_LIBS) \
%endif
$(LIBS) \
%endif
%if not target.src:
$(OUT_DIR)\dummy.obj \
%else:
%for source in target.src:
%if re.search('([^/]+)\.c{1,2}$', source):
$(OUT_DIR)\${re.search('([^/]+)\.c{1,2}$', source).group(1)}.obj \
%endif
%endfor
%endif
%if target.build != 'private':
${target.name}: ${target.name}.exe
echo Running ${target.name}
$(OUT_DIR)\${target.name}.exe
%endif
%endif
% endfor
%YAML 1.2
--- |
# Copyright 2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<%!
import re
%>\
<%namespace file="packages.include" import="get_name"/>\
<%def name="to_windows_path(path)">${path.replace('/','\\')}</%def>\
<%
build_from_project_file = set(['gpr',
'gpr_test_util',
'grpc',
'grpc_test_util',
'grpc_test_util_unsecure',
'grpc_unsecure',
'grpc++',
'grpc++_unsecure'
])
buildable_targets = [ target for target in targets + libs
if target.build in ['all', 'test', 'private', 'tool', 'benchmark'] and
target.language in ['c', 'c++'] and
all([(src.endswith('.c') or src.endswith('.cc') or src.endswith('.proto')) for src in target.src]) and
'windows' in target.get('platforms', ['windows']) ]
c_test_targets = [ target for target in buildable_targets if target.build == 'test' and not target.language == 'c++' ]
cxx_test_targets = [ target for target in buildable_targets if target.build == 'test' and target.language == 'c++' ]
%>\
# NMake file to build secondary gRPC targets on Windows.
# Use grpc.sln to solution to build the gRPC libraries.
OUT_DIR=test_bin
CC=cl.exe /nologo
LINK=link.exe /nologo
LIBTOOL=lib.exe /nologo /nodefaultlib
REPO_ROOT=..
OPENSSL_INCLUDES = .\packages\${get_name(vsprojects, 'openssl')}\build\native\include
ZLIB_INCLUDES = .\packages\${get_name(vsprojects, 'zlib')}\build\native\include
INCLUDES=/I$(REPO_ROOT) /I$(REPO_ROOT)\include /I$(OPENSSL_INCLUDES) /I$(ZLIB_INCLUDES)
GFLAGS_INCLUDES = .\..\third_party\gflags\include
GTEST_INCLUDES = .\..\third_party\gtest\include
PROTOBUF_INCLUDES = .\..\third_party\protobuf\src
CXX_INCLUDES=/I$(GFLAGS_INCLUDES) /I$(GTEST_INCLUDES) /I$(PROTOBUF_INCLUDES)
#_SCL_SECURE_NO_WARNINGS supresses a ton of "potentially unsafe use of std lib" warnings
DEFINES=/D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /D _CRT_SECURE_NO_WARNINGS /D _SCL_SECURE_NO_WARNINGS
#important options: /TC vs. /TP: compile as C vs. compile as C++
CFLAGS=/c $(INCLUDES) /Z7 /W3 /WX- /sdl $(DEFINES) /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze-
CXXFLAGS=/c $(INCLUDES) $(CXX_INCLUDES) /Z7 /W3 /WX- /sdl $(DEFINES) /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TP /analyze-
LFLAGS=/DEBUG /INCREMENTAL /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86
OPENSSL_LIBS=.\packages\${get_name(vsprojects, 'openssl')}\build\native\lib\v120\Win32\Debug\static\ssleay32.lib .\packages\${get_name(vsprojects, 'openssl')}\build\native\lib\v120\Win32\Debug\static\libeay32.lib
WINSOCK_LIBS=ws2_32.lib
GENERAL_LIBS=advapi32.lib comdlg32.lib gdi32.lib kernel32.lib odbc32.lib odbccp32.lib ole32.lib oleaut32.lib shell32.lib user32.lib uuid.lib winspool.lib
ZLIB_LIBS=.\packages\${get_name(vsprojects, 'zlib')}\build\native\lib\v120\Win32\Debug\static\cdecl\zlib.lib
LIBS=$(OPENSSL_LIBS) $(ZLIB_LIBS) $(GENERAL_LIBS) $(WINSOCK_LIBS)
#shlwapi.lib provides PathMatchSpec() for gflags in windows
GFLAGS_LIBS=.\..\third_party\gflags\lib\Debug\gflags.lib shlwapi.lib
GTEST_LIBS=.\..\third_party\gtest\msvc\gtest\Debug\gtestd.lib
PROTOBUF_LIBS=.\..\third_party\protobuf\vsprojects\Debug\libprotobuf.lib
CXX_LIBS=$(GFLAGS_LIBS) $(GTEST_LIBS) $(PROTOBUF_LIBS)
all: buildtests
tools:
tools_c:
tools_cxx:
$(OUT_DIR):
mkdir $(OUT_DIR)
build_libs: \
% for target in buildable_targets:
% if target.build == 'private' or target.build == 'all':
% if target.name in build_from_project_file:
build_${target.name} \
% else:
Debug\${target.name}.lib \
% endif
% endif
% endfor
buildtests: buildtests_c buildtests_cxx
buildtests_c: \
% for target in c_test_targets:
${target.name}.exe \
% endfor
echo All C tests built.
buildtests_cxx: \
% for target in cxx_test_targets:
${target.name}.exe \
% endfor
echo All C++ tests built.
% for target in buildable_targets:
## replace all .proto includes with .pb.cc / .grpc.pb.cc
%if target.src:
%for source in target.src:
%if source.endswith(".proto"):
<%
src_name_parts = source.split(".")
target.src.append(src_name_parts[0] + ".pb.cc")
target.src.append(src_name_parts[0] + ".grpc.pb.cc")
%>\
%endif
%endfor
%endif
## remove all .proto includes
<%
target.src = [item for item in target.src if not re.search('([^/]+)\.proto$', item)]
%>\
%if target.name in build_from_project_file:
build_${target.name}:
msbuild grpc.sln /t:${target.name} /p:Configuration=Debug /p:Linkage-grpc_dependencies_zlib=static
%else:
%if target.build == 'private':
Debug\${target.name}.lib: \
%else:
${target.name}.exe: \
%for dep in target.get('deps', []):
%if dep in build_from_project_file:
build_${dep} \
%else:
Debug\${dep}.lib \
%endif
%endfor
%endif
$(OUT_DIR)
echo Building ${target.name}
%if target.language == 'c++':
$(CC) $(CXXFLAGS) /Fo:$(OUT_DIR)\ \
%else:
$(CC) $(CFLAGS) /Fo:$(OUT_DIR)\ \
%endif
%for source in target.src:
$(REPO_ROOT)\${to_windows_path(source)} \
%endfor
%if not target.src:
$(REPO_ROOT)\${to_windows_path('vsprojects/dummy.c')} \
%endif
%if target.build == 'private':
$(LIBTOOL) /OUT:"Debug\${target.name}.lib" \
%else:
$(LINK) $(LFLAGS) /OUT:"$(OUT_DIR)\${target.name}.exe" \
%for dep in target.get('deps', []):
Debug\${dep}.lib \
%endfor
%if target.language == 'c++':
$(CXX_LIBS) \
%endif
$(LIBS) \
%endif
%if not target.src:
$(OUT_DIR)\dummy.obj \
%else:
%for source in target.src:
%if re.search('([^/]+)\.c{1,2}$', source):
$(OUT_DIR)\${re.search('([^/]+)\.c{1,2}$', source).group(1)}.obj \
%endif
%endfor
%endif
%if target.build != 'private':
${target.name}: ${target.name}.exe
echo Running ${target.name}
$(OUT_DIR)\${target.name}.exe
%endif
%endif
% endfor

@ -0,0 +1,18 @@
<?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>

@ -0,0 +1,16 @@
%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>
<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>_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>EnableAllWarnings</WarningLevel>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -1,2 +0,0 @@
<%namespace file="../vcxproj.filters_defs.include" import="gen_filters"/>\
${gen_filters('gpr', libs)}

@ -1,2 +0,0 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('gpr', libs)}

@ -1,2 +0,0 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('gpr_test_util', libs)}

@ -1,2 +0,0 @@
<%namespace file="../vcxproj.filters_defs.include" import="gen_filters"/>\
${gen_filters('grpc++', libs)}

@ -1,2 +0,0 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc++', libs)}

@ -1,2 +1,4 @@
<%namespace file="../vcxproj.filters_defs.include" import="gen_filters"/>\
${gen_filters('grpc++_unsecure', libs)}
%YAML 1.2
--- |
<%namespace file="../vcxproj.filters_defs.include" import="gen_filters"/>\
${gen_filters('grpc++_unsecure', libs)}

@ -1,2 +1,4 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc++_unsecure', libs)}
%YAML 1.2
--- |
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc++_unsecure', libs)}

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

@ -1,5 +1,7 @@
<%namespace file="sln_defs.include" import="gen_solution"/>\
<%
solution_projects = [p for p in vsprojects if p.build != 'protoc' and p.language in ['c', 'c++']]
%>\
${gen_solution(solution_projects, use_dlls='yes')}
%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'] and p.language in ['c', 'c++'] and p.vs_proj_dir == '.' and not (p.build == 'private' and p.language == 'c++')]
%>\
${gen_solution(solution_projects, use_dlls='yes')}

@ -1,2 +0,0 @@
<%namespace file="../vcxproj.filters_defs.include" import="gen_filters"/>\
${gen_filters('grpc', libs)}

@ -1,2 +0,0 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc', libs, packages=['openssl','zlib'])}

@ -1,2 +0,0 @@
<%namespace file="../packages.include" import="gen_packages_config"/>\
${gen_packages_config(['openssl','zlib'])}

@ -1,2 +1,4 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_cpp_plugin', targets, configuration_type='Application')}
%YAML 1.2
--- |
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_cpp_plugin', targets)}

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

@ -1,2 +0,0 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_csharp_ext', libs, configuration_type = 'DynamicLibrary', props=['zlib-dll'], packages=['openssl','zlib'])}

@ -1,2 +0,0 @@
<%namespace file="../packages.include" import="gen_packages_config"/>\
${gen_packages_config(['openssl','zlib'])}

@ -1,2 +1,4 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_csharp_plugin', targets, configuration_type='Application')}
%YAML 1.2
--- |
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_csharp_plugin', targets)}

@ -1,2 +1,4 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_objective_c_plugin', targets, configuration_type='Application')}
%YAML 1.2
--- |
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_objective_c_plugin', targets)}

@ -1,2 +0,0 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_plugin_support', libs)}

@ -1,5 +1,7 @@
<%namespace file="sln_defs.include" import="gen_solution"/>\
<%
solution_projects = [p for p in vsprojects if p.build == 'protoc']
%>\
${gen_solution(solution_projects)}
%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,2 +1,4 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_python_plugin', targets, configuration_type='Application')}
%YAML 1.2
--- |
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_python_plugin', targets)}

@ -1,2 +1,4 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_ruby_plugin', targets, configuration_type='Application')}
%YAML 1.2
--- |
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_ruby_plugin', targets)}

@ -1,2 +0,0 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_test_util', libs)}

@ -1,2 +0,0 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_test_util_unsecure', libs)}

@ -1,2 +0,0 @@
<%namespace file="../vcxproj.filters_defs.include" import="gen_filters"/>\
${gen_filters('grpc_unsecure', libs)}

@ -1,2 +0,0 @@
<%namespace file="../vcxproj_defs.include" import="gen_project"/>\
${gen_project('grpc_unsecure', libs, packages=['zlib'])}

@ -1,2 +0,0 @@
<%namespace file="../packages.include" import="gen_packages_config"/>\
${gen_packages_config(['zlib'])}

@ -0,0 +1,13 @@
<?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,54 +1,53 @@
<%!
openssl_pkg_name = "grpc.dependencies.openssl"
openssl_pkg_version = "1.0.2.2"
zlib_pkg_name = "grpc.dependencies.zlib"
zlib_pkg_version = "1.2.8.9"
%>\
<%def name="get_openssl()">${openssl_pkg_name}.${openssl_pkg_version}</%def>\
<%def name="get_zlib()">${zlib_pkg_name}.${zlib_pkg_version}</%def>\
<%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>
% if 'openssl' in packages:
<package id="${openssl_pkg_name}" version="${openssl_pkg_version}" targetFramework="Native" />
<package id="${openssl_pkg_name}.redist" version="${openssl_pkg_version}" targetFramework="Native" />
% endif
% if 'zlib' in packages:
<package id="${zlib_pkg_name}" version="${zlib_pkg_version}" targetFramework="Native" />
<package id="${zlib_pkg_name}.redist" version="${zlib_pkg_version}" targetFramework="Native" />
% endif
% 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)">\
% if 'openssl' in packages:
<Import Project="..\packages\${openssl_pkg_name}.${openssl_pkg_version}\build\native\${openssl_pkg_name}.props" Condition="Exists('..\packages\${openssl_pkg_name}.${openssl_pkg_version}\build\native\${openssl_pkg_name}.props')" />
% endif
<%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)">\
% if 'zlib' in packages:
<Import Project="..\packages\${zlib_pkg_name}.redist.${zlib_pkg_version}\build\native\${zlib_pkg_name}.redist.targets" Condition="Exists('..\packages\${zlib_pkg_name}.redist.${zlib_pkg_version}\build\native\${zlib_pkg_name}.redist.targets')" />
<Import Project="..\packages\${zlib_pkg_name}.${zlib_pkg_version}\build\native\${zlib_pkg_name}.targets" Condition="Exists('..\packages\${zlib_pkg_name}.${zlib_pkg_version}\build\native\${zlib_pkg_name}.targets')" />
%endif
% if 'openssl' in packages:
<Import Project="..\packages\${openssl_pkg_name}.redist.${openssl_pkg_version}\build\native\${openssl_pkg_name}.redist.targets" Condition="Exists('..\packages\${openssl_pkg_name}.redist.${openssl_pkg_version}\build\native\${openssl_pkg_name}.redist.targets')" />
<Import Project="..\packages\${openssl_pkg_name}.${openssl_pkg_version}\build\native\${openssl_pkg_name}.targets" Condition="Exists('..\packages\${openssl_pkg_name}.${openssl_pkg_version}\build\native\${openssl_pkg_name}.targets')" />
% endif
<%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="gen_package_ensure(packages)">\
% if packages:
<%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>
% if 'zlib' in packages:
<Error Condition="!Exists('..\packages\${zlib_pkg_name}.redist.${zlib_pkg_version}\build\native\${zlib_pkg_name}.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\${zlib_pkg_name}.redist.${zlib_pkg_version}\build\native\${zlib_pkg_name}.redist.targets'))" />
<Error Condition="!Exists('..\packages\${zlib_pkg_name}.${zlib_pkg_version}\build\native\${zlib_pkg_name}.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\${zlib_pkg_name}.${zlib_pkg_version}\build\native\${zlib_pkg_name}.targets'))" />
%endif
% if 'openssl' in packages:
<Error Condition="!Exists('..\packages\${openssl_pkg_name}.redist.${openssl_pkg_version}\build\native\${openssl_pkg_name}.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\${openssl_pkg_name}.redist.${openssl_pkg_version}\build\native\${openssl_pkg_name}.redist.targets'))" />
<Error Condition="!Exists('..\packages\${openssl_pkg_name}.${openssl_pkg_version}\build\native\${openssl_pkg_name}.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\${openssl_pkg_name}.${openssl_pkg_version}\build\native\${openssl_pkg_name}.props'))" />
<Error Condition="!Exists('..\packages\${openssl_pkg_name}.${openssl_pkg_version}\build\native\${openssl_pkg_name}.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\${openssl_pkg_name}.${openssl_pkg_version}\build\native\${openssl_pkg_name}.targets'))" />
%endif
% 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>
%endif
</%def>\

@ -0,0 +1,13 @@
<?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\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -0,0 +1,13 @@
<?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>libprotoc.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)\..\third_party\protobuf\cmake\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

@ -14,7 +14,7 @@ MinimumVisualStudioVersion = 10.0.40219.1
cpp_proj_type = "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"
%>\
% for project in solution_projects:
Project("${cpp_proj_type}") = "${project.name}", "${project.name}\${project.name}.vcxproj", "${project.vs_project_guid}"
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"
@ -53,7 +53,7 @@ Global
${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', 'no') != 'only':
% 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
@ -61,7 +61,7 @@ Global
% endif
% endif
% if use_dlls == 'yes':
% if project.get('dll', 'no') == 'no':
% 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
@ -82,7 +82,7 @@ Global
% endif
% endif
% if use_dlls == 'only':
% if project.get('dll', 'no') == 'yes':
% 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

@ -5,7 +5,7 @@
def calc_to_filter(path):
return '\\'.join(path.split('/')[:-1])
%>\
<%def name="get_repo_root()">..\..</%def>\
<%def name="get_repo_root(proj)">${'..\..\..' + ('\..' if proj.vs_proj_dir != '.' else '')}</%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>\
@ -17,7 +17,7 @@
% if project.get('src',[]):
<ItemGroup>
% for src_name in project.src:
<ClCompile Include="${get_repo_root()}\${to_windows_path(src_name)}">
<ClCompile Include="${get_repo_root(project)}\${to_windows_path(src_name)}">
<Filter>${to_filter(src_name)}</Filter>
</ClCompile>
% endfor
@ -26,7 +26,7 @@
% if project.get('public_headers',[]):
<ItemGroup>
% for public_header in project.public_headers:
<ClInclude Include="${get_repo_root()}\${to_windows_path(public_header)}">
<ClInclude Include="${get_repo_root(project)}\${to_windows_path(public_header)}">
<Filter>${to_filter(public_header)}</Filter>
</ClInclude>
% endfor
@ -35,7 +35,7 @@
% if project.get('headers',[]):
<ItemGroup>
% for header in project.headers:
<ClInclude Include="${get_repo_root()}\${to_windows_path(header)}">
<ClInclude Include="${get_repo_root(project)}\${to_windows_path(header)}">
<Filter>${to_filter(header)}</Filter>
</ClInclude>
% endfor

@ -0,0 +1,18 @@
%YAML 1.2
---
foreach: vsprojects
output_name: ${selected.vs_proj_dir}/${selected.name}/${selected.name}.vcxproj
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
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,8 +1,7 @@
<%namespace file="packages.include" import="gen_package_props,gen_package_targets,gen_package_ensure"/>\
<%def name="get_repo_root()">..\..</%def>\
<%def name="to_windows_path(path)">${path.replace('/','\\')}</%def>\
<%def name="get_subsystem(is_library)">${'Windows' if is_library else 'Console'}</%def>\
<%def name="gen_project(name, collection, configuration_type = None, project_guid = None, props = [], packages = [])">\
<%def name="gen_project(name, collection)">\
<%
target = None
for p in vsprojects:
@ -11,14 +10,9 @@
for t in collection:
if t.name == name:
target = t
if not configuration_type and target:
print target.name
if target.build == 'test' or target.build == 'tool':
configuration_type = 'Application'
if not configuration_type:
configuration_type = 'StaticLibrary'
if not project_guid:
project_guid = project.vs_project_guid
props = project.vs_props
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':
@ -29,13 +23,16 @@
else:
props.extend(['winsock'])
props.extend(['global'])
dll = project.get('dll', 'no')
props = sorted(list(set(props)))
dll = project.get('dll', False)
packages = project.vs_packages
repo_root = '..\..\..' + ('\..' if project.vs_proj_dir != '.' else '')
%>\
<?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)}\
${gen_package_props(packages, repo_root)}\
<ItemGroup Label="ProjectConfigurations">
% if dll == 'yes':
% if dll and dll != 'only':
<ProjectConfiguration Include="Debug-DLL|Win32">
<Configuration>Debug-DLL</Configuration>
<Platform>Win32</Platform>
@ -94,7 +91,7 @@ ${gen_package_props(packages)}\
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
% if dll == 'yes':
% if dll and dll != 'only':
<PropertyGroup Condition="'$(Configuration)'=='Debug-DLL'" Label="Configuration">
<ConfigurationType>${configuration_type}</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
@ -113,31 +110,24 @@ ${gen_package_props(packages)}\
<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="..\${prop}.props" />
<Import Project="${repo_root}\vsprojects\${prop}.props" />
% endfor
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
% for config in ['Debug', 'Release']:# + (['Debug-DLL', 'Release-DLL'] if dll and dll != 'only' else []):
<PropertyGroup Condition="'$(Configuration)'=='${config}'">
<TargetName>${name}</TargetName>
% if "zlib" in packages:
<Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
<Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
% endif
% if "openssl" in packages:
<Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
% endif
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<TargetName>${name}</TargetName>
% if "zlib" in packages:
<Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
<Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
% endif
% if "openssl" in packages:
<Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
% endif
% 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('.', '_')}>Debug</Configuration-${package.name.replace('.', '_')}>
% endif
% endfor
</PropertyGroup>
% if dll == 'yes':
% endfor
% if dll and dll != 'only':
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
@ -270,14 +260,14 @@ ${gen_package_props(packages)}\
% if project.get('public_headers',[]):
<ItemGroup>
% for public_header in project.public_headers:
<ClInclude Include="${get_repo_root()}\${to_windows_path(public_header)}" />
<ClInclude Include="${repo_root}\${to_windows_path(public_header)}" />
% endfor
</ItemGroup>
% endif
% if project.get('headers',[]):
<ItemGroup>
% for header in project.headers:
<ClInclude Include="${get_repo_root()}\${to_windows_path(header)}" />
<ClInclude Include="${repo_root}\${to_windows_path(header)}" />
% endfor
</ItemGroup>
% endif
@ -286,30 +276,30 @@ ${gen_package_props(packages)}\
% for src_name in project.src:
% if src_name.endswith(".proto"):
<% src_name_parts = src_name.split(".") %>\
<ClCompile Include="${get_repo_root()}\${to_windows_path(src_name_parts[0] + ".pb.cc")}">
<ClCompile Include="${repo_root}\${to_windows_path(src_name_parts[0] + ".pb.cc")}">
</ClCompile>
<ClInclude Include="${get_repo_root()}\${to_windows_path(src_name_parts[0] + ".pb.h")}">
<ClInclude Include="${repo_root}\${to_windows_path(src_name_parts[0] + ".pb.h")}">
</ClInclude>
<ClCompile Include="${get_repo_root()}\${to_windows_path(src_name_parts[0] + ".grpc.pb.cc")}">
<ClCompile Include="${repo_root}\${to_windows_path(src_name_parts[0] + ".grpc.pb.cc")}">
</ClCompile>
<ClInclude Include="${get_repo_root()}\${to_windows_path(src_name_parts[0] + ".grpc.pb.h")}">
<ClInclude Include="${repo_root}\${to_windows_path(src_name_parts[0] + ".grpc.pb.h")}">
</ClInclude>
% else:
<ClCompile Include="${get_repo_root()}\${to_windows_path(src_name)}">
<ClCompile Include="${repo_root}\${to_windows_path(src_name)}">
</ClCompile>
% endif
% endfor
</ItemGroup>
% elif configuration_type != 'StaticLibrary':
<ItemGroup>
<ClCompile Include="${get_repo_root()}\${to_windows_path('vsprojects/dummy.c')}">
<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="..\${dep}\${dep}.vcxproj">
<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
@ -322,8 +312,8 @@ ${gen_package_props(packages)}\
%endif
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
${gen_package_targets(packages)}\
${gen_package_targets(packages, repo_root)}\
</ImportGroup>
${gen_package_ensure(packages)}\
${gen_package_ensure(packages, repo_root)}\
</Project>
</%def>\

@ -0,0 +1,14 @@
%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>

@ -0,0 +1,15 @@
%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>

@ -0,0 +1,15 @@
%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>

@ -32,8 +32,8 @@
"""Generates the appropriate build.json data for all the end2end tests."""
import simplejson
import collections
import yaml
TestOptions = collections.namedtuple('TestOptions', 'flaky')
default_test_options = TestOptions(False)
@ -58,6 +58,7 @@ def main():
'headers': [
'test/core/bad_client/bad_client.h'
],
'vs_proj_dir': 'test',
'deps': [
'grpc_test_util_unsecure',
'grpc_unsecure',
@ -72,7 +73,7 @@ def main():
'language': 'c',
'secure': 'no',
'src': ['test/core/bad_client/tests/%s.c' % t],
'flaky': 'invoke_large_request' in t,
'vs_proj_dir': 'test',
'deps': [
'bad_client_test',
'grpc_test_util_unsecure',
@ -82,7 +83,7 @@ def main():
]
}
for t in sorted(BAD_CLIENT_TESTS.keys())]}
print simplejson.dumps(json, sort_keys=True, indent=2 * ' ')
print yaml.dump(json)
if __name__ == '__main__':

@ -32,8 +32,9 @@
"""Generates the appropriate build.json data for all the end2end tests."""
import simplejson
import yaml
import collections
import hashlib
FixtureOptions = collections.namedtuple('FixtureOptions', 'fullstack includes_proxy dns_resolver secure platforms ci_mac')
@ -42,22 +43,23 @@ socketpair_unsecure_fixture_options = default_unsecure_fixture_options._replace(
default_secure_fixture_options = default_unsecure_fixture_options._replace(secure=True)
uds_fixture_options = default_unsecure_fixture_options._replace(dns_resolver=False, platforms=['linux', 'mac', 'posix'])
# maps fixture name to whether it requires the security library
END2END_FIXTURES = {
'chttp2_fake_security': default_secure_fixture_options._replace(ci_mac=False),
'chttp2_fullstack': default_unsecure_fixture_options,
'chttp2_fullstack_compression': default_unsecure_fixture_options,
'chttp2_fullstack_uds_posix': uds_fixture_options,
'chttp2_fullstack_uds_posix_with_poll': uds_fixture_options._replace(platforms=['linux']),
'chttp2_fullstack_with_poll': default_unsecure_fixture_options._replace(platforms=['linux']),
'chttp2_fullstack_with_proxy': default_unsecure_fixture_options._replace(includes_proxy=True, ci_mac=False),
'chttp2_simple_ssl_fullstack': default_secure_fixture_options,
'chttp2_simple_ssl_fullstack_with_poll': default_secure_fixture_options._replace(platforms=['linux']),
'chttp2_simple_ssl_fullstack_with_proxy': default_secure_fixture_options._replace(includes_proxy=True, ci_mac=False),
'chttp2_simple_ssl_with_oauth2_fullstack': default_secure_fixture_options._replace(ci_mac=False),
'chttp2_socket_pair': socketpair_unsecure_fixture_options._replace(ci_mac=False),
'chttp2_socket_pair_one_byte_at_a_time': socketpair_unsecure_fixture_options._replace(ci_mac=False),
'chttp2_socket_pair_with_grpc_trace': socketpair_unsecure_fixture_options,
'h2_fakesec': default_secure_fixture_options._replace(ci_mac=False),
'h2_full': default_unsecure_fixture_options,
'h2_compress': default_unsecure_fixture_options,
'h2_uds': uds_fixture_options,
'h2_uds+poll': uds_fixture_options._replace(platforms=['linux']),
'h2_full+poll': default_unsecure_fixture_options._replace(platforms=['linux']),
'h2_proxy': default_unsecure_fixture_options._replace(includes_proxy=True, ci_mac=False),
'h2_ssl': default_secure_fixture_options,
'h2_ssl+poll': default_secure_fixture_options._replace(platforms=['linux']),
'h2_ssl_proxy': default_secure_fixture_options._replace(includes_proxy=True, ci_mac=False),
'h2_oauth2': default_secure_fixture_options._replace(ci_mac=False),
'h2_sockpair': socketpair_unsecure_fixture_options._replace(ci_mac=False),
'h2_sockpair_1byte': socketpair_unsecure_fixture_options._replace(ci_mac=False),
'h2_sockpair+trace': socketpair_unsecure_fixture_options,
}
TestOptions = collections.namedtuple('TestOptions', 'needs_fullstack needs_dns proxyable flaky secure')
@ -67,7 +69,7 @@ connectivity_test_options = default_test_options._replace(needs_fullstack=True)
# maps test names to options
END2END_TESTS = {
'bad_hostname': default_test_options,
'cancel_after_accept_and_writes_closed': default_test_options,
'cancel_after_client_done': default_test_options,
'cancel_after_accept': default_test_options,
'cancel_after_invoke': default_test_options,
'cancel_before_invoke': default_test_options,
@ -76,8 +78,8 @@ END2END_TESTS = {
'channel_connectivity': connectivity_test_options._replace(proxyable=False),
'default_host': default_test_options._replace(needs_fullstack=True, needs_dns=True),
'disappearing_server': connectivity_test_options,
'early_server_shutdown_finishes_inflight_calls': default_test_options,
'early_server_shutdown_finishes_tags': default_test_options,
'shutdown_finishes_calls': default_test_options,
'shutdown_finishes_tags': default_test_options,
'empty_batch': default_test_options,
'graceful_server_shutdown': default_test_options,
'invoke_large_request': default_test_options,
@ -86,19 +88,19 @@ END2END_TESTS = {
'no_op': default_test_options,
'ping_pong_streaming': default_test_options,
'registered_call': default_test_options,
'request_response_with_binary_metadata_and_payload': default_test_options,
'request_response_with_metadata_and_payload': default_test_options,
'request_response_with_payload_and_call_creds': default_test_options._replace(secure=True),
'request_response_with_payload': default_test_options,
'request_response_with_trailing_metadata_and_payload': default_test_options,
'request_with_compressed_payload': default_test_options._replace(proxyable=False),
'binary_metadata': default_test_options,
'metadata': default_test_options,
'call_creds': default_test_options._replace(secure=True),
'payload': default_test_options,
'trailing_metadata': default_test_options,
'compressed_payload': default_test_options._replace(proxyable=False),
'request_with_flags': default_test_options._replace(proxyable=False),
'request_with_large_metadata': default_test_options,
'large_metadata': default_test_options,
'request_with_payload': default_test_options,
'server_finishes_request': default_test_options,
'simple_delayed_request': connectivity_test_options,
'simple_request': default_test_options,
'simple_request_with_high_initial_sequence_number': default_test_options,
'high_initial_seqno': default_test_options,
}
@ -147,6 +149,7 @@ def main():
'platforms': [ 'linux', 'mac', 'posix' ] if f.endswith('_posix') else END2END_FIXTURES[f].platforms,
'deps': sec_deps if END2END_FIXTURES[f].secure else unsec_deps,
'headers': ['test/core/end2end/end2end_tests.h'],
'vs_proj_dir': 'test',
}
for f in sorted(END2END_FIXTURES.keys())] + [
{
@ -157,7 +160,8 @@ def main():
'src': ['test/core/end2end/tests/%s.c' % t],
'headers': ['test/core/end2end/tests/cancel_test_helpers.h',
'test/core/end2end/end2end_tests.h'],
'deps': sec_deps if END2END_TESTS[t].secure else unsec_deps
'deps': sec_deps if END2END_TESTS[t].secure else unsec_deps,
'vs_proj_dir': 'test',
}
for t in sorted(END2END_TESTS.keys())] + [
{
@ -168,7 +172,8 @@ def main():
"test/core/end2end/data/test_root_cert.c",
"test/core/end2end/data/server1_cert.c",
"test/core/end2end/data/server1_key.c"
]
],
'vs_proj_dir': 'test',
}
],
'targets': [
@ -184,13 +189,14 @@ def main():
else without(END2END_FIXTURES[f].platforms, 'mac')),
'deps': [
'end2end_fixture_%s' % f,
'end2end_test_%s' % t] + sec_deps
'end2end_test_%s' % t] + sec_deps,
'vs_proj_dir': 'test',
}
for f in sorted(END2END_FIXTURES.keys())
for t in sorted(END2END_TESTS.keys())
if compatible(f, t)] + [
{
'name': '%s_%s_unsecure_test' % (f, t),
'name': '%s_%s_nosec_test' % (f, t),
'build': 'test',
'language': 'c',
'secure': 'no',
@ -202,11 +208,12 @@ def main():
else without(END2END_FIXTURES[f].platforms, 'mac')),
'deps': [
'end2end_fixture_%s' % f,
'end2end_test_%s' % t] + unsec_deps
'end2end_test_%s' % t] + unsec_deps,
'vs_proj_dir': 'test',
}
for f in sorted(END2END_FIXTURES.keys()) if not END2END_FIXTURES[f].secure
for t in sorted(END2END_TESTS.keys()) if compatible(f, t) and not END2END_TESTS[t].secure]}
print simplejson.dumps(json, sort_keys=True, indent=2 * ' ')
print yaml.dump(json)
if __name__ == '__main__':

@ -33,7 +33,6 @@
#include "test/core/util/reconnect_server.h"
#include <arpa/inet.h>
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/host_port.h>
@ -42,6 +41,7 @@
#include <grpc/support/time.h>
#include <string.h>
#include "src/core/iomgr/endpoint.h"
#include "src/core/iomgr/sockaddr.h"
#include "src/core/iomgr/tcp_server.h"
#include "test/core/util/port.h"
@ -116,7 +116,7 @@ void reconnect_server_start(reconnect_server *server, int port) {
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
inet_pton(AF_INET, "0.0.0.0", &addr.sin_addr);
memset(&addr.sin_addr, 0, sizeof(addr.sin_addr));
server->tcp_server = grpc_tcp_server_create();
port_added =

@ -31,8 +31,6 @@
*
*/
#include <sys/signal.h>
#include <cassert>
#include <chrono>
#include <memory>

@ -31,7 +31,6 @@
*
*/
#include <unistd.h>
#include <list>
#include <thread>
#include <deque>

@ -35,9 +35,6 @@
#include <functional>
#include <memory>
#include <mutex>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/signal.h>
#include <thread>
#include <gflags/gflags.h>

@ -31,8 +31,6 @@
*
*/
#include <sys/signal.h>
#include <unistd.h>
#include <thread>
#include <gflags/gflags.h>

@ -28,16 +28,16 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# produces cleaner build.json files
# produces cleaner build.yaml files
import collections
import json
import os
import sys
import yaml
TEST = (os.environ.get('TEST', 'false') == 'true')
_TOP_LEVEL_KEYS = ['settings', 'filegroups', 'libs', 'targets']
_TOP_LEVEL_KEYS = ['settings', 'filegroups', 'libs', 'targets', 'vspackages']
_VERSION_KEYS = ['major', 'minor', 'micro', 'build']
_ELEM_KEYS = [
'name',
@ -50,6 +50,11 @@ _ELEM_KEYS = [
'src',
'deps']
def repr_ordered_dict(dumper, odict):
return dumper.represent_mapping(u'tag:yaml.org,2002:map', odict.items())
yaml.add_representer(collections.OrderedDict, repr_ordered_dict)
def rebuild_as_ordered_dict(indict, special_keys):
outdict = collections.OrderedDict()
for key in sorted(indict.keys()):
@ -75,7 +80,7 @@ def clean_elem(indict):
for filename in sys.argv[1:]:
with open(filename) as f:
js = json.load(f)
js = yaml.load(f)
js = rebuild_as_ordered_dict(js, _TOP_LEVEL_KEYS)
js['settings']['version'] = rebuild_as_ordered_dict(
js['settings']['version'], _VERSION_KEYS)
@ -83,7 +88,7 @@ for filename in sys.argv[1:]:
if grp not in js: continue
js[grp] = sorted([clean_elem(x) for x in js[grp]],
key=lambda x: (x.get('language', '_'), x['name']))
output = json.dumps(js, indent = 2)
output = yaml.dump(js, indent=2, width=80)
# massage out trailing whitespace
lines = []
for line in output.splitlines():

@ -28,11 +28,11 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
gen_build_json_dirs="test/core/end2end test/core/bad_client"
gen_build_yaml_dirs="test/core/end2end test/core/bad_client"
gen_build_files=""
for gen_build_json in $gen_build_json_dirs
for gen_build_yaml in $gen_build_yaml_dirs
do
output_file=`mktemp /tmp/genXXXXXX`
$gen_build_json/gen_build_json.py > $output_file
$gen_build_yaml/gen_build_yaml.py > $output_file
gen_build_files="$gen_build_files $output_file"
done

@ -40,7 +40,7 @@ cd `dirname $0`/../..
mako_renderer=tools/buildgen/mako_renderer.py
if [ "x$TEST" != "x" ] ; then
tools/buildgen/build-cleaner.py build.json
tools/buildgen/build-cleaner.py build.yaml
fi
. tools/buildgen/generate_build_additions.sh
@ -58,8 +58,8 @@ for dir in . ; do
out=${dir}/${file#$dir/templates/} # strip templates dir prefix
out=${out%.*} # strip template extension
echo "generating file: $out"
json_files="build.json $gen_build_files"
data=`for i in $json_files ; do echo $i ; done | awk ' { printf "-d %s ", $0 } '`
yaml_files="build.yaml $gen_build_files"
data=`for i in $yaml_files ; do echo $i ; done | awk ' { printf "-d %s ", $0 } '`
if [ "x$TEST" = "xtrue" ] ; then
actual_out=$out
out=`mktemp /tmp/gentXXXXXX`

@ -31,6 +31,7 @@
import glob
import os
import shutil
import sys
import tempfile
sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), '..', 'run_tests'))
@ -76,5 +77,9 @@ jobset.run(jobs)
if test is not None:
for s, g in test.iteritems():
assert(0 == os.system('diff %s %s' % (s, g)))
os.unlink(g)
if os.path.isfile(g):
assert(0 == os.system('diff %s %s' % (s, g)))
os.unlink(g)
else:
assert(0 == os.system('diff -r %s %s' % (s, g)))
shutil.rmtree(g, ignore_errors=True)

@ -40,11 +40,11 @@ cd `dirname $0`/../..
mako_renderer=tools/buildgen/mako_renderer.py
if [ "x$TEST" != "x" ] ; then
tools/buildgen/build-cleaner.py build.json
tools/buildgen/build-cleaner.py build.yaml
fi
. tools/buildgen/generate_build_additions.sh
tools/buildgen/generate_projects.py build.json $gen_build_files
tools/buildgen/generate_projects.py build.yaml $gen_build_files
rm $gen_build_files

@ -38,14 +38,15 @@ Just a wrapper around the mako rendering library.
import getopt
import imp
import os
import shutil
import sys
from mako.lookup import TemplateLookup
from mako.runtime import Context
from mako.template import Template
import simplejson
import bunch
import yaml
# Imports a plugin
@ -76,6 +77,7 @@ def main(argv):
got_output = False
output_file = sys.stdout
plugins = []
output_name = None
try:
opts, args = getopt.getopt(argv, 'hm:d:o:p:')
@ -95,7 +97,7 @@ def main(argv):
showhelp()
sys.exit(3)
got_output = True
output_file = open(arg, 'w')
output_name = arg
elif opt == '-m':
if module_directory is not None:
out('Got more than one cache directory')
@ -104,7 +106,7 @@ def main(argv):
module_directory = arg
elif opt == '-d':
dict_file = open(arg, 'r')
bunch.merge_json(json_dict, simplejson.loads(dict_file.read()))
bunch.merge_json(json_dict, yaml.load(dict_file.read()))
dict_file.close()
elif opt == '-p':
plugins.append(import_plugin(arg))
@ -115,14 +117,56 @@ def main(argv):
for k, v in json_dict.items():
dictionary[k] = bunch.to_bunch(v)
ctx = Context(output_file, **dictionary)
cleared_dir = False
for arg in args:
got_input = True
template = Template(filename=arg,
module_directory=module_directory,
lookup=TemplateLookup(directories=['.']))
template.render_context(ctx)
with open(arg) as f:
srcs = list(yaml.load_all(f.read()))
for src in srcs:
if isinstance(src, basestring):
assert len(srcs) == 1
template = Template(src,
filename=arg,
module_directory=module_directory,
lookup=TemplateLookup(directories=['.']))
with open(output_name, 'w') as output_file:
template.render_context(Context(output_file, **dictionary))
else:
# we have optional control data: this template represents
# a directory
if not cleared_dir:
if not os.path.exists(output_name):
pass
elif os.path.isfile(output_name):
os.unlink(output_name)
else:
shutil.rmtree(output_name, ignore_errors=True)
cleared_dir = True
items = []
if 'foreach' in src:
for el in dictionary[src['foreach']]:
if 'cond' in src:
args = dict(dictionary)
args['selected'] = el
if not eval(src['cond'], {}, args):
continue
items.append(el)
assert items
else:
items = [None]
for item in items:
args = dict(dictionary)
args['selected'] = item
item_output_name = os.path.join(
output_name, Template(src['output_name']).render(**args))
if not os.path.exists(os.path.dirname(item_output_name)):
os.makedirs(os.path.dirname(item_output_name))
template = Template(src['template'],
filename=arg,
module_directory=module_directory,
lookup=TemplateLookup(directories=['.']))
with open(item_output_name, 'w') as output_file:
template.render_context(Context(output_file, **args))
if not got_input:
out('Got nothing to do')

@ -37,7 +37,7 @@ This fills in any optional attributes.
def mako_plugin(dictionary):
"""The exported plugin code for expand_filegroups.
The list of libs in the build.json file can contain "filegroups" tags.
The list of libs in the build.yaml file can contain "filegroups" tags.
These refer to the filegroups in the root object. We will expand and
merge filegroups on the src, headers and public_headers properties.

@ -29,7 +29,7 @@
"""Buildgen expand filegroups plugin.
This takes the list of libs from our json dictionary,
This takes the list of libs from our yaml dictionary,
and expands any and all filegroup.
"""
@ -45,7 +45,7 @@ def excluded(filename, exclude_res):
def mako_plugin(dictionary):
"""The exported plugin code for expand_filegroups.
The list of libs in the build.json file can contain "filegroups" tags.
The list of libs in the build.yaml file can contain "filegroups" tags.
These refer to the filegroups in the root object. We will expand and
merge filegroups on the src, headers and public_headers properties.

@ -57,14 +57,27 @@ def mako_plugin(dictionary):
projects = []
projects.extend(libs)
projects.extend(targets)
if dictionary.get('debug', False):
for target in projects:
if not target.get('vs_project_guid', None) and 'windows' in target.get('platforms', ['windows']):
name = target['name']
guid = re.sub('(........)(....)(....)(....)(.*)',
r'{\1-\2-\3-\4-\5}',
hashlib.md5(name).hexdigest())
target['vs_project_guid'] = guid.upper()
for target in projects:
if 'build' in target and target['build'] == 'test':
default_test_dir = 'test'
else:
default_test_dir = '.'
if 'vs_config_type' not in target:
if 'build' in target and target['build'] == 'test':
target['vs_config_type'] = 'Application'
else:
target['vs_config_type'] = 'StaticLibrary'
if 'vs_packages' not in target:
target['vs_packages'] = []
if 'vs_props' not in target:
target['vs_props'] = []
target['vs_proj_dir'] = target.get('vs_proj_dir', default_test_dir)
if target.get('vs_project_guid', None) is None and 'windows' in target.get('platforms', ['windows']):
name = target['name']
guid = re.sub('(........)(....)(....)(....)(.*)',
r'{\1-\2-\3-\4-\5}',
hashlib.md5(name).hexdigest())
target['vs_project_guid'] = guid.upper()
# Exclude projects without a visual project guid, such as the tests.
projects = [project for project in projects
if project.get('vs_project_guid', None)]
@ -74,5 +87,9 @@ def mako_plugin(dictionary):
project_dict = dict([(p['name'], p) for p in projects])
packages = dictionary.get('vspackages', [])
packages_dict = dict([(p['name'], p) for p in packages])
dictionary['vsprojects'] = projects
dictionary['vsproject_dict'] = project_dict
dictionary['vspackages_dict'] = packages_dict

@ -29,7 +29,7 @@
"""Buildgen .proto files list plugin.
This parses the list of targets from the json build file, and creates
This parses the list of targets from the yaml build file, and creates
a list called "protos" that contains all of the proto file names.
"""

@ -52,6 +52,7 @@ RUN apt-get update && apt-get install -y \
strace \
python-dev \
python-setuptools \
python-yaml \
telnet \
unzip \
wget \

@ -52,6 +52,7 @@ RUN apt-get update && apt-get install -y \
strace \
python-dev \
python-setuptools \
python-yaml \
telnet \
unzip \
wget \

@ -36,13 +36,11 @@ export TEST=true
cd `dirname $0`/../..
./tools/buildgen/generate_projects.sh
submodules=`mktemp`
submodules=`mktemp /tmp/submXXXXXX`
want_submodules=`mktemp /tmp/submXXXXXX`
git submodule > $submodules
diff -u $submodules - << EOF
git submodule | awk '{ print $1 }' | sort > $submodules
cat << EOF | awk '{ print $1 }' | sort > $want_submodules
05b155ff59114735ec8cd089f669c4c3d8f59029 third_party/gflags (v2.1.0-45-g05b155f)
c99458533a9b4c743ed51537e25989ea55944908 third_party/googletest (release-1.7.0)
33dd08320648ac71d7d9d732be774ed3818dccc5 third_party/openssl (OpenSSL_1_0_2d)
@ -50,7 +48,13 @@ diff -u $submodules - << EOF
50893291621658f355bc5b4d450a8d06a563053d third_party/zlib (v1.2.8)
EOF
if [ -f cache.mk ] ; then
diff -u $submodules $want_submodules
rm $submodules $want_submodules
if git ls-files cache.mk --error-unmatch &> /dev/null ; then
echo "Please don't commit cache.mk"
exit 1
fi
./tools/buildgen/generate_projects.sh

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

Loading…
Cancel
Save