diff --git a/common_node.gypi b/common_node.gypi new file mode 100644 index 00000000000000..0bfbf7283c0f57 --- /dev/null +++ b/common_node.gypi @@ -0,0 +1,16 @@ +{ + 'target_defaults': { + 'conditions': [ + # Override common.gypi config to use C++20 for Node.js core only. + ['OS in "linux freebsd openbsd solaris android aix os400 cloudabi"', { + 'cflags_cc!': ['-std=gnu++17'], + 'cflags_cc': ['-std=gnu++20'], + }], + ['OS=="mac" and clang==1', { + 'xcode_settings': { + 'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++20', # -std=gnu++20 + }, + }], + ], + }, +} diff --git a/tools/gyp_node.py b/tools/gyp_node.py index 097e1a213ca559..905755a617e019 100755 --- a/tools/gyp_node.py +++ b/tools/gyp_node.py @@ -20,11 +20,15 @@ def run_gyp(args): a_path = node_root if sys.platform == 'win32' else os.path.abspath(node_root) args.append(os.path.join(a_path, 'node.gyp')) common_fn = os.path.join(a_path, 'common.gypi') + common_node_fn = os.path.join(a_path, 'common_node.gypi') options_fn = os.path.join(a_path, 'config.gypi') if os.path.exists(common_fn): args.extend(['-I', common_fn]) + if os.path.exists(common_node_fn): + args.extend(['-I', common_node_fn]) + if os.path.exists(options_fn): args.extend(['-I', options_fn])