Skip to content

Commit 5d03577

Browse files
laramielcopybara-github
authored andcommitted
update grpc and protobuf
update bazel_to_cmake to handle new protobuf bazel link targets. update bazel_to_cmake to handle per-file copts for building grpc. update bazel version PiperOrigin-RevId: 829488928 Change-Id: I9dce4f1b381c08d409fa0039cabcdfb24e3a988f
1 parent 8b36073 commit 5d03577

File tree

30 files changed

+1074
-531
lines changed

30 files changed

+1074
-531
lines changed

.bazelrc

Lines changed: 42 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,28 @@ build --platform_mappings=tools/bazel_platforms/platform_mappings
1515
build --define=absl=1
1616
build --define=protobuf_allow_msvc=true
1717

18+
# ----------------------------------------
1819
# Configure C++17 mode
19-
#
20-
# Note: We can't use --cxxopt because of
21-
# https://github.com/bazelbuild/bazel/issues/15550
22-
build:gcc_or_clang --per_file_copt=.*\\.h$,.*\\.cc$,.*\\.cpp$@-std=c++17,-fsized-deallocation
23-
build:gcc_or_clang --host_per_file_copt=.*\\.h$,.*\\.cc$,.*\\.cpp$@-std=c++17,-fsized-deallocation
20+
# ----------------------------------------
21+
22+
build:gcc_or_clang --cxxopt=-std=c++17
23+
build:gcc_or_clang --host_cxxopt=-std=c++17
24+
25+
build:gcc_or_clang --cxxopt=-fsized-deallocation
26+
build:gcc_or_clang --host_cxxopt=-fsized-deallocation
27+
28+
build:msvc --cxxopt=/std:c++17
29+
build:msvc --host_cxxopt=/std:c++17
30+
31+
# Use sized deallocation for C++ objects
32+
build:msvc --cxxopt=/Zc:sizedDealloc
33+
build:msvc --host_cxxopt=/Zc:sizedDealloc
2434

25-
build:msvc --per_file_copt=.*\\.h$,.*\\.cc$,.*\\.cpp$@/std:c++17
26-
build:msvc --host_per_file_copt=.*\\.h$,.*\\.cc$,.*\\.cpp$@/std:c++17
35+
# Make MSVC conform to the C++ standard regarding hidden friends
36+
build:msvc --cxxopt=/Zc:hiddenFriend
37+
build:msvc --host_cxxopt=/Zc:hiddenFriend
38+
39+
# ----------------------------------------
2740

2841
# protobuf/upb has some functions where errors are incorrectly raised:
2942
# https://github.com/protocolbuffers/upb/blob/main/upb/message/accessors_internal.h
@@ -56,7 +69,11 @@ build:msvc --host_per_file_copt=grpc/.*\\.cc$@/wd4244
5669
build:msvc --per_file_copt=external/xds/.*\\.cc$@/wd4244
5770
build:msvc --host_per_file_copt=external/xds/.*\\.cc$@/wd4244
5871

59-
# Use colors
72+
# ----------------------------------------
73+
# Disable warnings
74+
# ----------------------------------------
75+
76+
# Use colors for diagnostics
6077
build:gcc_or_clang --copt=-fdiagnostics-color=always
6178
build:gcc_or_clang --host_copt=-fdiagnostics-color=always
6279

@@ -86,6 +103,10 @@ build:gcc_or_clang --host_copt='-Wno-unknown-warning-option'
86103
build:gcc_or_clang --copt='-Wno-stringop-overflow'
87104
build:gcc_or_clang --host_copt='-Wno-stringop-overflow'
88105

106+
# Disable warning regarding `msvc::no_unique_address`
107+
build:msvc --copt=/wd4848
108+
build:msvc --host_copt=/wd4848
109+
89110
# ----------------------------------------
90111
# Linux and FreeBSD configuration settings
91112
# ----------------------------------------
@@ -131,29 +152,30 @@ build:windows --config=windows_common
131152
build:windows_common --features=archive_param_file
132153
build:windows_common --features=linker_param_file
133154
build:windows_common --features=compiler_param_file
155+
build:windows_common --enable_runfiles=true
156+
build:windows_common --build_python_zip=false
157+
158+
# ------------------------------
159+
# MINGW settings
160+
# ------------------------------
134161

