From 7c982f7bcd9d0265ccd0a57e0b8d5f7b6c58400e Mon Sep 17 00:00:00 2001 From: Pieter Pas Date: Tue, 15 Aug 2023 02:19:13 +0200 Subject: [PATCH] Set SETUPTOOLS_EXT_SUFFIX if cross-compiling macOS --- src/py_build_cmake/quirks/config.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/py_build_cmake/quirks/config.py b/src/py_build_cmake/quirks/config.py index 60dbc1a..d865e2a 100644 --- a/src/py_build_cmake/quirks/config.py +++ b/src/py_build_cmake/quirks/config.py @@ -5,7 +5,7 @@ import sys import sysconfig import warnings -from typing import Optional, Union, List, Tuple +from typing import Optional, Union, List, Tuple, Dict, Any from ..config_options import ConfigNode, pth from distlib.util import get_platform as get_platform_dashes # type: ignore @@ -179,7 +179,7 @@ def cross_compile_mac(config: ConfigNode, archs): f"ARCHFLAGS was specified. Automatically enabling cross-compilation for {', '.join(archs)} (native platform: {platform.machine()})" ) assert not config.contains('cross') - cross_cfg = { + cross_cfg: Dict[str, Any] = { 'os': 'mac', 'cmake': { 'options': { @@ -193,6 +193,11 @@ def cross_compile_mac(config: ConfigNode, archs): cross_arch = get_platform_dashes().split('-') cross_arch[-1] = plat_tag cross_cfg['arch'] = '_'.join(cross_arch) + if sys.implementation.name == 'cpython': + version = ''.join(map(str, sys.version_info[:2])) + abi = sys.abiflags + env = cross_cfg['cmake']['env'] = {} + env['SETUPTOOLS_EXT_SUFFIX'] = f'.cpython-{version}{abi}-darwin.so' config.setdefault(pth('cross'), ConfigNode.from_dict(cross_cfg))