Commit Graph

3245 Commits

Author SHA1 Message Date
RPG3D
b65e7beea4 Ignore empty AAR directories on Android (contributed by RPG3D)
#jira UE-88492
#PR #6676
#ue4
#android
#rb trivial

[CL 11520899 by Chris Babcock in 4.25 branch]
2020-02-18 16:46:54 -05:00
PierreOlivier Latour
1d307c0dd7 Fixed UnrealBuildTool crashing on launch if initialization of UnrealTargetPlatform static members variables happens out of order
## Summary

`UnrealTargetPlatform` and `UnrealPlatformGroup` are partial structs which each have a static member variable declared like this:

private static UniqueStringRegistry StringRegistry = new UniqueStringRegistry();

These partial structs have additional implementations in /Engine/Platforms/XXX/Source/Programs/UnrealBuildTool/UEBuildXXX.cs, which also have static member variables declared like this:

public static UnrealTargetPlatform XXX = FindOrAddByName("XXX");

`FindOrAddByName()` is a static method on `UnrealTargetPlatform` and `UnrealPlatformGroup` which accesses `StringRegistry` and requires it to be initialized i.e. non-null.

It appears that there's no guarantee in .NET runtime that the static member variables in the "original" implementation of the partial structs will be initialized _before_ the ones from the "additional" implementations. This means `XXX` above can be initialized in the additonal implementation before `StringRegistry` has been initialized in the original implementation, which means it's still null when `FindOrAddByName()` is called so the tool crashes.

In practice, this is 100% reproducible in our public GitHub mirror when opening `UnrealBuildTool.csproj` with VisualStudio Mac. This IDE rewrites the project file which affects when / how UEBuildXXX.cs is compiled, and static member variables for these partial structs end up being initialized out or order.

The only solution I found that worked was to replace all accesses to the `StringRegistry` static member variables by a wrapper function `GetUniqueStringRegistry()` which takes care of initializing it - only once. Since all this happens while the tool launches, this code should not need to be multithread aware / re-entrant.

NOTE: There is another partial struct `RestrictedFolder` in this codebase which also use `UniqueStringRegistry` in a similar way but the 2 implementations are in the same source file, so the bug may not happen and I left the implementation untouched.

## Test Plan

- Opened `UnrealBuildTool.csproj` with VisualStudio Mac
- Built UnrealBuildTool and verified it crashed on launch due to `StringRegistry` being NULL when used by `FindOrAddByName()`
- Confirmed the crash doesn't happen anymore after applying this change and that the `StringRegistry` static member variable was only set once by `GetUniqueStringRegistry()`


#jira UE-88908
#rb ben.marsh

[CL 11498874 by PierreOlivier Latour in 4.25 branch]
2020-02-18 10:02:51 -05:00
Jack Porter
a9754c84e0 Fixed iOS toolchain crash with missing provision
#jira UE-88744
#rb trivial
#rnx

[CL 11493809 by Jack Porter in 4.25 branch]
2020-02-18 02:02:29 -05:00
Chris Babcock
37d9d57517 Update BundleTool to 0.13.0
#jira UE-88929
#ue4
#android
#rb Tyler.Quinn

[CL 11467813 by Chris Babcock in 4.25 branch]
2020-02-17 17:23:05 -05:00
Ben Marsh
196c1088ff Fix null reference when generating project files in binary release.
#rb none
#rnx
#jira UE-88874

[CL 11461845 by Ben Marsh in 4.25 branch]
2020-02-17 13:53:16 -05:00
Michael Sartain
63b75a2301 Linux AArch64 libs for FreeType2 v2.10.0, ICU 64.1, and HarfBuzz 2.4.0
Includes BuildForLinuxAArch64.sh cross compilation scripts

Adds LinuxAArch64 back to installed engine builds (CL 11419001)

#jira UE-88745
#rb Brandon.Schaefer

[CL 11452535 by Michael Sartain in 4.25 branch]
2020-02-14 19:11:35 -05:00
Brandon Schaefer
e266d81a91 Move to new llvm clang 9.0.1 v16 toolchain
#jira UE-85219
#rb none
#fyi Michael.Sartain

[CL 11448348 by Brandon Schaefer in 4.25 branch]
2020-02-14 16:01:35 -05:00
Ben Marsh
b37d68e4a5 Remove Gnmx from hard-coded list of modules that aren't IWYU compatible.
#rb none
#rnx
#jira UE-84505

[CL 11433161 by Ben Marsh in 4.25 branch]
2020-02-13 21:09:57 -05:00
Rolando Caloca
5b82f15def Copying //UE4/Dev-RenderPlat-Staging@11388153 to //UE4/Main
#rb none
#rnx