135-
# Define mingw configuration.
136-
#
137162
# Unfortunately, with `--incompatible_enable_cc_toolchain_resolution`
138163
# specified, it is inconvenient to use mingw.
139164
#
140165
# https://bazel.build/configure/windows#clang
141166
build:windows_x86_64_mingw --noenable_platform_specific_config --config=windows_common --config=gcc_or_clang
142167
build:windows_x86_64_mingw --extra_toolchains=@local_config_cc//:cc-toolchain-x64_windows_mingw
143168
build:windows_x86_64_mingw --extra_execution_platforms=//tools/bazel_platforms:windows_x86_64_mingw
169+
144170
# Prevent "file too big" / "too many sections" errors.
145-
build:windows_x86_64_mingw --copt=-Wa,-mbig-obj
146-
build:windows_x86_64_mingw --host_copt=-Wa,-mbig-obj
171+
build:windows_x86_64_mingw --copt='-Wa,-mbig-obj'
172+
build:windows_x86_64_mingw --host_copt='-Wa,-mbig-obj'
173+
147174
# mingw https://sourceforge.net/p/mingw-w64/bugs/134/
148175
build:windows_x86_64_mingw --copt=-D_NO_W32_PSEUDO_MODIFIERS
149176
build:windows_x86_64_mingw --host_copt=-D_NO_W32_PSEUDO_MODIFIERS
150177

151-
build:windows_common --enable_runfiles=true --build_python_zip=false
178+
# optimize chttp2 for "file too big" errors for grpc
179+
build:windows_x86_64_mingw --per_file_copt=grpc/src/core/.*\\.cc$@-O2
180+
build:windows_x86_64_mingw --host_per_file_copt=grpc/src/core/.*\\.cc$@-O2
152181

153-
# Disable warning regarding `msvc::no_unique_address`
154-
build:msvc --copt=/wd4848
155-
build:msvc --host_copt=/wd4848
156-
157-
# Make MSVC conform to the C++ standard regarding hidden friends
158-
build:msvc --copt=/Zc:hiddenFriend
159-
build:msvc --host_copt=/Zc:hiddenFriend

.bazelversion

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8.4.0
1+
8.4.2

CMakeLists.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,17 @@ set(CMAKE_CXX_STANDARD 17)
3838
if(PROJECT_IS_TOP_LEVEL)
3939
include(CTest)
4040
enable_testing()
41+
42+
# Use lld if it is available.
43+
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
44+
find_program(LLD_EXECUTABLE lld)
45+
if (LLD_EXECUTABLE)
46+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld")
47+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=lld")
48+
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=lld")
49+
endif()
50+
endif()
51+
4152
else()
4253
# Exclude targets from ALL when built as a sub-project.
4354
set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL TRUE)
@@ -77,6 +88,13 @@ if(MSVC AND CMAKE_CXX_COMPILER_LAUNCHER MATCHES "sccache")
7788
endif()
7889
endif()
7990

91+
# See bazelrc for this
92+
if(MINGW)
93+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,-mbig-obj")
94+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wa,-mbig-obj")
95+
endif()
96+
97+
8098
include(bazel_to_cmake)
8199

