From 73e40da0e7bcf716a2d287dcea4f69d17001c420 Mon Sep 17 00:00:00 2001 From: Mamadou Babaei Date: Tue, 17 Feb 2026 13:06:32 +0100 Subject: [PATCH] fix incorrect toolchain linkage for ue 5.7 linux arm64 builds --- Handbook/src/appendix/changelog.md | 8 ++++++++ .../SGCommonThirdPartyLibs.Build.cs | 4 +++- .../SGConnectShmThirdPartyLibs.Build.cs | 4 +++- .../SGConnectThirdPartyLibs.Build.cs | 4 +++- .../SGCoreShmThirdPartyLibs.Build.cs | 4 +++- .../SGCoreThirdPartyLibs/SGCoreThirdPartyLibs.Build.cs | 4 +++- .../SGFmtThirdPartyLibs/SGFmtThirdPartyLibs.Build.cs | 4 +++- .../SGLogThirdPartyLibs/SGLogThirdPartyLibs.Build.cs | 4 +++- .../SGLoguruThirdPartyLibs.Build.cs | 4 +++- .../SGSerialThirdPartyLibs.Build.cs | 4 +++- .../SGWjwwoodSerialThirdPartyLibs.Build.cs | 4 +++- 11 files changed, 38 insertions(+), 10 deletions(-) diff --git a/Handbook/src/appendix/changelog.md b/Handbook/src/appendix/changelog.md index 08efc5a7..f81e8375 100644 --- a/Handbook/src/appendix/changelog.md +++ b/Handbook/src/appendix/changelog.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +This patch release resolves build issues affecting Unreal Engine `5.7` on Linux `Arm64` architecture. + +### Fixed + +- Fixed an issue in UE `5.7` projects where Linux `Arm64` builds were incorrectly linking against third-party libraries compiled with Epic Native/Cross Toolchain `v25` (shipped with UE `5.6`), instead of the required Toolchain `v26` binaries (shipped with UE `5.7`). + ## [2.7.1] - 2025-12-09 This patch release addresses a severe regression affecting UE `5.5` projects with specific settings. diff --git a/Source/ThirdParty/SGCommonThirdPartyLibs/SGCommonThirdPartyLibs.Build.cs b/Source/ThirdParty/SGCommonThirdPartyLibs/SGCommonThirdPartyLibs.Build.cs index 5b30402a..1b58a697 100644 --- a/Source/ThirdParty/SGCommonThirdPartyLibs/SGCommonThirdPartyLibs.Build.cs +++ b/Source/ThirdParty/SGCommonThirdPartyLibs/SGCommonThirdPartyLibs.Build.cs @@ -99,7 +99,9 @@ public class SGCommonThirdPartyLibs : ModuleRules { LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); -#if UE_5_6_OR_LATER +#if UE_5_7_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v26")); +#elif UE_5_6_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v25")); #elif UE_5_5_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23")); diff --git a/Source/ThirdParty/SGConnectShmThirdPartyLibs/SGConnectShmThirdPartyLibs.Build.cs b/Source/ThirdParty/SGConnectShmThirdPartyLibs/SGConnectShmThirdPartyLibs.Build.cs index 1ee15cd3..a5dd5abf 100644 --- a/Source/ThirdParty/SGConnectShmThirdPartyLibs/SGConnectShmThirdPartyLibs.Build.cs +++ b/Source/ThirdParty/SGConnectShmThirdPartyLibs/SGConnectShmThirdPartyLibs.Build.cs @@ -99,7 +99,9 @@ public class SGConnectShmThirdPartyLibs : ModuleRules { LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); -#if UE_5_6_OR_LATER +#if UE_5_7_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v26")); +#elif UE_5_6_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v25")); #elif UE_5_5_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23")); diff --git a/Source/ThirdParty/SGConnectThirdPartyLibs/SGConnectThirdPartyLibs.Build.cs b/Source/ThirdParty/SGConnectThirdPartyLibs/SGConnectThirdPartyLibs.Build.cs index c72225a8..ed00a28c 100644 --- a/Source/ThirdParty/SGConnectThirdPartyLibs/SGConnectThirdPartyLibs.Build.cs +++ b/Source/ThirdParty/SGConnectThirdPartyLibs/SGConnectThirdPartyLibs.Build.cs @@ -99,7 +99,9 @@ public class SGConnectThirdPartyLibs : ModuleRules { LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); -#if UE_5_6_OR_LATER +#if UE_5_7_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v26")); +#elif UE_5_6_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v25")); #elif UE_5_5_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23")); diff --git a/Source/ThirdParty/SGCoreShmThirdPartyLibs/SGCoreShmThirdPartyLibs.Build.cs b/Source/ThirdParty/SGCoreShmThirdPartyLibs/SGCoreShmThirdPartyLibs.Build.cs index 0fbd378b..c0fa8b0c 100644 --- a/Source/ThirdParty/SGCoreShmThirdPartyLibs/SGCoreShmThirdPartyLibs.Build.cs +++ b/Source/ThirdParty/SGCoreShmThirdPartyLibs/SGCoreShmThirdPartyLibs.Build.cs @@ -99,7 +99,9 @@ public class SGCoreShmThirdPartyLibs : ModuleRules { LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); -#if UE_5_6_OR_LATER +#if UE_5_7_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v26")); +#elif UE_5_6_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v25")); #elif UE_5_5_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23")); diff --git a/Source/ThirdParty/SGCoreThirdPartyLibs/SGCoreThirdPartyLibs.Build.cs b/Source/ThirdParty/SGCoreThirdPartyLibs/SGCoreThirdPartyLibs.Build.cs index d6117584..d6d6e4cd 100644 --- a/Source/ThirdParty/SGCoreThirdPartyLibs/SGCoreThirdPartyLibs.Build.cs +++ b/Source/ThirdParty/SGCoreThirdPartyLibs/SGCoreThirdPartyLibs.Build.cs @@ -99,7 +99,9 @@ public class SGCoreThirdPartyLibs : ModuleRules { LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); -#if UE_5_6_OR_LATER +#if UE_5_7_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v26")); +#elif UE_5_6_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v25")); #elif UE_5_5_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23")); diff --git a/Source/ThirdParty/SGFmtThirdPartyLibs/SGFmtThirdPartyLibs.Build.cs b/Source/ThirdParty/SGFmtThirdPartyLibs/SGFmtThirdPartyLibs.Build.cs index 51ec901b..3a9cc9f8 100644 --- a/Source/ThirdParty/SGFmtThirdPartyLibs/SGFmtThirdPartyLibs.Build.cs +++ b/Source/ThirdParty/SGFmtThirdPartyLibs/SGFmtThirdPartyLibs.Build.cs @@ -104,7 +104,9 @@ public class SGFmtThirdPartyLibs : ModuleRules { LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); -#if UE_5_6_OR_LATER +#if UE_5_7_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v26")); +#elif UE_5_6_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v25")); #elif UE_5_5_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23")); diff --git a/Source/ThirdParty/SGLogThirdPartyLibs/SGLogThirdPartyLibs.Build.cs b/Source/ThirdParty/SGLogThirdPartyLibs/SGLogThirdPartyLibs.Build.cs index 1d4d91fa..16d95e22 100644 --- a/Source/ThirdParty/SGLogThirdPartyLibs/SGLogThirdPartyLibs.Build.cs +++ b/Source/ThirdParty/SGLogThirdPartyLibs/SGLogThirdPartyLibs.Build.cs @@ -99,7 +99,9 @@ public class SGLogThirdPartyLibs : ModuleRules { LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); -#if UE_5_6_OR_LATER +#if UE_5_7_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v26")); +#elif UE_5_6_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v25")); #elif UE_5_5_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23")); diff --git a/Source/ThirdParty/SGLoguruThirdPartyLibs/SGLoguruThirdPartyLibs.Build.cs b/Source/ThirdParty/SGLoguruThirdPartyLibs/SGLoguruThirdPartyLibs.Build.cs index d7a430fa..ae54e4c6 100644 --- a/Source/ThirdParty/SGLoguruThirdPartyLibs/SGLoguruThirdPartyLibs.Build.cs +++ b/Source/ThirdParty/SGLoguruThirdPartyLibs/SGLoguruThirdPartyLibs.Build.cs @@ -104,7 +104,9 @@ public class SGLoguruThirdPartyLibs : ModuleRules { LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); -#if UE_5_6_OR_LATER +#if UE_5_7_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v26")); +#elif UE_5_6_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v25")); #elif UE_5_5_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23")); diff --git a/Source/ThirdParty/SGSerialThirdPartyLibs/SGSerialThirdPartyLibs.Build.cs b/Source/ThirdParty/SGSerialThirdPartyLibs/SGSerialThirdPartyLibs.Build.cs index 8eb4cc25..d1dcd271 100644 --- a/Source/ThirdParty/SGSerialThirdPartyLibs/SGSerialThirdPartyLibs.Build.cs +++ b/Source/ThirdParty/SGSerialThirdPartyLibs/SGSerialThirdPartyLibs.Build.cs @@ -99,7 +99,9 @@ public class SGSerialThirdPartyLibs : ModuleRules { LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); -#if UE_5_6_OR_LATER +#if UE_5_7_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v26")); +#elif UE_5_6_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v25")); #elif UE_5_5_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23")); diff --git a/Source/ThirdParty/SGWjwwoodSerialThirdPartyLibs/SGWjwwoodSerialThirdPartyLibs.Build.cs b/Source/ThirdParty/SGWjwwoodSerialThirdPartyLibs/SGWjwwoodSerialThirdPartyLibs.Build.cs index 2dadfa85..d7447611 100644 --- a/Source/ThirdParty/SGWjwwoodSerialThirdPartyLibs/SGWjwwoodSerialThirdPartyLibs.Build.cs +++ b/Source/ThirdParty/SGWjwwoodSerialThirdPartyLibs/SGWjwwoodSerialThirdPartyLibs.Build.cs @@ -99,7 +99,9 @@ public class SGWjwwoodSerialThirdPartyLibs : ModuleRules { LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); -#if UE_5_6_OR_LATER +#if UE_5_7_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v26")); +#elif UE_5_6_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v25")); #elif UE_5_5_OR_LATER LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v23"));