Skip to content
File

Blob: patches/v8/0003-Allow-Windows-builds-under-Bazel.patch

4.6 KB
1From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2From: Brendan Coll <bcoll@cloudflare.com>
3Date: Thu, 16 Mar 2023 11:56:10 +0000
4Subject: Allow Windows builds under Bazel
5 
6Signed-off-by: James M Snell <jsnell@cloudflare.com>
7 
8diff --git a/BUILD.bazel b/BUILD.bazel
9index ae9c73762bef46c302a10a85076cbe913617965a..f79d7f3e434a126daa41b8effd6e98f0d487e773 100644
10--- a/BUILD.bazel
11+++ b/BUILD.bazel
12@@ -4107,6 +4107,8 @@ filegroup(
13 "@v8//bazel/config:is_inline_asm_x64": ["src/heap/base/asm/x64/push_registers_asm.cc"],
14 "@v8//bazel/config:is_inline_asm_arm": ["src/heap/base/asm/arm/push_registers_asm.cc"],
15 "@v8//bazel/config:is_inline_asm_arm64": ["src/heap/base/asm/arm64/push_registers_asm.cc"],
16+ "@v8//bazel/config:is_windows_clang_asm_x64": ["src/heap/base/asm/x64/push_registers_asm.cc"],
17+ "@v8//bazel/config:is_windows_clang_asm_arm64": ["src/heap/base/asm/arm64/push_registers_asm.cc"],
18 "@v8//bazel/config:is_inline_asm_s390x": ["src/heap/base/asm/s390/push_registers_asm.cc"],
19 "@v8//bazel/config:is_inline_asm_riscv64": ["src/heap/base/asm/riscv64/push_registers_asm.cc"],
20 "@v8//bazel/config:is_inline_asm_ppc64le": ["src/heap/base/asm/ppc/push_registers_asm.cc"],
21diff --git a/bazel/config/BUILD.bazel b/bazel/config/BUILD.bazel
22index 17e379b8e27baaa33f58ee852cfd919a9b39d729..7c2154b8ac2e817abebf89f5fa7d30354591d381 100644
23--- a/bazel/config/BUILD.bazel
24+++ b/bazel/config/BUILD.bazel
25@@ -270,6 +270,7 @@ selects.config_setting_group(
26 match_all = [
27 ":is_windows",
28 ":is_x64",
29+ ":is_compiler_default",
30 ],
31 )
32
33@@ -278,6 +279,7 @@ selects.config_setting_group(
34 match_all = [
35 ":is_windows",
36 ":is_ia32",
37+ ":is_compiler_default",
38 ],
39 )
40
41@@ -286,6 +288,34 @@ selects.config_setting_group(
42 match_all = [
43 ":is_windows",
44 ":is_arm64",
45+ ":is_compiler_default",
46+ ],
47+)
48+
49+selects.config_setting_group(
50+ name = "is_windows_clang_asm_x64",
51+ match_all = [
52+ ":is_windows",
53+ ":is_x64",
54+ ":is_compiler_clang_cl",
55+ ],
56+)
57+
58+selects.config_setting_group(
59+ name = "is_windows_clang_asm_ia32",
60+ match_all = [
61+ ":is_windows",
62+ ":is_ia32",
63+ ":is_compiler_clang_cl",
64+ ],
65+)
66+
67+selects.config_setting_group(
68+ name = "is_windows_clang_asm_arm64",
69+ match_all = [
70+ ":is_windows",
71+ ":is_arm64",
72+ ":is_compiler_clang_cl",
73 ],
74 )
75
76@@ -319,6 +349,13 @@ config_setting(
77 },
78 )
79
80+config_setting(
81+ name = "is_compiler_clang_cl",
82+ flag_values = {
83+ "@bazel_tools//tools/cpp:compiler": "clang-cl",
84+ },
85+)
86+
87 selects.config_setting_group(
88 name = "is_clang",
89 match_any = [
90diff --git a/bazel/defs.bzl b/bazel/defs.bzl
91index bbe1495f0b3044143df9de453d75219f92134ec2..233985667e85b6c06ccfafd94a659879526603e9 100644
92--- a/bazel/defs.bzl
93+++ b/bazel/defs.bzl
94@@ -125,6 +125,24 @@ def _default_args():
95 "-Wno-non-virtual-dtor",
96 "-isystem .",
97 ],
98+ "@v8//bazel/config:is_windows": [
99+ ## From BUILD.gn: `if (is_win)`
100+ "/wd4245",
101+ "/wd4267",
102+ "/wd4324",
103+ "/wd4701",
104+ "/wd4702",
105+ "/wd4703",
106+ "/wd4709",
107+ "/wd4714",
108+ "/wd4715",
109+ "/wd4718",
110+ "/wd4723",
111+ "/wd4724",
112+ "/wd4800",
113+ ## From BUILD.icu
114+ "/wd4005",
115+ ],
116 "//conditions:default": [],
117 }) + select({
118 "@v8//bazel/config:is_clang": [
119@@ -174,13 +192,23 @@ def _default_args():
120 ],
121 "//conditions:default": [
122 ],
123+ }) + select({
124+ "@v8//bazel/config:is_compiler_clang_cl": [
125+ "-Wno-invalid-offsetof",
126+ ],
127+ "//conditions:default": [],
128 }),
129 includes = ["include"],
130 linkopts = select({
131 "@v8//bazel/config:is_windows": [
132+ # Increase the initial stack size. The default is 1MB, this is 2MB. This
133+ # applies only to executables and shared libraries produced by V8 since
134+ # ldflags are not pushed to dependants.
135+ "/STACK:2097152",
136 "Winmm.lib",
137 "DbgHelp.lib",
138 "Advapi32.lib",
139+ "Shell32.lib",
140 ],
141 "@v8//bazel/config:is_macos": ["-pthread"],
142 "//conditions:default": ["-Wl,--no-as-needed -ldl -latomic -pthread"],