diff --git a/binding.gyp b/binding.gyp index 2a5cb1ced496d63722dd730c486c9e7919c9108f..b775113f8fdd17966ed2386a7289bfaae07c1048 100644 --- a/binding.gyp +++ b/binding.gyp @@ -1,3 +1,10 @@ +# GRPC Node gyp file +# This currently builds the Node extension and dependencies +# 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. # @@ -26,11 +33,230 @@ # 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. + +# Some of this file is built with the help of +# https://n8.io/converting-a-c-library-to-gyp/ { - "variables" : { + 'variables': { 'config': '<!(echo $CONFIG)' }, - "targets" : [ + # TODO: Finish windows support + 'target_defaults': { + # Emperically, Node only exports ALPN symbols if its major version is >0. + # io.js always reports versions >0 and always exports ALPN symbols. + 'defines': [ + 'TSI_OPENSSL_ALPN_SUPPORT=<!(node -v | grep -oP "(?<=v)(\d+)(?=\.\d+\.\d+)")' + ], + 'include_dirs': [ + '.', + 'include' + ] + }, + 'targets': [ + { + 'target_name': 'gpr', + 'product_prefix': 'lib', + 'type': 'static_library', + 'dependencies': [ + ], + 'sources': [ + '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', + ], + }, + { + 'target_name': 'grpc', + 'product_prefix': 'lib', + 'type': 'static_library', + 'dependencies': [ + 'gpr', + ], + 'sources': [ + '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/handshake.c', + 'src/core/security/json_token.c', + 'src/core/security/jwt_verifier.c', + 'src/core/security/secure_endpoint.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', + '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_policies/round_robin.c', + 'src/core/client_config/lb_policy.c', + 'src/core/client_config/lb_policy_factory.c', + 'src/core/client_config/lb_policy_registry.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/closure.c', + 'src/core/iomgr/endpoint.c', + 'src/core/iomgr/endpoint_pair_posix.c', + 'src/core/iomgr/endpoint_pair_windows.c', + 'src/core/iomgr/exec_ctx.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/iomgr/workqueue_posix.c', + 'src/core/iomgr/workqueue_windows.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/api_trace.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/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', + 'src/core/census/context.c', + 'src/core/census/initialize.c', + 'src/core/census/operation.c', + 'src/core/census/tracing.c', + ], + }, { 'include_dirs': [ "<!(node -e \"require('nan')\")" @@ -88,7 +314,7 @@ "src/node/ext/timeval.cc" ], "dependencies": [ - "grpc.gyp:grpc" + "grpc" ] } ] diff --git a/grpc.gyp b/grpc.gyp deleted file mode 100644 index 08185ac592ef0a9546e9e17e5a443211a8deba00..0000000000000000000000000000000000000000 --- a/grpc.gyp +++ /dev/null @@ -1,295 +0,0 @@ -# GRPC gyp file -# This currently builds 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. - -# Some of this file is built with the help of -# https://n8.io/converting-a-c-library-to-gyp/ -{ - # TODO: Finish windows support - 'target_defaults': { - 'default_configuration': 'Debug', - 'configurations': { - 'Debug': { - 'defines': [ 'DEBUG', '_DEBUG' ], - 'msvs_settings': { - 'VCCLCompilerTool': { - 'RuntimeLibrary': 1, # static debug - }, - }, - }, - 'Release': { - 'defines': [ 'NDEBUG' ], - 'msvs_settings': { - 'VCCLCompilerTool': { - 'RuntimeLibrary': 0, # static release - }, - }, - } - }, - 'msvs_settings': { - 'VCLinkerTool': { - 'GenerateDebugInformation': 'true', - }, - }, - # TODO: Add fallback for Windows, and if pkg-config is not available - 'defines': [ - 'TSI_OPENSSL_ALPN_SUPPORT=<!(pkg-config --atleast-version=1.0.2 openssl >/dev/null 2>&1 && echo 1 || echo 0)' - ], - 'include_dirs': [ - '.', - 'include' - ], - # TODO: Check for libraries with pkg-config - 'libraries': [ - '-lcrypto', - '-lssl', - '-ldl', - '-lpthread', - '-lz' - ], - 'direct_dependent_settings': { - 'include_dirs': [ - '.', - 'include' - ], - } - }, - 'targets': [ - { - 'target_name': 'gpr', - 'product_prefix': 'lib', - 'type': 'static_library', - 'dependencies': [ - ], - 'sources': [ - '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', - ], - }, - { - 'target_name': 'grpc', - 'product_prefix': 'lib', - 'type': 'static_library', - 'dependencies': [ - 'gpr', - ], - 'sources': [ - '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/handshake.c', - 'src/core/security/json_token.c', - 'src/core/security/jwt_verifier.c', - 'src/core/security/secure_endpoint.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', - '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_policies/round_robin.c', - 'src/core/client_config/lb_policy.c', - 'src/core/client_config/lb_policy_factory.c', - 'src/core/client_config/lb_policy_registry.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/closure.c', - 'src/core/iomgr/endpoint.c', - 'src/core/iomgr/endpoint_pair_posix.c', - 'src/core/iomgr/endpoint_pair_windows.c', - 'src/core/iomgr/exec_ctx.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/iomgr/workqueue_posix.c', - 'src/core/iomgr/workqueue_windows.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/api_trace.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/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', - 'src/core/census/context.c', - 'src/core/census/initialize.c', - 'src/core/census/operation.c', - 'src/core/census/tracing.c', - ], - }, - ] -} diff --git a/package.json b/package.json index 0eea3475a34b2b1e46ce7ca3ba3b506a2fc72e58..c624c45107edf5735a289c324d627a9de5f76c1e 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "lib": "src/node/src" }, "scripts": { - "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/examples src/node/interop src/node/index.js", + "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/interop src/node/index.js", "test": "./node_modules/.bin/mocha src/node/test && npm run-script lint", "gen_docs": "./node_modules/.bin/jsdoc -c src/node/jsdoc_conf.json", "coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test" @@ -53,7 +53,6 @@ "src/core", "test/proto", "include", - "grpc.gyp", "binding.gyp" ], "main": "src/node/index.js", diff --git a/templates/binding.gyp.template b/templates/binding.gyp.template index 9a7637d8bf48a0e3aab979abaafcdb911043d57d..1e5b2ea911328f4ec586f6674bf65d51c233508b 100644 --- a/templates/binding.gyp.template +++ b/templates/binding.gyp.template @@ -1,7 +1,7 @@ %YAML 1.2 --- | - # GRPC gyp file - # This currently builds C code. + # GRPC Node gyp file + # This currently builds the Node extension and dependencies # 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 @@ -39,54 +39,20 @@ # Some of this file is built with the help of # https://n8.io/converting-a-c-library-to-gyp/ { + 'variables': { + 'config': '<!(echo $CONFIG)' + }, # TODO: Finish windows support 'target_defaults': { - 'default_configuration': 'Debug', - 'configurations': { - 'Debug': { - 'defines': [ 'DEBUG', '_DEBUG' ], - 'msvs_settings': { - 'VCCLCompilerTool': { - 'RuntimeLibrary': 1, # static debug - }, - }, - }, - 'Release': { - 'defines': [ 'NDEBUG' ], - 'msvs_settings': { - 'VCCLCompilerTool': { - 'RuntimeLibrary': 0, # static release - }, - }, - } - }, - 'msvs_settings': { - 'VCLinkerTool': { - 'GenerateDebugInformation': 'true', - }, - }, - # TODO: Add fallback for Windows, and if pkg-config is not available + # Emperically, Node only exports ALPN symbols if its major version is >0. + # io.js always reports versions >0 and always exports ALPN symbols. 'defines': [ - 'TSI_OPENSSL_ALPN_SUPPORT=<!(pkg-config --atleast-version=1.0.2 openssl >/dev/null 2>&1 && echo 1 || echo 0)' + 'TSI_OPENSSL_ALPN_SUPPORT=<!(node -v | grep -oP "(?<=v)(\d+)(?=\.\d+\.\d+)")' ], 'include_dirs': [ '.', 'include' - ], - # TODO: Check for libraries with pkg-config - 'libraries': [ - '-lcrypto', - '-lssl', - '-ldl', - '-lpthread', - '-lz' - ], - 'direct_dependent_settings': { - 'include_dirs': [ - '.', - 'include' - ], - } + ] }, 'targets': [ % for lib in libs: @@ -108,5 +74,65 @@ }, % endif % endfor + { + 'include_dirs': [ + "<!(node -e \"require('nan')\")" + ], + 'cflags': [ + '-std=c++0x', + '-Wall', + '-pthread', + '-g', + '-zdefs', + '-Werror', + '-Wno-error=deprecated-declarations' + ], + 'ldflags': [ + '-g' + ], + "conditions": [ + ['OS != "win"', { + 'conditions': [ + ['config=="gcov"', { + 'cflags': [ + '-ftest-coverage', + '-fprofile-arcs', + '-O0' + ], + 'ldflags': [ + '-ftest-coverage', + '-fprofile-arcs' + ] + } + ] + ] + }], + ['OS == "mac"', { + 'xcode_settings': { + 'MACOSX_DEPLOYMENT_TARGET': '10.9', + 'OTHER_CFLAGS': [ + '-std=c++11', + '-stdlib=libc++' + ] + } + }] + ], + "target_name": "grpc_node", + "sources": [ + "src/node/ext/byte_buffer.cc", + "src/node/ext/call.cc", + "src/node/ext/call_credentials.cc", + "src/node/ext/channel.cc", + "src/node/ext/channel_credentials.cc", + "src/node/ext/completion_queue_async_worker.cc", + "src/node/ext/node_grpc.cc", + "src/node/ext/server.cc", + "src/node/ext/server_credentials.cc", + "src/node/ext/timeval.cc" + ], + "dependencies": [ + "grpc" + ] + } ] }