Index: third_party/grpc/templates/binding.gyp.template |
diff --git a/third_party/grpc/templates/binding.gyp.template b/third_party/grpc/templates/binding.gyp.template |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3ffbc0664322f207305419d215d5926765600545 |
--- /dev/null |
+++ b/third_party/grpc/templates/binding.gyp.template |
@@ -0,0 +1,274 @@ |
+%YAML 1.2 |
+--- | |
+ # 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-2016, 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/ |
+ { |
+ 'target_defaults': { |
+ 'include_dirs': [ |
+ '.', |
+ 'include' |
+ ], |
+ 'conditions': [ |
+ ['OS == "win"', { |
+ "include_dirs": [ |
+ "third_party/boringssl/include", |
+ "third_party/zlib" |
+ ], |
+ "defines": [ |
+ '_WIN32_WINNT=0x0600', |
+ 'WIN32_LEAN_AND_MEAN', |
+ '_HAS_EXCEPTIONS=0', |
+ 'UNICODE', |
+ '_UNICODE', |
+ 'NOMINMAX', |
+ 'OPENSSL_NO_ASM', |
+ 'GPR_BACKWARDS_COMPATIBILITY_MODE' |
+ ], |
+ "msvs_settings": { |
+ 'VCCLCompilerTool': { |
+ 'RuntimeLibrary': 1, # static debug |
+ } |
+ }, |
+ "libraries": [ |
+ "ws2_32" |
+ ] |
+ }, { # OS != "win" |
+ 'variables': { |
+ 'config': '<!(echo $CONFIG)', |
+ # The output of "node --version" is "v[version]". We use cut to |
+ # remove the first character. |
+ 'target%': '<!(node --version | cut -c2-)' |
+ }, |
+ # Empirically, Node only exports ALPN symbols if its major version is >0. |
+ # io.js always reports versions >0 and always exports ALPN symbols. |
+ # Therefore, Node's major version will be truthy if and only if it |
+ # supports ALPN. The target is "[major].[minor].[patch]". We split by |
+ # periods and take the first field to get the major version. |
+ 'defines': [ |
+ 'TSI_OPENSSL_ALPN_SUPPORT=<!(echo <(target) | cut -d. -f1)', |
+ 'GPR_BACKWARDS_COMPATIBILITY_MODE' |
+ ], |
+ 'include_dirs': [ |
+ '<(node_root_dir)/deps/openssl/openssl/include', |
+ '<(node_root_dir)/deps/zlib' |
+ ], |
+ 'conditions': [ |
+ ['config=="gcov"', { |
+ 'cflags': [ |
+ '-ftest-coverage', |
+ '-fprofile-arcs', |
+ '-O0' |
+ ], |
+ 'ldflags': [ |
+ '-ftest-coverage', |
+ '-fprofile-arcs' |
+ ] |
+ } |
+ ], |
+ ["target_arch=='ia32'", { |
+ "include_dirs": [ "<(node_root_dir)/deps/openssl/config/piii" ] |
+ }], |
+ ["target_arch=='x64'", { |
+ "include_dirs": [ "<(node_root_dir)/deps/openssl/config/k8" ] |
+ }], |
+ ["target_arch=='arm'", { |
+ "include_dirs": [ "<(node_root_dir)/deps/openssl/config/arm" ] |
+ }] |
+ ] |
+ }] |
+ ] |
+ }, |
+ 'conditions': [ |
+ ['OS == "win"', { |
+ 'targets': [ |
+ { |
+ # IMPORTANT WINDOWS BUILD INFORMATION |
+ # This library does not build on Windows without modifying the Node |
+ # development packages that node-gyp downloads in order to build. |
+ # Due to https://github.com/nodejs/node/issues/4932, the headers for |
+ # BoringSSL conflict with the OpenSSL headers included by default |
+ # when including the Node headers. The remedy for this is to remove |
+ # the OpenSSL headers, from the downloaded Node development package, |
+ # which is typically located in `.node-gyp` in your home directory. |
+ 'target_name': 'WINDOWS_BUILD_WARNING', |
+ 'actions': [ |
+ { |
+ 'action_name': 'WINDOWS_BUILD_WARNING', |
+ 'inputs': [ |
+ 'package.json' |
+ ], |
+ 'outputs': [ |
+ 'ignore_this_part' |
+ ], |
+ 'action': ['echo', 'IMPORTANT: Due to https://github.com/nodejs/node/issues/4932, to build this library on Windows, you must first remove <(node_root_dir)/include/node/openssl/'] |
+ } |
+ ] |
+ }, |
+ # Only want to compile BoringSSL and zlib under Windows |
+ % for module in node_modules: |
+ % for lib in libs: |
+ % if lib.name in module.transitive_deps and lib.name in ('boringssl', 'z'): |
+ { |
+ 'cflags': [ |
+ '-std=c99', |
+ '-Wall', |
+ '-Werror' |
+ ], |
+ 'target_name': '${lib.name}', |
+ 'product_prefix': 'lib', |
+ 'type': 'static_library', |
+ 'dependencies': [ |
+ % for dep in getattr(lib, 'deps', []): |
+ '${dep}', |
+ % endfor |
+ ], |
+ 'sources': [ |
+ % for source in lib.src: |
+ '${source}', |
+ % endfor |
+ ] |
+ }, |
+ % endif |
+ % endfor |
+ % endfor |
+ ] |
+ }] |
+ ], |
+ 'targets': [ |
+ % for module in node_modules: |
+ % for lib in libs: |
+ % if lib.name in module.transitive_deps and lib.name not in ('boringssl', 'z'): |
+ { |
+ 'cflags': [ |
+ '-std=c99', |
+ '-Wall', |
+ '-Werror' |
+ ], |
+ 'target_name': '${lib.name}', |
+ 'product_prefix': 'lib', |
+ 'type': 'static_library', |
+ 'dependencies': [ |
+ % for dep in getattr(lib, 'deps', []): |
+ '${dep}', |
+ % endfor |
+ ], |
+ 'sources': [ |
+ % for source in lib.src: |
+ '${source}', |
+ % endfor |
+ ], |
+ "conditions": [ |
+ ['OS == "mac"', { |
+ 'xcode_settings': { |
+ 'MACOSX_DEPLOYMENT_TARGET': '10.9' |
+ } |
+ }] |
+ ] |
+ }, |
+ % endif |
+ % endfor |
+ { |
+ 'include_dirs': [ |
+ "<!(node -e \"require('nan')\")" |
+ ], |
+ 'cflags': [ |
+ '-std=c++11', |
+ '-Wall', |
+ '-pthread', |
+ '-g', |
+ '-zdefs', |
+ '-Werror', |
+ '-Wno-error=deprecated-declarations' |
+ ], |
+ 'ldflags': [ |
+ '-g' |
+ ], |
+ "conditions": [ |
+ ['OS=="mac"', { |
+ 'xcode_settings': { |
+ 'MACOSX_DEPLOYMENT_TARGET': '10.9', |
+ 'OTHER_CFLAGS': [ |
+ '-stdlib=libc++', |
+ '-std=c++11' |
+ ] |
+ } |
+ }], |
+ ['OS=="win"', { |
+ 'dependencies': [ |
+ % for dep in getattr(module, 'deps', []): |
+ % if dep in ('boringssl', 'z'): |
+ "${dep}", |
+ % endif |
+ % endfor |
+ ] |
+ }], |
+ ['OS=="linux"', { |
+ 'ldflags': [ |
+ '-Wl,-wrap,memcpy' |
+ ] |
+ }] |
+ ], |
+ "target_name": "${module.name}", |
+ "sources": [ |
+ % for source in module.src: |
+ "${source}", |
+ % endfor |
+ ], |
+ "dependencies": [ |
+ % for dep in getattr(module, 'deps', []): |
+ % if dep not in ('boringssl', 'z'): |
+ "${dep}", |
+ % endif |
+ % endfor |
+ ] |
+ }, |
+ % endfor |
+ { |
+ "target_name": "action_after_build", |
+ "type": "none", |
+ "dependencies": [ "<(module_name)" ], |
+ "copies": [ |
+ { |
+ "files": [ "<(PRODUCT_DIR)/<(module_name).node"], |
+ "destination": "<(module_path)" |
+ } |
+ ] |
+ } |
+ ] |
+ } |