Consolidated gyp files to fix Node installation issue
diff --git a/binding.gyp b/binding.gyp
index 2a5cb1c..b775113 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"
       ]
     }
   ]