Skip to content

Commit

Permalink
test: --enable-static linked executable
Browse files Browse the repository at this point in the history
The motivation for this commit is to enable projects embedding Node.js
and building with --enable-static to be able to run the test suite and
linter.

Currently when building with --enable-static no node executable
will be created which means that the tests (apart from the cctest) and
linter cannot be run.

This is currently a work in progress and works on MacOS but I need to
run the CI, and manually on different environments to verify that it
works as expected.

PR-URL: #14986
Refs: #14158
Refs: #14892
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
  • Loading branch information
danbev authored and gibfahn committed Dec 19, 2017
1 parent 0348dad commit c69590d
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 14 deletions.
4 changes: 2 additions & 2 deletions common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@
'V8_BASE': '<(PRODUCT_DIR)/libv8_base.a',
}],
['openssl_fips != ""', {
'OPENSSL_PRODUCT': 'libcrypto.a',
'OPENSSL_PRODUCT': '<(STATIC_LIB_PREFIX)crypto<(STATIC_LIB_SUFFIX)',
}, {
'OPENSSL_PRODUCT': 'libopenssl.a',
'OPENSSL_PRODUCT': '<(STATIC_LIB_PREFIX)openssl<(STATIC_LIB_SUFFIX)',
}],
['OS=="mac"', {
'clang%': 1,
Expand Down
61 changes: 55 additions & 6 deletions node.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,13 @@
[ 'OS=="win"', {
'sources': [
'src/backtrace_win32.cc',
'src/res/node.rc',
],
'conditions': [
[ 'node_target_type!="static_library"', {
'sources': [
'src/res/node.rc',
],
}],
],
'defines!': [
'NODE_PLATFORM="win"',
Expand Down Expand Up @@ -491,7 +497,7 @@
'target_name': 'node_etw',
'type': 'none',
'conditions': [
[ 'node_use_etw=="true"', {
[ 'node_use_etw=="true" and node_target_type!="static_library"', {
'actions': [
{
'action_name': 'node_etw',
Expand All @@ -512,7 +518,7 @@
'target_name': 'node_perfctr',
'type': 'none',
'conditions': [
[ 'node_use_perfctr=="true"', {
[ 'node_use_perfctr=="true" and node_target_type!="static_library"', {
'actions': [
{
'action_name': 'node_perfctr_man',
Expand Down Expand Up @@ -574,13 +580,15 @@
'<(SHARED_INTERMEDIATE_DIR)/node_javascript.cc',
],
'conditions': [
[ 'node_use_dtrace=="false" and node_use_etw=="false"', {
[ 'node_use_dtrace=="false" and node_use_etw=="false" or '
'node_target_type=="static_library"', {
'inputs': [ 'src/notrace_macros.py' ]
}],
['node_use_lttng=="false"', {
['node_use_lttng=="false" or node_target_type=="static_library"', {
'inputs': [ 'src/nolttng_macros.py' ]
}],
[ 'node_use_perfctr=="false"', {
[ 'node_use_perfctr=="false" or '
'node_target_type=="static_library"', {
'inputs': [ 'src/noperfctr_macros.py' ]
}]
],
Expand Down Expand Up @@ -934,6 +942,47 @@
], # end targets

'conditions': [
[ 'node_target_type=="static_library"', {
'targets': [
{
'target_name': 'static_node',
'type': 'executable',
'product_name': '<(node_core_target_name)',
'dependencies': [
'<(node_core_target_name)',
],
'sources+': [
'src/node_main.cc',
],
'include_dirs': [
'deps/v8/include',
],
'xcode_settings': {
'OTHER_LDFLAGS': [
'-Wl,-force_load,<(PRODUCT_DIR)/<(STATIC_LIB_PREFIX)'
'<(node_core_target_name)<(STATIC_LIB_SUFFIX)',
],
},
'msvs_settings': {
'VCLinkerTool': {
'AdditionalOptions': [
'/WHOLEARCHIVE:<(PRODUCT_DIR)/lib/'
'<(node_core_target_name)<(STATIC_LIB_SUFFIX)',
],
},
},
'conditions': [
['OS in "linux freebsd openbsd solaris android"', {
'ldflags': [
'-Wl,--whole-archive,<(OBJ_DIR)/<(STATIC_LIB_PREFIX)'
'<(node_core_target_name)<(STATIC_LIB_SUFFIX)',
'-Wl,--no-whole-archive',
],
}],
],
},
],
}],
['OS=="aix"', {
'targets': [
{
Expand Down
4 changes: 2 additions & 2 deletions node.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
'src/node_lttng.cc'
],
} ],
[ 'node_use_etw=="true"', {
[ 'node_use_etw=="true" and node_target_type!="static_library"', {
'defines': [ 'HAVE_ETW=1' ],
'dependencies': [ 'node_etw' ],
'sources': [
Expand All @@ -95,7 +95,7 @@
'tools/msvs/genfiles/node_etw_provider.rc',
]
} ],
[ 'node_use_perfctr=="true"', {
[ 'node_use_perfctr=="true" and node_target_type!="static_library"', {
'defines': [ 'HAVE_PERFCTR=1' ],
'dependencies': [ 'node_perfctr' ],
'sources': [
Expand Down
19 changes: 15 additions & 4 deletions test/addons/openssl-binding/binding.gyp
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
{
'includes': ['../../../config.gypi'],
'variables': {
'node_target_type%': '',
},
'targets': [
{
'target_name': 'binding',
'conditions': [
['node_use_openssl=="true"', {
'sources': ['binding.cc'],
'include_dirs': ['../../../deps/openssl/openssl/include'],
}]
['node_use_openssl=="true"', {
'sources': ['binding.cc'],
'include_dirs': ['../../../deps/openssl/openssl/include'],
'conditions': [
['OS=="win" and node_target_type=="static_library"', {
'libraries': [
'../../../../$(Configuration)/lib/<(OPENSSL_PRODUCT)'
],
}],
],
}]
]
},
]
Expand Down
13 changes: 13 additions & 0 deletions test/addons/zlib-binding/binding.gyp
Original file line number Diff line number Diff line change
@@ -1,9 +1,22 @@
{
'includes': ['../../../config.gypi'],
'variables': {
'node_target_type%': '',
},
'targets': [
{
'target_name': 'binding',
'sources': ['binding.cc'],
'include_dirs': ['../../../deps/zlib'],
'conditions': [
['node_target_type=="static_library"', {
'conditions': [
['OS=="win"', {
'libraries': ['../../../../$(Configuration)/lib/zlib.lib'],
}],
],
}],
],
},
]
}

0 comments on commit c69590d

Please sign in to comment.