2017-05-20 16:58:30 +08:00
if ( VCPKG_LIBRARY_LINKAGE STREQUAL dynamic AND VCPKG_CRT_LINKAGE STREQUAL static )
message ( STATUS "Warning: Dynamic library with static CRT is not supported. Building static library." )
set ( VCPKG_LIBRARY_LINKAGE static )
endif ( )
2018-01-05 00:55:01 +08:00
set ( PYTHON_VERSION_MAJOR 3 )
2021-10-07 03:53:06 +08:00
set ( PYTHON_VERSION_MINOR 10 )
2022-11-19 03:53:08 +08:00
set ( PYTHON_VERSION_PATCH 7 )
2018-01-05 00:55:01 +08:00
set ( PYTHON_VERSION ${ PYTHON_VERSION_MAJOR } . ${ PYTHON_VERSION_MINOR } . ${ PYTHON_VERSION_PATCH } )
2017-05-20 05:31:04 +08:00
2020-12-19 04:00:45 +08:00
set ( PATCHES
2022-11-19 03:53:08 +08:00
0 0 0 1 - o n l y - b u i l d - r e q u i r e d - p r o j e c t s . p a t c h
0 0 0 3 - u s e - v c p k g - z l i b . p a t c h
0 0 0 4 - d e v e n d o r - e x t e r n a l - d e p e n d e n c i e s . p a t c h
0 0 0 5 - d o n t - c o p y - v c r u n t i m e . p a t c h
0 0 0 8 - p y t h o n . p c . p a t c h
0 0 0 9 - b z 2 d . p a t c h
0 0 1 0 - d o n t - s k i p - r p a t h . p a t c h
2023-01-09 13:41:19 +08:00
0 0 1 2 - f o r c e - d i s a b l e - c u r s e s . p a t c h
2020-12-19 04:00:45 +08:00
)
2022-11-19 03:53:08 +08:00
2020-12-19 04:00:45 +08:00
if ( VCPKG_LIBRARY_LINKAGE STREQUAL "static" )
2022-11-19 03:53:08 +08:00
list ( APPEND PATCHES 0002-static-library.patch )
2020-06-12 13:23:26 +08:00
endif ( )
2022-11-19 03:53:08 +08:00
2022-10-15 07:14:12 +08:00
# Fix build failures with GCC for built-in modules (https://github.com/microsoft/vcpkg/issues/26573)
if ( VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux" )
2022-11-19 03:53:08 +08:00
list ( APPEND PATCHES 0011-gcc-ldflags-fix.patch )
2022-10-15 07:14:12 +08:00
endif ( )
2020-06-12 13:23:26 +08:00
2021-03-30 01:09:14 +08:00
# Python 3.9 removed support for Windows 7. This patch re-adds support for Windows 7 and is therefore
# required to build this port on Windows 7 itself due to Python using itself in its own build system.
if ( "deprecated-win7-support" IN_LIST FEATURES )
2021-10-07 03:53:06 +08:00
list ( APPEND PATCHES 0006-restore-support-for-windows-7.patch )
2021-03-30 01:09:14 +08:00
message ( WARNING "Windows 7 support is deprecated and may be removed at any time." )
elseif ( VCPKG_TARGET_IS_WINDOWS AND CMAKE_SYSTEM_VERSION EQUAL 6.1 )
message ( FATAL_ERROR "python3 requires the feature deprecated-win7-support when building on Windows 7." )
endif ( )
2021-09-30 00:00:21 +08:00
if ( VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_UWP )
2022-06-01 07:20:33 +08:00
string ( COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" PYTHON_ALLOW_EXTENSIONS )
# The Windows 11 SDK has a problem that causes it to error on the resource files, so we patch that.
2021-09-30 00:00:21 +08:00
vcpkg_get_windows_sdk ( WINSDK_VERSION )
if ( "${WINSDK_VERSION}" VERSION_GREATER_EQUAL "10.0.22000" )
2021-10-07 03:53:06 +08:00
list ( APPEND PATCHES "0007-workaround-windows-11-sdk-rc-compiler-error.patch" )
2021-09-30 00:00:21 +08:00
endif ( )
endif ( )
2017-05-20 05:31:04 +08:00
vcpkg_from_github (
2020-12-19 04:00:45 +08:00
O U T _ S O U R C E _ P A T H S O U R C E _ P A T H
2017-05-20 05:31:04 +08:00
R E P O p y t h o n / c p y t h o n
2018-01-05 00:55:01 +08:00
R E F v $ { P Y T H O N _ V E R S I O N }
2022-11-19 03:53:08 +08:00
S H A 5 1 2 8 8 b f 6 e f e f 6 3 2 a 7 d a d 7 3 0 6 a 5 9 b 7 d 5 d a 1 5 9 9 4 7 d 6 6 7 5 f 0 d 2 6 4 f 1 f 3 3 a a 4 9 a 5 7 0 3 b 4 e 4 5 9 5 0 1 1 d e 5 2 0 9 8 e b 8 3 9 c c 6 4 8 9 9 4 a e 1 4 3 f 6 6 8 5 0 7 b e 7 2 0 9 f 6 b f 3 f e 8 a e 0 e c 6 a 9 1 2 5
2017-05-20 05:31:04 +08:00
H E A D _ R E F m a s t e r
2020-06-12 13:23:26 +08:00
P A T C H E S $ { P A T C H E S }
2018-03-18 19:31:30 +08:00
)
2022-02-04 17:17:37 +08:00
vcpkg_replace_string ( "${SOURCE_PATH}/Makefile.pre.in" "$(INSTALL) -d -m $(DIRMODE)" "$(MKDIR_P)" )
2022-02-08 13:58:30 +08:00
function ( make_python_pkgconfig )
cmake_parse_arguments ( PARSE_ARGV 0 arg "" "FILE;INSTALL_ROOT;EXEC_PREFIX;INCLUDEDIR;ABIFLAGS" "" )
set ( prefix "${CURRENT_PACKAGES_DIR}" )
set ( libdir [[ ${ prefix } /lib]] )
set ( exec_prefix ${ arg_EXEC_PREFIX } )
set ( includedir ${ arg_INCLUDEDIR } )
set ( VERSION "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}" )
set ( ABIFLAGS ${ arg_ABIFLAGS } )
string ( REPLACE "python" "python-${VERSION}" out_file ${ arg_FILE } )
set ( out_full_path "${arg_INSTALL_ROOT}/lib/pkgconfig/${out_file}" )
configure_file ( "${SOURCE_PATH}/Misc/${arg_FILE}.in" ${ out_full_path } @ONLY )
file ( READ ${ out_full_path } pkgconfig_file )
string ( REPLACE "-lpython${VERSION}" "-lpython${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}" pkgconfig_file "${pkgconfig_file}" )
file ( WRITE ${ out_full_path } "${pkgconfig_file}" )
endfunction ( )
2020-12-19 04:00:45 +08:00
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.
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 )
2022-11-24 02:12:44 +08:00
find_library ( EXPAT_RELEASE NAMES libexpat libexpatMD libexpatMT PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH )
find_library ( EXPAT_DEBUG NAMES libexpatd libexpatdMD libexpatdMT PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH )
2020-12-19 04:00:45 +08:00
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 )
2022-03-01 02:25:31 +08:00
find_library ( LZMA_DEBUG NAMES lzma PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH )
2020-12-19 04:00:45 +08:00
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 )
2021-09-14 11:00:44 +08:00
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"
2020-12-19 04:00:45 +08:00
" < ? x m l v e r s i o n = ' 1 . 0 ' e n c o d i n g = ' u t f - 8 ' ? >
< P r o j e c t x m l n s = ' h t t p : / / s c h e m a s . m i c r o s o f t . c o m / d e v e l o p e r / m s b u i l d / 2 0 0 3 ' / > "
)
if ( PYTHON_ALLOW_EXTENSIONS )
set ( OPTIONS
" / p : I n c l u d e E x t e n s i o n s = t r u e "
" / p : I n c l u d e E x t e r n a l s = t r u e "
" / p : I n c l u d e C T y p e s = t r u e "
" / p : I n c l u d e S S L = t r u e "
" / p : I n c l u d e T k i n t e r = f a l s e "
" / p : I n c l u d e T e s t s = f a l s e "
" / p : F o r c e I m p o r t B e f o r e C p p T a r g e t s = $ { S O U R C E _ P A T H } / P C b u i l d / p y t h o n _ v c p k g . p r o p s "
)
else ( )
set ( OPTIONS
" / p : I n c l u d e E x t e n s i o n s = f a l s e "
" / p : I n c l u d e E x t e r n a l s = f a l s e "
" / p : I n c l u d e T e s t s = f a l s e "
" / p : F o r c e I m p o r t B e f o r e C p p T a r g e t s = $ { S O U R C E _ P A T H } / P C b u i l d / p y t h o n _ v c p k g . p r o p s "
)
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" )
2020-05-22 02:39:48 +08:00
endif ( )
2020-03-11 03:25:18 +08:00
2020-12-19 04:00:45 +08:00
# _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 (
2021-09-14 11:00:44 +08:00
S O U R C E _ P A T H " $ { S O U R C E _ P A T H } "
2020-12-19 04:00:45 +08:00
P R O J E C T _ S U B P A T H " P C b u i l d / p c b u i l d . p r o j "
O P T I O N S $ { O P T I O N S }
L I C E N S E _ S U B P A T H " L I C E N S E "
2021-09-30 00:00:21 +08:00
T A R G E T _ P L A T F O R M _ V E R S I O N " $ { W I N S D K _ V E R S I O N } "
2020-12-19 04:00:45 +08:00
S K I P _ C L E A N
)
# 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"
D E S T I N A T I O N " $ { C U R R E N T _ P A C K A G E S _ D I R } / i n c l u d e / p y t h o n $ { P Y T H O N _ V E R S I O N _ M A J O R } . $ { P Y T H O N _ V E R S I O N _ M I N O R } "
F I L E S _ M A T C H I N G P A T T E R N * . 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
" $ { C U R R E N T _ P A C K A G E S _ D I R } / l i b / * . l i b "
" $ { C U R R E N T _ P A C K A G E S _ D I R } / d e b u g / l i b / * . l i b "
)
list ( FILTER PYTHON_LIBS EXCLUDE REGEX [[python[0-9]*(_d ) ? \ . l i b $ ] ] )
file ( GLOB PYTHON_INSTALLERS "${CURRENT_PACKAGES_DIR}/tools/${PORT}/wininst-*.exe" )
file ( REMOVE ${ PYTHON_LIBS } ${ PYTHON_INSTALLERS } )
2022-01-04 06:24:11 +08:00
# pkg-config files
if ( NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release" )
2022-02-08 13:58:30 +08:00
make_python_pkgconfig ( FILE python.pc INSTALL_ROOT ${ CURRENT_PACKAGES_DIR }
E X E C _ P R E F I X " \ $ { p r e f i x } / t o o l s / $ { P O R T } " I N C L U D E D I R [ [ $ { p r e f i x } / i n c l u d e ] ] A B I F L A G S " " )
make_python_pkgconfig ( FILE python-embed.pc INSTALL_ROOT ${ CURRENT_PACKAGES_DIR }
E X E C _ P R E F I X " \ $ { p r e f i x } / t o o l s / $ { P O R T } " I N C L U D E D I R [ [ $ { p r e f i x } / i n c l u d e ] ] A B I F L A G S " " )
2022-01-04 06:24:11 +08:00
endif ( )
if ( NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug" )
2022-02-08 13:58:30 +08:00
make_python_pkgconfig ( FILE python.pc INSTALL_ROOT "${CURRENT_PACKAGES_DIR}/debug"
E X E C _ P R E F I X " \ $ { p r e f i x } / . . / t o o l s / $ { P O R T } " I N C L U D E D I R [ [ $ { p r e f i x } / . . / i n c l u d e ] ] A B I F L A G S " _ d " )
make_python_pkgconfig ( FILE python-embed.pc INSTALL_ROOT "${CURRENT_PACKAGES_DIR}/debug"
E X E C _ P R E F I X " \ $ { p r e f i x } / . . / t o o l s / $ { P O R T } " I N C L U D E D I R [ [ $ { p r e f i x } / . . / i n c l u d e ] ] A B I F L A G S " _ d " )
2022-01-04 06:24:11 +08:00
endif ( )
vcpkg_fixup_pkgconfig ( )
2020-12-19 04:00:45 +08:00
vcpkg_clean_msbuild ( )
2022-08-05 04:49:06 +08:00
2022-03-03 07:00:38 +08:00
# Remove static library belonging to executable
if ( VCPKG_LIBRARY_LINKAGE STREQUAL "static" )
if ( EXISTS "${CURRENT_PACKAGES_DIR}/lib/python.lib" )
file ( MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib/manual-link" )
file ( RENAME "${CURRENT_PACKAGES_DIR}/lib/python.lib"
" $ { C U R R E N T _ P A C K A G E S _ D I R } / l i b / m a n u a l - l i n k / p y t h o n . l i b " )
endif ( )
if ( EXISTS "${CURRENT_PACKAGES_DIR}/debug/lib/python_d.lib" )
file ( MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib/manual-link" )
file ( RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/python_d.lib"
" $ { C U R R E N T _ P A C K A G E S _ D I R } / d e b u g / l i b / m a n u a l - l i n k / p y t h o n _ d . l i b " )
endif ( )
endif ( )
2020-12-19 04:00:45 +08:00
else ( )
2022-08-05 04:49:06 +08:00
# The Python Stable ABI, `libpython3.so` is not produced by the upstream build system with --with-pydebug option
if ( VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic" AND NOT VCPKG_BUILD_TYPE )
set ( VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled )
endif ( )
2020-12-19 04:00:45 +08:00
set ( OPTIONS
" - - w i t h - o p e n s s l = $ { C U R R E N T _ I N S T A L L E D _ D I R } "
2022-06-01 07:20:33 +08:00
" - - w i t h o u t - e n s u r e p i p "
2021-10-01 14:58:36 +08:00
" - - w i t h - s u f f i x = "
2020-12-19 04:00:45 +08:00
" - - w i t h - s y s t e m - e x p a t "
2022-03-14 16:09:48 +08:00
" - - w i t h o u t - r e a d l i n e "
" - - d i s a b l e - t e s t - m o d u l e s "
2020-12-19 04:00:45 +08:00
)
if ( VCPKG_TARGET_IS_OSX )
list ( APPEND OPTIONS "LIBS=-liconv -lintl" )
endif ( )
2019-11-19 06:04:25 +08:00
2020-12-19 04:00:45 +08:00
vcpkg_configure_make (
2021-09-14 11:00:44 +08:00
S O U R C E _ P A T H " $ { S O U R C E _ P A T H } "
2020-12-19 04:00:45 +08:00
O P T I O N S $ { O P T I O N S }
O P T I O N S _ D E B U G " - - w i t h - p y d e b u g "
)
vcpkg_install_make ( ADD_BIN_TO_PATH INSTALL_TARGET altinstall )
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
" $ { C U R R E N T _ P A C K A G E S _ D I R } / l i b / p y t h o n $ { P Y T H O N _ V E R S I O N _ M A J O R } . $ { P Y T H O N _ V E R S I O N _ M I N O R } / * "
" $ { C U R R E N T _ P A C K A G E S _ D I R } / d e b u g / l i b / p y t h o n $ { P Y T H O N _ V E R S I O N _ M A J O R } . $ { P Y T H O N _ V E R S I O N _ M I N O R } / * " )
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" )
2021-11-10 03:45:15 +08:00
vcpkg_fixup_pkgconfig ( )
2022-08-05 04:49:06 +08:00
# Perform some post-build checks on modules
file ( GLOB python_libs_dynload_debug LIST_DIRECTORIES false "${CURRENT_PACKAGES_DIR}/debug/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/lib-dynload/*.so*" )
file ( GLOB python_libs_dynload_release LIST_DIRECTORIES false "${CURRENT_PACKAGES_DIR}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/lib-dynload/*.so*" )
set ( python_libs_dynload_failed_debug ${ python_libs_dynload_debug } )
set ( python_libs_dynload_failed_release ${ python_libs_dynload_release } )
list ( FILTER python_libs_dynload_failed_debug INCLUDE REGEX ".*_failed\.so.*" )
list ( FILTER python_libs_dynload_failed_release INCLUDE REGEX ".*_failed\.so.*" )
if ( python_libs_dynload_failed_debug OR python_libs_dynload_failed_release )
list ( JOIN python_libs_dynload_failed_debug "\n" python_libs_dynload_failed_debug_str )
list ( JOIN python_libs_dynload_failed_release "\n" python_libs_dynload_failed_release_str )
message ( FATAL_ERROR "There should be no modules with \" _failed\ " suffix:\n${python_libs_dynload_failed_debug_str}\n${python_libs_dynload_failed_release_str}" )
endif ( )
if ( NOT VCPKG_BUILD_TYPE )
list ( LENGTH python_libs_dynload_release python_libs_dynload_release_length )
list ( LENGTH python_libs_dynload_debug python_libs_dynload_debug_length )
if ( NOT python_libs_dynload_release_length STREQUAL python_libs_dynload_debug_length )
message ( FATAL_ERROR "Mismatched number of modules: ${python_libs_dynload_debug_length} in debug, ${python_libs_dynload_release_length} in release" )
endif ( )
endif ( )
2019-09-30 09:58:00 +08:00
endif ( )
2021-01-06 05:39:53 +08:00
2022-06-01 07:20:33 +08:00
file ( READ "${CMAKE_CURRENT_LIST_DIR}/usage" usage )
if ( VCPKG_TARGET_IS_WINDOWS )
if ( PYTHON_ALLOW_EXTENSIONS )
file ( READ "${CMAKE_CURRENT_LIST_DIR}/usage.win" usage_extra )
else ( )
set ( usage_extra "" )
endif ( )
else ( )
file ( READ "${CMAKE_CURRENT_LIST_DIR}/usage.unix" usage_extra )
endif ( )
file ( WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" "${usage}\n${usage_extra}" )
2021-01-06 05:39:53 +08:00
function ( _generate_finder )
cmake_parse_arguments ( PythonFinder "NO_OVERRIDE" "DIRECTORY;PREFIX" "" ${ ARGN } )
configure_file (
" $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / v c p k g - c m a k e - w r a p p e r . c m a k e "
" $ { C U R R E N T _ P A C K A G E S _ D I R } / s h a r e / $ { P y t h o n F i n d e r _ D I R E C T O R Y } / v c p k g - c m a k e - w r a p p e r . c m a k e "
@ O N L Y
)
endfunction ( )
message ( STATUS "Installing cmake wrappers" )
_generate_finder ( DIRECTORY "python" PREFIX "Python" )
_generate_finder ( DIRECTORY "python3" PREFIX "Python3" )
_generate_finder ( DIRECTORY "pythoninterp" PREFIX "PYTHON" NO_OVERRIDE )
2021-11-10 03:45:15 +08:00
if ( NOT VCPKG_TARGET_IS_WINDOWS )
2021-12-03 11:51:47 +08:00
function ( replace_dirs_in_config_file python_config_file )
vcpkg_replace_string ( "${python_config_file}" "${CURRENT_INSTALLED_DIR}" "' + _base + '" )
vcpkg_replace_string ( "${python_config_file}" "${CURRENT_PACKAGES_DIR}" "' + _base + '" )
vcpkg_replace_string ( "${python_config_file}" "${CURRENT_BUILDTREES_DIR}" "not/existing" )
endfunction ( )
if ( NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release" )
file ( GLOB python_config_files "${CURRENT_PACKAGES_DIR}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/_sysconfigdata*" )
list ( POP_FRONT python_config_files python_config_file )
vcpkg_replace_string ( "${python_config_file}" "# system configuration generated and used by the sysconfig module" "# system configuration generated and used by the sysconfig module\nimport os\n_base = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))\n" )
replace_dirs_in_config_file ( "${python_config_file}" )
endif ( )
if ( NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug" )
file ( GLOB python_config_files "${CURRENT_PACKAGES_DIR}/debug/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/_sysconfigdata*" )
list ( POP_FRONT python_config_files python_config_file )
vcpkg_replace_string ( "${python_config_file}" "# system configuration generated and used by the sysconfig module" "# system configuration generated and used by the sysconfig module\nimport os\n_base = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))\n" )
replace_dirs_in_config_file ( "${python_config_file}" )
endif ( )
2021-11-10 03:45:15 +08:00
endif ( )