I tried to compile the code on FreeBSD, and this line in Engine/Source/Runtime/Core/Public/Linux/LinuxPlatformTLS.h is a problem:
#else
// better than nothing...
return static_cast< uint32 >(pthread_self());
#endif
When there is no gettid in OS, thread id should be made the same size as the pointer. The only way around is to generate the id manually, store it in TLS storage, etc, this is rather a hassle, or a hack.