aboutsummaryrefslogtreecommitdiff
path: root/ports/python3
diff options
context:
space:
mode:
authorMACHIZAUD Andréa <andrea.machizaud@gmail.com>2020-03-10 20:25:18 +0100
committerGitHub <noreply@github.com>2020-03-10 12:25:18 -0700
commite48fe56787e825f1b8c0e53d6c4db51b8bf9256d (patch)
tree4a2a7706806ce0fa216c75f3e9144bca83220e6d /ports/python3
parentd1b89575bd2945e5a4fc54dca484a6f86112d33e (diff)
downloadvcpkg-e48fe56787e825f1b8c0e53d6c4db51b8bf9256d.tar.gz
vcpkg-e48fe56787e825f1b8c0e53d6c4db51b8bf9256d.zip
[python3] Modernize port + added --enable-shared (#9978)
Diffstat (limited to 'ports/python3')
-rw-r--r--ports/python3/CONTROL7
-rw-r--r--ports/python3/portfile.cmake148
2 files changed, 114 insertions, 41 deletions
diff --git a/ports/python3/CONTROL b/ports/python3/CONTROL
index da8409fd9..074641ea8 100644
--- a/ports/python3/CONTROL
+++ b/ports/python3/CONTROL
@@ -1,5 +1,8 @@
Source: python3
-Version: 3.7.3
+Version: 3.7.3-1
Homepage: https://github.com/python/cpython
Description: The Python programming language as an embeddable library
-Build-Depends: libffi, openssl \ No newline at end of file
+Build-Depends: libffi, openssl
+
+Feature: enable-shared
+Description: Build shared libraries in addition to static ones built by default
diff --git a/ports/python3/portfile.cmake b/ports/python3/portfile.cmake
index bbb5de173..dc9e0efa3 100644
--- a/ports/python3/portfile.cmake
+++ b/ports/python3/portfile.cmake
@@ -8,8 +8,6 @@ set(PYTHON_VERSION_MINOR 7)
set(PYTHON_VERSION_PATCH 3)
set(PYTHON_VERSION ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH})
-include(vcpkg_common_functions)
-
vcpkg_from_github(
OUT_SOURCE_PATH TEMP_SOURCE_PATH
REPO python/cpython
@@ -18,14 +16,23 @@ vcpkg_from_github(
HEAD_REF master
)
+if("enable-shared" IN_LIST FEATURES)
+ set(_ENABLED_SHARED --enable-shared)
+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})
-
+
# We need per-triplet directories because we need to patch the project files differently based on the linkage
# Because the patches patch the same file, they have to be applied in the correct order
-
+
if (VCPKG_TARGET_ARCHITECTURE MATCHES "x86")
set(BUILD_ARCH "Win32")
set(OUT_DIR "win32")
@@ -41,29 +48,40 @@ if (VCPKG_TARGET_IS_WINDOWS)
PLATFORM ${BUILD_ARCH})
file(GLOB HEADERS ${SOURCE_PATH}/Include/*.h)
- file(COPY ${HEADERS} ${SOURCE_PATH}/PC/pyconfig.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR})
- file(COPY ${SOURCE_PATH}/Lib DESTINATION ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR})
- file(COPY ${SOURCE_PATH}/PCBuild/${OUT_DIR}/python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
+ file(INSTALL
+ ${HEADERS}
+ "${SOURCE_PATH}/PC/pyconfig.h"
+ DESTINATION
+ "${CURRENT_PACKAGES_DIR}/include/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}"
+ )
+ 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(COPY ${SOURCE_PATH}/PCBuild/${OUT_DIR}/python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}_d.lib DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
+ 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(COPY ${SOURCE_PATH}/PCBuild/${OUT_DIR}/python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}.dll DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
+ 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(COPY ${SOURCE_PATH}/PCBuild/${OUT_DIR}/python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}_d.dll DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
+ 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(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR})
- file(RENAME ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR}/LICENSE ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR}/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)
@@ -85,7 +103,7 @@ elseif (VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_OSX)
if (NOT MAKE)
message(FATAL_ERROR "MAKE not found")
endif()
-
+
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
################
# Release build
@@ -93,18 +111,28 @@ elseif (VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_OSX)
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" --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
+ 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" --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
+ 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()
@@ -116,7 +144,7 @@ elseif (VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_OSX)
WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
LOGNAME make-build-${TARGET_TRIPLET}-release
)
-
+
message(STATUS "Installing ${TARGET_TRIPLET}-rel")
vcpkg_execute_build_process(
COMMAND make install
@@ -124,13 +152,37 @@ elseif (VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_OSX)
LOGNAME make-install-${TARGET_TRIPLET}-release
)
- file(GLOB HEADERS ${OUT_PATH_RELEASE}/include/*)
- file(COPY ${HEADERS} DESTINATION ${CURRENT_PACKAGES_DIR}/include)
- file(GLOB LIBS ${OUT_PATH_RELEASE}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/*)
- file(COPY ${LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR}/Lib)
- file(GLOB LIBS ${OUT_PATH_RELEASE}/lib/pkgconfig/*)
- file(COPY ${LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR})
- file(COPY ${OUT_PATH_RELEASE}/lib/libpython${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}m.a DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
+ message(STATUS "Installing ${TARGET_TRIPLET}-rel headers...")
+ file(GLOB HEADERS
+ ${OUT_PATH_RELEASE}/include/*)
+ file(INSTALL ${HEADERS} DESTINATION ${CURRENT_PACKAGES_DIR}/include
+ PATTERN "*__pycache__*" EXCLUDE
+ )
+
+ message(STATUS "Installing ${TARGET_TRIPLET}-rel lib files...")
+ file(GLOB LIBS
+ ${OUT_PATH_RELEASE}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/*)
+ file(INSTALL ${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 LIBS
+ ${OUT_PATH_RELEASE}/lib/pkgconfig/*)
+ file(INSTALL ${LIBS} 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}m.*)
+ file(INSTALL ${LIBS} DESTINATION ${CURRENT_PACKAGES_DIR}/lib
+ PATTERN "*.pyc" EXCLUDE
+ PATTERN "*__pycache__*" EXCLUDE
+ )
+
message(STATUS "Installing ${TARGET_TRIPLET}-rel done")
endif()
@@ -145,15 +197,27 @@ elseif (VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_OSX)
if(VCPKG_TARGET_IS_OSX)
vcpkg_execute_build_process(
- COMMAND "${SOURCE_PATH_DEBUG}/configure" --with-pydebug --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
+ 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 --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
+ 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()
@@ -164,7 +228,7 @@ elseif (VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_OSX)
WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
LOGNAME make-build-${TARGET_TRIPLET}-debug
)
-
+
message(STATUS "Installing ${TARGET_TRIPLET}-dbg")
vcpkg_execute_build_process(
COMMAND make install
@@ -172,12 +236,18 @@ elseif (VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_OSX)
LOGNAME make-install-${TARGET_TRIPLET}-debug
)
- file(COPY ${OUT_PATH_DEBUG}/lib/libpython${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}dm.a DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
+ message(STATUS "Installing ${TARGET_TRIPLET}-dbg Python library files...")
+ file(GLOB LIBS
+ ${OUT_PATH_DEBUG}/lib/libpython${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}dm.*)
+ 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(COPY ${SOURCE_PATH_RELEASE}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR})
- file(RENAME ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR}/LICENSE ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR}/copyright)
+ file(INSTALL ${SOURCE_PATH_RELEASE}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/python${PYTHON_VERSION_MAJOR} RENAME copyright)
endif()