summaryrefslogtreecommitdiff
path: root/node.gyp
diff options
context:
space:
mode:
authorMarat Abdullin <dakota@brokenpipe.ru>2015-04-04 17:04:49 +0300
committerBen Noordhuis <info@bnoordhuis.nl>2015-04-11 06:53:17 +0200
commitcd38a4af8f8210ce96d1a034da010dbc1b2bcf81 (patch)
treeefd85226052e174fdd8b03388c59844753c8e53a /node.gyp
parent93a1a07ef4f578d5c3c1930fc85644d2fee7bb33 (diff)
downloadnode-new-cd38a4af8f8210ce96d1a034da010dbc1b2bcf81.tar.gz
build: support building io.js as a static library
One static library could not be bundled into another, that's why it's necessary to skip `-force_load` and `--whole-archive` linker options to build io.js itself as a static library. `node_target_type` variable has been added to node.gyp, along with `--enable-static` option in configure script. Fixes: https://github.com/iojs/io.js/issues/686 PR-URL: https://github.com/iojs/io.js/pull/1341 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'node.gyp')
-rw-r--r--node.gyp47
1 files changed, 33 insertions, 14 deletions
diff --git a/node.gyp b/node.gyp
index 6ae2fbcdbb..5a7d1ff151 100644
--- a/node.gyp
+++ b/node.gyp
@@ -12,6 +12,7 @@
'node_use_openssl%': 'true',
'node_shared_openssl%': 'false',
'node_v8_options%': '',
+ 'node_target_type%': 'executable',
'library_files': [
'src/node.js',
'lib/_debug_agent.js',
@@ -76,7 +77,7 @@
'targets': [
{
'target_name': 'iojs',
- 'type': 'executable',
+ 'type': '<(node_target_type)',
'dependencies': [
'node_js2c#host',
@@ -183,6 +184,12 @@
],
'conditions': [
+ # No node_main.cc for anything except executable
+ [ 'node_target_type!="executable"', {
+ 'sources!': [
+ 'src/node_main.cc',
+ ],
+ }],
[ 'v8_enable_i18n_support==1', {
'defines': [ 'NODE_HAVE_I18N_SUPPORT=1' ],
'dependencies': [
@@ -215,15 +222,22 @@
'./deps/openssl/openssl.gyp:openssl-cli',
],
# Do not let unused OpenSSL symbols to slip away
- 'xcode_settings': {
- 'OTHER_LDFLAGS': [
- '-Wl,-force_load,<(PRODUCT_DIR)/libopenssl.a',
- ],
- },
'conditions': [
- ['OS in "linux freebsd"', {
- 'ldflags': [
- '-Wl,--whole-archive <(PRODUCT_DIR)/libopenssl.a -Wl,--no-whole-archive',
+ # -force_load or --whole-archive are not applicable for
+ # the static library
+ [ 'node_target_type!="static_library"', {
+ 'xcode_settings': {
+ 'OTHER_LDFLAGS': [
+ '-Wl,-force_load,<(PRODUCT_DIR)/libopenssl.a',
+ ],
+ },
+ 'conditions': [
+ ['OS in "linux freebsd"', {
+ 'ldflags': [
+ '-Wl,--whole-archive <(PRODUCT_DIR)/libopenssl.a',
+ '-Wl,--no-whole-archive',
+ ],
+ }],
],
}],
],
@@ -304,11 +318,16 @@
} ],
[ 'v8_postmortem_support=="true"', {
'dependencies': [ 'deps/v8/tools/gyp/v8.gyp:postmortem-metadata' ],
- 'xcode_settings': {
- 'OTHER_LDFLAGS': [
- '-Wl,-force_load,<(V8_BASE)',
- ],
- },
+ 'conditions': [
+ # -force_load is not applicable for the static library
+ [ 'node_target_type!="static_library"', {
+ 'xcode_settings': {
+ 'OTHER_LDFLAGS': [
+ '-Wl,-force_load,<(V8_BASE)',
+ ],
+ },
+ }],
+ ],
}],
[ 'node_shared_zlib=="false"', {
'dependencies': [ 'deps/zlib/zlib.gyp:zlib' ],