Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add special Mac Catalyst values for mtriple to MonoAOTCompiler.props #57687

Merged

Commits on Aug 18, 2021

  1. Add special Mac Catalyst values for mtriple to MonoAOTCompiler.props

    Effectively, we are correctly saying "build a Mac Catalyst app from runtime
    and these `-llvm.o` files, but the `-llvm.o` files are not correctly being
    built in a Mac Catalyst compatible way, resulting in the error
    
    ```
      ld: building for Mac Catalyst, but linking in object file built for , file '/Users/filipnavara/Projects/llvmbug/obj/Debug/net6.0-maccatalyst/maccatalyst-arm64/nativelibraries/aot-output/arm64/llvmbug.dll.llvm.o'
    ```
    
    The target platform parameter gets passed around a LOT -
    `src/tasks/AotCompilerTask/MonoAOTCompiler.props` specifies
    `<MonoAOTCompilerDefaultAotArguments Condition="'$(TargetArchitecture)' == 'arm64'" Include="mtriple=arm64-ios" />`
    which passes through to MonoAOTCompiler.cs task which passes through to
    the `mono --aot=llvmopts=mtriple=arm64-ios` flag, which is processed by
    `src/mono/mono/mini/aot-compiler.c` and eventually regurgitated as
    `llc -mtriple=arm64-ios -march=aarch64`, which results in .o files which
    lack the required annotations to be considered Catalyst compatible.
    
    Thankfully, it seems that `llc` accepts `clang`'s `-target` triplet
    values as valid for `-mtriple`, so passing through Catalyst specific
    values for `mtriple` in `MonoAOTCompiler.props` results in .o files
    which are correctly linked later by `clang` during the AppleAppBuilder
    task.
    
    It's slow though! 🙀
    
    Fixes dotnet#57589
    directhex committed Aug 18, 2021
    Configuration menu
    Copy the full SHA
    b20bf6a View commit details
    Browse the repository at this point in the history