Hey,
a bug occurred which prevents my Linux Server Target from building on Windows. First some system specs:
My OS: Windows 8.1 Pro 64 bit
My Project: C++ (Based on Third Person Template)
My Toolchain: http://cdn.unrealengine.com/qfe/v4_clang-3.5.0_ld-2.24_glibc-2.12.2.zip (which is clang 3.5.0 for x86 based systems)
My Engine: Custom build from 4.7.2 release branch (GitHub) with following Changes:
Engine\Source\Programs\UnrealBuildTool\Linux\LinuxToolChain.cs:
Line 277:
if (!CompileEnvironment.Config.bEnableExceptions)
{
Result += " -fno-exceptions"; // no exceptions
}
Line 288:
Result += " -Wall"; //-Werror
Line 298:
if (!CompileEnvironment.Config.bUseRTTI)
{
Result += " -fno-rtti"; // no run-time type info
}
Compiler Error
1> In file included from D:\MyUnrealProjects\Git\Faudra\Intermediate\Build\Linux\x86_64-unknown-linux-gnu\FaudraServer\Development\Faudra\Faudra.h:4:
1> In file included from D:\MyUnrealProjects\Git\Faudra\Source\Faudra\Public\Faudra.h:41:
1> In file included from Runtime/Engine/Public\Engine.h:9:
1> In file included from Runtime/Core/Public\Core.h:16:
1> In file included from Runtime/Core/Public/HAL\PlatformIncludes.h:53:
1> In file included from Runtime/Core/Public\Linux/LinuxPlatformIncludes.h:19:
1>Runtime/Core/Public\Linux/LinuxPlatformMath.h(61,55): error : use of undeclared identifier 'isfinite'; did you mean 'std::isfinite'?
1> static FORCEINLINE bool IsFinite( float A ) { return isfinite(A); }
1> ^~~~~~~~
1> std::isfinite
1> D:\UEToolChain/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/../../../../include/c++/4.8.1\cmath(582,3) : note: 'std::isfinite' declared here
1> isfinite(float __x)
1> ^
1> In file included from D:\MyUnrealProjects\Git\Faudra\Intermediate\Build\Linux\x86_64-unknown-linux-gnu\FaudraServer\Development\Faudra\Faudra.h:4:
1> In file included from D:\MyUnrealProjects\Git\Faudra\Source\Faudra\Public\Faudra.h:41:
1> In file included from Runtime/Engine/Public\Engine.h:22:
1> In file included from Runtime/Engine/Public/EngineMinimal.h:15:
1> In file included from Runtime/Engine/Classes\GameFramework/Character.h:5:
1> In file included from Runtime/Engine/Classes\Animation/AnimationAsset.h:10:
1> In file included from Runtime/Engine/Public\SkeletalMeshTypes.h:13:
1> In file included from Runtime/Engine/Public/Components.h:5:
1> In file included from Runtime/RenderCore/Public\RenderResource.h:10:
1> In file included from Runtime/RHI/Public\RHI.h:1007:
1> In file included from Runtime/RHI/Public/RHIResources.h:8:
1>D:\Unreal Sources\4.7\UnrealEngine\Engine\Source\Runtime/Engine/Public/PixelFormat.h(66,2): error : expected identifier
1> PF_MAX =57,
1> ^
1> D:\UEToolChain/usr/include\bits/socket.h(112,17) : note: expanded from macro 'PF_MAX'
1> #define PF_MAX 37 /* For now.. */
1> ^
Additional Note
I am able to build Unreal Engine itself using that toolchain and these modifications just fine (getting UE4Server Linux Binary which is executable). However, if I try to compile my project, it fails.
Some things to note: My project links against a few other static libraries (boost 1.56.0 and some custom c++ libraries built by me - but since it’s not a linker error, I guess it isn’t that relevant here, is it?)