* [wasm/wasi] Consolidate build targets
Current state of build files:
```
wasm: WasmApp.props, WasmApp.targets, WasmApp.Native.targets
wasi: WasiApp.props, WasiApp.targets, WasiApp.Native.targets
``
The wasm, and wasi build have lot of shared code but that is not
representative in the actual files, since the wasi targets started life
as a quick-copy-comment-out-bits of the wasm targets.
This commit consolidates these into:
```
common: WasmApp.Common.props, WasmApp.Common.targets
wasm : WasmApp.props, WasmApp.targets
wasi : WasiApp.props, WasiApp.targets
```
## `WasmApp.Common.{props,targets}`
This has all the common parts of the build for browser-wasm, and wasi,
and includes bits from `WasmApp.{props,targets}`, and
`WasmApp.Native.{props,targets}`.
- The top level target remains the same - `WasmBuildApp`.
- There are a few "public" targets that can be hooked into:
- `PrepareInputsForWasmBuild`
- `WasmGenerateAppBundle`
- `PrepareForWasmBuildNative`
- `WasmLinkDotNet`
- all these public targets have corresponding `*DependsOn` properties
which can be used for extending the build
note: this commit does not add a public target for AOT, but it might be
added in future.
## WasmApp.{props,targets}
This is for `browser-wasm` projects. The file might be renamed in
future.
## WasiApp.{props,targets}
This is for `wasi-wasm` projects. `ILStrip` becomes usable as a feature
for `wasi-wasm` because of this consolidation.
* [wasi] WBT: Use TestOutputWrapper
* [wasm] WBT: Track target name changes
* [wasi] WBT: Add new tests
* cleanup
* cleanup
* address feedback
* address feedback
* Add XUnitLogChecker to log libraries dumps (#93906)
Libraries CI failures that generate dumps will now show the dump output in the console log itself.
* Change NativeAOT condition
* Pass the global property set to false in the post build step.
* Address suggestion:
- Avoid using yml extraHelixArguments.
- Add the new embedded SetCommands optional section in runner scripts.
- Set __IsXUnitLogCheckerSupported in tests.targets as SetScriptCommand items instead of directly in sendtohelixhelp.proj.
* Only add XUnitLogChecker as HelixPayload if its directory is found. Whether it was built or not has already been decided before, and the runner scripts know when to execute it.
* Condition the use of NetCoreAppPrevious TFM
NuGet doesn't support duplicate TFMs in the TargetFrameworks string.
Condition the use of NetCoreAppPrevious TFMs until NuGet supports that
(which is planned afaik).
* Fix ODBC project TFM
* Move portable RID graph into runtime and clean-up
1. Move portable RID graph into runtime
2. Allow updates to both the non-portable and portable RID graphs under
source build.
3. Clean-up project and remove hacks
* Update README and delete test
* Fix RID graph update when the key already exists
* Update src/libraries/Microsoft.NETCore.Platforms/readme.md
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
* Update src/libraries/Microsoft.NETCore.Platforms/readme.md
Co-authored-by: Andy Gocke <angocke@microsoft.com>
---------
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Co-authored-by: Andy Gocke <angocke@microsoft.com>
* Use live illink
* Include ILLink.Tasks for subsets that depend on it
Also prevent build-native.proj from importing illink.targets.
* Address feedback
- Don't reference ILLink.Tasks from subsets
- Use PackageReference from illink.tasks
- Import props from source directory
Add extensibility to shipping targets to make this possible.
- Set IsSourceProject false for .proj files
* Fix TFM, Configuration, PrivateAssets
* Address feedback
Avoid needing to reorganize SDK imports
* Fix typo
* Fix configuration in ToolsILLinkDir
* Don't change IsSourceProject
* Update eng/illink.targets
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Fix tools configuration
* Normalize directory separator chars
We agreed on (at least under src/libraries) to use the Windows directory separator char `\` instead of a forward slash. This helps when looking at binlogs as those then correctly display a path.
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Propagate TasksConfiguration when building tests
* Mark tasks projects as non-source projects and default to Release for CI/official builds(#84488)
* Update paths when copying to CORE_ROOT
* Flow TasksConfiguration in build & specify generator config
1. Flow the TasksConfiguration in the root build (Subsets.props)
2. Specify the LibrariesConfiguration explicitly when building the
LibraryImport source generators.
3. Set tasks configuration to debug by default.
* Include the Subsets.props change
* Update tasks.proj
---------
Co-authored-by: Elinor Fung <elfung@microsoft.com>
* Fixes https://github.com/dotnet/runtime/issues/42961
Enable strict mode comparison during servicing when
`ApiCompatNetCoreAppBaselineVersion` is the current .NET version. When
the GA targeting pack is released, that property should be updated which
will turn on strict mode comparison and prohibits the addition of new
API.
Suppressing one error in the baseline file that showed-up because
out-of-band assemblies now being passed in as assembly references.
While at it I also cleaned-up how private assemblies are handled during
the build.
* PR feedback
Since we bumped to NDK 23, having the aot compiler itself generate shared libraries stopped working. This is due to NDK 23 moving most of the toolchain into a common bin directory. AS was left over in each of these directories as an alias to bin/<triple>-as.
This change adds a task to collect all of the important NDK toolchain paths. It also fixes up the aot build when AOTWithLibraryFiles is set to true and we want the aot compiler to produce shared libraries.
Fixes https://github.com/dotnet/runtime/issues/87585
When looking at the 8.0 Preview 5 SDK, xml files are missing for certain
assemblies. This is likely because of the TargetFramework condition in
intellisense.targets. Instead of conditioning on the rid-less net8.0
TFM, use the sfx.proj which already assemblies the shared framework and
targeting pack layout to copy the documentation files.
Additionally, remove the XmlDocDir and copy the files into the targeting
pack folder which was a difference between the "real" targeting pack and
the "fake" one that libraries generates.
Doesn't actually work E2E because the inline threadstatics work broke our Android support (the one added in https://github.com/dotnet/corert/pull/8323).
```
C:\Users\michals\.nuget\packages\microsoft.netcore.app.runtime.nativeaot.linux-bionic-arm64\8.0.0-preview.6.23307.4/r
untimes/linux-bionic-arm64/\native\libRuntime.WorkstationGC.a(MiscStubs.S.o): In function `RhpGetInlinedThreadStaticB
ase':
/__w/1/s/src/coreclr/nativeaot/Runtime/arm64/MiscStubs.S:12: undefined reference to `tls_InlinedThreadStatics'
/__w/1/s/src/coreclr/nativeaot/Runtime/arm64/MiscStubs.S:12: undefined reference to `tls_InlinedThreadStatics'
/__w/1/s/src/coreclr/nativeaot/Runtime/arm64/MiscStubs.S:12: undefined reference to `tls_InlinedThreadStatics'
/__w/1/s/src/coreclr/nativeaot/Runtime/arm64/MiscStubs.S:12: undefined reference to `tls_InlinedThreadStatics'
```
* Don't enable ILLink analyzers for unsupported TFMs
This adds a condition to EnableSingleFileAnalyzer to prevent it from requiring
the ILLink pack that is only supported on netcoreapp3.0 and above.
Adding a condition on the TFM requires moving the setting into a targets file.
Also consolidates more of the analyzer logic into this file.
---------
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Haiku: Initial configuration support
Initially recognize Haiku as a supported platform in
Directory.Build.props and all scripts in eng/**.
* Drop some unused configure values
Drop some unused configure values from tryrun.cmake,
configure.cmake and config.h.in.
* Simplify error message in build.sh
Simplified an error message for the `--os` option to avoid maintaining a duplicate list of OSes.
Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>