Cross Compiling for Linux-ARM/Raspberry PI 3

I have tried this for various versions of Unreal and can really using Anything between 4.15 - 4.18
I started by following:
https://wiki.unrealengine.com/Compiling_For_Linux

But its really unclear where to start. So there is clang-3.5.0-arm but it seems like that is for Unreal version <= 4.8

So instead started to follow the directions to build my own to function with a version of unreal my game works with following these directions
https://wiki.unrealengine.com/Building_Linux_cross-toolchain

So since I am currently using Unreal version 4.18 I download v10 clang 5.0.0-based. I copy this to my ARM device which is running Ubuntu 16.04 (I thought that version was recommended somewhere but I cant find it any more)

I install all the required packages and unzip. The I change directories to build/scripts and run the command /BuildCrossToolchain.sh
Turns out this file has some windows line feeds that prevent it from building. I dos2unix that file. Then I get an issue further down the line with a .config.2 file having a ‘/r’. Seems like that file is pulled from a repo or something

My question is am I even heading in the right direction? Is this the correct first step? What am I even building , it seems like its building a special version of gcc? or is this clang I am building? Is there a prebuilt version of this somewhere?

[Update] with help from RCL

  • Download V10 clang from description for 4.18
  • Unzip it into a stable location (eg c:\dev)
  • Set environment variable LINUX_MULTIARCH_ROOT ( EG c:\dev\v10_clang-5.0.0-centos7) This directory has the sub folder arm-unknown-linux-gnueabih (this will be refrenced later)
  • In your Unreal project edit /Config/DefaultEngine.ini add or modify the value
[/Script/LinuxTargetPlatform.LinuxTargetSettings]
TargetArchitecture=ArmUnknownLinuxGnueabihf
  • Edit your Engine seetings UEBUildLinux.cs (eg C:\Program Files\Epic Games\UE_4.18\Engine\Source\Programs\UnrealBuildTool\Platform\Linux\UEBuildLinux.cs)
static private string DefaultArchitecture = "x86_64-unknown-linux-gnu"; 

and un-commenting the linux-arm architecture line just below it:

//static private string DefaultArchitecture = "arm-unknown-linux-gnueabihf";

this is the path for the sub-directory referenced byLINUX_MULTIARCH_ROOT

  • Back in your project directory regenerate your sln file Right-click on your .uproject and select “Generate Visual Studio Project Files”