• A
    [wasm] Add incremental build support (#57113) · 3e3b00c5
    Ankit Jain 提交于
    * Update tasks to support incremental build
    
    MonoAOTCompiler:
    - Compiles assemblies to .bc files.
    - Hashes for the .bc files are stored in a json cache file.
    - And uses .depfile generated by mono-aot-cross, to figure out the
      if any of the dependencies have changed
    - Writes out the actual .bc file only if the assembly, or it's
      dependencies changed
    
    EmccCompile.cs: Support a `%(Dependencies)` metadata on the source
    files, to compile the files only when needed.
    
    * Update wasm targets
    
    * don't pass unncessary args to RunTests
    
    * Add tests for incremental builds
    
    * Disable non-wasm builds, for testing
    
    * Add miggins LogAsErrorException.cs
    
    * Bump sdk for workload testing to 6.0.100-rc.1.21410.3
    
    * fix build
    
    * MonoAOTCompiler: use the full path to copy the final .bc file
    
    * Make the method used with `MemberData`, static
    
    otherwise xunit just shows a cryptic:
    ```
        Wasm.Build.Tests.RebuildTests.NoOpRebuild [STARTING]
        Wasm.Build.Tests.RebuildTests.NoOpRebuild [FAIL]
          System.NotSupportedException : Specified method is not supported.
    ```
    
    * add back builds
    
    * Split Wasm.Build.Tests into multiple helix jobs
    
    * Revert "add back builds"
    
    This reverts commit 1d031c04e13780ec73180ba6f06a37ee42c24203.
    
    * Split up native rebuild tests
    
    * remove non-test classes
    
    * add back builds
    
    This reverts commit b008130a7886c2e2b9f16c83641c1b8c936082f6.
    
    * MonoAOTCompiler: make cache optional
    
    * MonoAOTCompiler: handle the case where we have a cache entry, but the file on disk doesn't exist
    
    * Fix aot compiler task output
    
    * MonoAOTCompiler: Use hashes of .bc files instead of assemblies
    
    `--depfile` isn't supported on aot config used by android, and fails
    with:
    
    ```
    * Assertion at /__w/1/s/src/mono/mono/mini/aot-compiler.c:14216, condition `acfg->aot_opts.llvm_only && acfg->aot_opts.asm_only && acfg->aot_opts.llvm_outfile' not met
    ```
    
    Instead, use hashes of the .bc.tmp files generated, with the existing
    .bc files.
    
    * MonoAOTCompiler: Support more than one output file
    
    The earlier implementation assumed that there would be only one output
    file. But in some cases (eg. android), there are more than one, like
    `.s`, `.dll-llvm.o`.
    
    * -bump sdk for workload testing
    
    * MonoAOTCompiler: don't use tmp files at all, when cache isn't being
    
    .. used.
    Co-authored-by: NLarry Ewing <lewing@microsoft.com>
    3e3b00c5
Wasm.Build.Tests.csproj 4.8 KB