diff options
author | Marat Abdullin <dakota@brokenpipe.ru> | 2015-04-04 17:04:49 +0300 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2015-04-11 06:53:17 +0200 |
commit | cd38a4af8f8210ce96d1a034da010dbc1b2bcf81 (patch) | |
tree | efd85226052e174fdd8b03388c59844753c8e53a /node.gyp | |
parent | 93a1a07ef4f578d5c3c1930fc85644d2fee7bb33 (diff) | |
download | node-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.gyp | 47 |
1 files changed, 33 insertions, 14 deletions
@@ -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' ], |