You don’t need to build your own cross-toolchain anymore - since version 8 of the toolchain, ARM and AArch64 sysroots are included in the zip (you can examine its contents), you just need to set it up using LINUX_MULTIARCH_ROOT variable and not deprecated LINUX_ROOT one. Edit your project’s DefaultEngine.ini and add (or change, if it exists) this section:
then re-build the Linux binaries (from scratch). You may encounter compiler errors since some targets will try to build ShaderCompileWorker first - please ignore ShaderCompileWorker ones as you don’t need SCW on the device.
I have tried this for various versions of Unreal and can really using Anything between 4.15 - 4.18
I started by following:
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
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
Thanks for the help! Ok this seems to change things now I am getting errors like this below, did I do something else wrong? (I added all my steps to the main question above if that helps but I referenced c drive instead of d to help others)
UATHelper: Packaging (Linux): [2/24] Compile PCH.UELinkerFixups.h
UATHelper: Packaging (Linux): d:\dev\TestProject 4.18\Intermediate\Build\Linux\48086BB4\TestProject\Development\UELinkerFixups\PCH.UELinkerFixups.h(2,10): error: non-portable path to file ‘“d\dev\TestProject 4.18\Intermediate\Build\Linux\48086BB4\UE4\Development\UELinkerFixupsName.h”’; specified path differs in case from file name on disk [-Werror,-Wnonportable-include-path]
Make sure you use consistent case in all your disk paths, in #include or otherwise.
Please examine the reported path and see if there’s something in it that is spelled differently in the actual file system, e.g. Dev instead of dev.