Compile OpenConsoleProxy without CRT (#11610)
After this commit OpenConsoleProxy will be built without a CRT. This cuts down its binary size and DLL dependency bloat. We hope that this fixes a COM server activation bug if the user doesn't have a CRT installed globally on their system. Fixes #11529
This commit is contained in:
parent
9662bc6910
commit
def1bdd693
|
@ -938,6 +938,7 @@ GTP
|
|||
guc
|
||||
gui
|
||||
guidatom
|
||||
guiddef
|
||||
GValue
|
||||
GWL
|
||||
GWLP
|
||||
|
@ -1535,6 +1536,7 @@ NOCOLOR
|
|||
NOCOMM
|
||||
NOCONTEXTHELP
|
||||
NOCOPYBITS
|
||||
nodefaultlib
|
||||
nodiscard
|
||||
NODUP
|
||||
noexcept
|
||||
|
@ -2232,6 +2234,7 @@ STARTWPARMSW
|
|||
Statusline
|
||||
stdafx
|
||||
STDAPI
|
||||
stdc
|
||||
stdcall
|
||||
stdcpp
|
||||
stderr
|
||||
|
|
|
@ -107,7 +107,7 @@
|
|||
C4467: usage of ATL attributes is deprecated
|
||||
Conhost code still uses ATL.
|
||||
-->
|
||||
<DisableSpecificWarnings>4103;4201;4312;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings>4103;4201;4312;4467;5105;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<PreprocessorDefinitions>_WINDOWS;EXTERNAL_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
|
||||
|
@ -117,6 +117,7 @@
|
|||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<LanguageStandard_C>stdc17</LanguageStandard_C>
|
||||
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
|
||||
<ControlFlowGuard>Guard</ControlFlowGuard>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
<ConformanceMode>true</ConformanceMode>
|
||||
<UseStandardPreprocessor>true</UseStandardPreprocessor>
|
||||
<AdditionalOptions>%(AdditionalOptions) /bigobj /Zc:twoPhase-</AdditionalOptions>
|
||||
<DisableSpecificWarnings>5104;5105;28204;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings>5104;28204;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
|
||||
<AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
|
||||
</ClCompile>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<Import Project="$(SolutionDir)src\common.build.pre.props" />
|
||||
<ItemGroup>
|
||||
<Midl Include="IConsoleHandoff.idl">
|
||||
<!--
|
||||
<!--
|
||||
In Razzle, IDL files generate %FileName%.h
|
||||
In Visual Studio, IDL files generate %FileName%_h.h
|
||||
Visual Studio is easier to override than Razzle.
|
||||
|
@ -31,6 +31,7 @@
|
|||
<ItemGroup>
|
||||
<ClInclude Include="$(IntDir)\IConsoleHandoff.h" />
|
||||
<ClInclude Include="$(IntDir)\ITerminalHandoff.h" />
|
||||
<ClInclude Include="nodefaultlib_shim.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="$(IntDir)\dlldata.c" />
|
||||
|
@ -56,16 +57,26 @@
|
|||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<AdditionalIncludeDirectories>.;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CallingConvention Condition="'$(Platform)'!='ARM64'">StdCall</CallingConvention>
|
||||
<!-- Must be Stdcall on all platforms to resolve _ObjectStublessClient3 -->
|
||||
<PreprocessorDefinitions>REGISTER_PROXY_DLL;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<ForcedIncludeFiles>nodefaultlib_shim.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<ModuleDefinitionFile>OpenConsoleProxy.def</ModuleDefinitionFile>
|
||||
<!--
|
||||
Not depending on the CRT cuts binary size by half and prevents issues if this DLL
|
||||
is copied elsewhere and executed outside of our app package without our bundled CRT present.
|
||||
-->
|
||||
<AdditionalDependencies />
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
<EntryPointSymbol>DllMain</EntryPointSymbol>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<!-- Careful reordering these. Some default props (contained in these files) are order sensitive. -->
|
||||
<Import Project="$(SolutionDir)src\common.build.post.props" />
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
@ -41,6 +41,9 @@
|
|||
<ClInclude Include="$(IntDir)\ITerminalHandoff.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="nodefaultlib_shim.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Midl Include="IConsoleHandoff.idl">
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#include <guiddef.h>
|
||||
|
||||
#if !defined(_M_IX86) && !defined(_M_X64)
|
||||
|
||||
// ARM64 doesn't define a (__builtin_)memcmp function without CRT,
|
||||
// but we need one to compile IID_GENERIC_CHECK_IID.
|
||||
// Luckily we only ever use memcmp for IIDs.
|
||||
#pragma function(memcmp)
|
||||
inline int memcmp(const IID* a, const IID* b, size_t count)
|
||||
{
|
||||
(void)(count);
|
||||
return 1 - InlineIsEqualGUID(a, b);
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue