* Enable wasm building on OSX.
Upgrade libLLVM to 4.0.0 and LLVMSharp to 5.0.0
LLVM upgrade: Fix 'Use still stuck around after Def is destroyed' of the deleted basic blocks
Add wasm support in runtest.sh
Remove HelloWasm.csproj reference to .ilproj on non-windows OS because of dependency on ilasm
Fix LinkNative target to execute correct commands for Unix wasm builds.
Added support for building on Ubuntu 16.04.3
Update documentation on how to build WebAssembly.
As it stands we only produce a Windows ILCompiler package. This work implements building and publishing of OS-specific runtime packages and spins off ILCompiler as a meta-package, which can be referenced when adding to a project.
Working on this, a quirk in MSBuild behavior under .NET Core popped up - build artifacts (i.e. .targets and .props files) are imported for direct project package references, but not for runtime-specific packages, defined as dependencies in the meta-package. This doesn't seem to be the case in vanilla MSBuild.
The below is a serious hack to work around this - during runtime, we find the resolved runtime package reference and define the path to it on disk, from which all OS-specific components are loaded and run. The motivation behind the workaround was to keep the package as small as possible, particularly because of the large intersection of components between OS implementations.
All workarounds are marked as such and should be removed once Microsoft/msbuild#2807 is resolved.
There is some slowdown because of sequential resolution of targets, but not immediately noticeable and is unfortunately unavoidable - almost entirely avoided if CoreRT build targets are referenced directly (excluding MSBuild overhead).
CoreRT is component of ProjectN (aka .NET Native for UWP), but our current defines do not reflect it because of CORERT is not defined in ProjectN builds. This creates confusion for folks outside the core runtime team, and conflicts with our documentation. For example, https://github.com/dotnet/corert/blob/master/Documentation/intro-to-corert.md says "CoreRT is the .NET Core runtime that is optimized for AOT scenarios, which .NET Native targets". It does not say "CoreRT is the .NET Core runtime optimized for AOT scenarios that uses RyuJIT backend" or anything like that.
- Before this change:
PROJECTN: defined in closed source ProjectN builds
CORERT: defined in open source CoreRT builds
CORECLR: defined in CoreCLR builds
- After this change:
PROJECTN: defined in closed source ProjectN builds (same)
CORERT: defined in both open source CoreRT builds and closed source ProjectN builds (different)
CORECLR: defined in CoreCLR builds (same)
[tfs-changeset: 1680901]
* Move build-restore.cmd back to build-managed
buildpipeline needs to be updated to make this split
* Cleanup dir.props/dir.targets
* Add back VS clues
* Reformat whitespaces to match VS convention
- Pick up latest .NET Core 2.0 CLI and buildtools
- Remove all project.json references and convert everything to msbuild projects
- Stick to vanilla .NET CLI project shape as much as possible. Minimize dependencies on buildtools special behaviors
The latest project templates do not have it, and it is only good for generating warnings like the following in the detailed build log:
Project file contains ToolsVersion="4.0". This toolset may be unknown or missing, in which case you may be able to resolve this by installing the appropriate version of MSBuild, or the build may have been forced to a particular ToolsVersion for policy reasons. Treating the project as if it had ToolsVersion="14.0". For more information, please see http://go.microsoft.com/fwlink/?LinkId=293424.
[tfs-changeset: 1662024]
The way we were setting common defines (such as `AMD64`, `BIT64`, `ARM`)
was extremely fragile and invited partial fixes such as #3414 and #3424.
This really needs to be centralized.
- Refactorings and tweaks of various ILCompiler infrastructure to allow use within the runtime
- Refactor delegate creation info off of CompilerTypeSystemContext onto TypeSystemContext
- Tweak jit interface to always refer to nodes via interfaces instead of concrete types
- adjust CorInfoImpl.constructStringLiteral to respect the RepresentsIndirectionCell flag
- Initial copy of JitCodeManager. Currently only supports Windows.
- System.Private.Jit
- Uses infrastructure from the ILCompiler such as the CorInfoImpl, jitinterface, and the dependency node infrastructure to define a way to express newly generated code and its dependencies.
- Where relocs from jitted code depend on resolving to other components, they are always indirected through an indirection cell, and the final value is computed by the dynamic type loader GenericDictionaryCell system (which is poorly named, and is actually a general purpose runtime component resolution system.)
- New concept of dynamic MethodEntrypoints in the type loader. This is used to bridge to the jit where necessary
- The various bits of build time goo to produce experimental versions of System.Private.Reflection.Core, System.Private.Reflection.Execution, and System.Private.TypeLoader which contain the ECMA based type loader, and support the jit.
- The new behavior is only enabled for these new experimental builds.
- As the existing ECMA 335 based typeloader/reflection logic hasn't been enabled for building, there are fixes to make it work again
[tfs-changeset: 1651156]
* Split pipeline build to match CoreFX's model.
- OS-specific legs no longer publish to MyGet, they just upload to Azure.
- New publish leg downloads from Azure and publishes to MyGet.
- Only includes Microsoft.TargetingPack.Private.CoreRT for now, will add ILCompiler
after we sort out what OS-specific packages should be named.
* Addressing code review feedback (PR#2505).
Microsoft.Net.Compilers 2.0.0-beta3 has support for byref locals and returns that will allow us to improve and simplify number of low-level constructs in the runtime.
- Switch over to using standardized init-tools script used by other repos
- Update to recent buildtools
- Switch to running msbuild against CoreCLR instead of mono
- Make build scripts to be otherwise more similar to the ones used by other repos
Fixes#974.
Changing the OutputPath also changed ProductPackageDir to something
weird, so I took this as an opportunity to stop placing packaging
related stuff into weird directories (".nuget" was a weird one too -
prefixing with a dot is how you hide directories on Unix).
runtest.sh was passing a dead parameter to restore.sh, so I fixed that
too. I didn't test on Unix. The CI will...
This reverts commit 766f4ea7ff, reversing
changes made to ce31cfa86e.
Revert "Merge pull request #767 from schellap/wmain"
This reverts commit 86e568eb6e, reversing
changes made to 1d3ef5fd84.
Revert formatting to old project.json and cppcompilerflag in runtest.cmd
- Fix few issues and produce xunit format
- Set HOME if undefined and DOTNET_HOME
- Enable CPP and JIT for all platforms except OSX
o CLI has no support for RyuJIT.