Skip to content

Commit

Permalink
Unify and clean up the common build properties (#3429)
Browse files Browse the repository at this point in the history
This commit cleans up and deduplicates all of the common build
preamble/postamble across exe, dll, lib and c++/winrt projects.

The following specific changes have been made:
* All projects now define their ConfigurationType
* All projects now set all their properties *before* including a common
  build file (or any other build files)
* cppwinrt.pre and cppwinrt.post now delegate most of their
  configuration to common.pre and common.post
* (becuase of the above,) all build options are conserved between
  console and c++/winrt components, including specific warnings and
  preprocessor definitions.
* More properties that are configurable per-project are now
  conditioned so the common props don't override them.
* The exe, dll, exe.or.dll, and lib postincludes have been merged into
  pre or post and switched based on condition as required
* Shared items (-shared, -common) are now explicitly vcxitems instead of
  vcxproj files.
* The link line is now manipulated after Microsoft.Cpp sets it, so the
  libraries we specify "win". All console things link first against
  onecore_apiset.lib.
* Fix all compilation errors caused by build unification
* Move CascadiaPackage's resources into a separate item file

Fixes #922.
  • Loading branch information
DHowett authored Nov 5, 2019
1 parent 52d7de3 commit 9dc922f
Show file tree
Hide file tree
Showing 76 changed files with 897 additions and 984 deletions.
4 changes: 0 additions & 4 deletions OpenConsole.sln
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Propsheet.DLL", "src\propsh
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Build Common", "_Build Common", "{04170EEF-983A-4195-BFEF-2321E5E38A1E}"
ProjectSection(SolutionItems) = preProject
src\common.build.dll.props = src\common.build.dll.props
src\common.build.exe.or.dll.props = src\common.build.exe.or.dll.props
src\common.build.exe.props = src\common.build.exe.props
src\common.build.lib.props = src\common.build.lib.props
src\common.build.post.props = src\common.build.post.props
src\common.build.pre.props = src\common.build.pre.props
src\common.build.tests.props = src\common.build.tests.props
Expand Down
23 changes: 9 additions & 14 deletions src/buffer/out/lib/bufferout.vcxproj
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{0CF235BD-2DA0-407E-90EE-C467E8BBC714}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>bufferout</RootNamespace>
<ProjectName>BufferOut</ProjectName>
<TargetName>ConBufferOut</TargetName>
<ConfigurationType>StaticLibrary</ConfigurationType>
</PropertyGroup>
<Import Project="$(SolutionDir)src\common.build.pre.props" />
<ItemGroup>
<ClCompile Include="..\AttrRow.cpp" />
Expand Down Expand Up @@ -49,19 +57,6 @@
<ClInclude Include="..\precomp.h" />
<ClInclude Include="..\UnicodeStorage.hpp" />
</ItemGroup>
<PropertyGroup>
<ProjectGuid>{0CF235BD-2DA0-407E-90EE-C467E8BBC714}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>bufferout</RootNamespace>
<ProjectName>BufferOut</ProjectName>
<TargetName>ConBufferOut</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)\dep;$(SolutionDir)\dep\Console;$(SolutionDir)\dep\Win32K;$(SolutionDir)\dep\AppModel;$(SolutionDir)\dep\MinCore;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<!-- Careful reordering these. Some default props (contained in these files) are order sensitive. -->
<Import Project="$(SolutionDir)src\common.build.lib.props" />
<Import Project="$(SolutionDir)src\common.build.post.props" />
</Project>
</Project>
18 changes: 9 additions & 9 deletions src/buffer/out/ut_textbuffer/TextBuffer.Unit.Tests.vcxproj
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{531C23E7-4B76-4C08-8BBD-04164CB628C9}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>TextBufferUnitTests</RootNamespace>
<ProjectName>TextBuffer.Unit.Tests</ProjectName>
<TargetName>TextBuffer.Unit.Tests</TargetName>
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<Import Project="$(SolutionDir)src\common.build.pre.props" />
<ItemGroup>
<ClCompile Include="TextColorTests.cpp" />
Expand All @@ -17,20 +25,12 @@
<ItemGroup>
<ClInclude Include="..\precomp.h" />
</ItemGroup>
<PropertyGroup>
<ProjectGuid>{531C23E7-4B76-4C08-8BBD-04164CB628C9}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>TextBufferUnitTests</RootNamespace>
<ProjectName>TextBuffer.Unit.Tests</ProjectName>
<TargetName>TextBuffer.Unit.Tests</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>..;$(SolutionDir)src\inc;$(SolutionDir)src\inc\test;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<!-- Careful reordering these. Some default props (contained in these files) are order sensitive. -->
<Import Project="$(SolutionDir)src\common.build.dll.props" />
<Import Project="$(SolutionDir)src\common.build.post.props" />
<Import Project="$(SolutionDir)src\common.build.tests.props" />
</Project>
</Project>
227 changes: 4 additions & 223 deletions src/cascadia/CascadiaPackage/CascadiaPackage.wapproj
Original file line number Diff line number Diff line change
Expand Up @@ -45,233 +45,14 @@
</AppxManifest>
</ItemGroup>
<ItemGroup>
<Content Include="$(OpenConsoleDir)res\terminal\LargeTile.scale-100.png">
<Link>Images\LargeTile.scale-100.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\LargeTile.scale-125.png">
<Link>Images\LargeTile.scale-125.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\LargeTile.scale-150.png">
<Link>Images\LargeTile.scale-150.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\LargeTile.scale-200.png">
<Link>Images\LargeTile.scale-200.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\LargeTile.scale-400.png">
<Link>Images\LargeTile.scale-400.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\LockScreenLogo.scale-100.png">
<Link>Images\LockScreenLogo.scale-100.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\LockScreenLogo.scale-125.png">
<Link>Images\LockScreenLogo.scale-125.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\LockScreenLogo.scale-150.png">
<Link>Images\LockScreenLogo.scale-150.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\LockScreenLogo.scale-200.png">
<Link>Images\LockScreenLogo.scale-200.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\LockScreenLogo.scale-400.png">
<Link>Images\LockScreenLogo.scale-400.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\SmallTile.scale-100.png">
<Link>Images\SmallTile.scale-100.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\SmallTile.scale-125.png">
<Link>Images\SmallTile.scale-125.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\SmallTile.scale-150.png">
<Link>Images\SmallTile.scale-150.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\SmallTile.scale-200.png">
<Link>Images\SmallTile.scale-200.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\SmallTile.scale-400.png">
<Link>Images\SmallTile.scale-400.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\SplashScreen.scale-100.png">
<Link>Images\SplashScreen.scale-100.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\SplashScreen.scale-125.png">
<Link>Images\SplashScreen.scale-125.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\SplashScreen.scale-150.png">
<Link>Images\SplashScreen.scale-150.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\SplashScreen.scale-200.png">
<Link>Images\SplashScreen.scale-200.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\SplashScreen.scale-400.png">
<Link>Images\SplashScreen.scale-400.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square150x150Logo.scale-100.png">
<Link>Images\Square150x150Logo.scale-100.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square150x150Logo.scale-125.png">
<Link>Images\Square150x150Logo.scale-125.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square150x150Logo.scale-150.png">
<Link>Images\Square150x150Logo.scale-150.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square150x150Logo.scale-200.png">
<Link>Images\Square150x150Logo.scale-200.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square150x150Logo.scale-400.png">
<Link>Images\Square150x150Logo.scale-400.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.scale-100.png">
<Link>Images\Square44x44Logo.scale-100.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.scale-125.png">
<Link>Images\Square44x44Logo.scale-125.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.scale-150.png">
<Link>Images\Square44x44Logo.scale-150.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.scale-200.png">
<Link>Images\Square44x44Logo.scale-200.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.scale-400.png">
<Link>Images\Square44x44Logo.scale-400.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-16.png">
<Link>Images\Square44x44Logo.targetsize-16.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-16_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-16_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-20.png">
<Link>Images\Square44x44Logo.targetsize-20.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-20_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-20_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-24.png">
<Link>Images\Square44x44Logo.targetsize-24.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-24_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-24_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-256.png">
<Link>Images\Square44x44Logo.targetsize-256.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-256_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-256_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-30.png">
<Link>Images\Square44x44Logo.targetsize-30.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-30_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-30_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-32.png">
<Link>Images\Square44x44Logo.targetsize-32.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-32_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-32_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-36.png">
<Link>Images\Square44x44Logo.targetsize-36.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-36_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-36_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-40.png">
<Link>Images\Square44x44Logo.targetsize-40.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-40_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-40_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-48.png">
<Link>Images\Square44x44Logo.targetsize-48.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-48_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-48_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-60.png">
<Link>Images\Square44x44Logo.targetsize-60.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-60_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-60_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-64.png">
<Link>Images\Square44x44Logo.targetsize-64.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-64_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-64_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-72.png">
<Link>Images\Square44x44Logo.targetsize-72.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-72_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-72_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-80.png">
<Link>Images\Square44x44Logo.targetsize-80.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-80_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-80_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-96.png">
<Link>Images\Square44x44Logo.targetsize-96.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Square44x44Logo.targetsize-96_altform-unplated.png">
<Link>Images\Square44x44Logo.targetsize-96_altform-unplated.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\StoreLogo.scale-100.png">
<Link>Images\StoreLogo.scale-100.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\StoreLogo.scale-125.png">
<Link>Images\StoreLogo.scale-125.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\StoreLogo.scale-150.png">
<Link>Images\StoreLogo.scale-150.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\StoreLogo.scale-200.png">
<Link>Images\StoreLogo.scale-200.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\StoreLogo.scale-400.png">
<Link>Images\StoreLogo.scale-400.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Wide310x150Logo.scale-100.png">
<Link>Images\Wide310x150Logo.scale-100.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Wide310x150Logo.scale-125.png">
<Link>Images\Wide310x150Logo.scale-125.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Wide310x150Logo.scale-150.png">
<Link>Images\Wide310x150Logo.scale-150.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Wide310x150Logo.scale-200.png">
<Link>Images\Wide310x150Logo.scale-200.png</Link>
</Content>
<Content Include="$(OpenConsoleDir)res\terminal\Wide310x150Logo.scale-400.png">
<Link>Images\Wide310x150Logo.scale-400.png</Link>
</Content>
<!-- Fonts -->
<Content Include="$(OpenConsoleDir)res\Cascadia.ttf" Condition="'$(WindowsTerminalReleaseBuild)'=='true'">
<Link>Cascadia.ttf</Link>
</Content>
<!-- Profile Icons -->
<Content Include="ProfileIcons\{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.scale-100.png" />
<Content Include="ProfileIcons\{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.scale-200.png" />
<Content Include="ProfileIcons\{574e775e-4f2a-5b96-ac1e-a2962a402336}.scale-100.png" />
<Content Include="ProfileIcons\{574e775e-4f2a-5b96-ac1e-a2962a402336}.scale-200.png" />
<Content Include="ProfileIcons\{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.scale-100.png" />
<Content Include="ProfileIcons\{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.scale-200.png" />
<Content Include="ProfileIcons\{9acb9455-ca41-5af7-950f-6bca1bc9722f}.scale-100.png" />
<Content Include="ProfileIcons\{9acb9455-ca41-5af7-950f-6bca1bc9722f}.scale-200.png" />
<Content Include="ProfileIcons\{b453ae62-4e3d-5e58-b989-0a998ec441b8}.scale-100.png" />
<Content Include="ProfileIcons\{b453ae62-4e3d-5e58-b989-0a998ec441b8}.scale-200.png" />
<!-- Default Settings -->
<Content Include="$(OpenConsoleDir)src\cascadia\TerminalApp\defaults.json">
<Link>defaults.json</Link>
</Content>
<!-- Resources -->
<!-- This resw only defines things that are used in this package's AppxManifest,
so it's not in the common resource items. -->
<PRIResource Include="Resources\en-US\Resources.resw" />
</ItemGroup>

<Import Project="$(MSBuildThisFileDirectory)..\CascadiaResources.build.items" />

<Import Project="$(OpenConsoleDir)src\wap-common.build.post.props" />

<ItemGroup>
Expand Down
Loading

0 comments on commit 9dc922f

Please sign in to comment.