From de6c7417fb4ae524c4e6f59743791595876888e0 Mon Sep 17 00:00:00 2001 From: Jeremy Apthorp Date: Wed, 19 Sep 2018 17:53:36 -0700 Subject: [PATCH] fix: export DebugOptions parser in a cross-platform-compatible way --- BUILD.gn | 1 + src/node.h | 4 ++++ src/node_options.cc | 2 +- src/node_options.h | 3 ++- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 9d74a94da2a..7b5d102ebd1 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -324,6 +324,7 @@ component("node_lib") { defines = [ "NODE_WANT_INTERNALS=1", "NODE_WITHOUT_NODE_OPTIONS", + "NODE_IMPLEMENTATION", ] if (is_component_build) { diff --git a/src/node.h b/src/node.h index 3ce6515ec79..a65551ff83d 100644 --- a/src/node.h +++ b/src/node.h @@ -29,7 +29,11 @@ # define NODE_EXTERN __declspec(dllimport) # endif #else +#if defined(NODE_IMPLEMENTATION) # define NODE_EXTERN __attribute__((visibility("default"))) +#else +# define NODE_EXTERN +#endif #endif #ifdef BUILDING_NODE_EXTENSION diff --git a/src/node_options.cc b/src/node_options.cc index 507c0036ad5..e8d6e43beb5 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -22,7 +22,7 @@ namespace options_parser { // doc/api/cli.md // TODO(addaleax): Make that unnecessary. -template class OptionsParser; +template class EXPORT_TEMPLATE_DEFINE(NODE_EXTERN) OptionsParser; DebugOptionsParser::DebugOptionsParser() { #if HAVE_INSPECTOR diff --git a/src/node_options.h b/src/node_options.h index 89c219465d1..fad265df696 100644 --- a/src/node_options.h +++ b/src/node_options.h @@ -7,6 +7,7 @@ #include #include #include +#include "base/export_template.h" #include "node_constants.h" namespace node { @@ -340,7 +341,7 @@ class OptionsParser { friend void GetOptions(const v8::FunctionCallbackInfo& args); }; -extern template class OptionsParser; +extern template class EXPORT_TEMPLATE_DECLARE(NODE_EXTERN) OptionsParser; class NODE_EXTERN DebugOptionsParser : public OptionsParser { public: