[UE 5.8.3][Build] Every build regenerates its makefile ("Invalidating makefile ... (ispc deleted)") because UBT depends on an ISPC compiler the installed engine does not ship

Summary

With the installed (launcher) UE 5.8.3 on Mac, every UnrealBuildTool build of every target logs

Invalidating makefile for TARGET (ispc deleted)

and rebuilds its makefile from scratch, even when nothing changed. UBT’s log says: “/Users/Shared/Epic Games/UE_5.8/Engine/Source/ThirdParty/Intel/ISPC/bin/Mac/ispc has been deleted since makefile was built.”

Cause: ISPCToolChain.GetExternalDependencies (Engine/Source/Programs/UnrealBuildTool/ToolChain/ISPCToolChain.cs) adds GetISPCHostCompilerPath(…) to the makefile’s external dependencies unconditionally. The installed engine ships no Engine/Source/ThirdParty/Intel/ISPC/bin directory at all (only ISPC.tps and IntelISPC.Build.cs), so TargetMakefile’s validity check always finds that dependency missing. GetVersionInfo in the same class already guards on TargetRules.bCompileISPC; GetExternalDependencies does not.

Impact: each build pays a full makefile regeneration. It does not by itself force recompiles. A no-change Editor-target build still reports “Target is up to date”, because the regenerated response files are identical.

Suggested fix: only add the ISPC compiler (and bytecode compiler) as external dependencies when bCompileISPC is set and the file exists. Or ship the ISPC binaries in the installed build if they are expected there.

What Type of Bug are you experiencing?

Foundation (C++ Tools, Profiling, & Pipeline)

Steps to Reproduce

  1. Installed UE 5.8.3 on a Mac. Any C++ project.
  2. Build any target twice with no changes, e.g. Engine/Build/BatchFiles/Mac/Build.sh PROJECTEditor Mac Development PATH_TO/PROJECT.uproject
  3. Both builds print “Invalidating makefile for PROJECTEditor (ispc deleted)”.
  4. ls Engine/Source/ThirdParty/Intel/ISPC/ : there is no bin directory.

Expected Result

A no-change build reuses its cached makefile (“Target is up to date” without a makefile rebuild).

Observed Result

Every build of every target invalidates and regenerates the makefile with reason “ispc deleted”. Confirmed by creating an empty placeholder file at ISPC/bin/Mac/ispc: the “ispc deleted” invalidation stops. (We removed the placeholder afterwards.) Tested on UE 5.8.3 (launcher build), macOS 27.0.1, Apple Silicon. Windows not checked.

Affects Versions

5.8

Platform(s)

Mac

Additional Notes

Found while investigating a separate Mac Game-target full-recompile loop, reported here: [UE 5.8.3][Build] Mac: every Game-target build recompiles everything, because the ApplePostBuildSync step rewrites the build's shared-PCH .rsp files with different include paths

1 Like