mirror of
https://github.com/microsoft/terminal.git
synced 2026-07-08 17:46:05 +00:00
This pull request removes the following vendored open source, in favor of getting it from vcpkg: - CLI11 2.4 - jsoncpp 1.9 - fmt 7.1.3 - gsl 3.1 (not vendored, but submoduled--arguably worse!) Now that Visual Studio 2022 includes a built-in workload for vcpkg, the onboarding process is much smoother. Terminal should only require the vcpkg workload. I've added some build rules that detect vcpkg via VS and via the user's environment before falling back to a location in the source tree. The CI pipeline will fall back to installing and bootstrapping vcpkg in dep/vcpkg if necessary. Some OSS has not been (and will not be) migrated: - wyhash: ours is included directly in til/hash - pcg_random: we have a stripped down copy compared to vcpkg - stb_rect: vcpkg only ships *all of STB*; ours is a stripped down copy - chromium numerics: vcpkg does not ship Chromium, especially not this tiny fraction of Chromium - dynamic_bitset and libpopcnt: removing in #17510 - interval_tree: no vcpkg equivalent To support the needs of the inbox Windows build, I've split up our vcpkg manifest into dependencies for all projects and dependencies just for Terminal. To support this, we now offer a `terminal` feature. The vcpkg rules in `common.build.pre.props` are set up to turn it on, whereas the build rules we eventually write for the OS will not be. Most of the work is concentrated in `common.build.pre.props`.
147 lines
7.3 KiB
XML
147 lines
7.3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<PropertyGroup Label="Globals">
|
|
<ProjectGuid>{CA5CAD1A-082C-4476-9F33-94B339494076}</ProjectGuid>
|
|
<ProjectName>Microsoft.Terminal.Settings.Model</ProjectName>
|
|
<RootNamespace>Microsoft.Terminal.Settings.Model</RootNamespace>
|
|
<!-- cppwinrt.build.pre.props depends on these settings: -->
|
|
<!-- build a dll, not exe (Application) -->
|
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
<SubSystem>Console</SubSystem>
|
|
<!-- sets a bunch of Windows Universal properties -->
|
|
<OpenConsoleUniversalApp>true</OpenConsoleUniversalApp>
|
|
<PgoTarget>true</PgoTarget>
|
|
</PropertyGroup>
|
|
<PropertyGroup Label="NuGet Dependencies">
|
|
<TerminalCppWinrt>true</TerminalCppWinrt>
|
|
<TerminalMUX>true</TerminalMUX>
|
|
</PropertyGroup>
|
|
<Import Project="..\..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
|
<Import Project="$(OpenConsoleDir)src\common.nugetversions.props" />
|
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.pre.props" />
|
|
<!-- ========================= XAML files ======================== -->
|
|
<ItemGroup>
|
|
<!-- DON'T PUT XAML FILES HERE! Put them in TerminalAppLib.vcxproj -->
|
|
</ItemGroup>
|
|
<!-- ========================= Headers ======================== -->
|
|
<ItemGroup>
|
|
<!-- Only put headers for winrt types in here. Don't put other header files
|
|
in here - put them in the lib's vcxproj instead! -->
|
|
<ClInclude Include="../ActionArgs.h" />
|
|
<ClInclude Include="../ActionMap.h" />
|
|
<ClInclude Include="../CascadiaSettings.h" />
|
|
<ClInclude Include="../ColorScheme.h" />
|
|
<ClInclude Include="../Command.h" />
|
|
<ClInclude Include="../GlobalAppSettings.h" />
|
|
<ClInclude Include="../KeyChordSerialization.h" />
|
|
<ClInclude Include="../KeyMapping.h" />
|
|
<ClInclude Include="../Profile.h" />
|
|
<ClInclude Include="../TerminalWarnings.h" />
|
|
<ClInclude Include="../NewTabMenuEntry.h" />
|
|
<ClInclude Include="../ActionEntry.h">
|
|
<DependentUpon>../NewTabMenuEntry.h</DependentUpon>
|
|
</ClInclude>
|
|
<ClInclude Include="../SeparatorEntry.h">
|
|
<DependentUpon>../NewTabMenuEntry.h</DependentUpon>
|
|
</ClInclude>
|
|
<ClInclude Include="../FolderEntry.h">
|
|
<DependentUpon>../NewTabMenuEntry.h</DependentUpon>
|
|
</ClInclude>
|
|
<ClInclude Include="../ProfileEntry.h">
|
|
<DependentUpon>../NewTabMenuEntry.h</DependentUpon>
|
|
</ClInclude>
|
|
<ClInclude Include="../RemainingProfilesEntry.h">
|
|
<DependentUpon>../NewTabMenuEntry.h</DependentUpon>
|
|
</ClInclude>
|
|
<ClInclude Include="../ProfileCollectionEntry.h">
|
|
<DependentUpon>../NewTabMenuEntry.h</DependentUpon>
|
|
</ClInclude>
|
|
<ClInclude Include="../MatchProfilesEntry.h">
|
|
<DependentUpon>../NewTabMenuEntry.h</DependentUpon>
|
|
</ClInclude>
|
|
</ItemGroup>
|
|
<!-- ========================= Cpp Files ======================== -->
|
|
<!-- Don't put source files in here - put them in the lib's vcxproj instead! -->
|
|
<!-- ========================= idl Files ======================== -->
|
|
<ItemGroup>
|
|
<!-- DON'T PUT IDL FILES HERE! Put them in the lib's vcxproj -->
|
|
</ItemGroup>
|
|
<!-- ========================= Misc Files ======================== -->
|
|
<ItemGroup>
|
|
<None Include="$(ProjectName).def" />
|
|
</ItemGroup>
|
|
<!-- ========================= Project References ======================== -->
|
|
<ItemGroup>
|
|
<!--
|
|
the packaging project won't recurse through our dependencies, you have to
|
|
make sure that if you add a cppwinrt dependency to any of these projects,
|
|
you also update all the consumers
|
|
-->
|
|
<ProjectReference Include="$(OpenConsoleDir)src\types\lib\types.vcxproj">
|
|
<Project>{18D09A24-8240-42D6-8CB6-236EEE820263}</Project>
|
|
</ProjectReference>
|
|
<ProjectReference Include="$(OpenConsoleDir)src\propslib\propslib.vcxproj">
|
|
<Project>{345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}</Project>
|
|
</ProjectReference>
|
|
<!-- The midl compiler however, _will_ aggregate our winmd dependencies
|
|
somehow. So make sure to only include top-level dependencies here (don't
|
|
include Settings and Connection, since Control will include them for us) -->
|
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalConnection\TerminalConnection.vcxproj">
|
|
<Private>false</Private>
|
|
</ProjectReference>
|
|
|
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalControl\dll\TerminalControl.vcxproj">
|
|
<!-- Private:true and ReferenceOutputAssembly:false, in combination with
|
|
the manual reference to TerminalControl.winmd below make sure that this
|
|
project will compile correct, and that we won't roll up the TermControl
|
|
xbf's into the packaging project twice. -->
|
|
<Private>true</Private>
|
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
|
</ProjectReference>
|
|
|
|
<!-- Reference Microsoft.Terminal.Settings.ModelLib here, so we can use its winmd as
|
|
our winmd. This didn't work correctly in VS2017, you'd need to
|
|
manually reference the lib -->
|
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsModel\Microsoft.Terminal.Settings.ModelLib.vcxproj">
|
|
<Private>true</Private>
|
|
</ProjectReference>
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<!-- Manually add a reference to TerminalControl here. We need this so
|
|
MDMERGE will know where the TermControl types are defined. However, we need
|
|
to do it exactly like this so the packaging project won't roll up
|
|
TermControl's .xbf's from both the TermControl project and this one. -->
|
|
<Reference Include="Microsoft.Terminal.Control">
|
|
<HintPath>$(OpenConsoleCommonOutDir)Microsoft.Terminal.Control\Microsoft.Terminal.Control.winmd</HintPath>
|
|
<IsWinMDFile>true</IsWinMDFile>
|
|
<Private>false</Private>
|
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
|
</Reference>
|
|
|
|
<Reference Include="Microsoft.Terminal.Core">
|
|
<HintPath>$(OpenConsoleCommonOutDir)TerminalCore\Microsoft.Terminal.Core.winmd</HintPath>
|
|
<IsWinMDFile>true</IsWinMDFile>
|
|
<Private>false</Private>
|
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
|
</Reference>
|
|
</ItemGroup>
|
|
|
|
<ItemDefinitionGroup>
|
|
<Link>
|
|
<AdditionalDependencies>%(AdditionalDependencies);user32.lib;$(IntDir)\..\Microsoft.Terminal.Settings.Model.lib\Microsoft.Terminal.Settings.Model.res</AdditionalDependencies>
|
|
<!-- TSM Lib contains a DllMain that we need to force the use of. -->
|
|
<AdditionalOptions Condition="'$(Platform)'=='Win32'">/INCLUDE:_DllMain@12 %(AdditionalOptions)</AdditionalOptions>
|
|
<AdditionalOptions Condition="'$(Platform)'!='Win32'">/INCLUDE:DllMain %(AdditionalOptions)</AdditionalOptions>
|
|
</Link>
|
|
<Reference>
|
|
<!-- Do not propagate microsoft.ui.xaml upwards as a private dependency. -->
|
|
<Private>false</Private>
|
|
</Reference>
|
|
</ItemDefinitionGroup>
|
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.post.props" />
|
|
|
|
<!-- This -must- go after cppwinrt.build.post.props because that includes many VS-provided props including appcontainer.common.props, which stomps on what cppwinrt.targets did. -->
|
|
<Import Project="$(OpenConsoleDir)src\common.nugetversions.targets" />
|
|
</Project>
|