2020-10-06 18:56:59 +02:00
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets= "Build" ToolsVersion= "15.0" 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>
</PropertyGroup>
<Import Project= "..\..\..\..\common.openconsole.props" Condition= "'$(OpenConsoleDir)'==''" />
<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= "../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" />
2020-11-05 01:55:16 +01:00
<ClInclude Include= "../IconPathConverter.h" />
2020-10-06 18:56:59 +02:00
</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 >
Fix build break where Microsoft.Terminal.Control.dll is empty (#9537)
TIL that the `<None Include="Foo.def" />` line in our projects is
actually totally meaningless. The important line is the one that's in
`cppwinrt.build.pre.props`, where we declare
```xml
<ModuleDefinitionFile Condition="Exists('$(ProjectName).def')">$(ProjectName).def</ModuleDefinitionFile>
```
So if you change a project's name, and not the `.def` file, then the
linker will just _not use the `.def` file at all_.
More importantly, this seemingly doesn't matter in debug builds. In a
Debug build, the linker will happily still include `WINRT_CanUnloadNow`
and `WINRT_GetActivationFactory` in the exports from the dll, even
without the `.def`. But in a Release build, the linker is much more
agressive about pruning symbols that aren't referenced, and without
those two, NONE of the symbols are eventually referenced.
This PR fixes `Microsoft.Terminal.Control` by renaming the `.def`, and
makes it marginally harder for someone to make the same mistake in the
future.
## References
* Regressed in #9472
## PR Checklist
* [x] Closes #9529
* [x] I work here
2021-03-18 17:14:21 +01:00
<None Include= "$(ProjectName).def" />
2020-10-06 18:56:59 +02:00
</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>
2021-04-28 12:43:30 +02:00
<ProjectReference Include= "$(OpenConsoleDir)src\propslib\propslib.vcxproj" >
<Project > {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}</Project>
</ProjectReference>
2020-10-06 18:56:59 +02:00
<!-- 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>
2021-01-13 02:23:17 +01:00
2021-03-17 21:47:24 +01:00
<ProjectReference Include= "$(OpenConsoleDir)src\cascadia\TerminalControl\dll\TerminalControl.vcxproj" >
2021-01-13 02:23:17 +01:00
<!-- Private:false 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>
2020-10-06 18:56:59 +02:00
</ProjectReference>
2021-01-13 02:23:17 +01:00
2020-10-06 18:56:59 +02:00
<!-- Reference Microsoft.Terminal.Settings.ModelLib here, so we can use it's 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>
2021-01-13 02:23:17 +01:00
<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. -->
2021-03-17 21:47:24 +01:00
<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>
2021-01-13 02:23:17 +01:00
<IsWinMDFile > true</IsWinMDFile>
<Private > false</Private>
<CopyLocalSatelliteAssemblies > false</CopyLocalSatelliteAssemblies>
</Reference>
</ItemGroup>
2020-12-05 00:49:45 +01:00
<Import Project= "$(OpenConsoleDir)packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets" Condition= "Exists('$(OpenConsoleDir)packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets')" />
2020-10-06 18:56:59 +02:00
<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>
2020-12-05 00:49:45 +01:00
<Error Condition= "!Exists('$(OpenConsoleDir)\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets')" Text= "$([System.String]::Format('$(ErrorText)', '$(OpenConsoleDir)\packages\Microsoft.UI.Xaml.2.5.0-prerelease.201202003\build\native\Microsoft.UI.Xaml.targets'))" />
2020-10-06 18:56:59 +02:00
</Target>
<ItemDefinitionGroup >
<ClCompile >
<AdditionalIncludeDirectories > $(OpenConsoleDir)\dep\jsoncpp\json;%(AdditionalIncludeDirectories);</AdditionalIncludeDirectories>
</ClCompile>
<Link >
<AdditionalDependencies > User32.lib;WindowsApp.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<!-- TSM Lib contains a DllMain that we need to force the use of. -->
<AdditionalOptions Condition= "'$(Platform)'=='Win32'" > /INCLUDE:_DllMain@12</AdditionalOptions>
<AdditionalOptions Condition= "'$(Platform)'!='Win32'" > /INCLUDE:DllMain</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" />
</Project>