[CL 11388545 by Rolando Caloca in Main branch]
2020-02-12 13:27:19 -05:00
Brandon Schaefer
b16b8c8ac8 For non dll, assume our ../../.. structure for rpaths. Keep the new way to DSOs which will play a role when it comes to plugins etc.
#jira UE-87705
#rb none
#fyi Michael.Sartain

[CL 11359548 by Brandon Schaefer in Main branch]
2020-02-11 17:04:04 -05:00
Ben Marsh
64e23d62de UBT: Output toolchain info when doing XGE export.
#rb none
#rnx

[CL 11341939 by Ben Marsh in Main branch]
2020-02-11 12:56:09 -05:00
Ben Marsh
6615366b2f Use VS2017 by default when running static analysis with PVS studio.
#rb none
#fyi Marc.Audy
#rnx

[CL 11341779 by Ben Marsh in Main branch]
2020-02-11 12:38:20 -05:00
hongyi yu
6113e739fc Merge JoshA's fix to config hierarchy from engine
- Fixed the platform extension config location checks in C# to match C++

[FYI] Josh.Adams


#ROBOMERGE-SOURCE: CL 11310070 via CL 11310074
#ROBOMERGE-BOT: (v653-11302973)

[CL 11311379 by hongyi yu in Main branch]
2020-02-10 16:05:03 -05:00
Josh Adams
fc1220a663 - Fixed the platform extension config location checks in C# to match C++
#rb hongyi.yu

[CL 11309846 by Josh Adams in Main branch]
2020-02-10 15:17:47 -05:00
michael trepka
e864c7a6cc Change the minimum OS version required to launch the game on Mac to 10.14.6
[FYI] Matt.Collins, Will.Damon


#ROBOMERGE-SOURCE: CL 11301793 via CL 11301794 via CL 11301795 via CL 11301796
#ROBOMERGE-BOT: (v0-11244347)

[CL 11301797 by michael trepka in Main branch]
2020-02-09 12:25:33 -05:00
jack porter
28d01347a9 Prevent IOS provisioning parse failure when remote building on a Mac without internet access
#rb trivial


#ROBOMERGE-SOURCE: CL 11300828 via CL 11300829
#ROBOMERGE-BOT: (v647-11244347)

[CL 11300830 by jack porter in Main branch]
2020-02-08 04:25:47 -05:00
Josh Adams
aa9705149b Copying Private-LoadTimes-4.24 stream to Main. Biggest changes are in Materials/Shader memory freezing.
#rb none

[CL 11282608 by Josh Adams in Main branch]
2020-02-06 13:13:41 -05:00
Stefan Boberg
55a8b15f1f Copying //UE4/Dev-Core to Main (//UE4/Main)
#rb none

[CL 11258477 by Stefan Boberg in Main branch]
2020-02-05 14:26:36 -05:00
ben marsh
8c54206370 UBT: Fix UHT always running for installed engine builds. Was dependent on timestamps of binaries downloaded by launcher.
#rb none
#jira UE-88122

#ROBOMERGE-SOURCE: CL 11248022 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v647-11244347)

[CL 11254406 by ben marsh in Main branch]
2020-02-05 12:40:41 -05:00
brandon schaefer
77081a0b31 Append a suffix to the binary name before the extension when using llvm sanitizers to avoid overwriting binary/*.so names
#jira UE-88101
#rb none
[FYI] Michael.Sartain, Michael.Trepka


#ROBOMERGE-SOURCE: CL 11246101 via CL 11246102 via CL 11246103
#ROBOMERGE-BOT: (v647-11244347)

[CL 11254337 by brandon schaefer in Main branch]
2020-02-05 12:40:10 -05:00
Marc Audy
aec58d8240 Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 11246035
#rb
#rnx

[CL 11252410 by Marc Audy in Dev-Framework branch]
2020-02-05 12:12:38 -05:00
Marc Audy
4ec917cbba Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 11213977
#rb
#rnx

[CL 11215578 by Marc Audy in Dev-Framework branch]
2020-02-04 11:43:57 -05:00
Marc Audy
6be7175165 Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 11203868
#rb
#rnx

[CL 11203920 by Marc Audy in Dev-Framework branch]
2020-02-01 14:39:32 -05:00
Rolando Caloca
f63a3e857e Merging //UE4/Main@11178322 to Dev-RenderPlat-Staging
#rnx
#rb none

[CL 11195678 by Rolando Caloca in Dev-RenderPlat-Staging branch]
2020-01-31 10:34:10 -05:00
Jack Porter
96dc927d49 Pulling Dev-RPS
#rb None

[CL 11191662 by Jack Porter in Dev-Mobile branch]
2020-01-30 23:06:23 -05:00