Bug Report: Engine compilation fails on macOS due to strict implicit conversion warnings
Environment
- OS: macOS 26.4.1 (Build 25E253)
- Xcode: 26.4 (Build 17E192)
- Clang: Apple clang version 21.0.0 (clang-2100.0.123.102)
- UE: Unreal Engine 5.7.4
Steps to Reproduce
Execute the Unreal Build Tool script to compile an Engine program (such as CrashReportClient) on macOS using the latest Xcode/Clang version:
./Engine/Build/BatchFiles/RunUBT.sh CrashReportClient Mac Development
Expected Behavior
The Engine source code should compile successfully without any strict compiler warnings failing the build.
Actual Behavior
The build fails because -Werror interacts with new implicit conversion warnings introduced in newer versions of Clang, promoting them to terminal errors. These warnings—specifically -Wimplicit-int-float-conversion and -Wcharacter-conversion—are not properly suppressed or mapped inside CppCompileWarnings.cs.
Logs
[1/47] Compile [Apple] Module.XmlParser.cpp
In file included from <WORKSPACE_ROOT>/Engine/Intermediate/Build/Mac/arm64/CrashReportClient/Development/XmlParser/Module.XmlParser.cpp:2:
In file included from <WORKSPACE_ROOT>/Engine/Source/Runtime/XmlParser/Private/FastXml.cpp:6:
In file included from <WORKSPACE_ROOT>/Engine/Source/Runtime/Core/Public/Misc/FeedbackContext.h:12:
In file included from <WORKSPACE_ROOT>/Engine/Source/Runtime/Core/Public/HAL/PlatformTime.h:7:
In file included from <WORKSPACE_ROOT>/Engine/Source/Runtime/Core/Public/Mac/MacPlatformTime.h:5:
<WORKSPACE_ROOT>/Engine/Source/Runtime/Core/Public/Apple/ApplePlatformTime.h:36:10: error: implicit conversion from 'uint64' (aka 'unsigned long long') to 'double' may lose precision [-Werror,-Wimplicit-int-float-conversion]
[2/47] Compile [Apple] Module.HTTP.cpp
In file included from <WORKSPACE_ROOT>/Engine/Intermediate/Build/Mac/arm64/CrashReportClient/Development/HTTP/Module.HTTP.cpp:14:
<WORKSPACE_ROOT>/Engine/Source/Runtime/Online/HTTP/Private/GenericPlatform/GenericPlatformHttp.cpp:401:31: error: implicit conversion from 'const UTF8CHAR' (aka 'const char8_t') to 'TCHAR' (aka 'char16_t') may change the meaning of the represented code unit [-Werror,-Wcharacter-conversion]
Additional Context
Because CrashReportClient is an Engine program, it evaluates its own target file (CrashReportClient.Target.cs) and bypasses any project-level compiler overrides. The build relies entirely on the default UBT warning configuration, which currently does not suppress -Werror=implicit-int-float-conversion or -Werror=character-conversion on this Clang toolchain version.