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.
133 lines
7.6 KiB
XML
133 lines
7.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<Import Project="..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
|
<Import Project="$(OpenConsoleDir)src\wap-common.build.pre.props" />
|
|
<PropertyGroup Label="Version">
|
|
<!-- These fields are picked up by PackageES -->
|
|
<VersionMajor>0</VersionMajor>
|
|
<VersionMinor>6</VersionMinor>
|
|
</PropertyGroup>
|
|
<PropertyGroup Label="Configuration">
|
|
<TargetPlatformVersion>10.0.18362.0</TargetPlatformVersion>
|
|
<TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>
|
|
<!--
|
|
These two properties are very important!
|
|
Without them, msbuild will stomp MinVersion and MaxVersionTested in the
|
|
Package.appxmanifest and replace them with whatever our values for
|
|
TargetPlatformMinVersion and TargetPlatformVersion are.
|
|
-->
|
|
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
|
|
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
|
|
</PropertyGroup>
|
|
<PropertyGroup>
|
|
<ProjectGuid>CA5CAD1A-224A-4171-B13A-F16E576FDD12</ProjectGuid>
|
|
<EntryPointProjectUniqueName>..\WindowsTerminal\WindowsTerminal.vcxproj</EntryPointProjectUniqueName>
|
|
<DebuggerType>NativeOnly</DebuggerType>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="!Exists('CascadiaPackage_TemporaryKey.pfx')">
|
|
<AppxPackageSigningEnabled>false</AppxPackageSigningEnabled>
|
|
<AppxBundle>Never</AppxBundle>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="Exists('CascadiaPackage_TemporaryKey.pfx')">
|
|
<AppxPackageSigningEnabled>true</AppxPackageSigningEnabled>
|
|
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
|
|
<PackageCertificateKeyFile>CascadiaPackage_TemporaryKey.pfx</PackageCertificateKeyFile>
|
|
</PropertyGroup>
|
|
<ItemGroup Condition="Exists('CascadiaPackage_TemporaryKey.pfx')">
|
|
<None Include="CascadiaPackage_TemporaryKey.pfx" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<AppxManifest Include="Package.appxmanifest" Condition="'$(WindowsTerminalReleaseBuild)'=='true'">
|
|
<SubType>Designer</SubType>
|
|
</AppxManifest>
|
|
<AppxManifest Include="Package-Dev.appxmanifest" Condition="'$(WindowsTerminalReleaseBuild)'!='true'">
|
|
<SubType>Designer</SubType>
|
|
</AppxManifest>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<!-- 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>
|
|
<ProjectReference Include="..\WindowsTerminal\WindowsTerminal.vcxproj" />
|
|
<ProjectReference Include="..\..\host\exe\Host.EXE.vcxproj" />
|
|
</ItemGroup>
|
|
<!-- Stomp the path to conhost.exe.
|
|
This task will copy OpenConsole.exe to the appx as conhost.exe, and place it
|
|
adjacent to WindowsTerminal.exe.
|
|
-->
|
|
<Target Name="OpenConsoleStompSourceProjectForWapProject" BeforeTargets="_ConvertItems">
|
|
<ItemGroup>
|
|
<!-- Stomp all "SourceProject" values for all incoming dependencies to flatten the package. -->
|
|
<_TemporaryFilteredWapProjOutput Include="@(_FilteredNonWapProjProjectOutput)" />
|
|
<_FilteredNonWapProjProjectOutput Remove="@(_TemporaryFilteredWapProjOutput)" />
|
|
<_FilteredNonWapProjProjectOutput Include="@(_TemporaryFilteredWapProjOutput)">
|
|
<!-- Override the filename for OpenConsole.exe (only) -->
|
|
<TargetPath Condition="'%(Filename)' == 'OpenConsole' and '%(Extension)' == '.exe'">conhost.exe</TargetPath>
|
|
<!-- Blank the SourceProject here to vend all files into the root of the package. -->
|
|
<SourceProject>
|
|
</SourceProject>
|
|
</_FilteredNonWapProjProjectOutput>
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<!-- Move all the PRI files that would be packaged into the appx into _PriFile so that
|
|
GenerateProjectPriFile catches them. This requires us to move payload collection
|
|
up before GenerateProjectPriFile, when it is typically _after_ it (because the
|
|
DesktopBridge project type is built to only prepare the payload during appx manifest
|
|
generation.
|
|
|
|
Since PRI file generation is _before_ manifest generation (for possibly obvious or
|
|
important reasons), that doesn't work for us.
|
|
-->
|
|
<PropertyGroup>
|
|
<!-- Only for MSBuild versions < 16.3.0 -->
|
|
<_GenerateProjectPriFileDependsOn Condition="$(MSBuildVersion) < '16.3.0'">OpenConsoleLiftDesktopBridgePriFiles;$(_GenerateProjectPriFileDependsOn)</_GenerateProjectPriFileDependsOn>
|
|
</PropertyGroup>
|
|
<Target Name="OpenConsoleLiftDesktopBridgePriFiles" DependsOnTargets="_ConvertItems">
|
|
<ItemGroup>
|
|
<_PriFile Include="@(_NonWapProjProjectOutput)" Condition="'%(Extension)' == '.pri'" />
|
|
<!-- Remove all other .pri files from the appx payload. -->
|
|
<AppxPackagePayload Remove="@(AppxPackagePayload)" Condition="'%(Extension)' == '.pri'" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<!-- VS 16.3.0 added a rule to the WAP packaging project that removes all non-WAP payload, which we were relying on to
|
|
roll up our subproject resources. We have to suppress that rule but keep part of its logic, because that rule is
|
|
where the AppxPackagePayload items are created. -->
|
|
<PropertyGroup>
|
|
<!-- Only for MSBuild versions <= 16.4.0 -->
|
|
<!-- TODO: Change this to hard less than once the 16.4.0 previews fix the bug. -->
|
|
<WapProjBeforeGenerateAppxManifestDependsOn
|
|
Condition="$(MSBuildVersion) <= '16.4.0'">
|
|
$([MSBuild]::Unescape('$(WapProjBeforeGenerateAppxManifestDependsOn.Replace('_RemoveAllNonWapUWPItems', '_OpenConsoleRemoveAllNonWapUWPItems'))'))
|
|
</WapProjBeforeGenerateAppxManifestDependsOn>
|
|
</PropertyGroup>
|
|
<Target Name="_OpenConsoleRemoveAllNonWapUWPItems">
|
|
<ItemGroup>
|
|
<AppxPackagePayload Include="@(WapProjPackageFile)" />
|
|
<AppxUploadPackagePayload Include="@(UploadWapProjPackageFile)" />
|
|
<!-- 16.3.0 - remove non-resources.pri PRI files since we just forced them back in. -->
|
|
<AppxPackagePayload Remove="@(AppxPackagePayload)" Condition="'%(Extension)' == '.pri' and '%(Filename)' != 'resources'" />
|
|
<AppxUploadPackagePayload Remove="@(AppxUploadPackagePayload)" Condition="'%(Extension)' == '.pri' and '%(Filename)' != 'resources'" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<!-- This is required to get the package dependency in the AppXManifest. -->
|
|
<Import Project="..\..\..\packages\Microsoft.UI.Xaml.2.2.191021001-prerelease\build\native\Microsoft.UI.Xaml.targets" Condition="Exists('..\..\..\packages\Microsoft.UI.Xaml.2.2.191021001-prerelease\build\native\Microsoft.UI.Xaml.targets')" />
|
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
|
<PropertyGroup>
|
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
|
</PropertyGroup>
|
|
<Error Condition="!Exists('..\..\..\packages\Microsoft.UI.Xaml.2.2.191021001-prerelease\build\native\Microsoft.UI.Xaml.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.UI.Xaml.2.2.191021001-prerelease\build\native\Microsoft.UI.Xaml.targets'))" />
|
|
</Target>
|
|
|
|
</Project>
|