diff options
author | Nikita Nemkin <nikita@nemkin.ru> | 2020-06-23 23:32:23 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-23 23:32:23 (GMT) |
commit | bbf36e8903f8e86dcad8131c818e122537c30f9e (patch) | |
tree | 5035803018a68426c52c73a21f2a2abea41659f4 | |
parent | 90ed8a6d71b2d6e0853c14e8e6f85fe730a4329a (diff) | |
download | cpython-bbf36e8903f8e86dcad8131c818e122537c30f9e.zip cpython-bbf36e8903f8e86dcad8131c818e122537c30f9e.tar.gz cpython-bbf36e8903f8e86dcad8131c818e122537c30f9e.tar.bz2 |
bpo-41070: Simplify pyshellext.dll build (GH-21037)
Replace MIDL-generated file with manual GUID definition.
Use the same .def file for release and debug builds.
Update setup build to support latest toolset
-rw-r--r-- | PC/pyshellext.cpp | 10 | ||||
-rw-r--r-- | PC/pyshellext.def | 1 | ||||
-rw-r--r-- | PC/pyshellext.idl | 12 | ||||
-rw-r--r-- | PC/pyshellext_d.def | 6 | ||||
-rw-r--r-- | PCbuild/pyshellext.vcxproj | 4 | ||||
-rw-r--r-- | PCbuild/pyshellext.vcxproj.filters | 8 | ||||
-rw-r--r-- | Tools/msi/bundle/bootstrap/pythonba.vcxproj | 5 |
7 files changed, 10 insertions, 36 deletions
diff --git a/PC/pyshellext.cpp b/PC/pyshellext.cpp index 0198802..ffca169 100644 --- a/PC/pyshellext.cpp +++ b/PC/pyshellext.cpp @@ -12,15 +12,14 @@ #include <olectl.h> #include <strsafe.h> -#include "pyshellext_h.h" - #define DDWM_UPDATEWINDOW (WM_USER+3) static HINSTANCE hModule; static CLIPFORMAT cfDropDescription; static CLIPFORMAT cfDragWindow; -static const LPCWSTR CLASS_SUBKEY = L"Software\\Classes\\CLSID\\{BEA218D2-6950-497B-9434-61683EC065FE}"; +#define CLASS_GUID "{BEA218D2-6950-497B-9434-61683EC065FE}" +static const LPCWSTR CLASS_SUBKEY = L"Software\\Classes\\CLSID\\" CLASS_GUID; static const LPCWSTR DRAG_MESSAGE = L"Open with %1"; using namespace Microsoft::WRL; @@ -121,8 +120,7 @@ HRESULT FilenameListCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, LPCWSTR psz return hr; } - -class PyShellExt : public RuntimeClass< +class DECLSPEC_UUID(CLASS_GUID) PyShellExt : public RuntimeClass< RuntimeClassFlags<ClassicCom>, IDropTarget, IPersistFile @@ -483,7 +481,7 @@ public: } STDMETHODIMP GetClassID(CLSID *pClassID) { - *pClassID = CLSID_PyShellExt; + *pClassID = __uuidof(PyShellExt); return S_OK; } }; diff --git a/PC/pyshellext.def b/PC/pyshellext.def index 5424bd1..288a9ad 100644 --- a/PC/pyshellext.def +++ b/PC/pyshellext.def @@ -1,4 +1,3 @@ -LIBRARY "pyshellext" EXPORTS DllRegisterServer PRIVATE DllUnregisterServer PRIVATE diff --git a/PC/pyshellext.idl b/PC/pyshellext.idl deleted file mode 100644 index c0a1838..0000000 --- a/PC/pyshellext.idl +++ /dev/null @@ -1,12 +0,0 @@ -import "ocidl.idl"; - -[uuid(44039A76-3BDD-41C1-A31B-71C00202CE81), version(1.0)] -library PyShellExtLib -{ - [uuid(BEA218D2-6950-497B-9434-61683EC065FE), version(1.0)] - coclass PyShellExt - { - [default] interface IDropTarget; - interface IPersistFile; - } -};
\ No newline at end of file diff --git a/PC/pyshellext_d.def b/PC/pyshellext_d.def deleted file mode 100644 index 7d2148b..0000000 --- a/PC/pyshellext_d.def +++ /dev/null @@ -1,6 +0,0 @@ -LIBRARY "pyshellext_d" -EXPORTS - DllRegisterServer PRIVATE - DllUnregisterServer PRIVATE - DllGetClassObject PRIVATE - DllCanUnloadNow PRIVATE diff --git a/PCbuild/pyshellext.vcxproj b/PCbuild/pyshellext.vcxproj index 655054e..ea432d6 100644 --- a/PCbuild/pyshellext.vcxproj +++ b/PCbuild/pyshellext.vcxproj @@ -96,7 +96,7 @@ <Link> <AdditionalDependencies>version.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> <SubSystem>Console</SubSystem> - <ModuleDefinitionFile>..\PC\pyshellext$(PyDebugExt).def</ModuleDefinitionFile> + <ModuleDefinitionFile>..\PC\pyshellext.def</ModuleDefinitionFile> </Link> <Midl> <CompileInterface>true</CompileInterface> @@ -104,11 +104,9 @@ </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="..\PC\pyshellext.cpp" /> - <Midl Include="..\PC\pyshellext.idl" /> </ItemGroup> <ItemGroup> <None Include="..\PC\pyshellext.def" /> - <None Include="..\PC\pyshellext_d.def" /> </ItemGroup> <ItemGroup> <ResourceCompile Include="..\PC\pyshellext.rc" /> diff --git a/PCbuild/pyshellext.vcxproj.filters b/PCbuild/pyshellext.vcxproj.filters index 36d1d16..77cd306 100644 --- a/PCbuild/pyshellext.vcxproj.filters +++ b/PCbuild/pyshellext.vcxproj.filters @@ -16,11 +16,6 @@ </ClCompile> </ItemGroup> <ItemGroup> - <Midl Include="..\PC\pyshellext.idl"> - <Filter>Source Files</Filter> - </Midl> - </ItemGroup> - <ItemGroup> <ResourceCompile Include="..\PC\pyshellext.rc"> <Filter>Resource Files</Filter> </ResourceCompile> @@ -29,8 +24,5 @@ <None Include="..\PC\pyshellext.def"> <Filter>Source Files</Filter> </None> - <None Include="..\PC\pyshellext_d.def"> - <Filter>Source Files</Filter> - </None> </ItemGroup> </Project>
\ No newline at end of file diff --git a/Tools/msi/bundle/bootstrap/pythonba.vcxproj b/Tools/msi/bundle/bootstrap/pythonba.vcxproj index 75aad44..ef71fe7 100644 --- a/Tools/msi/bundle/bootstrap/pythonba.vcxproj +++ b/Tools/msi/bundle/bootstrap/pythonba.vcxproj @@ -21,6 +21,9 @@ <PropertyGroup Label="Globals"> <Configuration Condition="'$(Configuration)' == ''">Release</Configuration> <Platform Condition="'$(Platform)' == ''">Win32</Platform> + <PlatformToolset Condition="'$(PlatformToolset)' == '' and ('$(MSBuildToolsVersion)' == '16.0' or '$(VisualStudioVersion)' == '16.0')">v142</PlatformToolset> + <PlatformToolset Condition="'$(PlatformToolset)' == '' and ('$(MSBuildToolsVersion)' == '15.0' or '$(VisualStudioVersion)' == '15.0')">v141</PlatformToolset> + <PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath14)' != ''">v140</PlatformToolset> <PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath14)' != ''">v140</PlatformToolset> <PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(VCTargetsPath12)' != ''">v120</PlatformToolset> <ProjectGuid>{7A09B132-B3EE-499B-A700-A4B2157FEA3D}</ProjectGuid> @@ -47,6 +50,8 @@ </ClCompile> <Link> <AdditionalDependencies>comctl32.lib;gdiplus.lib;msimg32.lib;shlwapi.lib;wininet.lib;dutil.lib;balutil.lib;version.lib;uxtheme.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v142'">$(WixInstallPath)sdk\vs2017\lib\x86</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v141'">$(WixInstallPath)sdk\vs2017\lib\x86</AdditionalLibraryDirectories> <AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v140'">$(WixInstallPath)sdk\vs2015\lib\x86</AdditionalLibraryDirectories> <AdditionalLibraryDirectories Condition="'$(PlatformToolset)' == 'v120'">$(WixInstallPath)sdk\vs2013\lib\x86</AdditionalLibraryDirectories> <ModuleDefinitionFile>pythonba.def</ModuleDefinitionFile> |