Coder Social home page Coder Social logo

Add Linux support about facefx-ue4 HOT 6 OPEN

facefx avatar facefx commented on June 25, 2024
Add Linux support

from facefx-ue4.

Comments (6)

jcredmond avatar jcredmond commented on June 25, 2024

There is still no Epic Launcher or marketplace support for Linux, so we still cannot build and distribute a pre-built plugin for Linux.

It looks like Epic has settled on clang 5.0.0+ for Linux, so we can move the FaceFX Runtime Linux tool chain to clang 5+ and hopefully create a .lib that can be linked in to UE4 when compiling the UE4 plugin from source on Linux.

from facefx-ue4.

jcredmond avatar jcredmond commented on June 25, 2024

Epic's documentation is pretty bad. The "cross compilation" documentation says clang 5.0.0, but the actual Linux build instructions in the README say clang 3.8. It's all behind the UBT black box, so who knows what their exact compiler and compilation settings are.

from facefx-ue4.

jcredmond avatar jcredmond commented on June 25, 2024

It looks like we can use clang 5.0, 4.0, 3.9, 3.8, 3.7, 3.6 and 3.5 (gcc is explicitly forbidden) [1]. This poses a problem, though, because the version of clang is determined at compile time based on what is installed on your Linux system.

In order to do this, we'd have to pick a version and enforce it. We'd have to pick 5.0 because 5.0 is the only version of clang that cross compiling to Linux from Windows supports [2]. This is also a moving target, because as you can see the version of clang changes with (almost) each version of UE4 [2].

Also, this issue is specific to x86_64 Linux. Everything is different for ARM Linux.

[1] https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Programs/UnrealBuildTool/Platform/Linux/LinuxToolChain.cs

// refuse to use compilers that we know won't work
// disable that only if you are a dev and you know what you are doing
if (!UsingClang())
{
    throw new BuildException("This version of the engine can only be compiled by clang - refusing to register the Linux toolchain.");
}
else if (CompilerVersionMajor == 3 && CompilerVersionMinor == 4)
{
    throw new BuildException("clang 3.4.x is known to miscompile the engine - refusing to register the Linux toolchain.");
}
// prevent unknown clangs since the build is likely to fail on too old or too new compilers
else if ((CompilerVersionMajor * 10 + CompilerVersionMinor) > 50 || (CompilerVersionMajor * 10 + CompilerVersionMinor) < 35)
{
    throw new BuildException(
        string.Format("This version of the Unreal Engine can only be compiled with clang 5.0, 4.0, 3.9, 3.8, 3.7, 3.6 and 3.5. clang {0} may not build it - please use a different version.",
            CompilerVersionString)
        );
}

[2] https://wiki.unrealengine.com/Compiling_For_Linux

from facefx-ue4.

fxs-dbrady avatar fxs-dbrady commented on June 25, 2024

I know this bug is kinda old, but we just got bit by it. But yeah, UE4 uses clang, and the version does change frequently. We've found that the best thing to do is just to cross-compile from Windows (unfortunately). That being said, does a UE4 compatible version exist? Can we request one?

from facefx-ue4.

jcredmond avatar jcredmond commented on June 25, 2024

We are releasing the 1.5.1 runtime in the next few weeks which switches the pre-compiled linux .lib of the runtime from gcc to clang, which should help for native linux builds of the ue4 plugin.

If you have a full license rather than the indie license you'll have source to the runtime and can simply modify our makefile to build the runtime with the exact compiler settings you need for your specific build.

from facefx-ue4.

fxs-dbrady avatar fxs-dbrady commented on June 25, 2024

Thanks for the incredibly quick response. We're still working on getting an Enterprise license internally, the wheels are turning a little slower than I'd like. But that's great news for the future.

from facefx-ue4.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.