Skip to content

Commit 1ce251f

Browse files
LegNeatoclaude
andcommitted
Guard source/table.h include to fix Bazel build
In standalone Rust builds (like Bazel), the generated headers that source/table.h transitively includes are not available. Guard the include and the dispatch_context_message implementation with SPIRV_RUST_TARGET_ENV since message dispatch to C++ consumers is only needed in CMake integration builds where the generated headers exist. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent c55d5cc commit 1ce251f

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

rust/spirv-tools-ffi/src/context_bridge.cc

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,16 @@
55

66
#include "spirv-tools-ffi/src/lib.rs.h"
77
#include "rust/cxxbridge/spirv-tools-ffi/src/context_bridge.h"
8-
#include "source/table.h"
98
#include "spirv-tools/libspirv.h"
109

10+
// When building with Rust target env (CMake integration), we have access to
11+
// internal headers for spv_context_t definition. In standalone Rust builds
12+
// (like Bazel), we don't need the full context definition since message
13+
// dispatch to C++ consumers isn't used.
14+
#ifdef SPIRV_RUST_TARGET_ENV
15+
#include "source/table.h"
16+
#endif
17+
1118
// When building with Rust target env, we don't need C++ fallback implementations
1219
// since Rust provides them. This avoids link dependencies on C++ SPIRV-Tools
1320
// libraries (libspirv.hpp, reducer.h) that would create circular dependencies.
@@ -46,6 +53,9 @@ spv_position_t ToSpvPosition(MessagePosition position) {
4653
void dispatch_context_message(std::uintptr_t context_ptr, std::uint32_t level,
4754
bool has_source, rust::Str source,
4855
MessagePosition position, rust::Str message) {
56+
#ifdef SPIRV_RUST_TARGET_ENV
57+
// In CMake builds with Rust target env, we have access to spv_context_t
58+
// definition and can dispatch messages to C++ consumers.
4959
auto* context = reinterpret_cast<spv_context>(context_ptr);
5060
if (context == nullptr || !context->consumer) {
5161
return;
@@ -61,6 +71,16 @@ void dispatch_context_message(std::uintptr_t context_ptr, std::uint32_t level,
6171

6272
context->consumer(static_cast<spv_message_level_t>(level), source_ptr,
6373
ToSpvPosition(position), message_storage.c_str());
74+
#else
75+
// In standalone Rust builds (like Bazel), message dispatch to C++ consumers
76+
// is not supported since we don't have access to generated headers.
77+
(void)context_ptr;
78+
(void)level;
79+
(void)has_source;
80+
(void)source;
81+
(void)position;
82+
(void)message;
83+
#endif
6484
}
6585

6686
AssembleResult assemble_text_with_context(std::size_t context_ptr,

0 commit comments

Comments
 (0)