[python3] Build interpreter (#14891)

This commit is contained in:
Adam Johnson 2020-12-18 15:00:45 -05:00 committed by GitHub
parent e1417916bc
commit bdb225bc68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 543 additions and 283 deletions

View File

@ -25,8 +25,10 @@ IF the port supports the install target use vcpkg_install_make() instead of vcpk
Specifies the Makefile as a relative path from the root of the sources passed to `vcpkg_configure_make()`
### BUILD_TARGET
The target passed to the make build command (`./make <target>`). If not specified, the 'all' target will
be passed.
The target passed to the make build command (`./make <target>`). Defaults to 'all'.
### INSTALL_TARGET
The target passed to the make build command (`./make <target>`) if `ENABLE_INSTALL` is used. Defaults to 'install'.
### DISABLE_PARALLEL
The underlying buildsystem will be instructed to not parallelize

View File

@ -1,16 +1,16 @@
From dffd6c572fb60f955bf3d98a87e5739163ab8f3f Mon Sep 17 00:00:00 2001
From 4bd06273a9ed63f17966f113dc61a6051bad8b86 Mon Sep 17 00:00:00 2001
From: Adam Johnson <AdamJohnso@gmail.com>
Date: Thu, 28 May 2020 17:25:21 -0400
Subject: [PATCH 1/2] static library
Subject: [PATCH 1/6] static library
builds the pythoncore as a static library instead of a DLL
---
PC/pyconfig.h | 6 ++++++
PC/pyconfig.h | 7 +++++++
PCbuild/pythoncore.vcxproj | 16 ++++++++++++++--
2 files changed, 20 insertions(+), 2 deletions(-)
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/PC/pyconfig.h b/PC/pyconfig.h
index 02216b5068..d359c884e2 100644
index 02216b5068..7e0ba881a5 100644
--- a/PC/pyconfig.h
+++ b/PC/pyconfig.h
@@ -252,6 +252,7 @@ typedef int pid_t;
@ -21,7 +21,7 @@ index 02216b5068..d359c884e2 100644
#if !defined(MS_NO_COREDLL) && !defined(Py_NO_ENABLE_SHARED)
# define Py_ENABLE_SHARED 1 /* standard symbol for shared library */
# define MS_COREDLL /* deprecated old symbol */
@@ -277,6 +278,11 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
@@ -277,6 +278,12 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
# endif /* _DEBUG */
# endif /* _MSC_VER */
# endif /* Py_BUILD_CORE */
@ -30,6 +30,7 @@ index 02216b5068..d359c884e2 100644
+# pragma comment(lib, "version.lib")
+# pragma comment(lib, "shlwapi.lib")
+# pragma comment(lib, "ws2_32.lib")
+# pragma comment(lib, "pathcch.lib")
#endif /* MS_COREDLL */
#if defined(MS_WIN64)

View File

@ -1,28 +0,0 @@
From 28fe1e90fc4d34381553b7faf2f4c331bcaef669 Mon Sep 17 00:00:00 2001
From: Adam Johnson <AdamJohnso@gmail.com>
Date: Thu, 28 May 2020 17:36:31 -0400
Subject: [PATCH 2/2] static crt
changes crt linkage of pythoncore to static.
---
PCbuild/pythoncore.vcxproj | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index dbe236829a..1a4ddb5cea 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -104,6 +104,10 @@
<AdditionalIncludeDirectories Condition="$(IncludeExternals)">$(zlibDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_USRDLL;Py_BUILD_CORE;Py_BUILD_CORE_BUILTIN;MS_DLL_ID="$(SysWinVer)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="$(IncludeExternals)">_Py_HAVE_ZLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MultiThreadedDebug</RuntimeLibrary>
+ <RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">MultiThreadedDebug</RuntimeLibrary>
+ <RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MultiThreaded</RuntimeLibrary>
+ <RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<AdditionalDependencies>version.lib;shlwapi.lib;ws2_32.lib;pathcch.lib;%(AdditionalDependencies)</AdditionalDependencies>
--
2.28.0.windows.1

View File

@ -0,0 +1,39 @@
From 196555707236f4387875749f66620fb519166963 Mon Sep 17 00:00:00 2001
From: Adam Johnson <AdamJohnso@gmail.com>
Date: Wed, 9 Sep 2020 15:20:36 -0400
Subject: [PATCH 2/6] use vcpkg zlib
building without zlib is not a supported configuration, per the warning
messages.
---
PCbuild/pythoncore.vcxproj | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index dbe236829a..5f30a35eb3 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -507,8 +507,10 @@
<ClCompile Include="..\Python\thread.c" />
<ClCompile Include="..\Python\traceback.c" />
</ItemGroup>
- <ItemGroup Condition="$(IncludeExternals)">
+ <ItemGroup>
<ClCompile Include="..\Modules\zlibmodule.c" />
+ </ItemGroup>
+ <ItemGroup Condition="false">
<ClCompile Include="$(zlibDir)\adler32.c" />
<ClCompile Include="$(zlibDir)\compress.c" />
<ClCompile Include="$(zlibDir)\crc32.c" />
@@ -556,7 +558,7 @@
<Target Name="_WarnAboutToolset" BeforeTargets="PrepareForBuild" Condition="$(PlatformToolset) != 'v140' and $(PlatformToolset) != 'v141' and $(PlatformToolset) != 'v142'">
<Warning Text="Toolset $(PlatformToolset) is not used for official builds. Your build may have errors or incompatibilities." />
</Target>
- <Target Name="_WarnAboutZlib" BeforeTargets="PrepareForBuild" Condition="!$(IncludeExternals)">
+ <Target Name="_WarnAboutZlib" BeforeTargets="PrepareForBuild" Condition="false">
<Warning Text="Not including zlib is not a supported configuration." />
</Target>
--
2.28.0.windows.1

View File

@ -0,0 +1,117 @@
From 6c5c3793cbc6ba2a1d0d623a2bdaa9c2125be516 Mon Sep 17 00:00:00 2001
From: Adam Johnson <AdamJohnso@gmail.com>
Date: Wed, 9 Sep 2020 15:24:38 -0400
Subject: [PATCH 3/6] devendor external dependencies
externally fetched libraries may cause linker errors resulting from
duplicate symbols in downstream projects.
---
PCbuild/_bz2.vcxproj | 4 +++-
PCbuild/_lzma.vcxproj | 5 ++---
PCbuild/_sqlite3.vcxproj | 2 +-
PCbuild/_ssl.vcxproj | 2 +-
PCbuild/pyexpat.vcxproj | 6 ++++--
5 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/PCbuild/_bz2.vcxproj b/PCbuild/_bz2.vcxproj
index 3fe95fbf83..6b12e8818e 100644
--- a/PCbuild/_bz2.vcxproj
+++ b/PCbuild/_bz2.vcxproj
@@ -101,6 +101,8 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\Modules\_bz2module.c" />
+ </ItemGroup>
+ <ItemGroup Condition="false">
<ClCompile Include="$(bz2Dir)\blocksort.c" />
<ClCompile Include="$(bz2Dir)\bzlib.c" />
<ClCompile Include="$(bz2Dir)\compress.c" />
@@ -109,7 +111,7 @@
<ClCompile Include="$(bz2Dir)\huffman.c" />
<ClCompile Include="$(bz2Dir)\randtable.c" />
</ItemGroup>
- <ItemGroup>
+ <ItemGroup Condition="false">
<ClInclude Include="$(bz2Dir)\bzlib.h" />
<ClInclude Include="$(bz2Dir)\bzlib_private.h" />
</ItemGroup>
diff --git a/PCbuild/_lzma.vcxproj b/PCbuild/_lzma.vcxproj
index fe076a6fc5..70cc61dd95 100644
--- a/PCbuild/_lzma.vcxproj
+++ b/PCbuild/_lzma.vcxproj
@@ -94,10 +94,9 @@
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(lzmaDir)src/liblzma/api;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;LZMA_API_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
- <AdditionalDependencies>$(OutDir)liblzma$(PyDebugExt).lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
@@ -111,7 +110,7 @@
<Project>{cf7ac3d1-e2df-41d2-bea6-1e2556cdea26}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
- <ProjectReference Include="liblzma.vcxproj">
+ <ProjectReference Condition="false" Include="liblzma.vcxproj">
<Project>{12728250-16eC-4dc6-94d7-e21dd88947f8}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
diff --git a/PCbuild/_sqlite3.vcxproj b/PCbuild/_sqlite3.vcxproj
index 7e0062692b..6fb3279a20 100644
--- a/PCbuild/_sqlite3.vcxproj
+++ b/PCbuild/_sqlite3.vcxproj
@@ -127,7 +127,7 @@
<Project>{cf7ac3d1-e2df-41d2-bea6-1e2556cdea26}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
- <ProjectReference Include="sqlite3.vcxproj">
+ <ProjectReference Condition="false" Include="sqlite3.vcxproj">
<Project>{a1a295e5-463c-437f-81ca-1f32367685da}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
diff --git a/PCbuild/_ssl.vcxproj b/PCbuild/_ssl.vcxproj
index 4907f49b66..4dffa202b7 100644
--- a/PCbuild/_ssl.vcxproj
+++ b/PCbuild/_ssl.vcxproj
@@ -99,7 +99,7 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\Modules\_ssl.c" />
- <ClCompile Include="$(opensslIncludeDir)\applink.c">
+ <ClCompile Condition="false" Include="$(opensslIncludeDir)\applink.c">
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;$(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemGroup>
diff --git a/PCbuild/pyexpat.vcxproj b/PCbuild/pyexpat.vcxproj
index b2d9f5d57d..4efb826a05 100644
--- a/PCbuild/pyexpat.vcxproj
+++ b/PCbuild/pyexpat.vcxproj
@@ -89,17 +89,19 @@
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup>
- <ClCompile>
+ <ClCompile Condition="false">
<AdditionalIncludeDirectories>$(PySourcePath)Modules\expat;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
- <ItemGroup>
+ <ItemGroup Condition="false">
<ClInclude Include="..\Modules\expat\xmlrole.h" />
<ClInclude Include="..\Modules\expat\xmltok.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\Modules\pyexpat.c" />
+ </ItemGroup>
+ <ItemGroup Condition="false">
<ClCompile Include="..\Modules\expat\xmlparse.c" />
<ClCompile Include="..\Modules\expat\xmlrole.c" />
<ClCompile Include="..\Modules\expat\xmltok.c" />
--
2.28.0.windows.1

View File

@ -0,0 +1,26 @@
From 8086c67fa7ada1888a7808cbdc6fe74b62abe5b1 Mon Sep 17 00:00:00 2001
From: Adam Johnson <AdamJohnso@gmail.com>
Date: Wed, 9 Sep 2020 16:12:49 -0400
Subject: [PATCH 4/6] dont copy vcruntime
VCRUNTIME140.dll should not be redistributed, ever.
---
PCbuild/pythoncore.vcxproj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index 5f30a35eb3..3cf21ba39c 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -565,7 +565,7 @@
<Target Name="_CopyVCRuntime" AfterTargets="Build" Inputs="@(VCRuntimeDLL)" Outputs="$(OutDir)%(Filename)%(Extension)" DependsOnTargets="FindVCRuntime">
<!-- bpo-38597: When we switch to another VCRuntime DLL, include vcruntime140.dll as well -->
<Warning Text="A copy of vcruntime140.dll is also required" Condition="!$(VCToolsRedistVersion.StartsWith(`14.`))" />
- <Copy SourceFiles="%(VCRuntimeDLL.FullPath)" DestinationFolder="$(OutDir)" />
+ <Copy Condition="false" SourceFiles="%(VCRuntimeDLL.FullPath)" DestinationFolder="$(OutDir)" />
</Target>
<Target Name="_CleanVCRuntime" AfterTargets="Clean">
<Delete Files="@(VCRuntimeDLL->'$(OutDir)%(Filename)%(Extension)')" />
--
2.28.0.windows.1

View File

@ -0,0 +1,60 @@
From 6492277e39dbe7dd77d32fdc9ae4b989213ef3c6 Mon Sep 17 00:00:00 2001
From: Adam Johnson <AdamJohnso@gmail.com>
Date: Wed, 9 Sep 2020 20:15:58 -0400
Subject: [PATCH 5/6] only build required projects
strips out tests and unsupported externals (eg tkinter).
---
PCbuild/_ssl.vcxproj | 2 +-
PCbuild/pcbuild.proj | 14 +++++++-------
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/PCbuild/_ssl.vcxproj b/PCbuild/_ssl.vcxproj
index 4dffa202b7..e661cb6fb6 100644
--- a/PCbuild/_ssl.vcxproj
+++ b/PCbuild/_ssl.vcxproj
@@ -111,7 +111,7 @@
<Project>{cf7ac3d1-e2df-41d2-bea6-1e2556cdea26}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
- <ProjectReference Include="_socket.vcxproj">
+ <ProjectReference Condition="false" Include="_socket.vcxproj">
<Project>{86937f53-c189-40ef-8ce8-8759d8e7d480}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
diff --git a/PCbuild/pcbuild.proj b/PCbuild/pcbuild.proj
index 4d416c589e..ede9868a8f 100644
--- a/PCbuild/pcbuild.proj
+++ b/PCbuild/pcbuild.proj
@@ -45,21 +45,21 @@
<BuildInParallel>false</BuildInParallel>
</Projects>
<!-- python3.dll -->
- <Projects Include="python3dll.vcxproj" />
+ <Projects Include="python3dll.vcxproj" Condition="false" />
<!-- py[w].exe -->
- <Projects Include="pylauncher.vcxproj;pywlauncher.vcxproj" />
+ <Projects Include="pylauncher.vcxproj;pywlauncher.vcxproj" Condition="false" />
<!-- pyshellext.dll -->
- <Projects Include="pyshellext.vcxproj" />
+ <Projects Include="pyshellext.vcxproj" Condition="false" />
<!-- Extension modules -->
<ExtensionModules Include="_asyncio;_zoneinfo;_decimal;_elementtree;_msi;_multiprocessing;_overlapped;pyexpat;_queue;select;unicodedata;winsound;_uuid" />
<ExtensionModules Include="_ctypes" Condition="$(IncludeCTypes)" />
<!-- Extension modules that require external sources -->
<ExternalModules Include="_bz2;_lzma;_sqlite3" />
<!-- venv launchers -->
- <Projects Include="venvlauncher.vcxproj;venvwlauncher.vcxproj" />
- <!-- _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)" />
+ <Projects Include="venvlauncher.vcxproj;venvwlauncher.vcxproj" Condition="false" />
+ <!-- _ssl will NOT build _socket as well -->
+ <ExtensionModules Include="_socket" Condition="true" />
+ <ExternalModules Include="_ssl;_hashlib" Condition="true" />
<ExternalModules Include="_tkinter" Condition="$(IncludeTkinter) and $(Platform) != 'ARM' and $(Platform) != 'ARM64'" />
<ExtensionModules Include="@(ExternalModules->'%(Identity)')" Condition="$(IncludeExternals)" />
<Projects Include="@(ExtensionModules->'%(Identity).vcxproj')" Condition="$(IncludeExtensions)" />
--
2.28.0.windows.1

View File

@ -0,0 +1,39 @@
From 62e082c1eba79d46ba8ab4b7a556a57a2253d555 Mon Sep 17 00:00:00 2001
From: Adam Johnson <AdamJohnso@gmail.com>
Date: Fri, 11 Sep 2020 12:35:36 -0400
Subject: [PATCH 6/6] fix duplicate symbols
---
Modules/_winapi.c | 2 +-
Modules/overlapped.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Modules/_winapi.c b/Modules/_winapi.c
index e1672c4785..27148094d2 100644
--- a/Modules/_winapi.c
+++ b/Modules/_winapi.c
@@ -304,7 +304,7 @@ static PyMemberDef overlapped_members[] = {
{NULL}
};
-PyTypeObject OverlappedType = {
+static PyTypeObject OverlappedType = {
PyVarObject_HEAD_INIT(NULL, 0)
/* tp_name */ "_winapi.Overlapped",
/* tp_basicsize */ sizeof(OverlappedObject),
diff --git a/Modules/overlapped.c b/Modules/overlapped.c
index cd7869fa8a..319ea0a4b7 100644
--- a/Modules/overlapped.c
+++ b/Modules/overlapped.c
@@ -1756,7 +1756,7 @@ static PyGetSetDef Overlapped_getsets[] = {
{NULL},
};
-PyTypeObject OverlappedType = {
+static PyTypeObject OverlappedType = {
PyVarObject_HEAD_INIT(NULL, 0)
/* tp_name */ "_overlapped.Overlapped",
/* tp_basicsize */ sizeof(OverlappedObject),
--
2.28.0.windows.1

View File

@ -1,8 +0,0 @@
Source: python3
Version: 3.9.0
Homepage: https://github.com/python/cpython
Description: The Python programming language as an embeddable library
Build-Depends: libffi, openssl, zlib (!uwp&!windows)
Feature: enable-shared
Description: Build shared libraries in addition to static ones built by default

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
<Link>
<AdditionalDependencies>Crypt32.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(IncludeExternals)'=='Release|true'">
${CRYPTO_RELEASE};${SSL_RELEASE};%(AdditionalDependencies)
</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(IncludeExternals)'=='Debug|true'">
${CRYPTO_DEBUG};${SSL_DEBUG};%(AdditionalDependencies)
</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
</Project>

View File

@ -8,17 +8,19 @@ set(PYTHON_VERSION_MINOR 9)
set(PYTHON_VERSION_PATCH 0)
set(PYTHON_VERSION ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH})
if(VCPKG_TARGET_IS_WINDOWS)
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
list(APPEND PATCHES ${CMAKE_CURRENT_LIST_DIR}/0001-static-library.patch)
endif()
if (VCPKG_CRT_LINKAGE STREQUAL static)
list(APPEND PATCHES ${CMAKE_CURRENT_LIST_DIR}/0002-static-crt.patch)
endif()
set(PATCHES
0002-use-vcpkg-zlib.patch
0003-devendor-external-dependencies.patch
0004-dont-copy-vcruntime.patch
0005-only-build-required-projects.patch
0006-fix-duplicate-symbols.patch
)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
list(PREPEND PATCHES 0001-static-library.patch)
endif()
vcpkg_from_github(
OUT_SOURCE_PATH TEMP_SOURCE_PATH
OUT_SOURCE_PATH SOURCE_PATH
REPO python/cpython
REF v${PYTHON_VERSION}
SHA512 39d304cae181674c4872c63768c0e5aeace2c92eb6d5ea550428d65c8571bc60922b3a3d484b51c46b466aadb7e27500559cafec13a489b48613bbb3fe6a5a5d
@ -26,228 +28,154 @@ vcpkg_from_github(
PATCHES ${PATCHES}
)
if("enable-shared" IN_LIST FEATURES)
set(_ENABLED_SHARED --enable-shared)
if(VCPKG_TARGET_IS_LINUX)
message(WARNING"Feature enable-shared requires libffi-devel from the system package manager, please install it on Ubuntu system via sudo apt-get install libffi-dev.")
if(VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_UWP)
# Due to the way Python handles C extension modules on Windows, a static python core cannot
# load extension modules.
string(COMPARE EQUAL ${VCPKG_LIBRARY_LINKAGE} "dynamic" PYTHON_ALLOW_EXTENSIONS)
if(PYTHON_ALLOW_EXTENSIONS)
find_library(BZ2_RELEASE NAMES bz2 PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
find_library(BZ2_DEBUG NAMES bz2d PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH)
find_library(CRYPTO_RELEASE NAMES libcrypto PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
find_library(CRYPTO_DEBUG NAMES libcrypto PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH)
find_library(EXPAT_RELEASE NAMES libexpat libexpatMD PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
find_library(EXPAT_DEBUG NAMES libexpatd libexpatdMD PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH)
find_library(FFI_RELEASE NAMES libffi PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
find_library(FFI_DEBUG NAMES libffi PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH)
find_library(LZMA_RELEASE NAMES lzma PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
find_library(LZMA_DEBUG NAMES lzmad PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH)
find_library(SQLITE_RELEASE NAMES sqlite3 PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
find_library(SQLITE_DEBUG NAMES sqlite3 PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH)
find_library(SSL_RELEASE NAMES libssl PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
find_library(SSL_DEBUG NAMES libssl PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH)
else()
message(STATUS "WARNING: Static builds of Python will not have C extension modules available.")
endif()
find_library(ZLIB_RELEASE NAMES zlib PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
find_library(ZLIB_DEBUG NAMES zlib zlibd PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH)
configure_file(${SOURCE_PATH}/PC/pyconfig.h ${SOURCE_PATH}/PC/pyconfig.h)
configure_file(${CMAKE_CURRENT_LIST_DIR}/python_vcpkg.props.in ${SOURCE_PATH}/PCbuild/python_vcpkg.props)
configure_file(${CMAKE_CURRENT_LIST_DIR}/openssl.props.in ${SOURCE_PATH}/PCbuild/openssl.props)
file(WRITE ${SOURCE_PATH}/PCbuild/libffi.props
"<?xml version='1.0' encoding='utf-8'?>
<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003' />"
)
if(PYTHON_ALLOW_EXTENSIONS)
set(OPTIONS
"/p:IncludeExtensions=true"
"/p:IncludeExternals=true"
"/p:IncludeCTypes=true"
"/p:IncludeSSL=true"
"/p:IncludeTkinter=false"
"/p:IncludeTests=false"
"/p:ForceImportBeforeCppTargets=${SOURCE_PATH}/PCbuild/python_vcpkg.props"
)
else()
set(OPTIONS
"/p:IncludeExtensions=false"
"/p:IncludeExternals=false"
"/p:IncludeTests=false"
"/p:ForceImportBeforeCppTargets=${SOURCE_PATH}/PCbuild/python_vcpkg.props"
)
endif()
if(VCPKG_TARGET_IS_UWP)
list(APPEND OPTIONS "/p:IncludeUwp=true")
else()
list(APPEND OPTIONS "/p:IncludeUwp=false")
endif()
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
list(APPEND OPTIONS "/p:_VcpkgPythonLinkage=DynamicLibrary")
else()
list(APPEND OPTIONS "/p:_VcpkgPythonLinkage=StaticLibrary")
endif()
# _freeze_importlib.exe is run as part of the build process, so make sure the required dynamic libs are available.
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
vcpkg_add_to_path("${CURRENT_INSTALLED_DIR}/bin")
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
vcpkg_add_to_path("${CURRENT_INSTALLED_DIR}/debug/bin")
endif()
vcpkg_install_msbuild(
SOURCE_PATH ${SOURCE_PATH}
PROJECT_SUBPATH "PCbuild/pcbuild.proj"
OPTIONS ${OPTIONS}
LICENSE_SUBPATH "LICENSE"
SKIP_CLEAN
)
# The extension modules must be placed in the DLLs directory, so we can't use vcpkg_copy_tools()
if(PYTHON_ALLOW_EXTENSIONS)
file(GLOB_RECURSE PYTHON_EXTENSIONS "${CURRENT_BUILDTREES_DIR}/*.pyd")
list(FILTER PYTHON_EXTENSIONS EXCLUDE REGEX [[.*_d\.pyd]])
file(COPY ${PYTHON_EXTENSIONS} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}/DLLs")
vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/DLLs")
file(REMOVE "${CURRENT_PACKAGES_DIR}/tools/${PORT}/DLLs/python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}.dll")
endif()
file(COPY "${SOURCE_PATH}/Include/" "${SOURCE_PATH}/PC/pyconfig.h"
DESTINATION "${CURRENT_PACKAGES_DIR}/include/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}"
FILES_MATCHING PATTERN *.h
)
file(COPY "${SOURCE_PATH}/Lib" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
# Remove any extension libraries and other unversioned binaries that could conflict with the python2 port.
# You don't need to link against these anyway.
file(GLOB PYTHON_LIBS
"${CURRENT_PACKAGES_DIR}/lib/*.lib"
"${CURRENT_PACKAGES_DIR}/debug/lib/*.lib"
)
list(FILTER PYTHON_LIBS EXCLUDE REGEX [[python[0-9]*(_d)?\.lib$]])
file(GLOB PYTHON_INSTALLERS "${CURRENT_PACKAGES_DIR}/tools/${PORT}/wininst-*.exe")
file(REMOVE ${PYTHON_LIBS} ${PYTHON_INSTALLERS})
if(PYTHON_ALLOW_EXTENSIONS)
message(STATUS "Bootstrapping pip")
vcpkg_execute_required_process(COMMAND python -m ensurepip
WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}"
LOGNAME "ensurepip-${TARGET_TRIPLET}"
)
endif()
vcpkg_clean_msbuild()
else()
unset(_ENABLED_SHARED)
endif()
if (VCPKG_TARGET_IS_WINDOWS)
if(DEFINED _ENABLED_SHARED)
message(WARNING "enable-shared requested, by Windows build already produce a shared library by default")
endif()
set(SOURCE_PATH "${TEMP_SOURCE_PATH}-Lib-Win")
file(REMOVE_RECURSE ${SOURCE_PATH})
file(RENAME "${TEMP_SOURCE_PATH}" ${SOURCE_PATH})
if (VCPKG_TARGET_ARCHITECTURE MATCHES "x86")
set(BUILD_ARCH "Win32")
set(OUT_DIR "win32")
elseif (VCPKG_TARGET_ARCHITECTURE MATCHES "x64")
set(BUILD_ARCH "x64")
set(OUT_DIR "amd64")
else()
message(FATAL_ERROR "Unsupported architecture: ${VCPKG_TARGET_ARCHITECTURE}")
endif()
vcpkg_build_msbuild(
PROJECT_PATH ${SOURCE_PATH}/PCBuild/pythoncore.vcxproj
PLATFORM ${BUILD_ARCH})
file(INSTALL
"${SOURCE_PATH}/Include/"
"${SOURCE_PATH}/PC/pyconfig.h"
DESTINATION "${CURRENT_PACKAGES_DIR}/include/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}"
FILES_MATCHING PATTERN *.h
)
file(INSTALL
"${SOURCE_PATH}/Lib"
DESTINATION
"${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR}"
)
file(INSTALL
"${SOURCE_PATH}/PCBuild/${OUT_DIR}/python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}.lib"
DESTINATION
"${CURRENT_PACKAGES_DIR}/lib"
)
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
file(INSTALL "${SOURCE_PATH}/PCBuild/${OUT_DIR}/python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}_d.lib" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
endif()
if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
file(INSTALL "${SOURCE_PATH}/PCBuild/${OUT_DIR}/python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}.dll" DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
file(INSTALL "${SOURCE_PATH}/PCBuild/${OUT_DIR}/python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}_d.dll" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
endif()
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
vcpkg_copy_pdbs()
endif()
# Handle copyright
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR} RENAME copyright)
elseif (VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_OSX)
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
set(SOURCE_PATH_DEBUG "${TEMP_SOURCE_PATH}-${TARGET_TRIPLET}-debug")
endif()
set(SOURCE_PATH_RELEASE "${TEMP_SOURCE_PATH}-${TARGET_TRIPLET}-release")
file(REMOVE_RECURSE ${SOURCE_PATH_RELEASE})
file(GLOB FILES ${TEMP_SOURCE_PATH}/*)
file(COPY ${FILES} DESTINATION ${SOURCE_PATH_RELEASE})
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
file(REMOVE_RECURSE ${SOURCE_PATH_DEBUG})
file(RENAME "${TEMP_SOURCE_PATH}" ${SOURCE_PATH_DEBUG})
endif()
find_program(MAKE make)
if (NOT MAKE)
message(FATAL_ERROR "MAKE not found")
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
################
# Release build
################
message(STATUS "Configuring ${TARGET_TRIPLET}-rel")
set(OUT_PATH_RELEASE ${SOURCE_PATH_RELEASE}/../../make-build-${TARGET_TRIPLET}-release)
file(MAKE_DIRECTORY ${OUT_PATH_RELEASE})
if(VCPKG_TARGET_IS_OSX)
vcpkg_execute_build_process(
COMMAND
"${SOURCE_PATH_RELEASE}/configure"
${_ENABLED_SHARED}
--prefix=${OUT_PATH_RELEASE}
--with-openssl=${CURRENT_INSTALLED_DIR}
"CPPFLAGS=-I${CURRENT_INSTALLED_DIR}/include -framework CoreFoundation" "LDFLAGS=-L${CURRENT_INSTALLED_DIR}/lib" "LIBS=-liconv"
WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
LOGNAME config-${TARGET_TRIPLET}-rel
)
else()
vcpkg_execute_build_process(
COMMAND
"${SOURCE_PATH_RELEASE}/configure"
${_ENABLED_SHARED}
--prefix=${OUT_PATH_RELEASE}
--with-openssl=${CURRENT_INSTALLED_DIR}
"CPPFLAGS=-I${CURRENT_INSTALLED_DIR}/include" "LDFLAGS=-L${CURRENT_INSTALLED_DIR}/lib"
WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
LOGNAME config-${TARGET_TRIPLET}-rel
)
endif()
message(STATUS "Building ${TARGET_TRIPLET}-rel")
vcpkg_execute_build_process(
COMMAND make install -j ${VCPKG_CONCURRENCY}
NO_PARALLEL_COMMAND make install
WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
LOGNAME make-build-${TARGET_TRIPLET}-release
)
message(STATUS "Installing ${TARGET_TRIPLET}-rel headers...")
file(INSTALL "${OUT_PATH_RELEASE}/include/"
DESTINATION ${CURRENT_PACKAGES_DIR}/include
FILES_MATCHING PATTERN *.h
)
message(STATUS "Installing ${TARGET_TRIPLET}-rel lib files...")
file(GLOB PY_LIBS
${OUT_PATH_RELEASE}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/*)
file(INSTALL ${PY_LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR}/Lib
PATTERN "*.pyc" EXCLUDE
PATTERN "*__pycache__*" EXCLUDE
)
message(STATUS "Installing ${TARGET_TRIPLET}-rel share files...")
file(GLOB PKGCFG ${OUT_PATH_RELEASE}/lib/pkgconfig/*)
file(INSTALL ${PKGCFG} DESTINATION ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR}
PATTERN "*.pyc" EXCLUDE
PATTERN "*__pycache__*" EXCLUDE
)
message(STATUS "Installing ${TARGET_TRIPLET}-rel Python library files...")
file(GLOB LIBS
${OUT_PATH_RELEASE}/lib/libpython${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.*)
if (NOT LIBS)
file(GLOB LIBS ${OUT_PATH_RELEASE}/lib64/*)
endif()
file(INSTALL ${LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/lib
PATTERN "*.pyc" EXCLUDE
PATTERN "*__pycache__*" EXCLUDE
)
message(STATUS "Installing ${TARGET_TRIPLET}-rel done")
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
################
# Debug build
################
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
set(OUT_PATH_DEBUG ${SOURCE_PATH_DEBUG}/../../make-build-${TARGET_TRIPLET}-debug)
file(MAKE_DIRECTORY ${OUT_PATH_DEBUG})
if(VCPKG_TARGET_IS_OSX)
vcpkg_execute_build_process(
COMMAND
"${SOURCE_PATH_DEBUG}/configure"
--with-pydebug
${_ENABLED_SHARED}
--prefix=${OUT_PATH_DEBUG}
--with-openssl=${CURRENT_INSTALLED_DIR}/debug
"CPPFLAGS=-I${CURRENT_INSTALLED_DIR}/include -framework CoreFoundation" "LDFLAGS=-L${CURRENT_INSTALLED_DIR}/debug/lib" "LIBS=-liconv"
WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
LOGNAME config-${TARGET_TRIPLET}-debug
)
else()
vcpkg_execute_build_process(
COMMAND
"${SOURCE_PATH_DEBUG}/configure"
--with-pydebug
${_ENABLED_SHARED}
--prefix=${OUT_PATH_DEBUG}
--with-openssl=${CURRENT_INSTALLED_DIR}/debug
"CPPFLAGS=-I${CURRENT_INSTALLED_DIR}/include" "LDFLAGS=-L${CURRENT_INSTALLED_DIR}/debug/lib"
WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
LOGNAME config-${TARGET_TRIPLET}-debug
)
endif()
message(STATUS "Building ${TARGET_TRIPLET}-dbg")
vcpkg_execute_build_process(
COMMAND make install -j ${VCPKG_CONCURRENCY}
NO_PARALLEL_COMMAND make install
WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
LOGNAME make-build-${TARGET_TRIPLET}-debug
)
message(STATUS "Installing ${TARGET_TRIPLET}-dbg Python library files...")
file(GLOB LIBS
${OUT_PATH_DEBUG}/lib/libpython${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}d.*)
if (NOT LIBS)
file(GLOB LIBS
${OUT_PATH_DEBUG}/lib64/*)
endif()
file(INSTALL ${LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib
PATTERN "*.pyc" EXCLUDE
PATTERN "*__pycache__*" EXCLUDE
)
message(STATUS "Installing ${TARGET_TRIPLET}-dbg done")
endif()
# Handle copyright
file(INSTALL ${SOURCE_PATH_RELEASE}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR} RENAME copyright)
set(OPTIONS
"--with-openssl=${CURRENT_INSTALLED_DIR}"
"--with-ensurepip"
[[--with-suffix=""]]
"--with-system-expat"
)
if(VCPKG_TARGET_IS_OSX)
list(APPEND OPTIONS "LIBS=-liconv -lintl")
endif()
vcpkg_configure_make(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS ${OPTIONS}
OPTIONS_DEBUG "--with-pydebug"
)
vcpkg_install_make(ADD_BIN_TO_PATH INSTALL_TARGET altinstall)
file(COPY "${CURRENT_PACKAGES_DIR}/bin/" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin")
file(COPY "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
# Makefiles, c files, __pycache__, and other junk.
file(GLOB PYTHON_LIB_DIRS LIST_DIRECTORIES true
"${CURRENT_PACKAGES_DIR}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/*"
"${CURRENT_PACKAGES_DIR}/debug/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/*")
list(FILTER PYTHON_LIB_DIRS INCLUDE REGEX [[config-[0-9].*.*]])
file(REMOVE_RECURSE ${PYTHON_LIB_DIRS})
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}d")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/${PORT}/man1")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug")
file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME "copyright")
endif()

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
<CLCompile>
<!-- Use vcpkg ports instead of vendored externals -->
<PreprocessorDefinitions>_Py_HAVE_ZLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="${VCPKG_LIBRARY_LINKAGE} == 'static'">XML_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>
${CURRENT_INSTALLED_DIR}/include;%(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
<RuntimeLibrary Condition="'${VCPKG_CRT_LINKAGE}|$(Configuration)' == 'static|Debug'">MultiThreadedDebug</RuntimeLibrary>
<RuntimeLibrary Condition="'${VCPKG_CRT_LINKAGE}|$(Configuration)' == 'static|Release'">MultiThreaded</RuntimeLibrary>
<RuntimeLibrary Condition="'${VCPKG_CRT_LINKAGE}|$(Configuration)' == 'dynamic|Debug'">MultiThreadedDebugDLL</RuntimeLibrary>
<RuntimeLibrary Condition="'${VCPKG_CRT_LINKAGE}|$(Configuration)' == 'dynamic|Release'">MultiThreadedDLL</RuntimeLibrary>
</CLCompile>
<Link>
<!-- Required Libs -->
<AdditionalDependencies Condition="'$(Configuration)'=='Release'">
${ZLIB_RELEASE};%(AdditionalDependencies)
</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)'=='Debug'">
${ZLIB_DEBUG};%(AdditionalDependencies)
</AdditionalDependencies>
<!-- Extension modules -->
<AdditionalDependencies Condition="'$(Configuration)|$(IncludeExtensions)' == 'Release|true'">
${BZ2_RELEASE};${EXPAT_RELEASE};${FFI_RELEASE};${LZMA_RELEASE};${SQLITE_RELEASE};%(AdditionalDependencies)
</AdditionalDependencies>
<AdditionalDependencies Condition="'$(Configuration)|$(IncludeExtensions)' == 'Debug|true'">
${BZ2_DEBUG};${EXPAT_DEBUG};${FFI_DEBUG};${LZMA_DEBUG};${SQLITE_DEBUG};%(AdditionalDependencies)
</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
</Project>

32
ports/python3/vcpkg.json Normal file
View File

@ -0,0 +1,32 @@
{
"name": "python3",
"version-string": "3.9.0",
"port-version": 1,
"description": "The Python programming language",
"homepage": "https://github.com/python/cpython",
"supports": "!(arm | uwp)",
"dependencies": [
{
"name": "bzip2",
"platform": "!(windows & static)"
},
"expat",
{
"name": "libffi",
"platform": "!(windows & static)"
},
{
"name": "liblzma",
"platform": "!(windows & static)"
},
{
"name": "openssl",
"platform": "!(windows & static)"
},
{
"name": "sqlite3",
"platform": "!(windows & static)"
},
"zlib"
]
}

View File

@ -1204,9 +1204,6 @@ python2:arm-uwp=fail
python2:x64-linux=fail
python2:x64-osx=fail
python2:x64-uwp=fail
python3:arm64-windows=fail
python3:arm-uwp=fail
python3:x64-uwp=fail
qhull:x64-uwp=fail
qhull:arm-uwp=fail
qpid-proton:arm-uwp=fail

View File

@ -26,8 +26,10 @@ IF the port supports the install target use vcpkg_install_make() instead of vcpk
Specifies the Makefile as a relative path from the root of the sources passed to `vcpkg_configure_make()`
### BUILD_TARGET
The target passed to the make build command (`./make <target>`). If not specified, the 'all' target will
be passed.
The target passed to the make build command (`./make <target>`). Defaults to 'all'.
### INSTALL_TARGET
The target passed to the make build command (`./make <target>`) if `ENABLE_INSTALL` is used. Defaults to 'install'.
### DISABLE_PARALLEL
The underlying buildsystem will be instructed to not parallelize
@ -56,7 +58,7 @@ function(vcpkg_build_make)
include("${_VCPKG_CMAKE_VARS_FILE}")
# parse parameters such that semicolons in options arguments to COMMAND don't get erased
cmake_parse_arguments(PARSE_ARGV 0 _bc "ADD_BIN_TO_PATH;ENABLE_INSTALL;DISABLE_PARALLEL" "LOGFILE_ROOT;BUILD_TARGET;SUBPATH;MAKEFILE" "")
cmake_parse_arguments(PARSE_ARGV 0 _bc "ADD_BIN_TO_PATH;ENABLE_INSTALL;DISABLE_PARALLEL" "LOGFILE_ROOT;BUILD_TARGET;SUBPATH;MAKEFILE;INSTALL_TARGET" "")
if(NOT _bc_LOGFILE_ROOT)
set(_bc_LOGFILE_ROOT "build")
@ -70,6 +72,10 @@ function(vcpkg_build_make)
set(_bc_MAKEFILE Makefile)
endif()
if(NOT _bc_INSTALL_TARGET)
set(_bc_INSTALL_TARGET "install")
endif()
if(WIN32)
set(_VCPKG_PREFIX ${CURRENT_PACKAGES_DIR})
set(_VCPKG_INSTALLED ${CURRENT_INSTALLED_DIR})
@ -93,7 +99,7 @@ function(vcpkg_build_make)
string(REPLACE " " "\\\ " _VCPKG_PACKAGE_PREFIX ${CURRENT_PACKAGES_DIR})
# Don't know why '/cygdrive' is suddenly a requirement here. (at least for x264)
string(REGEX REPLACE "([a-zA-Z]):/" "/cygdrive/\\1/" _VCPKG_PACKAGE_PREFIX "${_VCPKG_PACKAGE_PREFIX}")
set(INSTALL_OPTS -j ${VCPKG_CONCURRENCY} --trace -f ${_bc_MAKEFILE} install DESTDIR=${_VCPKG_PACKAGE_PREFIX})
set(INSTALL_OPTS -j ${VCPKG_CONCURRENCY} --trace -f ${_bc_MAKEFILE} ${_bc_INSTALL_TARGET} DESTDIR=${_VCPKG_PACKAGE_PREFIX})
#TODO: optimize for install-data (release) and install-exec (release/debug)
else()
# Compiler requriements
@ -106,7 +112,7 @@ function(vcpkg_build_make)
# Set make command and install command
set(MAKE_OPTS ${_bc_MAKE_OPTIONS} V=1 -j ${VCPKG_CONCURRENCY} -f ${_bc_MAKEFILE} ${_bc_BUILD_TARGET})
set(NO_PARALLEL_MAKE_OPTS ${_bc_MAKE_OPTIONS} V=1 -j 1 -f ${_bc_MAKEFILE} ${_bc_BUILD_TARGET})
set(INSTALL_OPTS -j ${VCPKG_CONCURRENCY} -f ${_bc_MAKEFILE} install DESTDIR=${CURRENT_PACKAGES_DIR})
set(INSTALL_OPTS -j ${VCPKG_CONCURRENCY} -f ${_bc_MAKEFILE} ${_bc_INSTALL_TARGET} DESTDIR=${CURRENT_PACKAGES_DIR})
endif()
# Since includes are buildtype independent those are setup by vcpkg_configure_make

View File

@ -26,7 +26,7 @@ function(vcpkg_copy_tool_dependencies TOOL_DIR)
message(FATAL_ERROR "Could not find PowerShell Core; please open an issue to report this.")
endif()
macro(search_for_dependencies PATH_TO_SEARCH)
file(GLOB TOOLS "${TOOL_DIR}/*.exe" "${TOOL_DIR}/*.dll")
file(GLOB TOOLS "${TOOL_DIR}/*.exe" "${TOOL_DIR}/*.dll" "${TOOL_DIR}/*.pyd")
foreach(TOOL IN LISTS TOOLS)
vcpkg_execute_required_process(
COMMAND "${PWSH_EXE}" -noprofile -executionpolicy Bypass -nologo