Trying to install UE4 on Linux Mint 18 Cinnamon Edition. For reference, Mint 18 is based on Ubuntu 16.04 LTS.
I am following this:
./Setup.sh fails on first attempt
$ ./Setup.sh
Registering git hooks... (this will override existing ones!)
Github build
Checking / downloading the latest archives
Checking dependencies (excluding Win32, Win64, Mac, HTML5, Android)...
Received 1/1 files (0.6/0.6mb; 0.09mb/s; 100%)...
Result: 0
Fixing inconsistent case in filenames.
Building ThirdParty libraries
If you don't see SUCCESS message in the end, then building did not finish properly.
In that case, take a look into /home/a/UnrealEngine/Engine/Build/BatchFiles/Linux/BuildThirdParty.log for details.
You run Ubuntu or its fork. All dependencies have been already prebuilt.
==> BuildHLSLCC
this is the contents of the “BuildThirdParty.log” file referenced in the terminal output:
building hlslcc
+ cd Source/ThirdParty/hlslcc
+ P4Open hlslcc/lib/Linux/x86_64-unknown-linux-gnu/libhlslcc.a
+ for file in '$@'
+ '[' '!' -e hlslcc/lib/Linux/x86_64-unknown-linux-gnu/libhlslcc.a ']'
+ '[' -w hlslcc/lib/Linux/x86_64-unknown-linux-gnu/libhlslcc.a ']'
+ return
+ cd hlslcc/projects/Linux
+ make -j4 clean
rm -f ../../src/hlslcc_lib/ir_expression_flattening.o ../../src/hlslcc_lib/opt_copy_propagation_elements.o ../../src/hlslcc_lib/hlsl_lexer.o ../../src/hlslcc_lib/PackUniformBuffers.o ../../src/hlslcc_lib/ir_constant_expression.o ../../src/hlslcc_lib/loop_analysis.o ../../src/hlslcc_lib/opt_constant_propagation.o ../../src/hlslcc_lib/strtod.o ../../src/hlslcc_lib/loop_unroll.o ../../src/hlslcc_lib/ir_function_detect_recursion.o ../../src/hlslcc_lib/lower_variable_index_to_cond_assign.o ../../src/hlslcc_lib/ralloc.o ../../src/hlslcc_lib/ir_print_visitor.o ../../src/hlslcc_lib/glsl_types.o ../../src/hlslcc_lib/lower_instructions.o ../../src/hlslcc_lib/glsl_symbol_table.o ../../src/hlslcc_lib/lower_mat_op_to_vec.o ../../src/hlslcc_lib/lower_vec_index_to_swizzle.o ../../src/hlslcc_lib/ir_hierarchical_visitor.o ../../src/hlslcc_lib/lower_if_to_cond_assign.o ../../src/hlslcc_lib/hlslcc.o ../../src/hlslcc_lib/opt_noop_swizzle.o ../../src/hlslcc_lib/opt_constant_variable.o ../../src/hlslcc_lib/lower_jumps.o ../../src/hlslcc_lib/glcpp-parse.o ../../src/hlslcc_lib/ir_function.o ../../src/hlslcc_lib/glsl_parser_extras.o ../../src/hlslcc_lib/lower_vec_index_to_cond_assign.o ../../src/hlslcc_lib/ShaderCompilerCommon.o ../../src/hlslcc_lib/opt_dead_code.o ../../src/hlslcc_lib/hash_table.o ../../src/hlslcc_lib/glcpp-lex.o ../../src/hlslcc_lib/opt_redundant_jumps.o ../../src/hlslcc_lib/opt_tree_grafting.o ../../src/hlslcc_lib/hlsl_parser.o ../../src/hlslcc_lib/ir.o ../../src/hlslcc_lib/opt_copy_propagation.o ../../src/hlslcc_lib/ast_type.o ../../src/hlslcc_lib/lower_noise.o ../../src/hlslcc_lib/opt_array_splitting.o ../../src/hlslcc_lib/ir_variable_refcount.o ../../src/hlslcc_lib/ir_rvalue_visitor.o ../../src/hlslcc_lib/symbol_table.o ../../src/hlslcc_lib/opt_function_inlining.o ../../src/hlslcc_lib/builtin_stubs.o ../../src/hlslcc_lib/lower_vector.o ../../src/hlslcc_lib/lower_texture_projection.o ../../src/hlslcc_lib/loop_controls.o ../../src/hlslcc_lib/lower_clip_distance.o ../../src/hlslcc_lib/hir_field_selection.o ../../src/hlslcc_lib/opt_if_simplification.o ../../src/hlslcc_lib/pp.o ../../src/hlslcc_lib/opt_discard_simplification.o ../../src/hlslcc_lib/ir_track_image_access.o ../../src/hlslcc_lib/opt_swizzle_swizzle.o ../../src/hlslcc_lib/OptValueNumbering.o ../../src/hlslcc_lib/opt_dead_code_local.o ../../src/hlslcc_lib/ir_clone.o ../../src/hlslcc_lib/ast_function.o ../../src/hlslcc_lib/opt_algebraic.o ../../src/hlslcc_lib/ir_import_prototypes.o ../../src/hlslcc_lib/ast_expr.o ../../src/hlslcc_lib/opt_constant_folding.o ../../src/hlslcc_lib/opt_structure_splitting.o ../../src/hlslcc_lib/ir_unused_structs.o ../../src/hlslcc_lib/opt_dead_functions.o ../../src/hlslcc_lib/ir_hv_accept.o ../../src/hlslcc_lib/ir_function_can_inline.o ../../src/hlslcc_lib/ir_validate.o ../../src/hlslcc_lib/ast_to_hir.o ../../src/hlslcc_lib/IRDump.o ../../src/hlslcc_lib/lower_output_reads.o ../../src/hlslcc_lib/lower_discard.o ../../src/hlslcc_lib/ir_basic_block.o ../../src/hlslcc_exe/main.o ../../lib/Linux/x86_64-unknown-linux-gnu/libhlslcc.a ../../bin/Linux/hlslcc_64
+ make -j4
clang++ -fPIC -Wno-switch -Wno-unused-value -I../../src/hlslcc_lib -fvisibility=hidden -O2 -std=c++11 -o ../../src/hlslcc_lib/ir_expression_flattening.o -c ../../src/hlslcc_lib/ir_expression_flattening.cpp
clang++ -fPIC -Wno-switch -Wno-unused-value -I../../src/hlslcc_lib -fvisibility=hidden -O2 -std=c++11 -o ../../src/hlslcc_lib/opt_copy_propagation_elements.o -c ../../src/hlslcc_lib/opt_copy_propagation_elements.cpp
clang++ -fPIC -Wno-switch -Wno-unused-value -I../../src/hlslcc_lib -fvisibility=hidden -O2 -std=c++11 -o ../../src/hlslcc_lib/hlsl_lexer.o -c ../../src/hlslcc_lib/hlsl_lexer.cpp
make: clang++: Command not found
make: clang++: Command not found
Makefile:43: recipe for target '../../src/hlslcc_lib/ir_expression_flattening.o' failed
make: clang++: Command not found
make: *** [../../src/hlslcc_lib/ir_expression_flattening.o] Error 127
make: *** Waiting for unfinished jobs....
Makefile:43: recipe for target '../../src/hlslcc_lib/opt_copy_propagation_elements.o' failed
make: *** [../../src/hlslcc_lib/opt_copy_propagation_elements.o] Error 127
Makefile:43: recipe for target '../../src/hlslcc_lib/hlsl_lexer.o' failed
make: *** [../../src/hlslcc_lib/hlsl_lexer.o] Error 127
so i installed clang (apt-get install clang), and ./Setup.sh succeeded. And then “make” failed.
$ make
bash "/home/a/UnrealEngine"/Engine/Build/BatchFiles/Linux/Build.sh UE4Client Linux Debug
Building UE4Client...
Using clang version '3.8.0' (string), 3 (major), 8 (minor), 0 (patch)
Performing 165 actions (8 in parallel)
[1/165] Compile EnginePrivate.h
[3/165] Compile CorePrivatePCH.h
[5/165] Compile Paper2D.generated.cpp
[2/165] Compile RendererPrivate.h
[4/165] Compile Module.Paper2D.cpp
[7/165] Compile Module.CustomMeshComponent.cpp
[6/165] Compile Module.CableComponent.cpp
[8/165] Compile CableComponent.generated.cpp
[9/165] Compile Module.ExampleDeviceProfileSelector.cpp
[10/165] Compile CustomMeshComponent.generated.cpp
[11/165] Compile Module.CharacterAI.cpp
[12/165] Compile Module.SlateRemote.cpp
[13/165] Compile SlateRemote.generated.cpp
[14/165] Compile Module.UdpMessaging.cpp
[15/165] Compile UdpMessaging.generated.cpp
[16/165] Compile Engine.generated.1.cpp
[17/165] Compile Engine.generated.2.cpp
[18/165] Compile Engine.generated.4.cpp
[19/165] Compile Engine.generated.5.cpp
[20/165] Compile Engine.generated.3.cpp
[21/165] Compile Module.UMG.cpp
[22/165] Compile UMG.generated.cpp
[23/165] Compile Module.OnlineSubsystemUtils.cpp
[24/165] Compile Module.Launch.cpp
[25/165] Compile Module.OpenGLDrv.cpp
[27/165] Compile Module.Renderer.6_of_6.cpp
[26/165] Compile Module.Renderer.5_of_6.cpp
[28/165] Compile Module.Engine.2_of_28.cpp
[29/165] Compile Module.MovieSceneCoreTypes.cpp
[30/165] Compile Module.Renderer.2_of_6.cpp
[31/165] Compile Module.Renderer.3_of_6.cpp
[32/165] Compile Module.Renderer.4_of_6.cpp
[33/165] Compile OnlineSubsystemUtils.generated.cpp
[34/165] Compile Module.Renderer.1_of_6.cpp
[35/165] Compile Module.Engine.28_of_28.cpp
[36/165] Compile MovieSceneCoreTypes.generated.cpp
[37/165] Compile Module.OnlineSubsystemNull.cpp
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.28_of_28.cpp:9:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/Vehicles/PhysXVehicleManager.cpp:10:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/Vehicles/../PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
[38/165] Compile Module.SlateRHIRenderer.cpp
[39/165] Compile Module.ProfilerService.cpp
[40/165] Compile Module.AutomationWorker.cpp
1 error generated.
[41/165] Compile Module.MovieSceneCore.cpp
[42/165] Compile Module.MediaAssets.cpp
[43/165] Compile Module.GameplayTags.cpp
[44/165] Compile Module.MoviePlayer.cpp
[45/165] Compile Module.GameLiveStreaming.cpp
[46/165] Compile MovieSceneCore.generated.cpp
[47/165] Compile Module.PhysXFormats.cpp
[48/165] Compile MediaAssets.generated.cpp
[49/165] Compile GameplayTags.generated.cpp
[50/165] Compile Module.ALAudio.cpp
[51/165] Compile GameLiveStreaming.generated.cpp
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/PhysXFormats/Module.PhysXFormats.cpp:2:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/PhysXFormats/Private/PhysXFormats.cpp:11:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/PhysXFormats/Private/PhysXFormats.h:25:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
[52/165] Compile Module.StreamingPauseRendering.cpp
[53/165] Compile Module.HeadMountedDisplay.cpp
1 error generated.
[54/165] Compile MoviePlayer.generated.cpp
[55/165] Compile Module.Engine.6_of_28.cpp
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.6_of_28.cpp:12:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/HierarchicalInstancedStaticMesh.cpp:10:
In file included from Runtime/Engine/Private/InstancedStaticMesh.h:43:
In file included from Runtime/Engine/Private/PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
[56/165] Compile Module.Engine.21_of_28.cpp
[57/165] Compile Module.Engine.15_of_28.cpp
1 error generated.
[58/165] Compile Module.Engine.16_of_28.cpp
[59/165] Compile Module.Engine.5_of_28.cpp
[60/165] Compile Module.Engine.24_of_28.cpp
[61/165] Compile Module.Engine.10_of_28.cpp
[62/165] Compile Module.Engine.19_of_28.cpp
[63/165] Compile Module.Engine.20_of_28.cpp
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.10_of_28.cpp:26:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/PrimitiveComponent.cpp:17:
In file included from Runtime/Engine/Private/PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
[64/165] Compile Module.Engine.7_of_28.cpp
[65/165] Compile Module.Engine.8_of_28.cpp
1 error generated.
[66/165] Compile Module.Engine.4_of_28.cpp
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.7_of_28.cpp:18:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/LevelActor.cpp:11:
In file included from Runtime/Engine/Private/PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.8_of_28.cpp:6:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/LevelTick.cpp:22:
In file included from Runtime/Engine/Private/PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.20_of_28.cpp:24:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/Collision/CollisionConversions.cpp:7:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/Collision/PhysXCollision.h:12:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/Collision/../PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.4_of_28.cpp:18:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/DestructibleActor.cpp:9:
In file included from Runtime/Engine/Private/PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
[67/165] Compile Module.Engine.13_of_28.cpp
[68/165] Compile Module.Engine.9_of_28.cpp
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.9_of_28.cpp:5:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/MorphTools.cpp:10:
In file included from Runtime/Engine/Private/PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
1 error generated.
[69/165] Compile Module.Engine.11_of_28.cpp
[70/165] Compile Module.Engine.1_of_28.cpp
1 error generated.
[71/165] Compile Module.Engine.12_of_28.cpp
[72/165] Compile Module.Engine.27_of_28.cpp
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.12_of_28.cpp:12:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/SkeletalMesh.cpp:39:
In file included from Runtime/Engine/Private/PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.27_of_28.cpp:3:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/PhysicsEngine/PhysicsAsset.cpp:12:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
1 error generated.
[73/165] Compile Module.Engine.22_of_28.cpp
1 error generated.
1 error generated.
[74/165] Compile Module.Engine.23_of_28.cpp
[75/165] Compile Module.Engine.18_of_28.cpp
1 error generated.
[76/165] Compile Module.Engine.3_of_28.cpp
1 error generated.
[77/165] Compile Module.Engine.17_of_28.cpp
[78/165] Compile Module.Engine.14_of_28.cpp
[79/165] Compile Module.Engine.26_of_28.cpp
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.17_of_28.cpp:16:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/AI/Navigation/RecastNavMeshGenerator.cpp:9:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/AI/Navigation/../../PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Engine/Module.Engine.26_of_28.cpp:5:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/PhysicsEngine/BodyInstance.cpp:10:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Engine/Private/PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
[80/165] Compile Module.Engine.25_of_28.cpp
[81/165] Compile Module.AIModule.2_of_3.cpp
[82/165] Compile AIModule.generated.cpp
[83/165] Compile Module.AIModule.1_of_3.cpp
1 error generated.
[84/165] Compile Module.Landscape.cpp
1 error generated.
[85/165] Compile Module.Slate.2_of_4.cpp
[86/165] Compile Module.Slate.3_of_4.cpp
[87/165] Compile Module.Slate.1_of_4.cpp
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/Landscape/Module.Landscape.cpp:4:
In file included from /home/a/UnrealEngine/Engine/Source/Runtime/Landscape/Private/LandscapeCollision.cpp:11:
In file included from Runtime/Engine/Private/Collision/PhysXCollision.h:12:
In file included from Runtime/Engine/Private/Collision/../PhysicsEngine/PhysXSupport.h:11:
In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(85,2) : error: all paths through this function will call itself [-Werror,-Winfinite-recursion]
{
^
[88/165] Compile Module.AppFramework.cpp
1 error generated.
[89/165] Compile Module.Slate.4_of_4.cpp
[90/165] Compile Module.AIModule.3_of_3.cpp
[91/165] Compile Slate.generated.cpp
[92/165] Compile Module.CrashTracker.cpp
[93/165] Compile Module.TaskGraph.cpp
[94/165] Compile Module.RealtimeProfiler.cpp
[95/165] Compile Module.SlateReflector.cpp
[96/165] Compile Module.EditorStyle.cpp
[97/165] Compile EditorStyle.generated.cpp
[98/165] Compile Module.SlateCore.cpp
[99/165] Compile Landscape.generated.cpp
[100/165] Compile SlateCore.generated.cpp
[101/165] Compile Module.Core.2_of_6.cpp
[102/165] Compile Module.CoreUObject.1_of_4.cpp
[103/165] Compile Module.CoreUObject.3_of_4.cpp
[104/165] Compile Module.OnlineSubsystem.cpp
[105/165] Compile Module.Core.1_of_6.cpp
[106/165] Compile Module.SessionServices.cpp
[107/165] Compile Module.AssetRegistry.cpp
[108/165] Compile Module.CoreUObject.2_of_4.cpp
[109/165] Compile Module.Messaging.cpp
[110/165] Compile OnlineSubsystem.generated.cpp
[111/165] Compile Module.Serialization.cpp
[112/165] Compile Module.CoreUObject.4_of_4.cpp
[113/165] Compile EngineSettings.generated.cpp
[114/165] Compile Module.EngineSettings.cpp
[115/165] Compile Module.InputCore.cpp
[116/165] Compile Module.Core.4_of_6.cpp
[117/165] Compile InputCore.generated.cpp
[118/165] Compile Module.ImageWrapper.cpp
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Client/Debug/ImageWrapper/Module.ImageWrapper.cpp:9:
In file included from /home/a/UnrealEngine/Engine/Source/Developer/ImageWrapper/Private/JpegImageWrapper.cpp:14:
ThirdParty/libJPG/jpgd.cpp(569,51) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,66) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,81) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,96) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,111) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,126) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,141) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,156) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,171) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,186) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,202) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,218) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,234) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,250) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,266) : error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
[119/165] Compile Module.AutomationMessages.cpp
15 errors generated.
[120/165] Compile AutomationMessages.generated.cpp
[121/165] Compile Module.SessionMessages.cpp
[122/165] Compile SessionMessages.generated.cpp
[123/165] Compile EngineMessages.generated.cpp
[124/165] Compile Module.EngineMessages.cpp
[126/165] Compile ProfilerMessages.generated.cpp
[125/165] Compile Module.ProfilerMessages.cpp
[127/165] Compile Serialization.generated.cpp
[128/165] Compile CoreUObject.generated.cpp
[129/165] Compile Module.Core.3_of_6.cpp
[130/165] Compile Module.ShaderCore.cpp
[131/165] Compile Module.Navmesh.1_of_2.cpp
[132/165] Compile Module.Sockets.cpp
[133/165] Compile Module.Navmesh.2_of_2.cpp
[134/165] Compile Module.AnalyticsET.cpp
[135/165] Compile Module.Projects.cpp
[136/165] Compile Module.Networking.cpp
[137/165] Compile Module.RenderCore.cpp
[138/165] Compile Module.HTTP.cpp
[139/165] Compile Module.RHI.cpp
[140/165] Compile Module.NetworkFile.cpp
[141/165] Compile Module.SynthBenchmark.cpp
[142/165] Compile Module.NullDrv.cpp
[143/165] Compile Module.Core.5_of_6.cpp
[144/165] Compile Module.StreamingFile.cpp
[145/165] Compile Module.Json.cpp
[146/165] Compile Module.Voice.cpp
[147/165] Compile Module.PakFile.cpp
[148/165] Compile Module.Core.6_of_6.cpp
[149/165] Compile Module.Media.cpp
[150/165] Compile Module.Analytics.cpp
[151/165] Compile Module.DatabaseSupport.cpp
[152/165] Compile Module.Advertising.cpp
[153/165] Compile Module.SandboxFile.cpp
[154/165] Compile Module.ImageCore.cpp
[155/165] Compile Module.VectorVM.cpp
[156/165] Compile Module.UE4Game.cpp
[158/165] Compile UELinkerFixups.cpp
[157/165] Archive libUE4Client-CustomMeshComponent-Linux-Debug-Static.a
[159/165] Archive libUE4Client-SlateRemote-Linux-Debug-Static.a
[160/165] Archive libUE4Client-Paper2D-Linux-Debug-Static.a
[161/165] Archive libUE4Client-UdpMessaging-Linux-Debug-Static.a
[162/165] Archive libUE4Client-CableComponent-Linux-Debug-Static.a
[163/165] Archive libUE4Client-CharacterAI-Linux-Debug-Static.a
[164/165] Archive libUE4Client-ExampleDeviceProfileSelector-Linux-Debug-Static.a
-------- End Detailed Actions Stats -----------------------------------------------------------
Cumulative action seconds (8 processors): 0.00 building projects, 1858.06 compiling, 0.00 creating app bundles, 0.00 generating debug info, 4.90 linking, 0.00 other
UBT execution time: 247.98 seconds
Makefile:134: recipe for target 'UE4Client-Linux-Debug' failed
make: *** [UE4Client-Linux-Debug] Error 5
Apparently there is a problem with clang. I tried downgrading clang (“apt-get remove clang” and then “apt-get install clang-3.6” and “apt-get install clang+±3.6”), but I got the exact same errors I started with before I entered “apt-get install clang”, with ./Setup.sh.
This problem is referenced here:
And I have asked questions on those posts. They recommend either downgrading clang (doesn’t work for me, as I already explained, it just gives the original problem), or adding lines to a file, but I think the file was changed since that post, because it seems I would be interrupting “functions” (forgive me if I got the term wrong) by adding those lines after line 343 as recommended. I mean line 343 is an if statement, 344 is a bracket, and then line 348 is an “else if” statement. And the lines recommended to be added are a seemingly unrelated if statement.
The file recommended to be edited is called LinuxToolChain.cs. The text of that file is copied below:
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Diagnostics;
using System.IO;
using Microsoft.Win32;
namespace UnrealBuildTool
{
class LinuxToolChain : UEToolChain
{
protected static bool CrossCompiling()
{
return BuildHostPlatform.Current.Platform != UnrealTargetPlatform.Linux;
}
protected static bool UsingClang()
{
return !String.IsNullOrEmpty(ClangPath);
}
private string Which(string name)
{
Process proc = new Process();
proc.StartInfo.FileName = "/bin/sh";
proc.StartInfo.Arguments = String.Format("-c 'which {0}'", name);
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.Start();
proc.WaitForExit();
string path = proc.StandardOutput.ReadLine();
Log.TraceVerbose(String.Format("which {0} result: ({1}) {2}", name, proc.ExitCode, path));
if (proc.ExitCode == 0 && String.IsNullOrEmpty(proc.StandardError.ReadToEnd()))
{
return path;
}
return null;
}
/** Splits compiler version string into numerical components, leaving unchanged if not known */
private void DetermineCompilerMajMinPatchFromVersionString()
{
string[] Parts = CompilerVersionString.Split('.');
if (Parts.Length >= 1)
{
CompilerVersionMajor = Convert.ToInt32(Parts[0]);
}
if (Parts.Length >= 2)
{
CompilerVersionMinor = Convert.ToInt32(Parts[1]);
}
if (Parts.Length >= 3)
{
CompilerVersionPatch = Convert.ToInt32(Parts[2]);
}
}
/** Queries compiler for the version */
private bool DetermineCompilerVersion()
{
CompilerVersionString = null;
CompilerVersionMajor = -1;
CompilerVersionMinor = -1;
CompilerVersionPatch = -1;
Process Proc = new Process();
Proc.StartInfo.UseShellExecute = false;
Proc.StartInfo.CreateNoWindow = true;
Proc.StartInfo.RedirectStandardOutput = true;
Proc.StartInfo.RedirectStandardError = true;
if (!String.IsNullOrEmpty(GCCPath) && File.Exists(GCCPath))
{
Proc.StartInfo.FileName = GCCPath;
Proc.StartInfo.Arguments = " -dumpversion";
Proc.Start();
Proc.WaitForExit();
if (Proc.ExitCode == 0)
{
// read just the first string
CompilerVersionString = Proc.StandardOutput.ReadLine();
DetermineCompilerMajMinPatchFromVersionString();
}
}
else if (!String.IsNullOrEmpty(ClangPath) && File.Exists(ClangPath))
{
Proc.StartInfo.FileName = ClangPath;
Proc.StartInfo.Arguments = " --version";
Proc.Start();
Proc.WaitForExit();
if (Proc.ExitCode == 0)
{
// read just the first string
string VersionString = Proc.StandardOutput.ReadLine();
Regex VersionPattern = new Regex("version \\d+(\\.\\d+)+");
Match VersionMatch = VersionPattern.Match(VersionString);
// version match will be like "version 3.3", so remove the "version"
if (VersionMatch.Value.StartsWith("version "))
{
CompilerVersionString = VersionMatch.Value.Replace("version ", "");
DetermineCompilerMajMinPatchFromVersionString();
}
}
}
else
{
// icl?
}
if (!CrossCompiling())
{
Console.WriteLine("Using {0} version '{1}' (string), {2} (major), {3} (minor), {4} (patch)",
String.IsNullOrEmpty(ClangPath) ? "gcc" : "clang",
CompilerVersionString, CompilerVersionMajor, CompilerVersionMinor, CompilerVersionPatch);
}
return !String.IsNullOrEmpty(CompilerVersionString);
}
public override void RegisterToolChain()
{
if (!CrossCompiling())
{
// use native linux toolchain
string[] ClangNames = { "clang++", "clang++-3.5", "clang++-3.3" };
foreach (var ClangName in ClangNames)
{
ClangPath = Which(ClangName);
if (!String.IsNullOrEmpty(ClangPath))
{
break;
}
}
GCCPath = Which("g++");
ArPath = Which("ar");
RanlibPath = Which("ranlib");
// if clang is available, zero out gcc (@todo: support runtime switching?)
if (!String.IsNullOrEmpty(ClangPath))
{
GCCPath = null;
}
}
else
{
// use cross linux toolchain if LINUX_ROOT is specified
BaseLinuxPath = Environment.GetEnvironmentVariable("LINUX_ROOT");
// don't register if we don't have an LINUX_ROOT specified
if (String.IsNullOrEmpty(BaseLinuxPath))
return;
BaseLinuxPath = BaseLinuxPath.Replace("\"", "");
// set up the path to our toolchains
GCCPath = "";
ClangPath = Path.Combine(BaseLinuxPath, @"bin\clang++.exe");
// ar and ranlib will be switched later to match the architecture
ArPath = "ar.exe";
RanlibPath = "ranlib.exe";
}
if (!DetermineCompilerVersion())
{
Console.WriteLine("\n*** Could not determine version of the compiler, not registering Linux toolchain.\n");
return;
}
// 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())
{
Console.WriteLine("\n*** This version of the engine can only be compiled by clang - refusing to register the Linux toolchain.\n");
return;
}
else if (CompilerVersionMajor == 3 && CompilerVersionMinor == 4)
{
Console.WriteLine("\n*** clang 3.4.x is known to miscompile the engine - refusing to register the Linux toolchain.\n");
return;
}
// Register this tool chain for both Linux
if (BuildConfiguration.bPrintDebugInfo)
{
Console.WriteLine(" Registered for {0}", CPPTargetPlatform.Linux.ToString());
}
UEToolChain.RegisterPlatformToolChain(CPPTargetPlatform.Linux, this);
}
/** Checks if compiler version matches the requirements */
private static bool CompilerVersionGreaterOrEqual(int Major, int Minor, int Patch)
{
return CompilerVersionMajor > Major ||
(CompilerVersionMajor == Major && CompilerVersionMinor > Minor) ||
(CompilerVersionMajor == Major && CompilerVersionMinor == Minor && CompilerVersionPatch >= Patch);
}
/** Architecture-specific compiler switches */
static string ArchitectureSpecificSwitches(string Architecture)
{
string Result = "";
if (Architecture.StartsWith("x86_64"))
{
Result += " -mmmx -msse -msse2";
}
else if (Architecture.StartsWith("arm"))
{
Result += " -fsigned-char";
// FreeType2's ftconfig.h will trigger this
Result += " -Wno-deprecated-register";
}
return Result;
}
static string ArchitectureSpecificDefines(string Architecture)
{
string Result = "";
if (Architecture.StartsWith("x86_64"))
{
Result += " -D_LINUX64";
}
return Result;
}
/** Gets architecture-specific ar paths */
private static string GetArPath(string Architecture)
{
if (CrossCompiling())
{
return Path.Combine(Path.Combine(BaseLinuxPath, String.Format("bin/{0}-{1}", Architecture, ArPath)));
}
return ArPath;
}
/** Gets architecture-specific ranlib paths */
private static string GetRanlibPath(string Architecture)
{
if (CrossCompiling())
{
return Path.Combine(Path.Combine(BaseLinuxPath, String.Format("bin/{0}-{1}", Architecture, RanlibPath)));
}
return RanlibPath;
}
static string GetCLArguments_Global(CPPEnvironment CompileEnvironment)
{
string Result = "";
// build up the commandline common to C and C++
Result += " -c";
Result += " -pipe";
if (CrossCompiling())
{
// There are exceptions used in the code base (e.g. UnrealHeadTool). @todo: weed out exceptions
// So this flag cannot be used, at least not for native Linux builds.
Result += " -fno-exceptions"; // no exceptions
Result += " -DPLATFORM_EXCEPTIONS_DISABLED=1";
}
else
{
Result += " -DPLATFORM_EXCEPTIONS_DISABLED=0";
}
Result += " -Wall -Werror";
// test without this next line?
Result += " -funwind-tables"; // generate unwind tables as they seem to be needed for stack tracing (why??)
Result += " -Wsequence-point"; // additional warning not normally included in Wall: warns if order of operations is ambigious
//Result += " -Wunreachable-code"; // additional warning not normally included in Wall: warns if there is code that will never be executed - not helpful due to bIsGCC and similar
//Result += " -Wshadow"; // additional warning not normally included in Wall: warns if there variable/typedef shadows some other variable - not helpful because we have gobs of code that shadows variables
Result += ArchitectureSpecificSwitches(CompileEnvironment.Config.Target.Architecture);
Result += " -fno-math-errno"; // do not assume that math ops have side effects
Result += " -fno-rtti"; // no run-time type info
if (String.IsNullOrEmpty(ClangPath))
{
// GCC only option
Result += " -fno-strict-aliasing";
Result += " -Wno-sign-compare"; // needed to suppress: comparison between signed and unsigned integer expressions
Result += " -Wno-enum-compare"; // Stats2.h triggers this (ALIGNOF(int64) <= DATA_ALIGN)
Result += " -Wno-return-type"; // Variant.h triggers this
Result += " -Wno-unused-local-typedefs";
Result += " -Wno-multichar";
Result += " -Wno-unused-but-set-variable";
Result += " -Wno-strict-overflow"; // Array.h:518
}
else
{
// Clang only options
Result += " -fdiagnostics-format=msvc"; // make diagnostics compatible with MSVC
Result += " -Wno-unused-private-field"; // MultichannelTcpSocket.h triggers this, possibly more
// this hides the "warning : comparison of unsigned expression < 0 is always false" type warnings due to constant comparisons, which are possible with template arguments
Result += " -Wno-tautological-compare";
// this switch is understood by clang 3.5.0, but not clang-3.5 as packaged by Ubuntu 14.04 atm
if (CompilerVersionGreaterOrEqual(3, 5, 0))
{
Result += " -Wno-undefined-bool-conversion"; // hides checking if 'this' pointer is null
}
// Suppress clang 3.6.0 warnings
if (CompilerVersionGreaterOrEqual(3, 6, 0))
{
Result += " -Wno-inconsistent-missing-override";
Result += " -Wno-unused-local-typedef";
Result += " -Wno-null-conversion";
}
}
Result += " -Wno-unused-variable";
// this will hide the warnings about static functions in headers that aren't used in every single .cpp file
Result += " -Wno-unused-function";
// this hides the "enumeration value 'XXXXX' not handled in switch [-Wswitch]" warnings - we should maybe remove this at some point and add UE_LOG(, Fatal, ) to default cases
Result += " -Wno-switch";
Result += " -Wno-unknown-pragmas"; // Slate triggers this (with its optimize on/off pragmas)
Result += " -Wno-invalid-offsetof"; // needed to suppress warnings about using offsetof on non-POD types.
//Result += " -DOPERATOR_NEW_INLINE=FORCENOINLINE";
// shipping builds will cause this warning with "ensure", so disable only in those case
if (CompileEnvironment.Config.Target.Configuration == CPPTargetConfiguration.Shipping)
{
Result += " -Wno-unused-value";
// in shipping, strip as much info as possible
Result += " -g0";
Result += " -fomit-frame-pointer";
Result += " -fvisibility=hidden"; // prevents from exporting all symbols (reduces the size of the binary)
}
else if (CompileEnvironment.Config.Target.Configuration == CPPTargetConfiguration.Debug)
{
Result += " -fno-inline"; // disable inlining for better debuggability (e.g. callstacks, "skip file" in gdb)
}
// debug info (bCreateDebugInfo is normally set for all configurations, and we don't want it to affect Development/Shipping performance)
if (CompileEnvironment.Config.bCreateDebugInfo && CompileEnvironment.Config.Target.Configuration == CPPTargetConfiguration.Debug)
{
Result += " -g3";
Result += " -fno-omit-frame-pointer";
Result += " -funwind-tables"; // generate unwind tables as they seem to be needed for stack tracing
Result += " -fstack-protector";
//Result += " -fsanitize=address"; // Preferred clang tool for detecting address based errors but unusable for some reason with Module.Engine.7_of_42.cpp
}
else if (CompileEnvironment.Config.Target.Configuration < CPPTargetConfiguration.Shipping)
{
Result += " -gline-tables-only"; // include debug info for meaningful callstacks
}
// optimization level
if (CompileEnvironment.Config.Target.Configuration == CPPTargetConfiguration.Debug)
{
Result += " -O0";
}
else
{
Result += " -O2"; // warning: as of now (2014-09-28), clang 3.5.0 miscompiles PlatformerGame with -O3 (bitfields?)
}
if (CompileEnvironment.Config.bIsBuildingDLL)
{
Result += " -fPIC";
}
//Result += " -v"; // for better error diagnosis
Result += ArchitectureSpecificDefines(CompileEnvironment.Config.Target.Architecture);
if (CrossCompiling())
{
if (UsingClang())
{
Result += String.Format(" -target {0}", CompileEnvironment.Config.Target.Architecture); // Set target triple
}
Result += String.Format(" --sysroot=\"{0}\"", BaseLinuxPath);
}
return Result;
}
static string GetCompileArguments_CPP()
{
string Result = "";
Result += " -x c++";
Result += " -std=c++11";
return Result;
}
static string GetCompileArguments_C()
{
string Result = "";
Result += " -x c";
return Result;
}
static string GetCompileArguments_MM()
{
string Result = "";
Result += " -x objective-c++";
Result += " -fobjc-abi-version=2";
Result += " -fobjc-legacy-dispatch";
Result += " -fno-rtti";
Result += " -std=c++11";
return Result;
}
static string GetCompileArguments_M()
{
string Result = "";
Result += " -x objective-c";
Result += " -fobjc-abi-version=2";
Result += " -fobjc-legacy-dispatch";
Result += " -std=c++11";
return Result;
}
static string GetCompileArguments_PCH()
{
string Result = "";
Result += " -x c++-header";
Result += " -std=c++11";
return Result;
}
static string GetLinkArguments(LinkEnvironment LinkEnvironment)
{
string Result = "";
// debugging symbols
if (LinkEnvironment.Config.Target.Configuration < CPPTargetConfiguration.Shipping)
{
Result += " -rdynamic"; // needed for backtrace_symbols()...
}
else
{
Result += " -s"; // Strip binaries in Shipping
}
if (LinkEnvironment.Config.bIsBuildingDLL)
{
Result += " -shared";
}
else
{
// ignore unresolved symbols in shared libs
Result += string.Format(" -Wl,--unresolved-symbols=ignore-in-shared-libs");
}
if (UnrealBuildTool.BuildingRocket())
{
// strip symbols for Rocket in every configuration
Result += " -Wl,-s";
}
// RPATH for third party libs
Result += " -Wl,-rpath=${ORIGIN}";
Result += " -Wl,-rpath-link=${ORIGIN}";
Result += " -Wl,-rpath=${ORIGIN}/../../../Engine/Binaries/Linux";
Result += " -Wl,-rpath=${ORIGIN}/.."; // for modules that are in sub-folders of the main Engine/Binary/Linux folder
// FIXME: really ugly temp solution. Modules need to be able to specify this
Result += " -Wl,-rpath=${ORIGIN}/../../../Engine/Binaries/ThirdParty/ICU/icu4c-53_1/Linux/x86_64-unknown-linux-gnu";
if (CrossCompiling())
{
if (UsingClang())
{
Result += String.Format(" -target {0}", LinkEnvironment.Config.Target.Architecture); // Set target triple
}
string SysRootPath = BaseLinuxPath.TrimEnd(new char[] { '\\', '/' });
Result += String.Format(" \"--sysroot={0}\"", SysRootPath);
}
return Result;
}
static string GetArchiveArguments(LinkEnvironment LinkEnvironment)
{
return " rc";
}
public static void CompileOutputReceivedDataEventHandler(Object Sender, DataReceivedEventArgs e)
{
string Output = e.Data;
if (String.IsNullOrEmpty(Output))
{
return;
}
// Need to match following for clickable links
string RegexFilePath = @"^[A-Z]\:([\\\/][A-Za-z0-9_\-\.]*)+\.(cpp|c|mm|m|hpp|h)";
string RegexLineNumber = @"\:\d+\:\d+\:";
string RegexDescription = @"(\serror:\s|\swarning:\s|\snote:\s).*";
// Get Matches
string MatchFilePath = Regex.Match(Output, RegexFilePath).Value.Replace("Engine\\Source\\..\\..\\", "");
string MatchLineNumber = Regex.Match(Output, RegexLineNumber).Value;
string MatchDescription = Regex.Match(Output, RegexDescription).Value;
// If any of the above matches failed, do nothing
if (MatchFilePath.Length == 0 ||
MatchLineNumber.Length == 0 ||
MatchDescription.Length == 0)
{
Console.WriteLine(Output);
return;
}
// Convert Path
string RegexStrippedPath = @"\\Engine\\.*"; //@"(Engine\/|[A-Za-z0-9_\-\.]*\/).*";
string ConvertedFilePath = Regex.Match(MatchFilePath, RegexStrippedPath).Value;
ConvertedFilePath = Path.GetFullPath("..\\.." + ConvertedFilePath);
// Extract Line + Column Number
string ConvertedLineNumber = Regex.Match(MatchLineNumber, @"\d+").Value;
string ConvertedColumnNumber = Regex.Match(MatchLineNumber, @"(?<=:\d+:)\d+").Value;
// Write output
string ConvertedExpression = " " + ConvertedFilePath + "(" + ConvertedLineNumber + "," + ConvertedColumnNumber + "):" + MatchDescription;
Console.WriteLine(ConvertedExpression); // To create clickable vs link
}
// cache the location of NDK tools
static string BaseLinuxPath;
static string ClangPath;
static string GCCPath;
static string ArPath;
static string RanlibPath;
/** Version string of the current compiler, whether clang or gcc or whatever */
static string CompilerVersionString;
/** Major version of the current compiler, whether clang or gcc or whatever */
static int CompilerVersionMajor = -1;
/** Minor version of the current compiler, whether clang or gcc or whatever */
static int CompilerVersionMinor = -1;
/** Patch version of the current compiler, whether clang or gcc or whatever */
static int CompilerVersionPatch = -1;
/** Track which scripts need to be deleted before appending to */
private bool bHasWipedFixDepsScript = false;
private static List<FileItem> BundleDependencies = new List<FileItem>();
public override CPPOutput CompileCPPFiles(UEBuildTarget Target, CPPEnvironment CompileEnvironment, List<FileItem> SourceFiles, string ModuleName)
{
string Arguments = GetCLArguments_Global(CompileEnvironment);
string PCHArguments = "";
if (CompileEnvironment.Config.PrecompiledHeaderAction == PrecompiledHeaderAction.Include)
{
// Add the precompiled header file's path to the include path so Clang can find it.
// This needs to be before the other include paths to ensure Clang uses it instead of the source header file.
var PrecompiledFileExtension = UEBuildPlatform.BuildPlatformDictionary[UnrealTargetPlatform.Linux].GetBinaryExtension(UEBuildBinaryType.PrecompiledHeader);
PCHArguments += string.Format(" -include \"{0}\"", CompileEnvironment.PrecompiledHeaderFile.AbsolutePath.Replace(PrecompiledFileExtension, ""));
}
// Add include paths to the argument list.
foreach (string IncludePath in CompileEnvironment.Config.CPPIncludeInfo.IncludePaths)
{
Arguments += string.Format(" -I\"{0}\"", IncludePath);
}
foreach (string IncludePath in CompileEnvironment.Config.CPPIncludeInfo.SystemIncludePaths)
{
Arguments += string.Format(" -I\"{0}\"", IncludePath);
}
// Add preprocessor definitions to the argument list.
foreach (string Definition in CompileEnvironment.Config.Definitions)
{
Arguments += string.Format(" -D \"{0}\"", Definition);
}
var BuildPlatform = UEBuildPlatform.GetBuildPlatformForCPPTargetPlatform(CompileEnvironment.Config.Target.Platform);
// Create a compile action for each source file.
CPPOutput Result = new CPPOutput();
foreach (FileItem SourceFile in SourceFiles)
{
Action CompileAction = new Action(ActionType.Compile);
string FileArguments = "";
string Extension = Path.GetExtension(SourceFile.AbsolutePath).ToUpperInvariant();
// Add C or C++ specific compiler arguments.
if (CompileEnvironment.Config.PrecompiledHeaderAction == PrecompiledHeaderAction.Create)
{
FileArguments += GetCompileArguments_PCH();
}
else if (Extension == ".C")
{
// Compile the file as C code.
FileArguments += GetCompileArguments_C();
}
else if (Extension == ".CC")
{
// Compile the file as C++ code.
FileArguments += GetCompileArguments_CPP();
}
else if (Extension == ".MM")
{
// Compile the file as Objective-C++ code.
FileArguments += GetCompileArguments_MM();
}
else if (Extension == ".M")
{
// Compile the file as Objective-C code.
FileArguments += GetCompileArguments_M();
}
else
{
FileArguments += GetCompileArguments_CPP();
// only use PCH for .cpp files
FileArguments += PCHArguments;
}
// Add the C++ source file and its included files to the prerequisite item list.
AddPrerequisiteSourceFile( Target, BuildPlatform, CompileEnvironment, SourceFile, CompileAction.PrerequisiteItems );
if (CompileEnvironment.Config.PrecompiledHeaderAction == PrecompiledHeaderAction.Create)
{
var PrecompiledFileExtension = UEBuildPlatform.BuildPlatformDictionary[UnrealTargetPlatform.Linux].GetBinaryExtension(UEBuildBinaryType.PrecompiledHeader);
// Add the precompiled header file to the produced item list.
FileItem PrecompiledHeaderFile = FileItem.GetItemByPath(
Path.Combine(
CompileEnvironment.Config.OutputDirectory,
Path.GetFileName(SourceFile.AbsolutePath) + PrecompiledFileExtension
)
);
CompileAction.ProducedItems.Add(PrecompiledHeaderFile);
Result.PrecompiledHeaderFile = PrecompiledHeaderFile;
// Add the parameters needed to compile the precompiled header file to the command-line.
FileArguments += string.Format(" -o \"{0}\"", PrecompiledHeaderFile.AbsolutePath, false);
}
else
{
if (CompileEnvironment.Config.PrecompiledHeaderAction == PrecompiledHeaderAction.Include)
{
CompileAction.bIsUsingPCH = true;
CompileAction.PrerequisiteItems.Add(CompileEnvironment.PrecompiledHeaderFile);
}
var ObjectFileExtension = UEBuildPlatform.BuildPlatformDictionary[UnrealTargetPlatform.Linux].GetBinaryExtension(UEBuildBinaryType.Object);
// Add the object file to the produced item list.
FileItem ObjectFile = FileItem.GetItemByPath(
Path.Combine(
CompileEnvironment.Config.OutputDirectory,
Path.GetFileName(SourceFile.AbsolutePath) + ObjectFileExtension
)
);
CompileAction.ProducedItems.Add(ObjectFile);
Result.ObjectFiles.Add(ObjectFile);
FileArguments += string.Format(" -o \"{0}\"", ObjectFile.AbsolutePath, false);
}
// Add the source file path to the command-line.
FileArguments += string.Format(" \"{0}\"", SourceFile.AbsolutePath);
CompileAction.WorkingDirectory = Path.GetFullPath(".");
if (!UsingClang())
{
CompileAction.CommandPath = GCCPath;
}
else
{
CompileAction.CommandPath = ClangPath;
}
CompileAction.CommandArguments = Arguments + FileArguments + CompileEnvironment.Config.AdditionalArguments;
CompileAction.CommandDescription = "Compile";
CompileAction.StatusDescription = Path.GetFileName(SourceFile.AbsolutePath);
CompileAction.bIsGCCCompiler = true;
// Don't farm out creation of pre-compiled headers as it is the critical path task.
CompileAction.bCanExecuteRemotely =
CompileEnvironment.Config.PrecompiledHeaderAction != PrecompiledHeaderAction.Create ||
BuildConfiguration.bAllowRemotelyCompiledPCHs;
CompileAction.OutputEventHandler = new DataReceivedEventHandler(CompileOutputReceivedDataEventHandler);
}
return Result;
}
/** Creates an action to archive all the .o files into single .a file */
public FileItem CreateArchiveAndIndex(LinkEnvironment LinkEnvironment)
{
// Create an archive action
Action ArchiveAction = new Action(ActionType.Link);
ArchiveAction.WorkingDirectory = Path.GetFullPath(".");
bool bUsingSh = BuildHostPlatform.Current.Platform != UnrealTargetPlatform.Win64 && BuildHostPlatform.Current.Platform != UnrealTargetPlatform.Win32;
if (bUsingSh)
{
ArchiveAction.CommandPath = "/bin/sh";
ArchiveAction.CommandArguments = "-c '";
}
else
{
ArchiveAction.CommandPath = "cmd.exe";
ArchiveAction.CommandArguments = "/c \"";
}
// this will produce a final library
ArchiveAction.bProducesImportLibrary = true;
// Add the output file as a production of the link action.
FileItem OutputFile = FileItem.GetItemByPath(LinkEnvironment.Config.OutputFilePath);
ArchiveAction.ProducedItems.Add(OutputFile);
ArchiveAction.CommandDescription = "Archive";
ArchiveAction.StatusDescription = Path.GetFileName(OutputFile.AbsolutePath);
ArchiveAction.CommandArguments += string.Format("\"{0}\" {1} \"{2}\"", GetArPath(LinkEnvironment.Config.Target.Architecture), GetArchiveArguments(LinkEnvironment), OutputFile.AbsolutePath);
// Add the input files to a response file, and pass the response file on the command-line.
List<string> InputFileNames = new List<string>();
foreach (FileItem InputFile in LinkEnvironment.InputFiles)
{
string InputAbsolutePath = InputFile.AbsolutePath.Replace("\\", "/");
InputFileNames.Add(string.Format("\"{0}\"", InputAbsolutePath));
ArchiveAction.PrerequisiteItems.Add(InputFile);
ArchiveAction.CommandArguments += string.Format(" \"{0}\"", InputAbsolutePath);
}
// add ranlib
ArchiveAction.CommandArguments += string.Format(" && \"{0}\" \"{1}\"", GetRanlibPath(LinkEnvironment.Config.Target.Architecture), OutputFile.AbsolutePath);
// Add the additional arguments specified by the environment.
ArchiveAction.CommandArguments += LinkEnvironment.Config.AdditionalArguments;
ArchiveAction.CommandArguments.Replace("\\", "/");
if (bUsingSh)
{
ArchiveAction.CommandArguments += "'";
}
else
{
ArchiveAction.CommandArguments += "\"";
}
// Only execute linking on the local PC.
ArchiveAction.bCanExecuteRemotely = false;
return OutputFile;
}
public FileItem FixDependencies(LinkEnvironment LinkEnvironment, FileItem Executable)
{
if (!LinkEnvironment.Config.bIsCrossReferenced)
{
return null;
}
Log.TraceVerbose("Adding postlink step");
bool bUseCmdExe = BuildHostPlatform.Current.Platform == UnrealTargetPlatform.Win64 || BuildHostPlatform.Current.Platform == UnrealTargetPlatform.Win32;
string ShellBinary = bUseCmdExe ? "cmd.exe" : "/bin/sh";
string ExecuteSwitch = bUseCmdExe ? " /C" : ""; // avoid -c so scripts don't need +x
string ScriptName = bUseCmdExe ? "FixDependencies.bat" : "FixDependencies.sh";
FileItem FixDepsScript = FileItem.GetItemByFullPath(Path.Combine(LinkEnvironment.Config.LocalShadowDirectory, ScriptName));
Action PostLinkAction = new Action(ActionType.Link);
PostLinkAction.WorkingDirectory = Path.GetFullPath(".");
PostLinkAction.CommandPath = ShellBinary;
PostLinkAction.StatusDescription = string.Format("{0}", Path.GetFileName(Executable.AbsolutePath));
PostLinkAction.CommandDescription = "FixDeps";
PostLinkAction.bCanExecuteRemotely = false;
PostLinkAction.CommandArguments = ExecuteSwitch;
PostLinkAction.CommandArguments += bUseCmdExe ? " \"" : " -c '";
FileItem OutputFile = FileItem.GetItemByPath(Path.Combine(LinkEnvironment.Config.LocalShadowDirectory, Path.GetFileNameWithoutExtension(Executable.AbsolutePath) + ".link"));
// Make sure we don't run this script until the all executables and shared libraries
// have been built.
PostLinkAction.PrerequisiteItems.Add(Executable);
foreach (FileItem Dependency in BundleDependencies)
{
PostLinkAction.PrerequisiteItems.Add(Dependency);
}
PostLinkAction.CommandArguments += ShellBinary + ExecuteSwitch + " \"" + FixDepsScript.AbsolutePath + "\" && ";
string Touch = bUseCmdExe ? "echo \"\" >> \"{0}\" && copy /b \"{0}\" +,," : "touch \"{0}\"";
PostLinkAction.CommandArguments += String.Format(Touch, OutputFile.AbsolutePath);
PostLinkAction.CommandArguments += bUseCmdExe ? "\"" : "'";
System.Console.WriteLine("{0} {1}", PostLinkAction.CommandPath, PostLinkAction.CommandArguments);
PostLinkAction.ProducedItems.Add(OutputFile);
return OutputFile;
}
public override FileItem LinkFiles(LinkEnvironment LinkEnvironment, bool bBuildImportLibraryOnly)
{
Debug.Assert(!bBuildImportLibraryOnly);
List<string> RPaths = new List<string>();
if (LinkEnvironment.Config.bIsBuildingLibrary || bBuildImportLibraryOnly)
{
return CreateArchiveAndIndex(LinkEnvironment);
}
// Create an action that invokes the linker.
Action LinkAction = new Action(ActionType.Link);
LinkAction.WorkingDirectory = Path.GetFullPath(".");
if (String.IsNullOrEmpty(ClangPath))
{
LinkAction.CommandPath = GCCPath;
}
else
{
LinkAction.CommandPath = ClangPath;
}
// Get link arguments.
LinkAction.CommandArguments = GetLinkArguments(LinkEnvironment);
// Tell the action that we're building an import library here and it should conditionally be
// ignored as a prerequisite for other actions
LinkAction.bProducesImportLibrary = LinkEnvironment.Config.bIsBuildingDLL;
// Add the output file as a production of the link action.
FileItem OutputFile = FileItem.GetItemByPath(LinkEnvironment.Config.OutputFilePath);
OutputFile.bNeedsHotReloadNumbersDLLCleanUp = LinkEnvironment.Config.bIsBuildingDLL;
LinkAction.ProducedItems.Add(OutputFile);
LinkAction.CommandDescription = "Link";
LinkAction.StatusDescription = Path.GetFileName(OutputFile.AbsolutePath);
// Add the output file to the command-line.
LinkAction.CommandArguments += string.Format(" -o \"{0}\"", OutputFile.AbsolutePath);
// Add the input files to a response file, and pass the response file on the command-line.
List<string> InputFileNames = new List<string>();
foreach (FileItem InputFile in LinkEnvironment.InputFiles)
{
InputFileNames.Add(string.Format("\"{0}\"", InputFile.AbsolutePath.Replace("\\", "/")));
LinkAction.PrerequisiteItems.Add(InputFile);
}
string ResponseFileName = GetResponseFileName(LinkEnvironment, OutputFile);
LinkAction.CommandArguments += string.Format(" -Wl,@\"{0}\"", ResponseFile.Create(ResponseFileName, InputFileNames));
if (LinkEnvironment.Config.bIsBuildingDLL)
{
LinkAction.CommandArguments += string.Format(" -Wl,-soname={0}", OutputFile);
}
// Start with the configured LibraryPaths and also add paths to any libraries that
// we depend on (libraries that we've build ourselves).
List<string> AllLibraryPaths = LinkEnvironment.Config.LibraryPaths;
foreach (string AdditionalLibrary in LinkEnvironment.Config.AdditionalLibraries)
{
string PathToLib = Path.GetDirectoryName(AdditionalLibrary);
if (!String.IsNullOrEmpty(PathToLib))
{
// make path absolute, because FixDependencies script may be executed in a different directory
string AbsolutePathToLib = Path.GetFullPath(PathToLib);
if (!AllLibraryPaths.Contains(AbsolutePathToLib))
{
AllLibraryPaths.Add(AbsolutePathToLib);
}
}
if ((AdditionalLibrary.Contains("Plugins") || AdditionalLibrary.Contains("Binaries/ThirdParty") || AdditionalLibrary.Contains("Binaries\\ThirdParty")) && Path.GetDirectoryName(AdditionalLibrary) != Path.GetDirectoryName(OutputFile.AbsolutePath))
{
string RelativePath = Utils.MakePathRelativeTo(Path.GetDirectoryName(AdditionalLibrary), Path.GetDirectoryName(OutputFile.AbsolutePath));
if (!RPaths.Contains(RelativePath))
{
RPaths.Add(RelativePath);
LinkAction.CommandArguments += string.Format(" -Wl,-rpath=\"${{ORIGIN}}/{0}\"", RelativePath);
}
}
}
LinkAction.CommandArguments += string.Format(" -Wl,-rpath-link=\"{0}\"", Path.GetDirectoryName(OutputFile.AbsolutePath));
// Add the library paths to the argument list.
foreach (string LibraryPath in AllLibraryPaths)
{
// use absolute paths because of FixDependencies script again
LinkAction.CommandArguments += string.Format(" -L\"{0}\"", Path.GetFullPath(LibraryPath));
}
// add libraries in a library group
LinkAction.CommandArguments += string.Format(" -Wl,--start-group");
List<string> EngineAndGameLibraries = new List<string>();
foreach (string AdditionalLibrary in LinkEnvironment.Config.AdditionalLibraries)
{
if (String.IsNullOrEmpty(Path.GetDirectoryName(AdditionalLibrary)))
{
// library was passed just like "jemalloc", turn it into -ljemalloc
LinkAction.CommandArguments += string.Format(" -l{0}", AdditionalLibrary);
}
else if (Path.GetExtension(AdditionalLibrary) == ".a")
{
// static library passed in, pass it along but make path absolute, because FixDependencies script may be executed in a different directory
string AbsoluteAdditionalLibrary = Path.GetFullPath(AdditionalLibrary);
if (AbsoluteAdditionalLibrary.Contains(" "))
{
AbsoluteAdditionalLibrary = string.Format("\"{0}\"", AbsoluteAdditionalLibrary);
}
LinkAction.CommandArguments += (" " + AbsoluteAdditionalLibrary);
LinkAction.PrerequisiteItems.Add(FileItem.GetItemByPath(AdditionalLibrary));
}
else
{
// Skip over full-pathed library dependencies when building DLLs to avoid circular
// dependencies.
FileItem LibraryDependency = FileItem.GetItemByPath(AdditionalLibrary);
var LibName = Path.GetFileNameWithoutExtension(AdditionalLibrary);
if (LibName.StartsWith("lib"))
{
// Remove lib prefix
LibName = LibName.Remove(0, 3);
}
string LibLinkFlag = string.Format(" -l{0}", LibName);
if (LinkEnvironment.Config.bIsBuildingDLL && LinkEnvironment.Config.bIsCrossReferenced)
{
// We are building a cross referenced DLL so we can't actually include
// dependencies at this point. Instead we add it to the list of
// libraries to be used in the FixDependencies step.
EngineAndGameLibraries.Add(LibLinkFlag);
if (!LinkAction.CommandArguments.Contains("--allow-shlib-undefined"))
{
LinkAction.CommandArguments += string.Format(" -Wl,--allow-shlib-undefined");
}
}
else
{
LinkAction.PrerequisiteItems.Add(LibraryDependency);
LinkAction.CommandArguments += LibLinkFlag;
}
}
}
LinkAction.CommandArguments += " -lrt"; // needed for clock_gettime()
LinkAction.CommandArguments += " -lm"; // math
LinkAction.CommandArguments += string.Format(" -Wl,--end-group");
// Add the additional arguments specified by the environment.
LinkAction.CommandArguments += LinkEnvironment.Config.AdditionalArguments;
LinkAction.CommandArguments = LinkAction.CommandArguments.Replace("\\\\", "/");
LinkAction.CommandArguments = LinkAction.CommandArguments.Replace("\\", "/");
// prepare a linker script
string LinkerScriptPath = Path.Combine(LinkEnvironment.Config.LocalShadowDirectory, "remove-sym.ldscript");
if (!Directory.Exists(LinkEnvironment.Config.LocalShadowDirectory))
{
Directory.CreateDirectory(LinkEnvironment.Config.LocalShadowDirectory);
}
if (File.Exists(LinkerScriptPath))
{
File.Delete(LinkerScriptPath);
}
using (StreamWriter Writer = File.CreateText(LinkerScriptPath))
{
Writer.WriteLine("UE4 {");
Writer.WriteLine(" global: *;");
Writer.WriteLine(" local: _Znwm;");
Writer.WriteLine(" _Znam;");
Writer.WriteLine(" _ZdaPv;");
Writer.WriteLine(" _ZdlPv;");
Writer.WriteLine("};");
};
LinkAction.CommandArguments += string.Format(" -Wl,--version-script=\"{0}\"", LinkerScriptPath);
// Only execute linking on the local PC.
LinkAction.bCanExecuteRemotely = false;
// Prepare a script that will run later, once all shared libraries and the executable
// are created. This script will be called by action created in FixDependencies()
if (LinkEnvironment.Config.bIsCrossReferenced && LinkEnvironment.Config.bIsBuildingDLL)
{
bool bUseCmdExe = BuildHostPlatform.Current.Platform == UnrealTargetPlatform.Win64 || BuildHostPlatform.Current.Platform == UnrealTargetPlatform.Win32;
string ScriptName = bUseCmdExe ? "FixDependencies.bat" : "FixDependencies.sh";
string FixDepsScriptPath = Path.Combine(LinkEnvironment.Config.LocalShadowDirectory, ScriptName);
if (!bHasWipedFixDepsScript)
{
bHasWipedFixDepsScript = true;
Log.TraceVerbose("Creating script: {0}", FixDepsScriptPath);
StreamWriter Writer = File.CreateText(FixDepsScriptPath);
if (bUseCmdExe)
{
Writer.Write("@echo off\n");
Writer.Write("rem Automatically generated by UnrealBuildTool\n");
Writer.Write("rem *DO NOT EDIT*\n\n");
}
else
{
Writer.Write("#!/bin/sh\n");
Writer.Write("# Automatically generated by UnrealBuildTool\n");
Writer.Write("# *DO NOT EDIT*\n\n");
Writer.Write("set -o errexit\n");
}
Writer.Close();
}
StreamWriter FixDepsScript = File.AppendText(FixDepsScriptPath);
string EngineAndGameLibrariesString = "";
foreach (string Library in EngineAndGameLibraries)
{
EngineAndGameLibrariesString += Library;
}
FixDepsScript.Write(string.Format("echo Fixing {0}\n", Path.GetFileName(OutputFile.AbsolutePath)));
if (!bUseCmdExe)
{
FixDepsScript.Write(string.Format("TIMESTAMP=`stat --format %y \"{0}\"`\n", OutputFile.AbsolutePath));
}
string FixDepsLine = LinkAction.CommandPath + " " + LinkAction.CommandArguments;
string Replace = "-Wl,--allow-shlib-undefined";
FixDepsLine = FixDepsLine.Replace(Replace, EngineAndGameLibrariesString);
string OutputFileForwardSlashes = OutputFile.AbsolutePath.Replace("\\", "/");
FixDepsLine = FixDepsLine.Replace(OutputFileForwardSlashes, OutputFileForwardSlashes + ".fixed");
FixDepsLine = FixDepsLine.Replace("$", "\\$");
FixDepsScript.Write(FixDepsLine + "\n");
if (bUseCmdExe)
{
FixDepsScript.Write(string.Format("move /Y \"{0}.fixed\" \"{0}\"\n", OutputFile.AbsolutePath));
}
else
{
FixDepsScript.Write(string.Format("mv \"{0}.fixed\" \"{0}\"\n", OutputFile.AbsolutePath));
FixDepsScript.Write(string.Format("touch -d \"$TIMESTAMP\" \"{0}\"\n\n", OutputFile.AbsolutePath));
}
FixDepsScript.Close();
}
//LinkAction.CommandArguments += " -v";
return OutputFile;
}
public override void CompileCSharpProject(CSharpEnvironment CompileEnvironment, string ProjectFileName, string DestinationFile)
{
throw new BuildException("Linux cannot compile C# files");
}
public override void SetupBundleDependencies(List<UEBuildBinary> Binaries, string GameName)
{
foreach (UEBuildBinary Binary in Binaries)
{
BundleDependencies.Add(FileItem.GetItemByPath(Binary.ToString()));
}
}
/** Converts the passed in path from UBT host to compiler native format. */
public override String ConvertPath(String OriginalPath)
{
if (BuildHostPlatform.Current.Platform == UnrealTargetPlatform.Linux)
{
return OriginalPath.Replace("\\", "/");
}
else
{
return OriginalPath;
}
}
public override ICollection<FileItem> PostBuild(FileItem Executable, LinkEnvironment BinaryLinkEnvironment)
{
var OutputFiles = base.PostBuild(Executable, BinaryLinkEnvironment);
if (BinaryLinkEnvironment.Config.bIsBuildingDLL || BinaryLinkEnvironment.Config.bIsBuildingLibrary)
{
return OutputFiles;
}
FileItem FixDepsOutputFile = FixDependencies(BinaryLinkEnvironment, Executable);
if (FixDepsOutputFile != null)
{
OutputFiles.Add(FixDepsOutputFile);
}
return OutputFiles;
}
public override UnrealTargetPlatform GetPlatform()
{
return UnrealTargetPlatform.Linux;
}
}
}
I have deleted “-Werror” from line 285.
And I have also installed libjpeg-dev, on the advice of this post:
Note: also “sudo apt-get install mono-gmcs” returns the error:
The following packages have unmet dependencies:
mono-gmcs : Depends: mono-mcs (= 3.12.1-0xamarin1) but 4.6.2.7-0xamarin3 is to be installed
E: Unable to correct problems, you have held broken packages.
I have mono-mcs installed, and mono-complete installed, though.
Also, “sudo apt-get install fglrx” returned a package not found error. So I installed “fglrx-pxpress” instead
By now, i have followed the instructions on the tutorial specifically for Linux Mint.
I run “make ./SlateViewer” and it returns:
$ make ./SlateViewer
bash "/home/a/UnrealEngine"/Engine/Build/BatchFiles/Linux/Build.sh SlateViewer Linux Development
Building SlateViewer...
Using clang version '3.8.0' (string), 3 (major), 8 (minor), 0 (patch)
Performing 37 actions (8 in parallel)
[1/37] Compile CorePrivatePCH.h
[2/37] Compile Module.Slate.2_of_4.cpp
[3/37] Compile Module.Slate.3_of_4.cpp
[4/37] Compile Module.Slate.1_of_4.cpp
[5/37] Compile Module.AppFramework.cpp
[6/37] Compile Module.Slate.4_of_4.cpp
[7/37] Compile Module.SlateViewer.cpp
[8/37] Compile Slate.generated.cpp
[9/37] Compile Module.WebBrowser.cpp
[10/37] Compile Module.SlateReflector.cpp
[11/37] Compile Module.EditorStyle.cpp
[12/37] Compile Module.SourceCodeAccess.cpp
[13/37] Compile EditorStyle.generated.cpp
[14/37] Compile SourceCodeAccess.generated.cpp
[15/37] Compile Module.StandaloneRenderer.cpp
[16/37] Compile Module.SlateCore.cpp
[17/37] Compile SlateCore.generated.cpp
[18/37] Compile Module.Core.2_of_6.cpp
[19/37] Compile Module.CoreUObject.1_of_4.cpp
[20/37] Compile Module.CoreUObject.3_of_4.cpp
[21/37] Compile Module.Core.1_of_6.cpp
[22/37] Compile Module.CoreUObject.2_of_4.cpp
[23/37] Compile Module.DesktopPlatform.cpp
[24/37] Compile Module.CoreUObject.4_of_4.cpp
[25/37] Compile Module.Settings.cpp
[26/37] Compile Module.InputCore.cpp
[27/37] Compile Module.Core.4_of_6.cpp
[28/37] Compile Module.ImageWrapper.cpp
[29/37] Compile InputCore.generated.cpp
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/SlateViewer/Development/ImageWrapper/Module.ImageWrapper.cpp:9:
In file included from /home/a/UnrealEngine/Engine/Source/Developer/ImageWrapper/Private/JpegImageWrapper.cpp:14:
ThirdParty/libJPG/jpgd.cpp(569,51) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,66) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,81) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,96) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,111) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,126) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,141) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,156) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,171) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,186) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,202) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,218) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,234) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,250) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
ThirdParty/libJPG/jpgd.cpp(569,266) : warning: shifting a negative signed value is undefined [-Wshift-negative-value]
static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
~~~~^
[30/37] Compile CoreUObject.generated.cpp
[31/37] Compile Module.Core.3_of_6.cpp
[32/37] Compile Module.Projects.cpp
15 warnings generated.
[33/37] Compile Module.Core.5_of_6.cpp
[34/37] Compile Module.Json.cpp
[35/37] Compile Module.Core.6_of_6.cpp
[36/37] Compile Module.CEF3Utils.cpp
[37/37] Link SlateViewer
-------- End Detailed Actions Stats -----------------------------------------------------------
Cumulative action seconds (8 processors): 0.00 building projects, 755.99 compiling, 0.00 creating app bundles, 0.00 generating debug info, 2.82 linking, 0.00 other
UBT execution time: 127.52 seconds
This returns basically all the same errors I got before without following the instructions to Linux Mint, and just running make in the Unreal directory. Stuff about “shifting a negative signed value is undefined”.
And of course “./SlateViewer” returns a no such file error.
=== Update ===
new output of “make ./SlateViewer”
make ./SlateViewer
bash "/home/a/UnrealEngine"/Engine/Build/BatchFiles/Linux/Build.sh SlateViewer Linux Development
Building SlateViewer...
Using clang version '3.8.0' (string), 3 (major), 8 (minor), 0 (patch)
Target is up to date.
I don’t know why the output is different, or what I did, yet, but I will investigate very soon.
“./SlateViewer” still returns a "no such file or directory error though.
“make” is also still erroring:
~/UnrealEngine $ make
bash "/home/a/UnrealEngine"/Engine/Build/BatchFiles/Linux/Build.sh UE4Client Linux Debug
Building UE4Client...
Using clang version '3.8.0' (string), 3 (major), 8 (minor), 0 (patch)
Target is up to date.
bash "/home/a/UnrealEngine"/Engine/Build/BatchFiles/Linux/Build.sh UE4Client Linux DebugGame
Building UE4Client...
Using clang version '3.8.0' (string), 3 (major), 8 (minor), 0 (patch)
Performing 2 actions (8 in parallel)
[1/2] Compile UELinkerFixups.cpp
[2/2] Link UE4Client-Linux-DebugGame
-------- End Detailed Actions Stats -----------------------------------------------------------
Cumulative action seconds (8 processors): 0.00 building projects, 0.11 compiling, 0.00 creating app bundles, 0.00 generating debug info, 13.73 linking, 0.00 other
UBT execution time: 17.46 seconds
bash "/home/a/UnrealEngine"/Engine/Build/BatchFiles/Linux/Build.sh UE4Client Linux Shipping
Building UE4Client...
Using clang version '3.8.0' (string), 3 (major), 8 (minor), 0 (patch)
Target is up to date.
bash "/home/a/UnrealEngine"/Engine/Build/BatchFiles/Linux/Build.sh UE4Client Linux Test
Building UE4Client...
Using clang version '3.8.0' (string), 3 (major), 8 (minor), 0 (patch)
Target is up to date.
bash "/home/a/UnrealEngine"/Engine/Build/BatchFiles/Linux/Build.sh UE4Client Linux Development
Building UE4Client...
Using clang version '3.8.0' (string), 3 (major), 8 (minor), 0 (patch)
Performing 2 actions (8 in parallel)
[1/2] Compile UELinkerFixups.cpp
[2/2] Link UE4Client
-------- End Detailed Actions Stats -----------------------------------------------------------
Cumulative action seconds (8 processors): 0.00 building projects, 0.16 compiling, 0.00 creating app bundles, 0.00 generating debug info, 8.76 linking, 0.00 other
UBT execution time: 12.25 seconds
bash "/home/a/UnrealEngine"/Engine/Build/BatchFiles/Linux/Build.sh UE4Editor Linux Debug
Building UE4Editor...
Using clang version '3.8.0' (string), 3 (major), 8 (minor), 0 (patch)
/bin/sh -c '/bin/sh "/home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Editor/Debug/FixDependencies.sh" && touch "/home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Editor/Debug/UE4Editor-Linux-Debug.link"'
Performing 1 actions (8 in parallel)
[1/1] FixDeps UE4Editor-Linux-Debug
Fixing libUE4Editor-Landscape-Linux-Debug.so
Fixing libUE4Editor-UnrealEd-Linux-Debug.so
/home/a/UnrealEngine/Engine/Source/ThirdParty/FBX/2014.2.1/lib/linux/x86_64-unknown-linux-gnu/libfbxsdk.a(fbxutils.o): In function `fbxsdk_2014_2_1::FbxPathUtils::GenerateFileName(char const*, char const*)':
fbxutils.cxx:(.text+0x498): warning: the use of `tempnam' is dangerous, better use `mkstemp'
Fixing libUE4Editor-GraphEditor-Linux-Debug.so
Fixing libUE4Editor-KismetCompiler-Linux-Debug.so
Fixing libUE4Editor-SourceControl-Linux-Debug.so
Fixing libUE4Editor-Kismet-Linux-Debug.so
Fixing libUE4Editor-AIModule-Linux-Debug.so
Fixing libUE4Editor-AITestSuite-Linux-Debug.so
Fixing libUE4Editor-UMG-Linux-Debug.so
Fixing libUE4Editor-CollisionAnalyzer-Linux-Debug.so
Fixing libUE4Editor-LogVisualizer-Linux-Debug.so
-------- End Detailed Actions Stats -----------------------------------------------------------
Cumulative action seconds (8 processors): 0.00 building projects, 0.00 compiling, 0.00 creating app bundles, 0.00 generating debug info, 32.57 linking, 0.00 other
UBT execution time: 43.20 seconds
bash "/home/a/UnrealEngine"/Engine/Build/BatchFiles/Linux/Build.sh UE4Editor Linux DebugGame
Building UE4Editor...
Using clang version '3.8.0' (string), 3 (major), 8 (minor), 0 (patch)
/bin/sh -c '/bin/sh "/home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Editor/Development/FixDependencies.sh" && touch "/home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Editor/Development/UE4Editor.link"'
Performing 1 actions (8 in parallel)
[1/1] FixDeps UE4Editor
Fixing libUE4Editor-Landscape.so
Fixing libUE4Editor-UnrealEd.so
/home/a/UnrealEngine/Engine/Source/ThirdParty/FBX/2014.2.1/lib/linux/x86_64-unknown-linux-gnu/libfbxsdk.a(fbxutils.o): In function `fbxsdk_2014_2_1::FbxPathUtils::GenerateFileName(char const*, char const*)':
fbxutils.cxx:(.text+0x498): warning: the use of `tempnam' is dangerous, better use `mkstemp'
Fixing libUE4Editor-GraphEditor.so
Fixing libUE4Editor-KismetCompiler.so
Fixing libUE4Editor-SourceControl.so
Fixing libUE4Editor-Kismet.so
Fixing libUE4Editor-AIModule.so
Fixing libUE4Editor-AITestSuite.so
Fixing libUE4Editor-UMG.so
Fixing libUE4Editor-CollisionAnalyzer.so
Fixing libUE4Editor-LogVisualizer.so
-------- End Detailed Actions Stats -----------------------------------------------------------
Cumulative action seconds (8 processors): 0.00 building projects, 0.00 compiling, 0.00 creating app bundles, 0.00 generating debug info, 16.91 linking, 0.00 other
UBT execution time: 26.55 seconds
bash "/home/a/UnrealEngine"/Engine/Build/BatchFiles/Linux/Build.sh UE4Editor Linux Shipping
Building UE4Editor...
Using clang version '3.8.0' (string), 3 (major), 8 (minor), 0 (patch)
/bin/sh -c '/bin/sh "/home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Editor/Shipping/FixDependencies.sh" && touch "/home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Editor/Shipping/UE4Editor-Linux-Shipping.link"'
Performing 35 actions (8 in parallel)
[1/35] Compile Module.LevelEditor.2_of_3.cpp
[2/35] Compile Module.GameplayDebugger.cpp
[3/35] Link UE4Editor-Linux-Shipping
/home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Editor/Shipping/Launch/Module.Launch.cpp.o: In function `FFeedbackContextEditor::~FFeedbackContextEditor()':
/home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Editor/Shipping/Launch/Module.Launch.cpp:(.text._ZN22FFeedbackContextEditorD2Ev[_ZN22FFeedbackContextEditorD2Ev]+0xa): undefined reference to `vtable for FFeedbackContextEditor'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Editor/Shipping/GameplayDebugger/Module.GameplayDebugger.cpp:3:
/home/a/UnrealEngine/Engine/Source/Developer/GameplayDebugger/Private/GameplayDebugger.cpp(233,9) : error: use of undeclared identifier 'Extender'
return Extender;
^
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Editor/Shipping/GameplayDebugger/Module.GameplayDebugger.cpp:5:
/home/a/UnrealEngine/Engine/Source/Developer/GameplayDebugger/Private/GameplayDebuggingComponent.cpp(632,27) : error: use of undeclared identifier 'EQSLocalData'
if (++CurrentEQSIndex >= EQSLocalData.Num())
^
In file included from /home/a/UnrealEngine/Engine/Intermediate/Build/Linux/x86_64-unknown-linux-gnu/UE4Editor/Shipping/LevelEditor/Module.LevelEditor.2_of_3.cpp:18:
/home/a/UnrealEngine/Engine/Source/Editor/LevelEditor/Private/SLevelViewport.cpp(3371,69) : error: no member named 'GetExecBind' in 'UPlayerInput'
FKeyBind Binding = TargetPlayer->PlayerController->PlayerInput->GetExecBind(TEXT("ShowMouseCursor"));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
2 errors generated.
1 error generated.
-------- End Detailed Actions Stats -----------------------------------------------------------
ERROR: UBT ERROR: Failed to produce item: /home/a/UnrealEngine/Engine/Binaries/Linux/libUE4Editor-LevelEditor-Linux-Shipping.so
Cumulative action seconds (8 processors): 0.00 building projects, 21.80 compiling, 0.00 creating app bundles, 0.00 generating debug info, 0.69 linking, 0.00 other
UBT execution time: 21.46 seconds
Makefile:155: recipe for target 'UE4Editor-Linux-Shipping' failed
make: *** [UE4Editor-Linux-Shipping] Error 5
Okay, I am changing directories to Engine/Binaries/Linux (even though there’s no mention of that on the tutorial on wiki in the section about installing slateviewer for linux mint), and entering ./SlateViewer, and I get the following error:
./SlateViewer: error while loading shared libraries: libLND.so: cannot open shared object file: No such file or directory
more stuff
a@a ~/UnrealEngine $ cd Engine/Binaries/Linux
a@a ~/UnrealEngine/Engine/Binaries/Linux $ LD_LIBRARY_PATH=${HOME}/UnrealEngine/Engine/Source/ThirdParty/LinuxNativeDialogs/UELinuxNativeDialogs/lib/Linux/x86_64-unknown-linux-gnu/ ./SlateViewer
Trying to load: libLND-qt5.so
LND loaded backend: qt5
Using binned.
LogModuleManager:Warning: ModuleManager: Module 'PakFile' not found - its StaticallyLinkedModuleInitializers function is null.
LogModuleManager:Warning: ModuleManager: Module 'SandboxFile' not found - its StaticallyLinkedModuleInitializers function is null.
LogModuleManager:Warning: ModuleManager: Module 'StreamingFile' not found - its StaticallyLinkedModuleInitializers function is null.
LogModuleManager:Warning: ModuleManager: Module 'NetworkFile' not found - its StaticallyLinkedModuleInitializers function is null.
LogInit: Version: 4.7.6-0+++depot+UE4-Releases+4.7
LogInit: API Version: 0
LogInit: Compiled (64-bit): Dec 8 2016 23:09:52
LogInit: Compiled with Clang: 3.8.0 (tags/RELEASE_380/final)
LogInit: Build Configuration: Development
LogInit: Branch Name: ++depot+UE4-Releases+4.7
LogInit: Command line:
LogInit: Base directory: /home/a/UnrealEngine/Engine/Binaries/Linux/
LogInit: Rocket: 0
[2016.12.09-21.10.25:038][ 0]LogTaskGraph: Started task graph with 3 named threads and 6 total threads.
[2016.12.09-21.10.25:053][ 0]LogInit: Presizing for 0 objects not considered by GC, pre-allocating 0 bytes.
[2016.12.09-21.10.25:074][ 0]LogInit: Object subsystem initialized
[2016.12.09-21.10.25:074][ 0]LogInit: Linux hardware info:
[2016.12.09-21.10.25:074][ 0]LogInit: - this process' id (pid) is 19806, parent process' id (ppid) is 27962
[2016.12.09-21.10.25:075][ 0]LogInit: - we are not running under debugger
[2016.12.09-21.10.25:075][ 0]LogInit: - machine network name is 'zamza'
[2016.12.09-21.10.25:075][ 0]LogInit: - we're logged in locally
[2016.12.09-21.10.25:075][ 0]LogInit: - Number of physical cores available for the process: 4
[2016.12.09-21.10.25:075][ 0]LogInit: - Number of logical cores available for the process: 8
[2016.12.09-21.10.25:075][ 0]LogInit: - Memory allocator used: binned
[2016.12.09-21.10.25:075][ 0]LogInit: Linux-specific commandline switches:
[2016.12.09-21.10.25:075][ 0]LogInit: -nodwarf (currently OFF): suppress parsing of DWARF debug info (callstacks will be generated faster, but won't have line numbers)
[2016.12.09-21.10.25:075][ 0]LogInit: -ansimalloc - use malloc()/free() from libc (useful for tools like valgrind and electric fence)
[2016.12.09-21.10.25:075][ 0]LogInit: -jemalloc - use jemalloc for all memory allocation
[2016.12.09-21.10.25:075][ 0]LogInit: -binnedmalloc - use binned malloc for all memory allocation
[2016.12.09-21.10.25:075][ 0]LogInit: -httpproxy=ADDRESS:PORT - redirects HTTP requests to a proxy (only supported if compiled with libcurl)
[2016.12.09-21.10.25:075][ 0]LogInit: -reuseconn - allow libcurl to reuse HTTP connections (only matters if compiled with libcurl)
[2016.12.09-21.10.25:075][ 0]LogInit: -virtmemkb=NUMBER - sets process virtual memory (address space) limit (overrides VirtualMemoryLimitInKB value from .ini)
[2016.12.09-21.10.25:075][ 0]LogInit: - Physical RAM available (not considering process quota): 16 GB (15982 MB, 16366020 KB, 16758804480 bytes)
[2016.12.09-21.10.25:147][ 0]LogTextLocalizationManager: The requested culture ('en_US') has no localization data; parent culture's ('en') localization data will be used.
[2016.12.09-21.10.25:374][ 0]LogInit: Initializing SDL.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 96
Current serial number in output stream: 97
and more stuff
$ LD_LIBRARY_PATH=${HOME}/UnrealEngine/Engine/Source/ThirdParty/LinuxNativeDialogs/UELinuxNativeDialogs/lib/Linux/x86_64-unknown-linux-gnu/ ./UE4Editor
Using binned.
Trying to load: libLND-qt5.so
LND loaded backend: qt5
Increasing per-process limit of core file size to infinity.
LogInit:Display: Running engine without a game
LogInit: Version: 4.7.6-0+++depot+UE4-Releases+4.7
LogInit: API Version: 0
LogInit: Compiled (64-bit): Dec 9 2016 03:15:27
LogInit: Compiled with Clang: 3.8.0 (tags/RELEASE_380/final)
LogInit: Build Configuration: Development
LogInit: Branch Name: ++depot+UE4-Releases+4.7
LogInit: Command line:
LogInit: Base directory: /home/a/UnrealEngine/Engine/Binaries/Linux/
LogInit: Rocket: 0
[2016.12.09-21.16.28:080][ 0]LogTaskGraph: Started task graph with 3 named threads and 6 total threads.
[2016.12.09-21.16.28:779][ 0]LogOnline:Warning: No default platform service specified for OnlineSubsystem
[2016.12.09-21.16.29:576][ 0]LogInit: Presizing for 0 objects not considered by GC, pre-allocating 0 bytes.
[2016.12.09-21.16.29:720][ 0]LogInit: Object subsystem initialized
[2016.12.09-21.16.29:894][ 0]LogInit: Initializing SDL.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 96
Current serial number in output stream: 97