PowerShell/docs/building/internals.md
Jason Shirk ad07bbeeac Merge pull request #1481 from lzybkr/jasonsh/docs
Coding guideline docs and other minor doc updates
2016-07-25 22:26:50 -07:00

35 lines
1.3 KiB
Markdown

Internals of build process
=========================================
The purpose of this document is to explain build process **internals** with subtle nuances.
This document is not by any means complete.
The ultimate source of truth is the code in `.\build.psm1` that's getting executed on the corresponding CI system.
This document assumes that you can successfully build PowerShell from sources for your platform.
Top directory
-----------
We are calling `dotnet` tool build for `$Top` directory
- `src\powershell-windows` for CoreCLR on Windows.
- `src\powershell-unix` for CoreCLR on Linux and OS X.
- `src\Microsoft.PowerShell.ConsoleHost` for FullCLR builds (Windows only)
### Dummy dependencies
We use dummy dependencies between project.json files to leverage `dotnet` build functionality.
For example, `src\powershell-windows\project.json` has dependency on `Microsoft.PowerShell.PSReadLine`,
but in reality, there is no build dependency.
Dummy dependencies allows us to build just `$Top` folder, instead of building several folders.
### Dummy dependencies rules
* If assembly is part of FullCLR build,
it should be listed as a dependency for FullCLR $Top folder (src\Microsoft.PowerShell.ConsoleHost)
* If assembly is part of CoreCLR build,
it should be listed as a dependency for $Top folder (src\powershell-unix or src\powershell-windows)