| { |
| 'conditions': [ |
| [ 'node_shared=="false"', { |
| 'msvs_settings': { |
| 'VCManifestTool': { |
| 'EmbedManifest': 'true', |
| 'AdditionalManifestFiles': 'src/res/node.exe.extra.manifest' |
| } |
| }, |
| }, { |
| 'defines': [ |
| 'NODE_SHARED_MODE', |
| ], |
| 'conditions': [ |
| [ 'node_module_version!="" and OS!="win"', { |
| 'product_extension': '<(shlib_suffix)', |
| }] |
| ], |
| }], |
| [ 'node_enable_d8=="true"', { |
| 'dependencies': [ 'deps/v8/src/d8.gyp:d8' ], |
| }], |
| [ 'node_use_bundled_v8=="true"', { |
| 'dependencies': [ |
| 'deps/v8/src/v8.gyp:v8', |
| 'deps/v8/src/v8.gyp:v8_libplatform' |
| ], |
| }], |
| [ 'node_use_v8_platform=="true"', { |
| 'defines': [ |
| 'NODE_USE_V8_PLATFORM=1', |
| ], |
| }, { |
| 'defines': [ |
| 'NODE_USE_V8_PLATFORM=0', |
| ], |
| }], |
| [ 'node_tag!=""', { |
| 'defines': [ 'NODE_TAG="<(node_tag)"' ], |
| }], |
| [ 'node_v8_options!=""', { |
| 'defines': [ 'NODE_V8_OPTIONS="<(node_v8_options)"'], |
| }], |
| # No node_main.cc for anything except executable |
| [ 'node_target_type!="executable"', { |
| 'sources!': [ |
| 'src/node_main.cc', |
| ], |
| }], |
| [ 'node_release_urlbase!=""', { |
| 'defines': [ |
| 'NODE_RELEASE_URLBASE="<(node_release_urlbase)"', |
| ] |
| }], |
| [ 'v8_enable_i18n_support==1', { |
| 'defines': [ 'NODE_HAVE_I18N_SUPPORT=1' ], |
| 'dependencies': [ |
| '<(icu_gyp_path):icui18n', |
| '<(icu_gyp_path):icuuc', |
| ], |
| 'conditions': [ |
| [ 'icu_small=="true"', { |
| 'defines': [ 'NODE_HAVE_SMALL_ICU=1' ], |
| }]], |
| }], |
| [ 'node_use_bundled_v8=="true" and \ |
| node_enable_v8_vtunejit=="true" and (target_arch=="x64" or \ |
| target_arch=="ia32" or target_arch=="x32")', { |
| 'defines': [ 'NODE_ENABLE_VTUNE_PROFILING' ], |
| 'dependencies': [ |
| 'deps/v8/src/third_party/vtune/v8vtune.gyp:v8_vtune' |
| ], |
| }], |
| [ 'v8_enable_inspector==1', { |
| 'defines': [ |
| 'HAVE_INSPECTOR=1', |
| ], |
| 'sources': [ |
| 'src/inspector_agent.cc', |
| 'src/inspector_io.cc', |
| 'src/inspector_socket.cc', |
| 'src/inspector_socket_server.cc', |
| 'src/inspector_agent.h', |
| 'src/inspector_io.h', |
| 'src/inspector_socket.h', |
| 'src/inspector_socket_server.h', |
| ], |
| 'dependencies': [ |
| 'v8_inspector_compress_protocol_json#host', |
| ], |
| 'include_dirs': [ |
| '<(SHARED_INTERMEDIATE_DIR)/include', # for inspector |
| '<(SHARED_INTERMEDIATE_DIR)', |
| ], |
| }, { |
| 'defines': [ 'HAVE_INSPECTOR=0' ] |
| }], |
| [ 'node_use_openssl=="true"', { |
| 'defines': [ 'HAVE_OPENSSL=1' ], |
| 'sources': [ |
| 'src/node_crypto.cc', |
| 'src/node_crypto_bio.cc', |
| 'src/node_crypto_clienthello.cc', |
| 'src/node_crypto.h', |
| 'src/node_crypto_bio.h', |
| 'src/node_crypto_clienthello.h', |
| 'src/tls_wrap.cc', |
| 'src/tls_wrap.h' |
| ], |
| 'conditions': [ |
| ['openssl_fips != ""', { |
| 'defines': [ 'NODE_FIPS_MODE' ], |
| }], |
| [ 'node_shared_openssl=="false"', { |
| 'dependencies': [ |
| './deps/openssl/openssl.gyp:openssl', |
| |
| # For tests |
| './deps/openssl/openssl.gyp:openssl-cli', |
| ], |
| # Do not let unused OpenSSL symbols to slip away |
| 'conditions': [ |
| # -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)/<(OPENSSL_PRODUCT)', |
| ], |
| }, |
| 'conditions': [ |
| ['OS in "linux freebsd" and node_shared=="false"', { |
| 'ldflags': [ |
| '-Wl,--whole-archive,' |
| '<(OBJ_DIR)/deps/openssl/' |
| '<(OPENSSL_PRODUCT)', |
| '-Wl,--no-whole-archive', |
| ], |
| }], |
| # openssl.def is based on zlib.def, zlib symbols |
| # are always exported. |
| ['use_openssl_def==1', { |
| 'sources': ['<(SHARED_INTERMEDIATE_DIR)/openssl.def'], |
| }], |
| ['OS=="win" and use_openssl_def==0', { |
| 'sources': ['deps/zlib/win32/zlib.def'], |
| }], |
| ], |
| }], |
| ], |
| }]] |
| }, { |
| 'defines': [ 'HAVE_OPENSSL=0' ] |
| }], |
| [ 'node_use_dtrace=="true"', { |
| 'defines': [ 'HAVE_DTRACE=1' ], |
| 'dependencies': [ |
| 'node_dtrace_header', |
| 'specialize_node_d', |
| ], |
| 'include_dirs': [ '<(SHARED_INTERMEDIATE_DIR)' ], |
| |
| # |
| # DTrace is supported on linux, solaris, mac, and bsd. There are |
| # three object files associated with DTrace support, but they're |
| # not all used all the time: |
| # |
| # node_dtrace.o all configurations |
| # node_dtrace_ustack.o not supported on mac and linux |
| # node_dtrace_provider.o All except OS X. "dtrace -G" is not |
| # used on OS X. |
| # |
| # Note that node_dtrace_provider.cc and node_dtrace_ustack.cc do not |
| # actually exist. They're listed here to trick GYP into linking the |
| # corresponding object files into the final "node" executable. These |
| # object files are generated by "dtrace -G" using custom actions |
| # below, and the GYP-generated Makefiles will properly build them when |
| # needed. |
| # |
| 'sources': [ 'src/node_dtrace.cc' ], |
| 'conditions': [ |
| [ 'OS=="linux"', { |
| 'sources': [ |
| '<(SHARED_INTERMEDIATE_DIR)/node_dtrace_provider.o' |
| ], |
| }], |
| [ 'OS!="mac" and OS!="linux"', { |
| 'sources': [ |
| 'src/node_dtrace_ustack.cc', |
| 'src/node_dtrace_provider.cc', |
| ] |
| } |
| ] ] |
| } ], |
| [ 'node_use_lttng=="true"', { |
| 'defines': [ 'HAVE_LTTNG=1' ], |
| 'include_dirs': [ '<(SHARED_INTERMEDIATE_DIR)' ], |
| 'libraries': [ '-llttng-ust' ], |
| 'sources': [ |
| 'src/node_lttng.cc' |
| ], |
| } ], |
| [ 'node_use_etw=="true"', { |
| 'defines': [ 'HAVE_ETW=1' ], |
| 'dependencies': [ 'node_etw' ], |
| 'sources': [ |
| 'src/node_win32_etw_provider.h', |
| 'src/node_win32_etw_provider-inl.h', |
| 'src/node_win32_etw_provider.cc', |
| 'src/node_dtrace.cc', |
| 'tools/msvs/genfiles/node_etw_provider.h', |
| 'tools/msvs/genfiles/node_etw_provider.rc', |
| ] |
| } ], |
| [ 'node_use_perfctr=="true"', { |
| 'defines': [ 'HAVE_PERFCTR=1' ], |
| 'dependencies': [ 'node_perfctr' ], |
| 'sources': [ |
| 'src/node_win32_perfctr_provider.h', |
| 'src/node_win32_perfctr_provider.cc', |
| 'src/node_counters.cc', |
| 'src/node_counters.h', |
| 'tools/msvs/genfiles/node_perfctr_provider.rc', |
| ] |
| } ], |
| [ 'node_no_browser_globals=="true"', { |
| 'defines': [ 'NODE_NO_BROWSER_GLOBALS' ], |
| } ], |
| [ 'node_use_bundled_v8=="true" and v8_postmortem_support=="true"', { |
| 'dependencies': [ 'deps/v8/src/v8.gyp:postmortem-metadata' ], |
| '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' ], |
| }], |
| |
| [ 'node_shared_http_parser=="false"', { |
| 'dependencies': [ 'deps/http_parser/http_parser.gyp:http_parser' ], |
| }], |
| |
| [ 'node_shared_cares=="false"', { |
| 'dependencies': [ 'deps/cares/cares.gyp:cares' ], |
| }], |
| |
| [ 'node_shared_libuv=="false"', { |
| 'dependencies': [ 'deps/uv/uv.gyp:libuv' ], |
| }], |
| |
| [ 'OS=="win"', { |
| 'sources': [ |
| 'src/backtrace_win32.cc', |
| 'src/res/node.rc', |
| ], |
| 'defines!': [ |
| 'NODE_PLATFORM="win"', |
| ], |
| 'defines': [ |
| 'FD_SETSIZE=1024', |
| # we need to use node's preferred "win32" rather than gyp's preferred "win" |
| 'NODE_PLATFORM="win32"', |
| '_UNICODE=1', |
| ], |
| 'libraries': [ '-lpsapi.lib' ] |
| }, { # POSIX |
| 'defines': [ '__POSIX__' ], |
| 'sources': [ 'src/backtrace_posix.cc' ], |
| }], |
| [ 'OS=="mac"', { |
| # linking Corefoundation is needed since certain OSX debugging tools |
| # like Instruments require it for some features |
| 'libraries': [ '-framework CoreFoundation' ], |
| 'defines!': [ |
| 'NODE_PLATFORM="mac"', |
| ], |
| 'defines': [ |
| # we need to use node's preferred "darwin" rather than gyp's preferred "mac" |
| 'NODE_PLATFORM="darwin"', |
| ], |
| }], |
| [ 'OS=="freebsd"', { |
| 'libraries': [ |
| '-lutil', |
| '-lkvm', |
| ], |
| }], |
| [ 'OS=="aix"', { |
| 'defines': [ |
| '_LINUX_SOURCE_COMPAT', |
| ], |
| }], |
| [ 'OS=="solaris"', { |
| 'libraries': [ |
| '-lkstat', |
| '-lumem', |
| ], |
| 'defines!': [ |
| 'NODE_PLATFORM="solaris"', |
| ], |
| 'defines': [ |
| # we need to use node's preferred "sunos" |
| # rather than gyp's preferred "solaris" |
| 'NODE_PLATFORM="sunos"', |
| ], |
| }], |
| [ '(OS=="freebsd" or OS=="linux") and node_shared=="false" and coverage=="false"', { |
| 'ldflags': [ '-Wl,-z,noexecstack', |
| '-Wl,--whole-archive <(V8_BASE)', |
| '-Wl,--no-whole-archive' ] |
| }], |
| [ '(OS=="freebsd" or OS=="linux") and node_shared=="false" and coverage=="true"', { |
| 'ldflags': [ '-Wl,-z,noexecstack', |
| '-Wl,--whole-archive <(V8_BASE)', |
| '-Wl,--no-whole-archive', |
| '--coverage', |
| '-g', |
| '-O0' ], |
| 'cflags': [ '--coverage', |
| '-g', |
| '-O0' ], |
| 'cflags!': [ '-O3' ] |
| }], |
| [ 'OS=="sunos"', { |
| 'ldflags': [ '-Wl,-M,/usr/lib/ld/map.noexstk' ], |
| }], |
| ], |
| } |