Skip to content

DirectXShaderCompiler vendored in SDL_shadercross fails to build with Xcode 26.4 / Apple clang 21 on macOS #8306

@tsukinoko-kun

Description

@tsukinoko-kun

Hi,
I am hitting a build failure in the vendored external/DirectXShaderCompiler when building SDL_shadercross on macOS with the current Xcode. I have replaced the with the current head from microsoft/DirectXShaderCompiler but that did not fix the issue.

Environment:

  • macOS on Apple Silicon
  • Xcode 26.4
  • Apple clang 21.0.0
  • SDK: MacOSX26.4.sdk
  • SDL_shadercross 3a31448
  • DirectXShaderCompiler 67a8e24

I have SDL_shadercross vendored in my game engine. The build fails while compiling vendor/SDL_shadercross/external/DirectXShaderCompiler/... sources, with errors coming from include/llvm/ADT/StringRef.h.
Representative error:

/Users/frank/Projects/bms/adventurer/vendor/SDL_shadercross/external/DirectXShaderCompiler/include/llvm/ADT/StringRef.h:579:10: error: 'is_nothrow_constructible' cannot be specialized: Users are not allowed to specialize this standard library entity [-Winvalid-specialization]
  579 |   struct is_nothrow_constructible <std::string, llvm::StringRef>
      |          ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.4.sdk/usr/include/c++/v1/__type_traits/is_nothrow_constructible.h:23:8: note: marked '_Clang::no_specializations' here
   23 | struct _LIBCPP_NO_SPECIALIZATIONS is_nothrow_constructible
      | 

I see the same error for:

  • is_nothrow_constructible<std::string, llvm::StringRef>
  • is_nothrow_constructible<std::string, llvm::StringRef &>
  • is_nothrow_constructible<std::string, const llvm::StringRef &>
    This appears to be caused by newer libc++ in Xcode 26.4 rejecting specialization of this standard library trait.

Full log: https://pastebin.com/XKX67V5N

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions