XCode.cs: Statically link libraries when forcing AOT (#48156)
authorAlexander Köplinger <alex.koeplinger@outlook.com>
Thu, 11 Feb 2021 14:35:36 +0000 (15:35 +0100)
committerGitHub <noreply@github.com>
Thu, 11 Feb 2021 14:35:36 +0000 (15:35 +0100)
commitc6a518829db96d2824233b0146d9f2fa38b6d2d4
tree302aeda15653f97fb56a2a18ecdc28295f85862f
parent59465d6169c0a49e970e3fd0e1f395901bc3edb7
XCode.cs: Statically link libraries when forcing AOT (#48156)

The fix in https://github.com/dotnet/runtime/pull/48135 wasn't fully correct since it just fixed the problem for libSystem.Native but not the other libraries.

The real problem is that we're setting `preferDylib` to true via `!isDevice` but still generate the pinvoke mapping to `__Internal` for all files where an `.a` file is found.

The reason why this works in the simulator on non-AOT cases is because we only call the `register_dllmap` function when we're actually forcing AOT on the simulator: https://github.com/dotnet/runtime/blob/42009d1f33b52e40e5471d5c0d3ff4a8d5b2b83a/src/tasks/AppleAppBuilder/Templates/runtime.m#L239-L240

The better fix is to extend the check to always apply when forceAOT is true.
src/tasks/AppleAppBuilder/Xcode.cs