]> granicus.if.org Git - python/commitdiff
[bpo-30916] Pre-build OpenSSL and Tcl/Tk for Windows (#2688)
authorSteve Dower <steve.dower@microsoft.com>
Mon, 17 Jul 2017 09:15:48 +0000 (11:15 +0200)
committerGitHub <noreply@github.com>
Mon, 17 Jul 2017 09:15:48 +0000 (11:15 +0200)
Updates ssl and tkinter projects to use pre-built externals

34 files changed:
Doc/make.bat
Lib/test/test_ssl.py
Misc/NEWS.d/next/Windows/2017-07-15-00-40-12.bpo-30916.BpCrro.rst [new file with mode: 0644]
Modules/_ssl.c
PCbuild/_hashlib.vcxproj
PCbuild/_ssl.vcxproj
PCbuild/_ssl.vcxproj.filters
PCbuild/_tkinter.vcxproj
PCbuild/build.bat
PCbuild/find_msbuild.bat
PCbuild/find_python.bat [new file with mode: 0644]
PCbuild/get_externals.bat
PCbuild/libeay.vcxproj [deleted file]
PCbuild/openssl.props
PCbuild/openssl.vcxproj [new file with mode: 0644]
PCbuild/pcbuild.proj
PCbuild/pcbuild.sln
PCbuild/prepare_ssl.bat
PCbuild/prepare_ssl.py
PCbuild/prepare_tcltk.bat [new file with mode: 0644]
PCbuild/pyproject.props
PCbuild/python.props
PCbuild/ssleay.vcxproj [deleted file]
PCbuild/tcl.vcxproj
PCbuild/tcltk.props
PCbuild/tix.vcxproj
PCbuild/tk.vcxproj
Tools/msi/buildrelease.bat
Tools/msi/exe/exe.wixproj
Tools/msi/get_externals.bat
Tools/msi/lib/lib_files.wxs
Tools/msi/tcltk/tcltk.wixproj
Tools/msi/tcltk/tcltk_d.wxs
Tools/msi/tcltk/tcltk_files.wxs

index d9c0ad0adecfe6eb2e0fe6326bcd5152a58ac0f3..b9e8a759c51a7267e31bb49652e712fbdbabf3a4 100644 (file)
@@ -5,8 +5,19 @@ pushd %~dp0
 
 set this=%~n0
 
-if "%SPHINXBUILD%" EQU "" set SPHINXBUILD=sphinx-build
+call ..\PCBuild\find_python.bat %PYTHON%
+if "%SPHINXBUILD%" EQU "" if "%PYTHON%" NEQ "" (
+    set SPHINXBUILD=%PYTHON%\..\Scripts\sphinx-build.exe
+    rem Cannot use %SPHINXBUILD% in the same block where we set it
+    if not exist "%PYTHON%\..\Scripts\sphinx-build.exe" (
+        echo Installing sphinx with %PYTHON%
+        "%PYTHON%" -m pip install sphinx
+        if errorlevel 1 exit /B
+    )
+)
+
 if "%PYTHON%" EQU "" set PYTHON=py
+if "%SPHINXBUILD%" EQU "" set SPHINXBUILD=sphinx-build
 
 if "%1" NEQ "htmlhelp" goto :skiphhcsearch
 if exist "%HTMLHELP%" goto :skiphhcsearch
index fdaf1c52046f1528638cad1242f3e816a72e1cfd..d960d8206509d7cce8c5085f1528951c989d237d 100644 (file)
@@ -1244,6 +1244,7 @@ class ContextTests(unittest.TestCase):
             self.assertEqual(ctx.cert_store_stats(), {"crl": 0, "x509": 1, "x509_ca": 0})
 
     @unittest.skipUnless(sys.platform == "win32", "Windows specific")
+    @unittest.skipIf(hasattr(sys, "gettotalrefcount"), "Debug build does not share environment between CRTs")
     def test_load_default_certs_env_windows(self):
         ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
         ctx.load_default_certs()
diff --git a/Misc/NEWS.d/next/Windows/2017-07-15-00-40-12.bpo-30916.BpCrro.rst b/Misc/NEWS.d/next/Windows/2017-07-15-00-40-12.bpo-30916.BpCrro.rst
new file mode 100644 (file)
index 0000000..c91fd88
--- /dev/null
@@ -0,0 +1 @@
+Pre-build OpenSSL, Tcl and Tk and include the binaries in the build.
index a79a7470d20a3a6b0baa44e9f6f55c567402009e..458d2e7fd60b6ebc11a6f35c518dbae7d47209d2 100644 (file)
 #ifdef WITH_THREAD
 #include "pythread.h"
 
+/* Redefined below for Windows debug builds after important #includes */
+#define _PySSL_FIX_ERRNO
 
 #define PySSL_BEGIN_ALLOW_THREADS_S(save) \
     do { if (_ssl_locks_count>0) { (save) = PyEval_SaveThread(); } } while (0)
 #define PySSL_END_ALLOW_THREADS_S(save) \
-    do { if (_ssl_locks_count>0) { PyEval_RestoreThread(save); } } while (0)
+    do { if (_ssl_locks_count>0) { PyEval_RestoreThread(save); } _PySSL_FIX_ERRNO; } while (0)
 #define PySSL_BEGIN_ALLOW_THREADS { \
             PyThreadState *_save = NULL;  \
             PySSL_BEGIN_ALLOW_THREADS_S(_save);
@@ -96,6 +98,40 @@ struct py_ssl_library_code {
     int code;
 };
 
+#if defined(MS_WINDOWS) && defined(Py_DEBUG)
+/* Debug builds on Windows rely on getting errno directly from OpenSSL.
+ * However, because it uses a different CRT, we need to transfer the
+ * value of errno from OpenSSL into our debug CRT.
+ *
+ * Don't be fooled - this is horribly ugly code. The only reasonable
+ * alternative is to do both debug and release builds of OpenSSL, which
+ * requires much uglier code to transform their automatically generated
+ * makefile. This is the lesser of all the evils.
+ */
+
+static void _PySSLFixErrno(void) {
+    HMODULE ucrtbase = GetModuleHandleW(L"ucrtbase.dll");
+    if (!ucrtbase) {
+        /* If ucrtbase.dll is not loaded but the SSL DLLs are, we likely
+         * have a catastrophic failure, but this function is not the
+         * place to raise it. */
+        return;
+    }
+
+    typedef int *(__stdcall *errno_func)(void);
+    errno_func ssl_errno = (errno_func)GetProcAddress(ucrtbase, "_errno");
+    if (ssl_errno) {
+        errno = *ssl_errno();
+        *ssl_errno() = 0;
+    } else {
+        errno = ENOTRECOVERABLE;
+    }
+}
+
+#undef _PySSL_FIX_ERRNO
+#define _PySSL_FIX_ERRNO _PySSLFixErrno()
+#endif
+
 /* Include generated data (error codes) */
 #include "_ssl_data.h"
 
index b1300cb8c9d55e89301c0b6b0654e3f13985dc19..d6d88029d713414d50a7970a6ca2f31cf13a90d4 100644 (file)
   <ImportGroup Label="PropertySheets">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
     <Import Project="pyproject.props" />
+    <Import Project="openssl.props" />
   </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
   </PropertyGroup>
   <ItemDefinitionGroup>
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(opensslIncludeDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
     <Link>
-      <AdditionalDependencies>ws2_32.lib;$(OutDir)libeay$(PyDebugExt).lib;$(OutDir)ssleay$(PyDebugExt).lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
       <Project>{cf7ac3d1-e2df-41d2-bea6-1e2556cdea26}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
-    <ProjectReference Include="ssleay.vcxproj">
-      <Project>{10615b24-73bf-4efa-93aa-236916321317}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="libeay.vcxproj">
-      <Project>{e5b04cc0-eb4c-42ab-b4dc-18ef95f864b0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
index d75ebd656a7f08e30d8dd7991a24c339115e35b7..aaf95a361c589f986deebbbeedc145dbee65aaa5 100644 (file)
   <ImportGroup Label="PropertySheets">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
     <Import Project="pyproject.props" />
+    <Import Project="openssl.props" />
   </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
   </PropertyGroup>
   <ItemDefinitionGroup>
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(opensslIncludeDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
     <Link>
-      <AdditionalDependencies>ws2_32.lib;crypt32.lib;$(OutDir)libeay$(PyDebugExt).lib;$(OutDir)ssleay$(PyDebugExt).lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>ws2_32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="..\Modules\_ssl.c" />
+    <ClCompile Include="$(opensslIncludeDir)\applink.c">
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;$(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="..\PC\python_nt.rc" />
       <Project>{cf7ac3d1-e2df-41d2-bea6-1e2556cdea26}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
-    <ProjectReference Include="libeay.vcxproj">
-      <Project>{e5b04cc0-eb4c-42ab-b4dc-18ef95f864b0}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-    <ProjectReference Include="ssleay.vcxproj">
-      <Project>{10615b24-73bf-4efa-93aa-236916321317}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
     <ProjectReference Include="_socket.vcxproj">
       <Project>{86937f53-c189-40ef-8ce8-8759d8e7d480}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
@@ -94,4 +87,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
index 78b1459923dc5c0b3cbd5f5e164281354a0fb072..bd46b609840b2d23abca41a010ecc1c6cc1e93b8 100644 (file)
@@ -9,5 +9,11 @@
     <ClCompile Include="..\Modules\_ssl.c">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="$(opensslIncludeDir)\applink.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\PC\python_nt.rc" />
   </ItemGroup>
 </Project>
\ No newline at end of file
index 67931067d3bcf73b0171689b84f1c189768f22d0..95e3cd50eca5af3af96907893ef58d5518fefe67 100644 (file)
   <ItemGroup>
     <ResourceCompile Include="..\PC\python_nt.rc" />
   </ItemGroup>
+  <ItemGroup>
+    <_TclTkDLL Include="$(tcltkdir)\bin\$(tclDllName)" />
+    <_TclTkDLL Include="$(tcltkdir)\bin\$(tkDllName)" />
+  </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="pythoncore.vcxproj">
       <Project>{cf7ac3d1-e2df-41d2-bea6-1e2556cdea26}</Project>
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
-    <ProjectReference Include="tcl.vcxproj">
-      <Project>{b5fd6f1d-129e-4bff-9340-03606fac7283}</Project>
-    </ProjectReference>
-    <ProjectReference Include="tk.vcxproj">
-      <Project>{7e85eccf-a72c-4da4-9e52-884508e80ba1}</Project>
-    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
+  <Target Name="_CopyTclTkDLL" Inputs="@(_TclTkDLL)" Outputs="@(_TclTkDLL->'$(OutDir)%(Filename)%(Extension)')" AfterTargets="Build">
+    <Copy SourceFiles="@(_TclTkDLL)" DestinationFolder="$(OutDir)" />
+  </Target>
+  <Target Name="_CleanTclTkDLL" BeforeTargets="Clean">
+    <Delete Files="@(_TclTkDLL->'$(OutDir)%(Filename)%(Extension)')" />
+  </Target>
 </Project>
\ No newline at end of file
index 713810e5b4b509a7b5347361a2b5c0c7071fc6bf..3826c664adf2f04877278425f96baa212ab70795 100644 (file)
@@ -5,8 +5,6 @@ echo.%~nx0 [flags and arguments] [quoted MSBuild options]
 echo.
 echo.Build CPython from the command line.  Requires the appropriate
 echo.version(s) of Microsoft Visual Studio to be installed (see readme.txt).
-echo.Also requires Subversion (svn.exe) to be on PATH if the '-e' flag is
-echo.given.
 echo.
 echo.After the flags recognized by this script, up to 9 arguments to be passed
 echo.directly to MSBuild may be passed.  If the argument contains an '=', the
index 1877906e00a55d3093be585b59175f35eaabb8b3..2b7413fbcde87062c08c6a07603786dd56671fc1 100644 (file)
 @where msbuild > "%TEMP%\msbuild.loc" 2> nul && set /P MSBUILD= < "%TEMP%\msbuild.loc" & del "%TEMP%\msbuild.loc"
 @if exist "%MSBUILD%" set MSBUILD="%MSBUILD%" & (set _Py_MSBuild_Source=PATH) & goto :found
 
-@rem VS 2017 sets exactly one install as the "main" install, so we may find MSBuild in there.
-@reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v 15.0 /reg:32 >nul 2>nul
-@if NOT ERRORLEVEL 1 @for /F "tokens=1,2*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v 15.0 /reg:32') DO @(
-    @if "%%i"=="15.0" @if exist "%%k\MSBuild\15.0\Bin\msbuild.exe" @(set MSBUILD="%%k\MSBuild\15.0\Bin\msbuild.exe")
-)
-@if exist %MSBUILD% (set _Py_MSBuild_Source=Visual Studio 2017 registry) & goto :found
-
 @rem VS 2015 and earlier register MSBuild separately, so we can find it.
+@rem Prefer MSBuild 14.0 over MSBuild 15.0, since the latter may not be able to find a VC14 install.
 @reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0" /v MSBuildToolsPath /reg:32 >nul 2>nul
 @if NOT ERRORLEVEL 1 @for /F "tokens=1,2*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0" /v MSBuildToolsPath /reg:32') DO @(
     @if "%%i"=="MSBuildToolsPath" @if exist "%%k\msbuild.exe" @(set MSBUILD="%%k\msbuild.exe")
 )
 @if exist %MSBUILD% (set _Py_MSBuild_Source=registry) & goto :found
 
+@rem VS 2017 sets exactly one install as the "main" install, so we may find MSBuild in there.
+@reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v 15.0 /reg:32 >nul 2>nul
+@if NOT ERRORLEVEL 1 @for /F "tokens=1,2*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v 15.0 /reg:32') DO @(
+    @if "%%i"=="15.0" @if exist "%%k\MSBuild\15.0\Bin\msbuild.exe" @(set MSBUILD="%%k\MSBuild\15.0\Bin\msbuild.exe")
+)
+@if exist %MSBUILD% (set _Py_MSBuild_Source=Visual Studio 2017 registry) & goto :found
+
 
 @exit /b 1
 
diff --git a/PCbuild/find_python.bat b/PCbuild/find_python.bat
new file mode 100644 (file)
index 0000000..4629c61
--- /dev/null
@@ -0,0 +1,57 @@
+@rem
+@rem Searches for python.exe and may download a private copy from nuget.
+@rem
+@rem This file is supposed to modify the state of the caller (specifically
+@rem the MSBUILD variable), so we do not use setlocal or echo, and avoid
+@rem changing any other persistent state.
+@rem
+
+@rem No arguments provided means do full search
+@if '%1' EQU '' goto :begin_search
+
+@rem One argument may be the full path. Use a goto so we don't try to
+@rem parse the next if statement - incorrect quoting in the multi-arg
+@rem case can cause us to break immediately.
+@if '%2' EQU '' goto :one_arg
+
+@rem Entire command line may represent the full path if quoting failed.
+@if exist "%*" (set PYTHON="%*") & (set _Py_Python_Source=from environment) & goto :found
+@goto :begin_search
+
+:one_arg
+@if exist "%~1" (set PYTHON="%~1") & (set _Py_Python_Source=from environment) & goto :found
+
+:begin_search
+@set PYTHON=
+
+@set _Py_EXTERNALS_DIR=%EXTERNAL_DIR%
+@if "%_Py_EXTERNALS_DIR%"=="" (set _Py_EXTERNALS_DIR=%~dp0\..\externals)
+
+@rem If we have Python in externals, use that one
+@if exist "%_Py_EXTERNALS_DIR%\pythonx86\tools\python.exe" (set PYTHON="%_Py_EXTERNALS_DIR%\pythonx86\tools\python.exe") & (set _Py_Python_Source=found in externals directory) & goto :found
+
+@rem If py.exe finds a recent enough version, use that one
+@py -3.6 -V >nul 2>&1 && (set PYTHON=py -3.6) && (set _Py_Python_Source=found with py.exe) && goto :found
+
+@if NOT exist "%_Py_EXTERNALS_DIR%" mkdir "%_Py_EXTERNALS_DIR%"
+@set _Py_NUGET=%NUGET%
+@set _Py_NUGET_URL=%NUGET_URL%
+@if "%_Py_NUGET%"=="" (set _Py_NUGET=%EXTERNALS_DIR%\nuget.exe)
+@if "%_Py_NUGET_URL%"=="" (set _Py_NUGET_URL=https://aka.ms/nugetclidl)
+@if NOT exist "%_Py_NUGET%" (
+    @echo Downloading nuget...
+    @rem NB: Must use single quotes around NUGET here, NOT double!
+    @rem Otherwise, a space in the path would break things
+    @powershell.exe -Command Invoke-WebRequest %_Py_NUGET_URL% -OutFile '%_Py_NUGET%'
+)
+@echo Installing Python via nuget...
+@"%_Py_NUGET%" install pythonx86 -ExcludeVersion -OutputDirectory "%_Py_EXTERNALS_DIR%"
+@rem Quote it here; it's not quoted later because "py -3.6" wouldn't work
+@if not errorlevel 1 (set PYTHON="%_Py_EXTERNALS_DIR%\pythonx86\tools\python.exe") & (set _Py_Python_Source=found on nuget.org) & goto :found
+
+
+@exit /b 1
+
+:found
+@echo Using %PYTHON% (%_Py_Python_Source%)
+@set _Py_Python_Source=
index 6e466a34484d77646413d96f1ab72164c6567a5a..01eeb84ac0f8f6dcff76417c082d73ff390a67c0 100644 (file)
@@ -4,20 +4,27 @@ rem Simple script to fetch source for external libraries
 
 if "%PCBUILD%"=="" (set PCBUILD=%~dp0)
 if "%EXTERNALS_DIR%"=="" (set EXTERNALS_DIR=%PCBUILD%\..\externals)
-if "%NUGET%"=="" (set NUGET=%EXTERNALS_DIR%\nuget.exe)
-if "%NUGET_URL%"=="" (set NUGET_URL=https://aka.ms/nugetclidl)
 
 set DO_FETCH=true
 set DO_CLEAN=false
+set IncludeTkinterSrc=false
+set IncludeSSLSrc=false
 
 :CheckOpts
 if "%~1"=="--no-tkinter" (set IncludeTkinter=false) & shift & goto CheckOpts
 if "%~1"=="--no-openssl" (set IncludeSSL=false) & shift & goto CheckOpts
-if "%~1"=="--python" (set PYTHON_FOR_BUILD=%2) & shift & shift & goto CheckOpts
+if "%~1"=="--tkinter-src" (set IncludeTkinterSrc=true) & shift & goto CheckOpts
+if "%~1"=="--openssl-src" (set IncludeSSLSrc=true) & shift & goto CheckOpts
+if "%~1"=="--python" (set PYTHON=%2) & shift & shift & goto CheckOpts
 if "%~1"=="--organization" (set ORG=%2) & shift & shift & goto CheckOpts
 if "%~1"=="-c" (set DO_CLEAN=true) & shift & goto CheckOpts
 if "%~1"=="--clean" (set DO_CLEAN=true) & shift & goto CheckOpts
 if "%~1"=="--clean-only" (set DO_FETCH=false) & goto clean
+
+rem Include old options for compatibility
+if "%~1"=="--no-tkinter" shift & goto CheckOpts
+if "%~1"=="--no-openssl" shift & goto CheckOpts
+
 if "x%~1" NEQ "x" goto usage
 
 if "%DO_CLEAN%"=="false" goto fetch
@@ -32,57 +39,41 @@ if "%DO_FETCH%"=="false" goto end
 :fetch
 
 if "%ORG%"=="" (set ORG=python)
-
-if "%PYTHON_FOR_BUILD%"=="" (
-    echo Checking for installed python...
-    py -3.6 -V >nul 2>&1 && (set PYTHON_FOR_BUILD=py -3.6)
-)
-if "%PYTHON_FOR_BUILD%"=="" (
-    if NOT exist "%EXTERNALS_DIR%" mkdir "%EXTERNALS_DIR%"
-    if NOT exist "%NUGET%" (
-        echo Downloading nuget...
-        rem NB: Must use single quotes around NUGET here, NOT double!
-        rem Otherwise, a space in the path would break things
-        powershell.exe -Command Invoke-WebRequest %NUGET_URL% -OutFile '%NUGET%'
-    )
-    echo Installing Python via nuget...
-    "%NUGET%" install pythonx86 -ExcludeVersion -OutputDirectory "%EXTERNALS_DIR%"
-    rem Quote it here; it's not quoted later because "py -3.6" wouldn't work
-    set PYTHON_FOR_BUILD="%EXTERNALS_DIR%\pythonx86\tools\python.exe"
-)
+call "%PCBUILD%find_python.bat" "%PYTHON%"
 
 echo.Fetching external libraries...
 
 set libraries=
-set libraries=%libraries%                                    bzip2-1.0.6
-if NOT "%IncludeSSL%"=="false" set libraries=%libraries%     openssl-1.0.2k
-set libraries=%libraries%                                    sqlite-3.14.2.0
-if NOT "%IncludeTkinter%"=="false" set libraries=%libraries% tcl-core-8.6.6.0
-if NOT "%IncludeTkinter%"=="false" set libraries=%libraries% tk-8.6.6.0
-if NOT "%IncludeTkinter%"=="false" set libraries=%libraries% tix-8.4.3.6
-set libraries=%libraries%                                    xz-5.2.2
+set libraries=%libraries%                                       bzip2-1.0.6
+if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries%     openssl-1.0.2k
+set libraries=%libraries%                                       sqlite-3.14.2.0
+if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-core-8.6.6.0
+if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-8.6.6.0
+if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tix-8.4.3.6
+set libraries=%libraries%                                       xz-5.2.2
 
 for %%e in (%libraries%) do (
     if exist "%EXTERNALS_DIR%\%%e" (
         echo.%%e already exists, skipping.
     ) else (
         echo.Fetching %%e...
-        %PYTHON_FOR_BUILD% "%PCBUILD%get_external.py" -O %ORG% %%e
+        %PYTHON% "%PCBUILD%get_external.py" -O %ORG% %%e
     )
 )
 
 echo.Fetching external binaries...
 
 set binaries=
-set binaries=%binaries%
-if NOT "%IncludeSSL%"=="false" set binaries=%binaries%     nasm-2.11.06
+if NOT "%IncludeSSL%"=="false"     set binaries=%binaries% openssl-bin-1.0.2k
+if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-8.6.6.0
+if NOT "%IncludeSSLSrc%"=="false"  set binaries=%binaries% nasm-2.11.06
 
 for %%b in (%binaries%) do (
     if exist "%EXTERNALS_DIR%\%%b" (
         echo.%%b already exists, skipping.
     ) else (
         echo.Fetching %%b...
-        %PYTHON_FOR_BUILD% "%PCBUILD%get_external.py" -b -O %ORG% %%b
+        %PYTHON% "%PCBUILD%get_external.py" -b -O %ORG% %%b
     )
 )
 
diff --git a/PCbuild/libeay.vcxproj b/PCbuild/libeay.vcxproj
deleted file mode 100644 (file)
index 9662cd4..0000000
+++ /dev/null
@@ -1,907 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="PGInstrument|Win32">
-      <Configuration>PGInstrument</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="PGInstrument|x64">
-      <Configuration>PGInstrument</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="PGUpdate|Win32">
-      <Configuration>PGUpdate</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="PGUpdate|x64">
-      <Configuration>PGUpdate</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}</ProjectGuid>
-    <RootNamespace>libeay</RootNamespace>
-  </PropertyGroup>
-
-  <Import Project="python.props" />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-
-  <PropertyGroup Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-  </PropertyGroup>
-   
-  <Import Project="openssl.props" />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-
-  <Target Name="CreateBuildinfH" Inputs="$(MSBuildProjectFullPath)" Outputs="$(IntDir)\buildinf.h" AfterTargets="PrepareForBuild">
-    <PropertyGroup>
-      <_DATEValue>#define DATE "$([System.DateTime]::Now.ToString(`ddd MMM dd HH':'mm':'ss yyyy`))"</_DATEValue>
-      <_CFLAGSValue>#define CFLAGS "cl /MD /Ox -W3 -Gs0 -Gy -nologo @(PreprocessorDefinitions->'-D%(Identity)',' ')"</_CFLAGSValue>
-      <_PLATFORMValue Condition="$(Platform)=='Win32'">#define PLATFORM "VC-WIN32"</_PLATFORMValue>
-      <_PLATFORMValue Condition="$(Platform)=='x64'">#define PLATFORM "VC-WIN64A"</_PLATFORMValue>
-    </PropertyGroup>
-    <WriteLinesToFile File="$(IntDir)\buildinf.h"
-                      Lines="$(_DATEValue);$(_CFLAGSValue);$(_PLATFORMValue)"
-                      Overwrite="true" />
-    <Message Text="Updating buildinf.h:
-    $(_DATEValue)
-    $(_CFLAGSValue)
-    $(_PLATFORMValue)" Importance="normal" />
-  </Target>
-
-  <Target Name="SuppressOriginalBuildinfH" Condition="Exists('$(opensslDir)crypto\buildinf.h')" BeforeTargets="PrepareForBuild">
-    <Move SourceFiles="$(opensslDir)crypto\buildinf.h" DestinationFiles="$(opensslDir)crypto\buildinf.h.orig" />
-  </Target>
-
-  <ItemGroup>
-    <ClCompile Include="$(opensslDir)crypto\cversion.c">
-      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-  </ItemGroup>
-  
-  <ItemGroup>
-    <!--
-    <ClCompile Include="$(opensslDir)apps\errstr.c" />
-    <ClCompile Include="$(opensslDir)crypto\aes\aes_cfb.c" />
-    <ClCompile Include="$(opensslDir)crypto\aes\aes_ctr.c" />
-    <ClCompile Include="$(opensslDir)crypto\aes\aes_ecb.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\aes\aes_ige.c" />
-    <ClCompile Include="$(opensslDir)crypto\aes\aes_misc.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\aes\aes_ofb.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\aes\aes_wrap.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_bitstr.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_bool.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_bytes.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_d2i_fp.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_digest.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_dup.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_enum.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_gentm.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_i2d_fp.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_int.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_mbstr.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_object.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_octet.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_print.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_set.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_sign.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_strex.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_strnid.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_time.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_type.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_utctm.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_utf8.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\a_verify.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\ameth_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\asn_mime.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\asn_moid.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\asn_pack.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\asn1_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\asn1_gen.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\asn1_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\asn1_par.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\bio_asn1.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\bio_ndef.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\d2i_pr.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\asn1\d2i_pu.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\asn1\evp_asn1.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\asn1\f_enum.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\asn1\f_int.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\f_string.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\i2d_pr.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\asn1\i2d_pu.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\asn1\n_pkey.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\nsseq.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\p5_pbe.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\p5_pbev2.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\p8_pkey.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\asn1\t_bitst.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\t_crl.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\asn1\t_pkey.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\asn1\t_req.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\t_spki.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\asn1\t_x509.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\t_x509a.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\tasn_dec.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\tasn_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\tasn_fre.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\tasn_new.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\tasn_prn.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\tasn_typ.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\tasn_utl.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_algor.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_attrib.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_bignum.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_crl.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_exten.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_info.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_long.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_name.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_nx509.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_pkey.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_pubkey.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_req.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_sig.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_spki.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_val.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_x509.c" />
-    <ClCompile Include="$(opensslDir)crypto\asn1\x_x509a.c" />
-    <ClCompile Include="$(opensslDir)crypto\bf\bf_cfb64.c" />
-    <ClCompile Include="$(opensslDir)crypto\bf\bf_ecb.c" />
-    <ClCompile Include="$(opensslDir)crypto\bf\bf_ofb64.c" />
-    <ClCompile Include="$(opensslDir)crypto\bf\bf_skey.c" />
-    <ClCompile Include="$(opensslDir)crypto\bio\b_dump.c" />
-    <ClCompile Include="$(opensslDir)crypto\bio\b_print.c" />
-    <ClCompile Include="$(opensslDir)crypto\bio\b_sock.c" />
-    <ClCompile Include="$(opensslDir)crypto\bio\bf_buff.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\bio\bf_nbio.c" />
-    <ClCompile Include="$(opensslDir)crypto\bio\bf_null.c" />
-    <ClCompile Include="$(opensslDir)crypto\bio\bio_cb.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\bio\bio_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\bio\bio_lib.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\bio\bss_acpt.c" />
-    <ClCompile Include="$(opensslDir)crypto\bio\bss_bio.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\bio\bss_conn.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\bio\bss_dgram.c" />
-    <ClCompile Include="$(opensslDir)crypto\bio\bss_fd.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\bio\bss_file.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\bio\bss_log.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\bio\bss_mem.c" />
-    <ClCompile Include="$(opensslDir)crypto\bio\bss_null.c" />
-    <ClCompile Include="$(opensslDir)crypto\bio\bss_sock.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_add.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_blind.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_const.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_ctx.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_depr.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_div.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_exp.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_exp2.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_gcd.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_gf2m.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_kron.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_mod.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_mont.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_mpi.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_mul.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_nist.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_prime.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_print.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_rand.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_recp.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_shift.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_sqr.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_sqrt.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_word.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_x931p.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\buffer\buf_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\buffer\buf_str.c" />
-    <ClCompile Include="$(opensslDir)crypto\buffer\buffer.c" />
-    <ClCompile Include="$(opensslDir)crypto\camellia\cmll_cfb.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\camellia\cmll_ctr.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\camellia\cmll_ecb.c" />
-    <ClCompile Include="$(opensslDir)crypto\camellia\cmll_ofb.c" />
-    <ClCompile Include="$(opensslDir)crypto\camellia\cmll_utl.c" />
-    <ClCompile Include="$(opensslDir)crypto\cast\c_cfb64.c" />
-    <ClCompile Include="$(opensslDir)crypto\cast\c_ecb.c" />
-    <ClCompile Include="$(opensslDir)crypto\cast\c_ofb64.c" />
-    <ClCompile Include="$(opensslDir)crypto\cast\c_skey.c" />
-    <ClCompile Include="$(opensslDir)crypto\cmac\cm_ameth.c" />
-    <ClCompile Include="$(opensslDir)crypto\cmac\cm_pmeth.c" />
-    <ClCompile Include="$(opensslDir)crypto\cmac\cmac.c" />
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_asn1.c" />
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_att.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_cd.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_dd.c" />
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_env.c" />
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_err.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_ess.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_io.c" />
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_kari.c" />
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_pwri.c" />
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_sd.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\cms\cms_smime.c" />
-    <ClCompile Include="$(opensslDir)crypto\comp\c_rle.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\comp\c_zlib.c" />
-    <ClCompile Include="$(opensslDir)crypto\comp\comp_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\comp\comp_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\conf\conf_api.c" />
-    <ClCompile Include="$(opensslDir)crypto\conf\conf_def.c" />
-    <ClCompile Include="$(opensslDir)crypto\conf\conf_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\conf\conf_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\conf\conf_mall.c" />
-    <ClCompile Include="$(opensslDir)crypto\conf\conf_mod.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\conf\conf_sap.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\cpt_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\cryptlib.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\cbc_cksm.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\des\cbc_enc.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\des\cfb_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\cfb64ede.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\cfb64enc.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\des\des_old.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\des_old2.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\des\ecb_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\ecb3_enc.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\des\ede_cbcm_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\enc_read.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\enc_writ.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\fcrypt.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\ofb_enc.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\des\ofb64ede.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\ofb64enc.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\des\pcbc_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\qud_cksm.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\rand_key.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\read2pwd.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\rpc_enc.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\des\set_key.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\des\str2key.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\des\xcbc_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_ameth.c" />
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_asn1.c" />
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_check.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_depr.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_gen.c" />
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_kdf.c" />
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_key.c" />
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_pmeth.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_prn.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\dh\dh_rfc5114.c" />
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_ameth.c" />
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_asn1.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_depr.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_gen.c" />
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_key.c" />
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_ossl.c" />
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_pmeth.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_prn.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_sign.c" />
-    <ClCompile Include="$(opensslDir)crypto\dsa\dsa_vrf.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\dso\dso_beos.c" />
-    <ClCompile Include="$(opensslDir)crypto\dso\dso_dl.c" />
-    <ClCompile Include="$(opensslDir)crypto\dso\dso_dlfcn.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\dso\dso_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\dso\dso_lib.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\dso\dso_null.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\dso\dso_openssl.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\dso\dso_vms.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\dso\dso_win32.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\ebcdic.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_ameth.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_asn1.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_check.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_curve.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_cvt.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_key.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_mult.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_oct.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_pmeth.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec_print.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec2_mult.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec2_oct.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ec2_smpl.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\eck_prn.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ecp_mont.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ecp_nist.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\ec\ecp_nistp224.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ecp_nistp256.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ecp_nistp521.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ecp_nistputil.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\ec\ecp_oct.c" />
-    <ClCompile Include="$(opensslDir)crypto\ec\ecp_smpl.c" />
-    <ClCompile Include="$(opensslDir)crypto\ecdh\ech_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\ecdh\ech_kdf.c" />
-    <ClCompile Include="$(opensslDir)crypto\ecdh\ech_key.c" />
-    <ClCompile Include="$(opensslDir)crypto\ecdh\ech_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\ecdh\ech_ossl.c" />
-    <ClCompile Include="$(opensslDir)crypto\ecdsa\ecs_asn1.c" />
-    <ClCompile Include="$(opensslDir)crypto\ecdsa\ecs_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\ecdsa\ecs_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\ecdsa\ecs_ossl.c" />
-    <ClCompile Include="$(opensslDir)crypto\ecdsa\ecs_sign.c" />
-    <ClCompile Include="$(opensslDir)crypto\ecdsa\ecs_vrf.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_all.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_cnf.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_cryptodev.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_ctrl.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_dyn.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_fat.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_init.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_list.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_openssl.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_pkey.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_rdrand.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_rsax.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\engine\eng_table.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\tb_asnmth.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\tb_cipher.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\tb_dh.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\tb_digest.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\tb_dsa.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\tb_ecdh.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\tb_ecdsa.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\tb_pkmeth.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\tb_rand.c" />
-    <ClCompile Include="$(opensslDir)crypto\engine\tb_rsa.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\engine\tb_store.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\err\err.c" />
-    <ClCompile Include="$(opensslDir)crypto\err\err_all.c" />
-    <ClCompile Include="$(opensslDir)crypto\err\err_prn.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\bio_b64.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\bio_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\bio_md.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\evp\bio_ok.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\evp\c_all.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\c_allc.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\c_alld.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\digest.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\e_aes.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\e_aes_cbc_hmac_sha1.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\e_aes_cbc_hmac_sha256.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\e_bf.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\e_camellia.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\e_cast.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\e_des.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\e_des3.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\evp\e_idea.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\evp\e_null.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\evp\e_old.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\evp\e_rc2.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\e_rc4.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\e_rc4_hmac_md5.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\evp\e_rc5.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\evp\e_seed.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\e_xcbc_d.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\encode.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\evp\evp_acnf.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\evp\evp_cnf.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\evp_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\evp_err.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\evp\evp_fips.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\evp\evp_key.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\evp_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\evp_pbe.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\evp_pkey.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\m_dss.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\m_dss1.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\m_ecdsa.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\m_md4.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\m_md5.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\evp\m_null.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\evp\m_ripemd.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\m_sha.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\m_sha1.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\m_sigver.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\m_wp.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\names.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\evp\p_dec.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\evp\p_lib.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\evp\p_open.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\p_seal.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\evp\p_sign.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\p_verify.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\p5_crpt.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\p5_crpt2.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\pmeth_fn.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\pmeth_gn.c" />
-    <ClCompile Include="$(opensslDir)crypto\evp\pmeth_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\ex_data.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\fips_ers.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\hmac\hm_ameth.c" />
-    <ClCompile Include="$(opensslDir)crypto\hmac\hm_pmeth.c" />
-    <ClCompile Include="$(opensslDir)crypto\hmac\hmac.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\krb5\krb5_asn.c" />
-    <ClCompile Include="$(opensslDir)crypto\lhash\lh_stats.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\lhash\lhash.c" />
-    <ClCompile Include="$(opensslDir)crypto\md4\md4_dgst.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\md4\md4_one.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\md5\md5_dgst.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\md5\md5_one.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\mem.c" />
-    <ClCompile Include="$(opensslDir)crypto\mem_dbg.c" />
-    <ClCompile Include="$(opensslDir)crypto\modes\cbc128.c" />
-    <ClCompile Include="$(opensslDir)crypto\modes\ccm128.c" />
-    <ClCompile Include="$(opensslDir)crypto\modes\cfb128.c" />
-    <ClCompile Include="$(opensslDir)crypto\modes\ctr128.c" />
-    <ClCompile Include="$(opensslDir)crypto\modes\cts128.c" />
-    <ClCompile Include="$(opensslDir)crypto\modes\gcm128.c" />
-    <ClCompile Include="$(opensslDir)crypto\modes\ofb128.c" />
-    <ClCompile Include="$(opensslDir)crypto\modes\wrap128.c" />
-    <ClCompile Include="$(opensslDir)crypto\modes\xts128.c" />
-    <ClCompile Include="$(opensslDir)crypto\o_dir.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\o_fips.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\o_init.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\o_str.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\o_time.c" />
-    <ClCompile Include="$(opensslDir)crypto\objects\o_names.c" />
-    <ClCompile Include="$(opensslDir)crypto\objects\obj_dat.c" />
-    <ClCompile Include="$(opensslDir)crypto\objects\obj_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\objects\obj_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\objects\obj_xref.c" />
-    <ClCompile Include="$(opensslDir)crypto\ocsp\ocsp_asn.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\ocsp\ocsp_cl.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\ocsp\ocsp_err.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\ocsp\ocsp_ext.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\ocsp\ocsp_ht.c" />
-    <ClCompile Include="$(opensslDir)crypto\ocsp\ocsp_lib.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\ocsp\ocsp_prn.c" />
-    <ClCompile Include="$(opensslDir)crypto\ocsp\ocsp_srv.c" />
-    <ClCompile Include="$(opensslDir)crypto\ocsp\ocsp_vfy.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\pem\pem_all.c" />
-    <ClCompile Include="$(opensslDir)crypto\pem\pem_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\pem\pem_info.c" />
-    <ClCompile Include="$(opensslDir)crypto\pem\pem_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\pem\pem_oth.c" />
-    <ClCompile Include="$(opensslDir)crypto\pem\pem_pk8.c" />
-    <ClCompile Include="$(opensslDir)crypto\pem\pem_pkey.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\pem\pem_seal.c" />
-    <ClCompile Include="$(opensslDir)crypto\pem\pem_sign.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\pem\pem_x509.c" />
-    <ClCompile Include="$(opensslDir)crypto\pem\pem_xaux.c" />
-    <ClCompile Include="$(opensslDir)crypto\pem\pvkfmt.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_add.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_asn.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_attr.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_crpt.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_crt.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_decr.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_init.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_key.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_kiss.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_mutl.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_npas.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_p8d.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_p8e.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\p12_utl.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs12\pk12err.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\pkcs7\bio_pk7.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\pkcs7\pk7_asn1.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs7\pk7_attr.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs7\pk7_doit.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs7\pk7_lib.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\pkcs7\pk7_mime.c" />
-    <ClCompile Include="$(opensslDir)crypto\pkcs7\pk7_smime.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\pkcs7\pkcs7err.c" />
-    <ClCompile Include="$(opensslDir)crypto\pqueue\pqueue.c" />
-    <ClCompile Include="$(opensslDir)crypto\rand\md_rand.c" />
-    <ClCompile Include="$(opensslDir)crypto\rand\rand_egd.c" />
-    <ClCompile Include="$(opensslDir)crypto\rand\rand_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\rand\rand_lib.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\rand\rand_nw.c" />
-    <ClCompile Include="$(opensslDir)crypto\rand\rand_os2.c" />
-    <ClCompile Include="$(opensslDir)crypto\rand\rand_unix.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\rand\rand_win.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\rand\randfile.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\rc2\rc2_cbc.c" />
-    <ClCompile Include="$(opensslDir)crypto\rc2\rc2_ecb.c" />
-    <ClCompile Include="$(opensslDir)crypto\rc2\rc2_skey.c" />
-    <ClCompile Include="$(opensslDir)crypto\rc2\rc2cfb64.c" />
-    <ClCompile Include="$(opensslDir)crypto\rc2\rc2ofb64.c" />
-    <ClCompile Include="$(opensslDir)crypto\rc4\rc4_utl.c" />
-    <ClCompile Include="$(opensslDir)crypto\ripemd\rmd_dgst.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\ripemd\rmd_one.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_ameth.c" />
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_asn1.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_chk.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_crpt.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_depr.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_eay.c" />
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_gen.c" />
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_none.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_null.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_oaep.c" />
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_pk1.c" />
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_pmeth.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_prn.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_pss.c" />
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_saos.c" />
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_sign.c" />
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_ssl.c" />
-    <ClCompile Include="$(opensslDir)crypto\rsa\rsa_x931.c" />
-    <ClCompile Include="$(opensslDir)crypto\seed\seed.c" />
-    <ClCompile Include="$(opensslDir)crypto\seed\seed_cbc.c" />
-    <ClCompile Include="$(opensslDir)crypto\seed\seed_cfb.c" />
-    <ClCompile Include="$(opensslDir)crypto\seed\seed_ecb.c" />
-    <ClCompile Include="$(opensslDir)crypto\seed\seed_ofb.c" />
-    <ClCompile Include="$(opensslDir)crypto\sha\sha_dgst.c" />
-    <ClCompile Include="$(opensslDir)crypto\sha\sha_one.c" />
-    <ClCompile Include="$(opensslDir)crypto\sha\sha1_one.c" />
-    <ClCompile Include="$(opensslDir)crypto\sha\sha1dgst.c" />
-    <ClCompile Include="$(opensslDir)crypto\sha\sha256.c" />
-    <ClCompile Include="$(opensslDir)crypto\sha\sha512.c" />
-    <ClCompile Include="$(opensslDir)crypto\srp\srp_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\srp\srp_vfy.c" />
-    <ClCompile Include="$(opensslDir)crypto\stack\stack.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\ts\ts_asn1.c" />
-    <ClCompile Include="$(opensslDir)crypto\ts\ts_conf.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\ts\ts_err.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\ts\ts_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\ts\ts_req_print.c" />
-    <ClCompile Include="$(opensslDir)crypto\ts\ts_req_utils.c" />
-    <ClCompile Include="$(opensslDir)crypto\ts\ts_rsp_print.c" />
-    <ClCompile Include="$(opensslDir)crypto\ts\ts_rsp_sign.c" />
-    <ClCompile Include="$(opensslDir)crypto\ts\ts_rsp_utils.c" />
-    <ClCompile Include="$(opensslDir)crypto\ts\ts_rsp_verify.c" />
-    <ClCompile Include="$(opensslDir)crypto\ts\ts_verify_ctx.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\txt_db\txt_db.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\ui\ui_compat.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\ui\ui_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\ui\ui_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\ui\ui_openssl.c" />
-    <ClCompile Include="$(opensslDir)crypto\ui\ui_util.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\uid.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\whrlpool\wp_dgst.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\by_dir.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\by_file.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x_all.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_att.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_cmp.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_d2.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_def.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_err.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_ext.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_lu.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_obj.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_r2x.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_req.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_set.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_trs.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_txt.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_v3.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_vfy.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509_vpm.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509cset.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509name.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509\x509rset.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\x509\x509spki.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\x509\x509type.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\pcy_cache.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\pcy_data.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\pcy_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\pcy_map.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\pcy_node.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\pcy_tree.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_addr.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_akey.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_akeya.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_alt.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_asid.c" />
-    -->
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_bcons.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_bitst.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_conf.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_cpols.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_crld.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_enum.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_extku.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_genn.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_ia5.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_info.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_int.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_lib.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_ncons.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_ocsp.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_pci.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_pcia.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_pcons.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_pku.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_pmaps.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_prn.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_purp.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_scts.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_skey.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_sxnet.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3_utl.c" />
-    <ClCompile Include="$(opensslDir)crypto\x509v3\v3err.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\e_gost_err.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost_ameth.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost_asn1.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost_crypt.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost_ctl.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost_eng.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost_keywrap.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost_md.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost_params.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost_pmeth.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost_sign.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost2001.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost2001_keyx.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost89.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gost94_keyx.c" />
-    <ClCompile Include="$(opensslDir)engines\ccgost\gosthash.c" />
-    <ClCompile Include="$(opensslDir)engines\e_4758cca.c" />
-    <ClCompile Include="$(opensslDir)engines\e_aep.c" />
-    <ClCompile Include="$(opensslDir)engines\e_atalla.c" />
-    <ClCompile Include="$(opensslDir)engines\e_capi.c" />
-    <ClCompile Include="$(opensslDir)engines\e_chil.c" />
-    <ClCompile Include="$(opensslDir)engines\e_cswift.c" />
-    <ClCompile Include="$(opensslDir)engines\e_gmp.c" />
-    <ClCompile Include="$(opensslDir)engines\e_nuron.c" />
-    <ClCompile Include="$(opensslDir)engines\e_padlock.c" />
-    <ClCompile Include="$(opensslDir)engines\e_sureware.c" />
-    <ClCompile Include="$(opensslDir)engines\e_ubsec.c" />
-    <ClCompile Include="$(opensslDir)ssl\d1_clnt.c" />
-    <ClCompile Include="$(opensslDir)ssl\d1_meth.c" />
-    <ClCompile Include="$(opensslDir)ssl\d1_lib.c" />
-    <ClCompile Include="$(opensslDir)ssl\d1_srvr.c" />
-    <ClCompile Include="$(opensslDir)ssl\s2_srvr.c" />
-    <ClCompile Include="$(opensslDir)ssl\t1_clnt.c" />
-    <ClCompile Include="$(opensslDir)ssl\t1_ext.c" />
-    <ClCompile Include="$(opensslDir)ssl\t1_srvr.c" />
-  </ItemGroup>
-  <ItemGroup Condition="$(Platform) == 'Win32'">
-    <ClCompile Include="$(opensslDir)crypto\whrlpool\wp_block.c" />
-  </ItemGroup>
-  <ItemGroup Condition="$(Platform) == 'x64'">
-    <ClCompile Include="$(opensslDir)crypto\bf\bf_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\bn\bn_asm.c" />
-    <ClCompile Include="$(opensslDir)crypto\camellia\cmll_misc.c" />
-    <ClCompile Include="$(opensslDir)crypto\cast\c_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\des_enc.c" />
-    <ClCompile Include="$(opensslDir)crypto\des\fcrypt_b.c" />
-  </ItemGroup>
-    
-  <ItemGroup Condition="$(Platform) == 'Win32'">
-    <NasmCompile Include="$(opensslDir)tmp32\aes-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\aesni-x86.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\bf-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\bn-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\cast-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\cmll-x86.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\co-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\crypt586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\des-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\ghash-x86.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\md5-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\rc4-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\rmd-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\sha1-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\sha256-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\sha512-586.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\vpaes-x86.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\wp-mmx.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\x86cpuid.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\x86-gf2m.asm" />
-    <NasmCompile Include="$(opensslDir)tmp32\x86-mont.asm" />
-  </ItemGroup>
-  <ItemGroup Condition="$(Platform) == 'x64'">
-    <NasmCompile Include="$(opensslDir)tmp64\aesni-sha1-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\aesni-sha1-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\aesni-gcm-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\aesni-mb-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\aesni-sha256-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\aesni-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\aes-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\bsaes-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\cmll-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\ghash-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\md5-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\rc4-md5-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\rc4-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\sha1-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\sha1-mb-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\sha256-mb-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\sha256-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\sha512-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\vpaes-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\wp-x86_64.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\x86_64cpuid.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\x86_64-gf2m.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\x86_64-mont.asm" />
-    <NasmCompile Include="$(opensslDir)tmp64\x86_64-mont5.asm" />
-  </ItemGroup>
-
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <Target Name="Clean" />
-  <Target Name="CleanAll">
-    <Delete Files="$(TargetPath)" />
-    <RemoveDir Directories="$(IntDir)" />
-  </Target>
-</Project>
\ No newline at end of file
index 0fc8adc9702ddff63cb507225455570331d381be..9ebe8a645f659eab864eca56a7ff4a4f2b9eb2cf 100644 (file)
@@ -1,77 +1,24 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Py_IntDir Condition="'$(Py_IntDir)' == ''">$(opensslDir)tmp\</Py_IntDir>
-  </PropertyGroup>
-  
-  <Import Project="pyproject.props" />
-
-  <PropertyGroup Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <PreprocessorDefinitions Include="DSO_WIN32" />
-    <PreprocessorDefinitions Include="WIN32_LEAN_AND_MEAN" />
-    <PreprocessorDefinitions Include="L_ENDIAN" />
-    <PreprocessorDefinitions Include="_CRT_SECURE_NO_WARNINGS" />
-    <PreprocessorDefinitions Include="_CRT_SECURE_NO_DEPRECATE" />
-    <PreprocessorDefinitions Include="_WINSOCK_DEPRECATED_NO_WARNINGS" />
-    <PreprocessorDefinitions Include="OPENSSL_THREADS" />
-    <!-- <PreprocessorDefinitions Include="OPENSSL_SYSNAME_WIN32" /> -->
-    <PreprocessorDefinitions Include="OPENSSL_IA32_SSE2" />
-    <PreprocessorDefinitions Include="OPENSSL_BN_ASM_GF2m" />
-    <PreprocessorDefinitions Include="SHA1_ASM" />
-    <PreprocessorDefinitions Include="SHA256_ASM" />
-    <PreprocessorDefinitions Include="SHA512_ASM" />
-    <PreprocessorDefinitions Include="MD5_ASM" />
-    <PreprocessorDefinitions Include="AES_ASM" />
-    <PreprocessorDefinitions Include="VPAES_ASM" />
-    <PreprocessorDefinitions Include="WHIRLPOOL_ASM" />
-    <PreprocessorDefinitions Include="GHASH_ASM" />
-    <PreprocessorDefinitions Include="OPENSSL_NO_IDEA" />
-    <PreprocessorDefinitions Include="OPENSSL_NO_RC5" />
-    <PreprocessorDefinitions Include="OPENSSL_NO_MD2" />
-    <PreprocessorDefinitions Include="OPENSSL_NO_MDC2" />
-    <PreprocessorDefinitions Include="OPENSSL_NO_KRB5" />
-    <PreprocessorDefinitions Include="OPENSSL_NO_JPAKE" />
-    <PreprocessorDefinitions Include="OPENSSL_NO_RDRAND" />
-    <PreprocessorDefinitions Include="OPENSSL_NO_RSAX" />
-    <PreprocessorDefinitions Include="OPENSSL_NO_DYNAMIC_ENGINE" />
-  </ItemGroup>
-  <ItemGroup Condition="'$(Platform)'=='Win32'">
-    <PreprocessorDefinitions Include="OPENSSL_BN_ASM_PART_WORDS" />
-    <PreprocessorDefinitions Include="OPENSSL_BN_ASM_MONT" />
-    <PreprocessorDefinitions Include="RMD160_ASM" />
-  </ItemGroup>
-  
-  <PropertyGroup>
-    <_PreprocessorDefinitionList>@(PreprocessorDefinitions)</_PreprocessorDefinitionList>
-  </PropertyGroup>
-  
   <ItemDefinitionGroup>
     <ClCompile>
-      <!-- Suppress 64-bit truncation warnings - they aren't ours to worry about -->
-      <DisableSpecificWarnings>4244;4267</DisableSpecificWarnings>
-      <AdditionalIncludeDirectories>$(opensslDir);$(opensslIncludeDir);$(opensslDir)crypto;$(opensslDir)crypto\asn1;$(opensslDir)crypto\evp;$(opensslDir)crypto\modes</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>$(_PreprocessorDefinitionList);%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(opensslIncludeDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>$(opensslOutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>ws2_32.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
   </ItemDefinitionGroup>
-  
-  <Target Name="FindNasm">
-    <PropertyGroup>
-      <nasm Condition="$(Platform) == 'Win32'">nasm.exe -f win32</nasm>
-      <nasm Condition="$(Platform) == 'x64'">nasm.exe -f win64 -DNEAR -Ox -g</nasm>
-    </PropertyGroup>
+  <ItemGroup>
+    <_SSLDLL Include="$(opensslOutDir)\libeay32.dll" />
+    <_SSLDLL Include="$(opensslOutDir)\libeay32.pdb" />
+    <_SSLDLL Include="$(opensslOutDir)\ssleay32.dll" />
+    <_SSLDLL Include="$(opensslOutDir)\ssleay32.pdb" />
+  </ItemGroup>
+  <Target Name="_CopySSLDLL" Inputs="@(_SSLDLL)" Outputs="@(_SSLDLL->'$(OutDir)%(Filename)%(Extension)')" AfterTargets="Build">
+    <Copy SourceFiles="@(_SSLDLL)" DestinationFolder="$(OutDir)" />
   </Target>
-
-  <Target Name="BuildNasmFiles" BeforeTargets="PreBuildEvent" DependsOnTargets="PrepareForBuild;FindNasm" Inputs="@(NasmCompile)" Outputs="@(NasmCompile->'$(IntDir)%(Filename).obj')">
-    <Exec Command='setlocal
-set PATH=$(nasmDir);%PATH%
-$(nasm) -o "$(IntDir)%(NasmCompile.Filename).obj" "%(NasmCompile.FullPath)"' />
-    <ItemGroup>
-      <Link Include="$(IntDir)%(NasmCompile.Filename).obj" />
-      <Lib Include="$(IntDir)%(NasmCompile.Filename).obj" />
-    </ItemGroup>
+  <Target Name="_CleanSSLDLL" BeforeTargets="Clean">
+    <Delete Files="@(_SSLDLL->'$(OutDir)%(Filename)%(Extension)')" />
   </Target>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/PCbuild/openssl.vcxproj b/PCbuild/openssl.vcxproj
new file mode 100644 (file)
index 0000000..2d42b12
--- /dev/null
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGInstrument|Win32">
+      <Configuration>PGInstrument</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGInstrument|x64">
+      <Configuration>PGInstrument</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGUpdate|Win32">
+      <Configuration>PGUpdate</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="PGUpdate|x64">
+      <Configuration>PGUpdate</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B5FD6F1D-129E-4BFF-9340-03606FAC7283}</ProjectGuid>
+  </PropertyGroup>
+
+  <Import Project="python.props" />
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  
+  <PropertyGroup Label="Configuration">
+    <ConfigurationType>Makefile</ConfigurationType>
+    <Bitness>32</Bitness>
+    <Bitness Condition="$(Platform) == 'x64'">64</Bitness>
+    <ArchName>x86</ArchName>
+    <ArchName Condition="$(Platform) == 'x64'">amd64</ArchName>
+    <SupportSigning>true</SupportSigning>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PrepareSSL Include="prepare_ssl.py" />
+    <Perl Include="$(Perl)" />
+  </ItemGroup>
+
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <Import Project="pyproject.props" />
+
+  <PropertyGroup>
+    <IntDir>$(opensslDir)\tmp$(Bitness)dll</IntDir>
+    <OutDir>$(opensslDir)\out$(Bitness)dll</OutDir>
+    <MakeFile>ms\ntdll$(Bitness).mak</MakeFile>
+    <NMakeOptions>LIB_D="$(opensslOutDir.TrimEnd(`\`))" OUT_D=out$(Bitness)dll TMP_D=tmp$(Bitness)dll INC_D=inc$(Bitness) INCO_D=inc$(Bitness)\openssl</NMakeOptions>
+    <NMakeBuildCommandLine>setlocal
+set PATH=%PATH%;$(nasmDir);@(Perl->'%(RootDir)%(Directory)',';')
+set VCINSTALLDIR=$(VCInstallDir)
+cd /D "$(opensslDir.TrimEnd(`\`))"
+if not exist "$(IntDir.TrimEnd('\'))" mkdir "$(IntDir.TrimEnd('\'))"
+if not exist "$(OutDir.TrimEnd('\'))" mkdir "$(OutDir.TrimEnd('\'))"
+if not exist "$(opensslOutDir.TrimEnd(`\`))" mkdir "$(opensslOutDir.TrimEnd(`\`))"
+$(PYTHON) "@(PrepareSSL->'%(FullPath)')" "$(opensslDir.TrimEnd(`\`))" $(ArchName)
+nmake -f $(MakeFile) $(NMakeOptions) headers lib
+copy /y LICENSE "$(opensslOutDir)\LICENSE"
+</NMakeBuildCommandLine>
+  </PropertyGroup>
+
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+
+  <Target Name="SuppressOriginalBuildinfH" Condition="Exists('$(opensslDir)crypto\buildinf.h')" BeforeTargets="CreateBuildinfH">
+    <Move SourceFiles="$(opensslDir)crypto\buildinf.h" DestinationFiles="$(opensslDir)crypto\buildinf.h.orig" />
+  </Target>
+
+  <Target Name="_CopyIncludes" AfterTargets="Build">
+    <ItemGroup>
+      <Sources Include="$(opensslDir)inc$(Bitness)\**\*.h" />
+      <Sources Include="$(opensslDir)ms\applink.c" />
+    </ItemGroup>
+    <Copy SourceFiles="%(Sources.FullPath)" DestinationFiles="$(opensslOutDir)\include\%(Sources.RecursiveDir)\%(Sources.Filename)%(Sources.Extension)" />
+  </Target>
+
+  <Target Name="SignFiles" AfterTargets="Build" Condition="$(_SignCommand) != ''">
+    <ItemGroup>
+      <FilesToSign Include="$(opensslOutDir)\libeay32.dll;$(opensslOutDir)\ssleay32.dll" />
+    </ItemGroup>
+    <Exec Command="$(_SignCommand) %(FilesToSign.FullPath)" ContinueOnError="true" />
+  </Target>
+
+  <Target Name="Clean" />
+  <Target Name="CleanAll">
+    <Delete Files="$(TargetPath);$(BuildPath)$(tclDLLName)" />
+    <RemoveDir Directories="$(IntDir)" />
+  </Target>
+  
+  <Target Name="LocateNMake">
+    <PropertyGroup>
+      <OutputFilename Condition="$(OutputFilename) == ''">$(Temp)\nmake.loc</OutputFilename>
+    </PropertyGroup>
+    <ItemGroup>
+      <_NMakeExe Include="$(VC_ExecutablePath_x86_x86)\nmake.exe" Condition="$(VC_ExecutablePath_x86_x86) != ''" />
+    </ItemGroup>
+    <MakeDir Directories="$([System.IO.Path]::GetDirectoryName($(OutputFilename)))" />
+    <WriteLinesToFile File="$(OutputFilename)" Lines="@(_NMakeExe)" />
+  </Target>
+  
+  <Target Name="ResolveAssemblyReferences" />
+</Project>
\ No newline at end of file
index c6b8487c0a2d9b8a721d9f30b363455a7330d171..8d30e0895cf33ceb2f59df92295f675641457caa 100644 (file)
@@ -55,7 +55,7 @@
     <!-- _ssl will build _socket as well, which may cause conflicts in parallel builds -->
     <ExtensionModules Include="_socket" Condition="!$(IncludeSSL) or !$(IncludeExternals)" />
     <ExternalModules Include="_ssl;_hashlib" Condition="$(IncludeSSL)" />
-    <ExternalModules Include="_tkinter;tix" Condition="$(IncludeTkinter)" />
+    <ExternalModules Include="_tkinter" Condition="$(IncludeTkinter)" />
     <ExtensionModules Include="@(ExternalModules->'%(Identity)')" Condition="$(IncludeExternals)" />
     <Projects Include="@(ExtensionModules->'%(Identity).vcxproj')" Condition="$(IncludeExtensions)" />
     <!-- Test modules -->
index 280c486703d331720a0b21e313110251833cd56b..82cfaf249d739a51830bc0bbfd54d615b22884b3 100644 (file)
@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 15
-VisualStudioVersion = 15.0.26430.6
+VisualStudioVersion = 15.0.26621.2
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{553EC33E-9816-4996-A660-5D6186A0B0B3}"
        ProjectSection(SolutionItems) = preProject
@@ -83,16 +83,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testembed", "_testembed.vc
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testmultiphase", "_testmultiphase.vcxproj", "{16BFE6F0-22EF-40B5-B831-7E937119EF10}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcl", "tcl.vcxproj", "{B5FD6F1D-129E-4BFF-9340-03606FAC7283}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tix", "tix.vcxproj", "{C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tk", "tk.vcxproj", "{7E85ECCF-A72C-4DA4-9E52-884508E80BA1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libeay", "libeay.vcxproj", "{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssleay", "ssleay.vcxproj", "{10615B24-73BF-4EFA-93AA-236916321317}"
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyshellext", "pyshellext.vcxproj", "{0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testconsole", "_testconsole.vcxproj", "{B244E787-C445-441C-BDF4-5A4F1A3A1E51}"
@@ -621,86 +611,6 @@ Global
                {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Release|Win32.Build.0 = Release|Win32
                {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Release|x64.ActiveCfg = Release|x64
                {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Release|x64.Build.0 = Release|x64
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|Win32.ActiveCfg = Debug|Win32
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|Win32.Build.0 = Debug|Win32
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|x64.ActiveCfg = Debug|x64
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|x64.Build.0 = Debug|x64
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|Win32.ActiveCfg = Release|Win32
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|Win32.Build.0 = Release|Win32
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|x64.ActiveCfg = Release|x64
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|x64.Build.0 = Release|x64
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|Win32.ActiveCfg = Release|Win32
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|Win32.Build.0 = Release|Win32
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|x64.ActiveCfg = Release|x64
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|x64.Build.0 = Release|x64
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|Win32.ActiveCfg = Release|Win32
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|Win32.Build.0 = Release|Win32
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|x64.ActiveCfg = Release|x64
-               {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|x64.Build.0 = Release|x64
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|Win32.ActiveCfg = Debug|Win32
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|Win32.Build.0 = Debug|Win32
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|x64.ActiveCfg = Debug|x64
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|x64.Build.0 = Debug|x64
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|Win32.ActiveCfg = Release|Win32
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|Win32.Build.0 = Release|Win32
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|x64.ActiveCfg = Release|x64
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|x64.Build.0 = Release|x64
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|Win32.ActiveCfg = Release|Win32
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|Win32.Build.0 = Release|Win32
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|x64.ActiveCfg = Release|x64
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|x64.Build.0 = Release|x64
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|Win32.ActiveCfg = Release|Win32
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|Win32.Build.0 = Release|Win32
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|x64.ActiveCfg = Release|x64
-               {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|x64.Build.0 = Release|x64
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|Win32.ActiveCfg = Debug|Win32
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|Win32.Build.0 = Debug|Win32
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|x64.ActiveCfg = Debug|x64
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|x64.Build.0 = Debug|x64
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|Win32.ActiveCfg = Release|Win32
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|Win32.Build.0 = Release|Win32
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|x64.ActiveCfg = Release|x64
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|x64.Build.0 = Release|x64
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|Win32.ActiveCfg = Release|Win32
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|Win32.Build.0 = Release|Win32
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|x64.ActiveCfg = Release|x64
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|x64.Build.0 = Release|x64
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|Win32.ActiveCfg = Release|Win32
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|Win32.Build.0 = Release|Win32
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|x64.ActiveCfg = Release|x64
-               {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|x64.Build.0 = Release|x64
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.ActiveCfg = Debug|Win32
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.Build.0 = Debug|Win32
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.ActiveCfg = Debug|x64
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.Build.0 = Debug|x64
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.ActiveCfg = Release|Win32
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.Build.0 = Release|Win32
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.ActiveCfg = Release|x64
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.Build.0 = Release|x64
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.ActiveCfg = Release|Win32
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.Build.0 = Release|Win32
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.ActiveCfg = Release|x64
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.Build.0 = Release|x64
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.ActiveCfg = Release|Win32
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.Build.0 = Release|Win32
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.ActiveCfg = Release|x64
-               {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.Build.0 = Release|x64
-               {10615B24-73BF-4EFA-93AA-236916321317}.Debug|Win32.ActiveCfg = Debug|Win32
-               {10615B24-73BF-4EFA-93AA-236916321317}.Debug|Win32.Build.0 = Debug|Win32
-               {10615B24-73BF-4EFA-93AA-236916321317}.Debug|x64.ActiveCfg = Debug|x64
-               {10615B24-73BF-4EFA-93AA-236916321317}.Debug|x64.Build.0 = Debug|x64
-               {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|Win32.ActiveCfg = Release|Win32
-               {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|Win32.Build.0 = Release|Win32
-               {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|x64.ActiveCfg = Release|x64
-               {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|x64.Build.0 = Release|x64
-               {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|Win32.ActiveCfg = Release|Win32
-               {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|Win32.Build.0 = Release|Win32
-               {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|x64.ActiveCfg = Release|x64
-               {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|x64.Build.0 = Release|x64
-               {10615B24-73BF-4EFA-93AA-236916321317}.Release|Win32.ActiveCfg = Release|Win32
-               {10615B24-73BF-4EFA-93AA-236916321317}.Release|Win32.Build.0 = Release|Win32
-               {10615B24-73BF-4EFA-93AA-236916321317}.Release|x64.ActiveCfg = Release|x64
-               {10615B24-73BF-4EFA-93AA-236916321317}.Release|x64.Build.0 = Release|x64
                {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|Win32.ActiveCfg = Debug|Win32
                {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|Win32.Build.0 = Debug|Win32
                {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|x64.ActiveCfg = Debug|x64
@@ -769,4 +679,7 @@ Global
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
        EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {5C33FFD3-C8DC-4A54-B842-8BA9846BDFFE}
+       EndGlobalSection
 EndGlobal
index ef8f7ad884c52a367d7014e6571e28ca1e250d7c..1df5b8d9f52a151fed8627951b3a9491316adc3b 100644 (file)
@@ -1,12 +1,53 @@
 @echo off
-if not defined HOST_PYTHON (
-  if "%1" EQU "Debug" (
-    shift
-    set HOST_PYTHON=python_d.exe
-    if not exist python37_d.dll exit 1
-  ) ELSE (
-    set HOST_PYTHON=python.exe
-    if not exist python37.dll exit 1
-  )
-)
-%HOST_PYTHON% "%~dp0prepare_ssl.py" %1
+rem Downloads and build sources for libraries we depend upon
+
+goto Run
+:Usage
+echo.%~nx0 [flags and arguments]
+echo.
+echo.Download and build OpenSSL. This should only be performed in order to
+echo.update the binaries kept online - in most cases, the files downloaded
+echo.by the get_externals.bat script are sufficient for building CPython.
+echo.
+echo.Available flags:
+echo.  -h  Display this help message
+echo.
+echo.Available arguments:
+echo.  --certificate (-c)   The signing certificate to use for binaries.
+echo.  --organization       The github organization to obtain sources from.
+echo.
+exit /b 127
+
+:Run
+setlocal
+if "%PCBUILD%"=="" (set PCBUILD=%~dp0)
+if "%EXTERNALS_DIR%"=="" (set EXTERNALS_DIR=%PCBUILD%\..\externals)
+
+set ORG_SETTING=
+
+:CheckOpts
+if "%~1"=="-h" shift & goto Usage
+if "%~1"=="--certificate" (set SigningCertificate=%~2) && shift && shift & goto CheckOpts
+if "%~1"=="-c" (set SigningCertificate=%~2) && shift && shift & goto CheckOpts
+if "%~1"=="--organization" (set ORG_SETTING=--organization "%~2") && shift && shift && goto CheckOpts
+
+if "%~1"=="" goto Build
+echo Unrecognized option: %1
+goto Usage
+
+:Build
+call "%PCBUILD%find_msbuild.bat" %MSBUILD%
+if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable & exit /b 2)
+
+call "%PCBUILD%find_python.bat" "%PYTHON%"
+if ERRORLEVEL 1 (echo Cannot locate python.exe on PATH or as PYTHON variable & exit /b 3)
+
+call "%PCBUILD%get_externals.bat" --openssl-src %ORG_SETTING%
+
+if "%PERL%" == "" where perl > "%TEMP%\perl.loc" 2> nul && set /P PERL= <"%TEMP%\perl.loc" & del "%TEMP%\perl.loc"
+if "%PERL%" == "" (echo Cannot locate perl.exe on PATH or as PERL variable & exit /b 4)
+
+%MSBUILD% "%PCBUILD%openssl.vcxproj" /p:Configuration=Release /p:Platform=Win32
+if errorlevel 1 exit /b
+%MSBUILD% "%PCBUILD%openssl.vcxproj" /p:Configuration=Release /p:Platform=x64
+if errorlevel 1 exit /b
index 34292545192098922aeef9238bbe684348eceac4..0f3c63ee24ffba080ff7a0aeb524fe4dacaa120a 100644 (file)
@@ -21,6 +21,7 @@
 from __future__ import print_function
 
 import os
+import re
 import sys
 import subprocess
 from shutil import copy
@@ -64,32 +65,8 @@ def find_working_perl(perls):
     print(" Please install ActivePerl and ensure it appears on your path")
 
 
-def create_asms(makefile, tmp_d):
-    #create a custom makefile out of the provided one
-    asm_makefile = os.path.splitext(makefile)[0] + '.asm.mak'
-    with open(makefile) as fin, open(asm_makefile, 'w') as fout:
-        for line in fin:
-            # Keep everything up to the install target (it's convenient)
-            if line.startswith('install: all'):
-                break
-            fout.write(line)
-        asms = []
-        for line in fin:
-            if '.asm' in line and line.strip().endswith('.pl'):
-                asms.append(line.split(':')[0])
-                while line.strip():
-                    fout.write(line)
-                    line = next(fin)
-                fout.write('\n')
-
-        fout.write('asms: $(TMP_D) ')
-        fout.write(' '.join(asms))
-        fout.write('\n')
-    os.system('nmake /f {} PERL=perl TMP_D={} asms'.format(asm_makefile, tmp_d))
-
-
 def copy_includes(makefile, suffix):
-    dir = 'include'+suffix+'\\openssl'
+    dir = 'inc'+suffix+'\\openssl'
     try:
         os.makedirs(dir)
     except OSError:
@@ -114,9 +91,29 @@ def run_configure(configure, do_script):
     print(do_script)
     os.system(do_script)
 
+def fix_uplink():
+    # uplink.c tries to find the OPENSSL_Applink function exported from the current
+    # executable. However, we export it from _ssl[_d].pyd instead. So we update the
+    # module name here before building.
+    with open('ms\\uplink.c', 'r', encoding='utf-8') as f1:
+        code = list(f1)
+    os.replace('ms\\uplink.c', 'ms\\uplink.c.orig')
+    already_patched = False
+    with open('ms\\uplink.c', 'w', encoding='utf-8') as f2:
+        for line in code:
+            if not already_patched:
+                if re.search('MODIFIED FOR CPYTHON _ssl MODULE', line):
+                    already_patched = True
+                elif re.match(r'^\s+if\s*\(\(h\s*=\s*GetModuleHandle[AW]?\(NULL\)\)\s*==\s*NULL\)', line):
+                    f2.write("/* MODIFIED FOR CPYTHON _ssl MODULE */\n")
+                    f2.write('if ((h = GetModuleHandleW(L"_ssl.pyd")) == NULL) if ((h = GetModuleHandleW(L"_ssl_d.pyd")) == NULL)\n')
+                    already_patched = True
+            f2.write(line)
+    if not already_patched:
+        print("WARN: failed to patch ms\\uplink.c")
 
 def prep(arch):
-    makefile_template = "ms\\nt{}.mak"
+    makefile_template = "ms\\ntdll{}.mak"
     generated_makefile = makefile_template.format('')
     if arch == "x86":
         configure = "VC-WIN32"
@@ -126,13 +123,12 @@ def prep(arch):
         configure = "VC-WIN64A"
         do_script = "ms\\do_win64a"
         suffix = "64"
-        #os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON"
     else:
         raise ValueError('Unrecognized platform: %s' % arch)
 
     print("Creating the makefiles...")
     sys.stdout.flush()
-    # run configure, copy includes, create asms
+    # run configure, copy includes, patch files
     run_configure(configure, do_script)
     makefile = makefile_template.format(suffix)
     try:
@@ -142,9 +138,8 @@ def prep(arch):
     os.rename(generated_makefile, makefile)
     copy_includes(makefile, suffix)
 
-    print('creating asms...')
-    create_asms(makefile, 'tmp'+suffix)
-
+    print('patching ms\\uplink.c...')
+    fix_uplink()
 
 def main():
     if len(sys.argv) == 1:
@@ -152,12 +147,17 @@ def main():
               "sources must be supplied")
         sys.exit(1)
 
-    if len(sys.argv) > 2:
+    if len(sys.argv) == 3 and sys.argv[2] not in ('x86', 'amd64'):
+        print("Second argument must be x86 or amd64")
+        sys.exit(1)
+
+    if len(sys.argv) > 3:
         print("Too many arguments supplied, all we need is the directory",
-              "containing OpenSSL sources")
+              "containing OpenSSL sources and optionally the architecture")
         sys.exit(1)
 
     ssl_dir = sys.argv[1]
+    arch = sys.argv[2] if len(sys.argv) >= 3 else None
 
     if not os.path.isdir(ssl_dir):
         print(ssl_dir, "is not an existing directory!")
@@ -191,8 +191,11 @@ def main():
     old_cwd = os.getcwd()
     try:
         os.chdir(ssl_dir)
-        for arch in ['amd64', 'x86']:
+        if arch:
             prep(arch)
+        else:
+            for arch in ['amd64', 'x86']:
+                prep(arch)
     finally:
         os.chdir(old_cwd)
 
diff --git a/PCbuild/prepare_tcltk.bat b/PCbuild/prepare_tcltk.bat
new file mode 100644 (file)
index 0000000..7e6d43e
--- /dev/null
@@ -0,0 +1,55 @@
+@echo off
+rem Downloads and build sources for libraries we depend upon
+
+goto Run
+:Usage
+echo.%~nx0 [flags and arguments]
+echo.
+echo.Download and build Tcl/Tk. This should only be performed in order to
+echo.update the binaries kept online - in most cases, the files downloaded
+echo.by the get_externals.bat script are sufficient for building CPython.
+echo.
+echo.Available flags:
+echo.  -h  Display this help message
+echo.
+echo.Available arguments:
+echo.  --certificate (-c)   The signing certificate to use for binaries.
+echo.  --organization       The github organization to obtain sources from.
+echo.
+exit /b 127
+
+:Run
+setlocal
+
+if "%PCBUILD%"=="" (set PCBUILD=%~dp0)
+if "%EXTERNALS_DIR%"=="" (set EXTERNALS_DIR=%PCBUILD%\..\externals)
+
+set CERT_SETTING=
+set ORG_SETTING=
+
+:CheckOpts
+if "%~1"=="-h" shift & goto Usage
+if "%~1"=="--certificate" (set SigningCertificate=%~2) && shift && shift & goto CheckOpts
+if "%~1"=="-c" (set SigningCertificate=%~2) && shift && shift & goto CheckOpts
+if "%~1"=="--organization" (set ORG_SETTING=--organization "%~2") && shift && shift && goto CheckOpts
+
+if "%~1"=="" goto Build
+echo Unrecognized option: %1
+goto Usage
+
+:Build
+call "%PCBUILD%find_msbuild.bat" %MSBUILD%
+if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable & exit /b 2)
+
+rem call "%PCBUILD%find_python.bat" "%PYTHON%"
+rem if ERRORLEVEL 1 (echo Cannot locate python.exe on PATH or as PYTHON variable & exit /b 3)
+
+call "%PCBUILD%get_externals.bat" --tkinter-src %ORG_SETTING%
+
+%MSBUILD% "%PCBUILD%tcl.vcxproj" /p:Configuration=Release /p:Platform=Win32
+%MSBUILD% "%PCBUILD%tk.vcxproj" /p:Configuration=Release /p:Platform=Win32
+%MSBUILD% "%PCBUILD%tix.vcxproj" /p:Configuration=Release /p:Platform=Win32
+
+%MSBUILD% "%PCBUILD%tcl.vcxproj" /p:Configuration=Release /p:Platform=x64
+%MSBUILD% "%PCBUILD%tk.vcxproj" /p:Configuration=Release /p:Platform=x64
+%MSBUILD% "%PCBUILD%tix.vcxproj" /p:Configuration=Release /p:Platform=x64
index 7012170e0c7aa42e1018f5b541f193eb2a2ef492..6ab9b6533f20411ed165aaed588b7840950b047c 100644 (file)
@@ -152,7 +152,7 @@ foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses
     <SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot81)\bin\x86</SdkBinPath>
     <SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Kits\Installed Roots@KitsRoot)\bin\x86</SdkBinPath>
     <SdkBinPath Condition="!Exists($(SdkBinPath))">$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A@InstallationFolder)\Bin\</SdkBinPath>
-    <_SignCommand Condition="Exists($(SdkBinPath)) and '$(SigningCertificate)' != '' and $(SupportSigning)">"$(SdkBinPath)\signtool.exe" sign /q /n "$(SigningCertificate)" /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d "Python $(PythonVersion)"</_SignCommand>
+    <_SignCommand Condition="Exists($(SdkBinPath)) and '$(SigningCertificate)' != '' and $(SupportSigning)">"$(SdkBinPath)\signtool.exe" sign /q /a /n "$(SigningCertificate)" /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d "Python $(PythonVersion)"</_SignCommand>
     <_MakeCatCommand Condition="Exists($(SdkBinPath))">"$(SdkBinPath)\makecat.exe"</_MakeCatCommand>
   </PropertyGroup>
   
index 563487e0c366ff081da397a153b73987ce171d88..c81cd94fe40b213bca729bf2eedeffc633b180f7 100644 (file)
@@ -46,8 +46,8 @@
     <bz2Dir>$(ExternalsDir)bzip2-1.0.6\</bz2Dir>
     <lzmaDir>$(ExternalsDir)xz-5.2.2\</lzmaDir>
     <opensslDir>$(ExternalsDir)openssl-1.0.2k\</opensslDir>
-    <opensslIncludeDir>$(opensslDir)include32</opensslIncludeDir>
-    <opensslIncludeDir Condition="'$(ArchName)' == 'amd64'">$(opensslDir)include64</opensslIncludeDir>
+    <opensslOutDir>$(ExternalsDir)openssl-bin-1.0.2k\$(ArchName)\</opensslOutDir>
+    <opensslIncludeDir>$(opensslOutDir)include</opensslIncludeDir>
     <nasmDir>$(ExternalsDir)\nasm-2.11.06\</nasmDir>
     
     <!-- Suffix for all binaries when building for debug -->
@@ -72,6 +72,8 @@
     -->
     <DefaultWindowsSDKVersion Condition="$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion) == '10.0.15063'">10.0.15063.0</DefaultWindowsSDKVersion>
     <DefaultWindowsSDKVersion Condition="$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion) == '10.0.15063'">10.0.15063.0</DefaultWindowsSDKVersion>
+    <DefaultWindowsSDKVersion Condition="$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion) == '10.0.14393'">10.0.14393.0</DefaultWindowsSDKVersion>
+    <DefaultWindowsSDKVersion Condition="$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion) == '10.0.14393'">10.0.14393.0</DefaultWindowsSDKVersion>
     <DefaultWindowsSDKVersion Condition="$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion) == '10.0.10586'">10.0.10586.0</DefaultWindowsSDKVersion>
     <DefaultWindowsSDKVersion Condition="$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion) == '10.0.10586'">10.0.10586.0</DefaultWindowsSDKVersion>
     <DefaultWindowsSDKVersion Condition="$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion) == '10.0.10240'">10.0.10240.0</DefaultWindowsSDKVersion>
diff --git a/PCbuild/ssleay.vcxproj b/PCbuild/ssleay.vcxproj
deleted file mode 100644 (file)
index 439e3ac..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="PGInstrument|Win32">
-      <Configuration>PGInstrument</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="PGInstrument|x64">
-      <Configuration>PGInstrument</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="PGUpdate|Win32">
-      <Configuration>PGUpdate</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="PGUpdate|x64">
-      <Configuration>PGUpdate</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{10615B24-73BF-4EFA-93AA-236916321317}</ProjectGuid>
-    <RootNamespace>ssleay</RootNamespace>
-  </PropertyGroup>
-
-  <Import Project="python.props" />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-
-  <PropertyGroup Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-  </PropertyGroup>
-
-  <Import Project="openssl.props" />
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-
-  <ItemGroup>
-    <!--
-    <ClCompile Include="$(opensslDir)ssl\bio_ssl.c" />
-    -->
-    <ClCompile Include="$(opensslDir)ssl\d1_both.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)ssl\d1_clnt.c" />
-    <ClCompile Include="$(opensslDir)ssl\d1_enc.c" />
-    -->
-    <ClCompile Include="$(opensslDir)ssl\d1_lib.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)ssl\d1_meth.c" />
-    -->
-    <ClCompile Include="$(opensslDir)ssl\d1_pkt.c" />
-    <ClCompile Include="$(opensslDir)ssl\d1_srtp.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)ssl\d1_srvr.c" />
-    <ClCompile Include="$(opensslDir)ssl\kssl.c" />
-    -->
-    <ClCompile Include="$(opensslDir)ssl\s2_clnt.c" />
-    <ClCompile Include="$(opensslDir)ssl\s2_enc.c" />
-    <ClCompile Include="$(opensslDir)ssl\s2_lib.c" />
-    <ClCompile Include="$(opensslDir)ssl\s2_meth.c" />
-    <ClCompile Include="$(opensslDir)ssl\s2_pkt.c" />
-    <ClCompile Include="$(opensslDir)ssl\s2_srvr.c" />
-    <ClCompile Include="$(opensslDir)ssl\s23_clnt.c" />
-    <ClCompile Include="$(opensslDir)ssl\s23_lib.c" />
-    <ClCompile Include="$(opensslDir)ssl\s23_meth.c" />
-    <ClCompile Include="$(opensslDir)ssl\s23_pkt.c" />
-    <ClCompile Include="$(opensslDir)ssl\s23_srvr.c" />
-    <ClCompile Include="$(opensslDir)ssl\s3_both.c" />
-    <ClCompile Include="$(opensslDir)ssl\s3_cbc.c" />
-    <ClCompile Include="$(opensslDir)ssl\s3_clnt.c" />
-    <ClCompile Include="$(opensslDir)ssl\s3_enc.c" />
-    <ClCompile Include="$(opensslDir)ssl\s3_lib.c" />
-    <ClCompile Include="$(opensslDir)ssl\s3_meth.c" />
-    <ClCompile Include="$(opensslDir)ssl\s3_pkt.c" />
-    <ClCompile Include="$(opensslDir)ssl\s3_srvr.c" />
-    <ClCompile Include="$(opensslDir)ssl\ssl_algs.c" />
-    <ClCompile Include="$(opensslDir)ssl\ssl_asn1.c" />
-    <ClCompile Include="$(opensslDir)ssl\ssl_cert.c" />
-    <ClCompile Include="$(opensslDir)ssl\ssl_ciph.c" />
-    <ClCompile Include="$(opensslDir)ssl\ssl_err.c" />
-    <ClCompile Include="$(opensslDir)ssl\ssl_err2.c" />
-    <ClCompile Include="$(opensslDir)ssl\ssl_lib.c" />
-    <ClCompile Include="$(opensslDir)ssl\ssl_rsa.c" />
-    <ClCompile Include="$(opensslDir)ssl\ssl_sess.c" />
-    <!--
-    <ClCompile Include="$(opensslDir)ssl\ssl_stat.c" />
-    <ClCompile Include="$(opensslDir)ssl\ssl_txt.c" />
-    <ClCompile Include="$(opensslDir)ssl\ssl_utst.c" />
-    -->
-    <ClCompile Include="$(opensslDir)ssl\t1_clnt.c" />
-    <ClCompile Include="$(opensslDir)ssl\t1_enc.c" />
-    <ClCompile Include="$(opensslDir)ssl\t1_lib.c" />
-    <ClCompile Include="$(opensslDir)ssl\t1_meth.c" />
-    <ClCompile Include="$(opensslDir)ssl\t1_reneg.c" />
-    <ClCompile Include="$(opensslDir)ssl\t1_srvr.c" />
-    <ClCompile Include="$(opensslDir)ssl\tls_srp.c" />
-  </ItemGroup>
-  
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <Target Name="Clean" />
-  <Target Name="CleanAll">
-    <Delete Files="$(TargetPath)" />
-    <RemoveDir Directories="$(IntDir)" />
-  </Target>
-</Project>
\ No newline at end of file
index 3dfd155810ff7b99ac8a7dded97763d9dccbbe78..28a0ee90994b6afdb2f8cc07e692119d9882e42b 100644 (file)
     <TargetPath>$(OutDir)bin\$(tclDLLName)</TargetPath>
   </PropertyGroup>
   
-  <ItemGroup>
-    <ExpectedOutputs Include="
-        $(OutDir)\bin\$(tclDLLName);
-        $(OutDir)\bin\$(tclShExeName);
-        $(OutDir)\include\tcl.h;
-        $(OutDir)\lib\tcl$(TclMajorVersion);
-        $(OutDir)\lib\tcl$(TclMajorVersion).$(TclMinorVersion);
-        $(OutDir)\lib\$(tclLibName)" />
-  </ItemGroup>
-  
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   
   <PropertyGroup>
     <TclDirs>INSTALLDIR="$(OutDir.TrimEnd(`\`))" INSTALL_DIR="$(OutDir.TrimEnd(`\`))"</TclDirs>
     <DebugFlags Condition="'$(Configuration)' == 'Debug'">DEBUGFLAGS="-wd4456 -wd4457 -wd4458 -wd4459 -wd4996"</DebugFlags>
     <NMakeBuildCommandLine>setlocal
-@(ExpectedOutputs->'if not exist "%(FullPath)" goto build','
-')
-goto :eof
-:build
 set VCINSTALLDIR=$(VCInstallDir)
 cd /D "$(tclDir)win"
 nmake -f makefile.vc MACHINE=$(TclMachine) OPTS=$(TclOpts) $(TclDirs) $(DebugFlags) core shell dlls
 nmake -f makefile.vc MACHINE=$(TclMachine) OPTS=$(TclOpts) $(TclDirs) $(DebugFlags) install-binaries install-libraries
+copy /Y ..\license.terms "$(OutDir)\tcllicense.terms"
 </NMakeBuildCommandLine>
   </PropertyGroup>
 
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  
-  <Target Name="CopyDll" Inputs="$(OutDir)\bin\$(tclDLLName)" Outputs="$(BuildPath)$(tclDLLName)" AfterTargets="Build">
-    <Copy SourceFiles="$(OutDir)\bin\$(tclDLLName)" DestinationFiles="$(BuildPath)$(tclDLLName)" />
-  </Target>
-  
+
   <Target Name="Clean" />
-  <Target Name="CleanAll">
-    <Delete Files="$(TargetPath);$(BuildPath)$(tclDLLName)" />
-    <RemoveDir Directories="$(IntDir)" />
-  </Target>
   
   <Target Name="ResolveAssemblyReferences" />
 </Project>
\ No newline at end of file
index 57bb98aeebede41d6b6e539a1b1b54f7bbee86bd..b913d34b0bd32a03c5547f0b8dcb987163d789ab 100644 (file)
@@ -17,9 +17,8 @@
     <tclDir>$(ExternalsDir)tcl-core-$(TclMajorVersion).$(TclMinorVersion).$(TclPatchLevel).$(TclRevision)\</tclDir>
     <tkDir>$(ExternalsDir)tk-$(TkMajorVersion).$(TkMinorVersion).$(TkPatchLevel).$(TkRevision)\</tkDir>
     <tixDir>$(ExternalsDir)tix-$(TixMajorVersion).$(TixMinorVersion).$(TixPatchLevel).$(TixRevision)\</tixDir>
-    <tcltkDir>$(ExternalsDir)tcltk\</tcltkDir>
-    <tcltkDir Condition="'$(Platform)' == 'x64'">$(ExternalsDir)tcltk64\</tcltkDir>
-    <TclDebugExt Condition="'$(Configuration)' == 'Debug'">g</TclDebugExt>
+    <tcltkDir>$(ExternalsDir)tcltk-$(TclMajorVersion).$(TclMinorVersion).$(TclPatchLevel).$(TclRevision)\$(ArchName)\</tcltkDir>
+    <!--<TclDebugExt Condition="'$(Configuration)' == 'Debug'">g</TclDebugExt>-->
     <tclDLLName>tcl$(TclMajorVersion)$(TclMinorVersion)t$(TclDebugExt).dll</tclDLLName>
     <tclLibName>tcl$(TclMajorVersion)$(TclMinorVersion)t$(TclDebugExt).lib</tclLibName>
     <tclShExeName>tclsh$(TclMajorVersion)$(TclMinorVersion)t$(TclDebugExt).exe</tclShExeName>
index 7d6d8ca8a65cb91745c1c6ae024e8c657578591b..525758c1c61d8460ea3bfc50ce84ecf82db08692 100644 (file)
@@ -37,6 +37,7 @@
   <PropertyGroup Label="Globals">
     <ProjectGuid>{C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}</ProjectGuid>
     <RootNamespace>tix</RootNamespace>
+    <SupportSigning>true</SupportSigning>
   </PropertyGroup>
 
   <Import Project="python.props" />
     <TargetPath>$(tixDLLPath)</TargetPath>
   </PropertyGroup>
   
-  <ItemGroup>
-    <ExpectedOutputs Include="$(TargetPath)" />
-  </ItemGroup>
-  
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   
   <PropertyGroup>
     <DebugFlags Condition="'$(Configuration)' != 'Debug'">DEBUG=0 NODEBUG=1</DebugFlags>
     <CFlags>-c -W3 -nologo -MD -wd4028 -wd4090</CFlags>
     <NMakeBuildCommandLine>setlocal
-@(ExpectedOutputs->'if not exist "%(FullPath)" goto build','
-')
-goto :eof
-:build
 set VCINSTALLDIR=$(VCInstallDir)
 cd /D "$(tixDir)win"
 nmake /nologo -f makefile.vc MACHINE=$(TclMachine) cflags="$(CFlags)" $(DebugFlags) $(TclShortVersions) $(TixDirs) all install
+copy /Y ..\license.terms "$(OutDir)\tixlicense.terms"
 </NMakeBuildCommandLine>
     <NMakeCleanCommandLine>rmdir /q/s "$(OutDir.TrimEnd(`\`))"</NMakeCleanCommandLine>
   </PropertyGroup>
   
+  <Target Name="SignFiles" AfterTargets="Build" Condition="$(_SignCommand) != ''">
+    <ItemGroup>
+      <FilesToSign Include="$(OutDir)\bin\*.exe" />
+      <FilesToSign Include="$(OutDir)\bin\*.dll" />
+    </ItemGroup>
+    <Exec Command="$(_SignCommand) &quot;%(FilesToSign.FullPath)&quot;" ContinueOnError="true" />
+  </Target>
+
   <ItemGroup>
     <ProjectReference Include="tcl.vcxproj">
       <Project>{b5fd6f1d-129e-4bff-9340-03606fac7283}</Project>
index a26318bbe786b8ac19c4505a0692c33349edb8e1..f90e482130e982315f3482f19bfd25b2432676a7 100644 (file)
     <TargetPath>$(OutDir)bin\$(tkDLLName)</TargetPath>
   </PropertyGroup>
   
-  <ItemGroup>
-    <ExpectedOutputs Include="
-        $(OutDir)bin\$(tkDLLName);
-        $(OutDir)include\tk.h;
-        $(OutDir)lib\$(tkLibName);
-        $(OutDir)lib\tk$(TkMajorVersion).$(TkMinorVersion)" />
-  </ItemGroup>
-  
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   
   <PropertyGroup>
     <TkDirs>TCLDIR="$(tclDir.TrimEnd(`\`))" INSTALLDIR="$(OutDir.TrimEnd(`\`))"</TkDirs>
     <DebugFlags Condition="'$(Configuration)' == 'Debug'">DEBUGFLAGS="-wd4456 -wd4457 -wd4458 -wd4459 -wd4996"</DebugFlags>
     <NMakeBuildCommandLine>setlocal
-@(ExpectedOutputs->'if not exist "%(FullPath)" goto build','
-')
-goto :eof
-:build
 set VCINSTALLDIR=$(VCInstallDir)
 cd /D "$(tkDir)win"
 nmake /nologo -f makefile.vc RC=rc MACHINE=$(TclMachine) OPTS=$(TkOpts) $(TkDirs) $(DebugFlags) all
 nmake /nologo -f makefile.vc RC=rc MACHINE=$(TclMachine) OPTS=$(TkOpts) $(TkDirs) $(DebugFlags) install-binaries install-libraries
+copy /Y ..\license.terms "$(OutDir)\tklicense.terms"
 </NMakeBuildCommandLine>
   </PropertyGroup>
   <ItemGroup>
@@ -83,15 +72,7 @@ nmake /nologo -f makefile.vc RC=rc MACHINE=$(TclMachine) OPTS=$(TkOpts) $(TkDirs
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   
-  <Target Name="CopyDll" Inputs="$(OutDir)\bin\$(tkDLLName)" Outputs="$(BuildPath)$(tkDLLName)" AfterTargets="Build">
-    <Copy SourceFiles="$(OutDir)\bin\$(tkDLLName)" DestinationFiles="$(BuildPath)$(tkDLLName)" />
-  </Target>
-  
   <Target Name="Clean" />
-  <Target Name="CleanAll">
-    <Delete Files="$(TargetPath);$(BuildPath)$(tkDLLName)" />
-    <RemoveDir Directories="$(IntDir)" />
-  </Target>
   
   <Target Name="ResolveAssemblyReferences" />
 </Project>
\ No newline at end of file
index e55d81a7f701998e8c590a9cfee36b95a84354ad..7f9a81b33d4c9c6c8ce0446d6d2b2654f79bd0ae 100644 (file)
@@ -76,9 +76,6 @@ if ERRORLEVEL 1 (echo Cannot locate MSBuild.exe on PATH or as MSBUILD variable &
 if "%SKIPBUILD%" EQU "1" goto skipdoc
 if "%SKIPDOC%" EQU "1" goto skipdoc
 
-if not defined PYTHON where py -q || echo Cannot find py on path and PYTHON is not set. && exit /B 1
-if not defined SPHINXBUILD where sphinx-build -q || echo Cannot find sphinx-build on path and SPHINXBUILD is not set. && exit /B 1
-
 call "%D%..\..\doc\make.bat" htmlhelp
 if errorlevel 1 goto :eof
 :skipdoc
index 24df0f5f7a301104776962a2d7e103f2d483afc1..50f6f88246044c2568fdabbe449802839d4cf9f6 100644 (file)
             <LicenseFiles Include="$(PySourcePath)LICENSE;
                                    crtlicense.txt;
                                    $(bz2Dir)LICENSE;
-                                   $(opensslDir)LICENSE;
-                                   $(tclDir)license.terms;
-                                   $(tkDir)license.terms;
-                                   $(tixDir)license.terms" />
+                                   $(opensslOutDir)LICENSE;
+                                   $(tcltkDir)tcllicense.terms;
+                                   $(tcltkDir)tklicense.terms;
+                                   $(tcltkDir)tixlicense.terms" />
             <_LicenseFiles Include="@(LicenseFiles)">
                 <Content>$([System.IO.File]::ReadAllText(%(FullPath)))</Content>
             </_LicenseFiles>
index aece81fbb1cf3e162fc3b2d7bde3c29480aebec2..913512a778fa6b224ee0a45a1774fc7549292fb9 100644 (file)
@@ -12,7 +12,7 @@ set DO_FETCH=true
 set DO_CLEAN=false
 
 :CheckOpts
-if "%~1"=="--python" (set PYTHON_FOR_BUILD=%2) & shift & shift & goto CheckOpts
+if "%~1"=="--python" (set PYTHON=%2) & shift & shift & goto CheckOpts
 if "%~1"=="--organization" (set ORG=%2) & shift & shift & goto CheckOpts
 if "%~1"=="-c" (set DO_CLEAN=true) & shift & goto CheckOpts
 if "%~1"=="--clean" (set DO_CLEAN=true) & shift & goto CheckOpts
@@ -32,23 +32,7 @@ if "%DO_FETCH%"=="false" goto end
 
 if "%ORG%"=="" (set ORG=python)
 
-if "%PYTHON_FOR_BUILD%"=="" (
-    echo Checking for installed python...
-    py -3.6 -V >nul 2>&1 && (set PYTHON_FOR_BUILD=py -3.6)
-)
-if "%PYTHON_FOR_BUILD%"=="" (
-    if NOT exist "%EXTERNALS_DIR%" mkdir "%EXTERNALS_DIR%"
-    if NOT exist "%NUGET%" (
-        echo Downloading nuget...
-        rem NB: Must use single quotes around NUGET here, NOT double!
-        rem Otherwise, a space in the path would break things
-        powershell.exe -Command Invoke-WebRequest %NUGET_URL% -OutFile '%NUGET%'
-    )
-    echo Installing Python via nuget...
-    "%NUGET%" install pythonx86 -ExcludeVersion -OutputDirectory "%EXTERNALS_DIR%"
-    rem Quote it here; it's not quoted later because "py -3.6" wouldn't work
-    set PYTHON_FOR_BUILD="%EXTERNALS_DIR%\pythonx86\tools\python.exe"
-)
+call "%PCBUILD%\find_python.bat" "%PYTHON%"
 
 echo.Fetching external libraries...
 
@@ -59,7 +43,7 @@ for %%e in (%libraries%) do (
         echo.%%e already exists, skipping.
     ) else (
         echo.Fetching %%e...
-        %PYTHON_FOR_BUILD% "%PCBUILD%get_external.py" -e "%EXTERNALS_DIR%" -O %ORG% %%e
+        %PYTHON% "%PCBUILD%get_external.py" -e "%EXTERNALS_DIR%" -O %ORG% %%e
     )
 )
 
@@ -79,7 +63,7 @@ for %%b in (%binaries%) do (
         echo.%%b already exists, skipping.
     ) else (
         echo.Fetching %%b...
-        %PYTHON_FOR_BUILD% "%PCBUILD%get_external.py" -e "%EXTERNALS_DIR%" -b -O %ORG% %%b
+        %PYTHON% "%PCBUILD%get_external.py" -e "%EXTERNALS_DIR%" -b -O %ORG% %%b
     )
 )
 
index a83f544db634bdd17949b8ef3eabd068036ff003..0b8a3ee89d95bca06737196d7459ba9b8d641f28 100644 (file)
             <Component Id="sqlite3.dll" Directory="DLLs" Guid="*">
                 <File Name="sqlite3.dll" KeyPath="yes" />
             </Component>
+            <Component Id="libeay32.dll" Directory="DLLs" Guid="*">
+                <File Name="libeay32.dll" KeyPath="yes" />
+            </Component>
+            <Component Id="ssleay32.dll" Directory="DLLs" Guid="*">
+                <File Name="ssleay32.dll" KeyPath="yes" />
+            </Component>
         </ComponentGroup>
     </Fragment>
     
             <Component Id="sqlite3.pdb" Directory="DLLs" Guid="*">
                 <File Name="sqlite3.pdb" />
             </Component>
+            <Component Id="libeay32.pdb" Directory="DLLs" Guid="*">
+                <File Name="libeay32.pdb" KeyPath="yes" />
+            </Component>
+            <Component Id="ssleay32.pdb" Directory="DLLs" Guid="*">
+                <File Name="ssleay32.pdb" KeyPath="yes" />
+            </Component>
         </ComponentGroup>
     </Fragment>
     
index f66fc149884f40b91d3a6b2c1a79cd7657fd39e6..fae353f5f50a7d3c66ff6b07b5d68698ff3caf98 100644 (file)
         <WxlTemplate Include="*.wxl_template" />
     </ItemGroup>
     <ItemGroup>
-        <InstallFiles Include="$(tcltkDir)bin\*.dll" Exclude="$(tcltkDir)bin\*g.dll">
-            <SourceBase>$(tcltkDir)</SourceBase>
-            <Source>!(bindpath.tcltk)</Source>
-            <TargetBase>$(tcltkDir)bin</TargetBase>
-            <Target_>DLLs\</Target_>
-            <Group>tcltk_dlls</Group>
-        </InstallFiles>
-
         <InstallFiles Include="$(tcltkDir)lib\**\*">
             <SourceBase>$(tcltkDir)</SourceBase>
             <Source>!(bindpath.tcltk)</Source>
index 01d0d2439ddc755f737e13d185c57f2ef0a47b2b..391b3af5713d248496079840ce705abd3ee5177f 100644 (file)
@@ -8,7 +8,6 @@
         
         <Feature Id="DebugBinaries" AllowAdvertise="no" Title="!(loc.Title_d)" Description="!(loc.Description_d)">
             <ComponentGroupRef Id="tkinter_extension_d" />
-            <ComponentGroupRef Id="tcltk_dlls_d" />
         </Feature>
     </Product>
 </Wix>
index 0d1b4a93a3a41e05f3ae86f56d9fb8fd6539b804..119451078096c446965c992b126b769c536d5b4a 100644 (file)
@@ -5,9 +5,17 @@
             <Component Id="_tkinter.pyd" Directory="DLLs" Guid="*">
                 <File Name="_tkinter.pyd" KeyPath="yes" />
             </Component>
+        </ComponentGroup>
+        <ComponentGroup Id="tcltk_dlls">
             <Component Id="_tkinter.lib" Directory="libs" Guid="*">
                 <File Name="_tkinter.lib" KeyPath="yes" />
             </Component>
+            <Component Id="tcl86t.dll" Directory="DLLs" Guid="*">
+                <File Name="tcl86t.dll" KeyPath="yes" />
+            </Component>
+            <Component Id="tk86t.dll" Directory="DLLs" Guid="*">
+                <File Name="tk86t.dll" KeyPath="yes" />
+            </Component>
         </ComponentGroup>
     </Fragment>