82100
bazel_to_cmake(

tensorstore/internal/aws/aws_api.cc

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ constexpr int kLogBufSize = 2000;
5454
// Hook AWS logging into absl logging.
5555
ABSL_CONST_INIT internal_log::VerboseFlag aws_logging("aws");
5656

57-
int absl_log(aws_logger *logger, aws_log_level log_level,
58-
aws_log_subject_t subject, const char *format, ...) {
57+
int absl_log(aws_logger* logger, aws_log_level log_level,
58+
aws_log_subject_t subject, const char* format, ...) {
5959
absl::LogSeverity severity = absl::LogSeverity::kInfo;
6060
if (log_level <= AWS_LL_FATAL) {
6161
severity = absl::LogSeverity::kFatal;
@@ -74,12 +74,12 @@ int absl_log(aws_logger *logger, aws_log_level log_level,
7474
// AWS Logging doesn't provide a way to get the filename or line number,
7575
// instead use the aws subject name as the filename and the subject itself as
7676
// the line number.
77-
const char *subject_name = aws_log_subject_name(subject);
77+
const char* subject_name = aws_log_subject_name(subject);
7878
bool is_valid_subject =
7979
(subject_name != nullptr && strcmp(subject_name, "Unknown") != 0);
8080

8181
char buffer[kLogBufSize];
82-
char *buf = buffer;
82+
char* buf = buffer;
8383
size_t size = sizeof(buffer);
8484

8585
va_list argptr;
@@ -94,9 +94,10 @@ int absl_log(aws_logger *logger, aws_log_level log_level,
9494
return AWS_OP_SUCCESS;
9595
};
9696

97-
enum aws_log_level absl_get_log_level(aws_logger *logger,
97+
enum aws_log_level absl_get_log_level(aws_logger* logger,
9898
aws_log_subject_t subject) {
99-
uintptr_t lvl = reinterpret_cast<uintptr_t>(logger->p_impl);
99+
uintptr_t lvl;
100+
memcpy(&lvl, &logger->p_impl, sizeof(lvl));
100101
if (lvl != 0) {
101102
return static_cast<enum aws_log_level>(lvl - 1);
102103
}
@@ -110,28 +111,29 @@ enum aws_log_level absl_get_log_level(aws_logger *logger,
110111
return AWS_LL_INFO;
111112
}
112113

113-
int absl_set_log_level(aws_logger *logger, aws_log_level lvl) {
114-
if (lvl == AWS_LL_NONE) {
115-
reinterpret_cast<uintptr_t &>(logger->p_impl) = 0;
116-
} else {
117-
reinterpret_cast<uintptr_t &>(logger->p_impl) =
118-
1 + static_cast<uintptr_t>(lvl);
114+
int absl_set_log_level(aws_logger* logger, aws_log_level lvl) {
115+
uintptr_t l = 0;
116+
if (lvl != AWS_LL_NONE) {
117+
l = 1 + static_cast<uintptr_t>(lvl);
119118
}
119+
memcpy(&logger->p_impl, &l, sizeof(l));
120120
return AWS_OP_SUCCESS;
121121
}
122122

123-
void absl_clean_up(aws_logger *logger) { (void)logger; }
123+
void absl_clean_up(aws_logger*) {
124+
// noop
125+
}
124126

125127
// Some C++ compiler targets don't like designated initializers in C++, until
126128
// they are supported static_assert() on the offsets
127129
static_assert(offsetof(aws_logger_vtable, log) == 0);
128-
static_assert(offsetof(aws_logger_vtable, get_log_level) == sizeof(void *));
129-
static_assert(offsetof(aws_logger_vtable, clean_up) == 2 * sizeof(void *));
130-
static_assert(offsetof(aws_logger_vtable, set_log_level) == 3 * sizeof(void *));
130+
static_assert(offsetof(aws_logger_vtable, get_log_level) == sizeof(void*));
131+
static_assert(offsetof(aws_logger_vtable, clean_up) == 2 * sizeof(void*));
132+
static_assert(offsetof(aws_logger_vtable, set_log_level) == 3 * sizeof(void*));
131133

132134
static_assert(offsetof(aws_logger, vtable) == 0);
133-
static_assert(offsetof(aws_logger, allocator) == sizeof(void *));
134-
static_assert(offsetof(aws_logger, p_impl) == 2 * sizeof(void *));
135+
static_assert(offsetof(aws_logger, allocator) == sizeof(void*));
136+
static_assert(offsetof(aws_logger, p_impl) == 2 * sizeof(void*));
135137

136138
ABSL_CONST_INIT aws_logger_vtable s_absl_vtable{
137139
/*.log=*/absl_log,
@@ -164,15 +166,15 @@ class AwsApi {
164166
aws_auth_library_init(allocator_);
165167
}
166168

167-
aws_allocator *allocator() { return allocator_; }
169+
aws_allocator* allocator() { return allocator_; }
168170

169-
aws_client_bootstrap *client_bootstrap() ABSL_LOCKS_EXCLUDED(mutex_) {
171+
aws_client_bootstrap* client_bootstrap() ABSL_LOCKS_EXCLUDED(mutex_) {
170172
absl::MutexLock l(mutex_);
171173
init_client_bootstrap();
172174
return client_bootstrap_;
173175
}
174176

175-
aws_tls_ctx *tls_ctx() ABSL_LOCKS_EXCLUDED(mutex_) {
177+
aws_tls_ctx* tls_ctx() ABSL_LOCKS_EXCLUDED(mutex_) {
176178
absl::MutexLock l(mutex_);
177179
init_tls_ctx();
178180
return tls_ctx_;
@@ -224,27 +226,27 @@ class AwsApi {
224226
}
225227

226228
absl::Mutex mutex_;
227-
aws_allocator *allocator_ = nullptr;
228-
aws_event_loop_group *event_loop_group_ ABSL_GUARDED_BY(mutex_) = nullptr;
229-
aws_host_resolver *resolver_ ABSL_GUARDED_BY(mutex_) = nullptr;
230-
aws_client_bootstrap *client_bootstrap_ ABSL_GUARDED_BY(mutex_) = nullptr;
231-
aws_tls_ctx *tls_ctx_ ABSL_GUARDED_BY(mutex_) = nullptr;
229+
aws_allocator* allocator_ = nullptr;
230+
aws_event_loop_group* event_loop_group_ ABSL_GUARDED_BY(mutex_) = nullptr;
231+
aws_host_resolver* resolver_ ABSL_GUARDED_BY(mutex_) = nullptr;
232+
aws_client_bootstrap* client_bootstrap_ ABSL_GUARDED_BY(mutex_) = nullptr;
233+
aws_tls_ctx* tls_ctx_ ABSL_GUARDED_BY(mutex_) = nullptr;
232234
};
233235

234-
AwsApi &GetAwsApi() {
236+
AwsApi& GetAwsApi() {
235237
static absl::NoDestructor<AwsApi> aws_api;
236238
return *aws_api;
237239
}
238240

239241
} // namespace
240242

241-
aws_allocator *GetAwsAllocator() { return GetAwsApi().allocator(); }
243+
aws_allocator* GetAwsAllocator() { return GetAwsApi().allocator(); }
242244

243-
aws_client_bootstrap *GetAwsClientBootstrap() {
245+
aws_client_bootstrap* GetAwsClientBootstrap() {
244246
return GetAwsApi().client_bootstrap();
245247
}
246248

247-
aws_tls_ctx *GetAwsTlsCtx() { return GetAwsApi().tls_ctx(); }
249+
aws_tls_ctx* GetAwsTlsCtx() { return GetAwsApi().tls_ctx(); }
248250

249251
} // namespace internal_aws
250252
} // namespace tensorstore

third_party/abseil_cpp/workspace.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ ABSL_CMAKE_MAPPING = {
115115
"//absl/strings:str_format": "absl::str_format",
116116
"//absl/strings:string_view": "absl::string_view",
117117
"//absl/strings:strings": "absl::strings",
118+
"//absl/strings:charset": "absl::charset",
118119
"//absl/synchronization:synchronization": "absl::synchronization",
119120
"//absl/time:civil_time": "absl::civil_time",
120121
"//absl/time:time_zone": "absl::time_zone",

third_party/com_google_protobuf/cmake_extra.BUILD.bazel

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,19 @@ WELL_KNOWN_TYPES = [
1717
]
1818

1919
_SUFFIXES = [
20-
"__cpp_library",
21-
"__upb_library",
22-
"__upbdefs_library",
23-
"__minitable_library",
20+
"_proto__cpp_library",
21+
"_proto__upb_library",
22+
"_proto__upbdefs_library",
23+
"_proto__minitable_library",
2424
]
2525

26+
# For CMake, bazel_to_cmake needs to expose the internal generated targets.
2627
[
2728
alias(
28-
name = x + "_proto" + y,
29-
actual = "//src/google/protobuf:" + x + "_proto" + y,
29+
name = "//:" + x + y,
30+
actual = "//src/google/protobuf:" + x + y,
3031
)
31-
for x in WELL_KNOWN_TYPES
32+
for x in WELL_KNOWN_TYPES + ["descriptor"]
3233
for y in _SUFFIXES
3334
]
3435

@@ -40,20 +41,11 @@ _SUFFIXES = [
4041
for x in WELL_KNOWN_TYPES
4142
]
4243

43-
# Aliases for :descriptor_proto
44-
[
45-
alias(
46-
name = "descriptor_proto" + y,
47-
actual = "//src/google/protobuf:descriptor_proto" + y,
48-
)
49-
for y in _SUFFIXES
50-
]
51-
5244
# Aliases for :compiler_plugin_proto
5345
[
5446
alias(
55-
name = "compiler_plugin_proto" + y,
56-
actual = "//src/google/protobuf/compiler:plugin_proto" + y,
47+
name = "compiler_plugin" + y,
48+
actual = "//src/google/protobuf/compiler:plugin" + y,
5749
)
5850
for y in _SUFFIXES
5951
]
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
diff -Nur protobuf-33.0/build_defs/BUILD.bazel b/build_defs/BUILD.bazel
2+
--- protobuf-33.0/build_defs/BUILD.bazel 2025-10-15 18:33:29.000000000 +0000
3+
+++ b/build_defs/BUILD.bazel 2025-11-04 07:22:18.190353255 +0000
4+
@@ -23,6 +23,11 @@
5+
value = "clang-cl",
6+
)
7+
8+
+create_compiler_config_setting(
9+
+ name = "config_mingw",
10+
+ value = "mingw-gcc",
11+
+)
12+
+
13+
platform(
14+
name = "x64_windows-clang-cl",
15+
constraint_values = [
16+
diff -Nur protobuf-33.0/build_defs/cpp_opts.bzl b/build_defs/cpp_opts.bzl
17+
--- protobuf-33.0/build_defs/cpp_opts.bzl 2025-10-15 18:33:29.000000000 +0000
18+
+++ b/build_defs/cpp_opts.bzl 2025-11-04 07:23:08.702309825 +0000
19+
@@ -35,15 +35,15 @@
20+
"-ignore:4221",
21+
"Shell32.lib",
22+
],
23+
- "@platforms//os:macos": [
24+
+ "//build_defs:config_mingw": [
25+
+ "-ldbghelp",
26+
"-lpthread",
27+
"-lm",
28+
- "-framework CoreFoundation",
29+
],
30+
- "@platforms//os:windows": [
31+
- "-ldbghelp",
32+
+ "@platforms//os:macos": [
33+
"-lpthread",
34+
"-lm",
35+
+ "-framework CoreFoundation",
36+
],
37+
"//conditions:default": [
38+
"-lpthread",

0 commit comments

Comments
 (0)