Browse Source

fix: clang variable configuration in generated node headers (#44202)

* fix: clang variable configuration in generated node headers

Co-authored-by: deepak1556 <[email protected]>

* chore: restore value in common.gypi

Co-authored-by: deepak1556 <[email protected]>

* chore: update patches

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <[email protected]>
Co-authored-by: John Kleinschmidt <[email protected]>
trop[bot] 6 months ago
parent
commit
e206378680

+ 1 - 0
patches/node/.patches

@@ -45,3 +45,4 @@ cherry-pick_src_remove_calls_to_recently_deprecated_v8_apis.patch
 test_update_v8-stats_test_for_v8_12_6.patch
 src_use_supported_api_to_get_stalled_tla_messages.patch
 build_don_t_redefine_win32_lean_and_mean.patch
+build_restore_clang_as_default_compiler_on_macos.patch

+ 24 - 0
patches/node/build_restore_clang_as_default_compiler_on_macos.patch

@@ -0,0 +1,24 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: deepak1556 <[email protected]>
+Date: Fri, 11 Oct 2024 15:01:25 +0900
+Subject: build: restore clang as default compiler on macOS
+
+Refs https://github.com/nodejs/node/commit/6e0a2bb54c5bbeff0e9e33e1a0c683ed980a8a0f
+configures the value at build time which doesn't work in Electron
+as it depends on the environment in which the headers got generated from which
+cannot reflect the value per platform. It works for Node.js since
+node-gyp will use the result of `process.config` that reflects the environment
+in which the binary got built.
+
+diff --git a/common.gypi b/common.gypi
+index bdf1a1f33f3ea09d933757c7fee87c563cc833ab..0cd67d7d8df79e8b11b5d270aedce772ea23dcae 100644
+--- a/common.gypi
++++ b/common.gypi
+@@ -125,6 +125,7 @@
+         'v8_base': '<(PRODUCT_DIR)/obj.target/tools/v8_gypfiles/libv8_snapshot.a',
+       }],
+       ['OS=="mac"', {
++        'clang%': 1,
+         'obj_dir%': '<(PRODUCT_DIR)/obj.target',
+         'v8_base': '<(PRODUCT_DIR)/libv8_snapshot.a',
+       }],

+ 4 - 0
script/generate-config-gypi.py

@@ -61,6 +61,10 @@ def main(target_file, target_cpu):
   v['node_module_version'] = int(args['node_module_version'])
   # Used by certain versions of node-gyp.
   v['build_v8_with_gn'] = 'false'
+  # Enable clang conditionally based on target platform
+  # in common.gypi
+  if 'clang' in v:
+    del v['clang']
 
   with open(target_file, 'w+', encoding='utf-8') as file_out:
     file_out.write(pprint.pformat(config, indent=2))