build,win: enable clang-cl compilation

This uses the backported ICU fix needed for compiling with ClangCL.

Refs: https://github.com/nodejs/node/pull/54502
Fixes: https://github.com/nodejs/node/issues/34201
PR-URL: https://github.com/nodejs/node/pull/54655
Refs: https://github.com/nodejs/node/issues/52809
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Steven R Loomis <srl295@gmail.com>
This commit is contained in:
Stefan Stojanovic 2024-09-09 12:26:00 +02:00 committed by GitHub
parent 9404d3aaaf
commit 79a33a7433
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 62 additions and 29 deletions

View File

@ -139,20 +139,43 @@
# full data - just build the full data file, then we are done. # full data - just build the full data file, then we are done.
'sources': [ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major)<(icu_endianness)_dat.<(icu_asm_ext)' ], 'sources': [ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major)<(icu_endianness)_dat.<(icu_asm_ext)' ],
'dependencies': [ 'genccode#host' ], 'dependencies': [ 'genccode#host' ],
'actions': [ 'conditions': [
{ [ 'clang==1', {
'action_name': 'icudata', 'actions': [
'msvs_quote_cmd': 0, {
'inputs': [ '<(icu_data_in)' ], 'action_name': 'icudata',
'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major)<(icu_endianness)_dat.<(icu_asm_ext)' ], 'msvs_quote_cmd': 0,
# on Windows, we can go directly to .obj file (-o) option. 'inputs': [ '<(icu_data_in)' ],
'action': [ '<(PRODUCT_DIR)/genccode<(EXECUTABLE_SUFFIX)', 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major)<(icu_endianness)_dat.<(icu_asm_ext)' ],
'<@(icu_asm_opts)', # -o # on Windows, we can go directly to .obj file (-o) option.
'-d', '<(SHARED_INTERMEDIATE_DIR)', # for Clang use "-c <(target_arch)" option
'-n', 'icudata', 'action': [ '<(PRODUCT_DIR)/genccode<(EXECUTABLE_SUFFIX)',
'-e', 'icudt<(icu_ver_major)', '<@(icu_asm_opts)', # -o
'<@(_inputs)' ], '-c', '<(target_arch)',
}, '-d', '<(SHARED_INTERMEDIATE_DIR)',
'-n', 'icudata',
'-e', 'icudt<(icu_ver_major)',
'<@(_inputs)' ],
},
],
}, {
'actions': [
{
'action_name': 'icudata',
'msvs_quote_cmd': 0,
'inputs': [ '<(icu_data_in)' ],
'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major)<(icu_endianness)_dat.<(icu_asm_ext)' ],
# on Windows, we can go directly to .obj file (-o) option.
# for MSVC do not use "-c <(target_arch)" option
'action': [ '<(PRODUCT_DIR)/genccode<(EXECUTABLE_SUFFIX)',
'<@(icu_asm_opts)', # -o
'-d', '<(SHARED_INTERMEDIATE_DIR)',
'-n', 'icudata',
'-e', 'icudt<(icu_ver_major)',
'<@(_inputs)' ],
},
],
}]
], ],
}, { # icu_small == TRUE and OS == win }, { # icu_small == TRUE and OS == win
# link against stub data primarily # link against stub data primarily

View File

@ -1890,7 +1890,31 @@
['enable_lto=="true"', { ['enable_lto=="true"', {
'cflags_cc': [ '-fno-lto' ], 'cflags_cc': [ '-fno-lto' ],
}], }],
['clang==1 or OS!="win"', { # Chnges in push_registers_asm.cc in V8 v12.8 requires using
# push_registers_masm on Windows even with ClangCL on x64
['OS=="win"', {
'conditions': [
['_toolset == "host" and host_arch == "x64" or _toolset == "target" and target_arch=="x64"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/x64/push_registers_masm.asm',
],
}],
['_toolset == "host" and host_arch == "arm64" or _toolset == "target" and target_arch=="arm64"', {
'conditions': [
['clang==1', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/arm64/push_registers_asm.cc',
],
}],
['clang==0', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/arm64/push_registers_masm.S',
],
}],
],
}],
],
}, { # 'OS!="win"'
'conditions': [ 'conditions': [
['_toolset == "host" and host_arch == "x64" or _toolset == "target" and target_arch=="x64"', { ['_toolset == "host" and host_arch == "x64" or _toolset == "target" and target_arch=="x64"', {
'sources': [ 'sources': [
@ -1939,20 +1963,6 @@
}], }],
] ]
}], }],
['OS=="win" and clang==0', {
'conditions': [
['_toolset == "host" and host_arch == "x64" or _toolset == "target" and target_arch=="x64"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/x64/push_registers_masm.asm',
],
}],
['_toolset == "host" and host_arch == "arm64" or _toolset == "target" and target_arch=="arm64"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/arm64/push_registers_masm.S',
],
}],
],
}],
], ],
}, },
}, # v8_heap_base }, # v8_heap_base