Merge pull request #1514 from jameshilliard/cross-env-detection
Ensure we are cross compiling when any cross env variables are set.
This commit is contained in:
commit
8ad3827341
|
@ -48,6 +48,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|||
- Fix inability to use a named lifetime for `&PyTuple` of `*args` in `#[pyfunction]`. [#1440](https://github.com/PyO3/pyo3/pull/1440)
|
||||
- Fix inability to add `#[text_signature]` to some `#[pyproto]` methods. [#1483](https://github.com/PyO3/pyo3/pull/1483)
|
||||
- Fix use of Python argument for #[pymethods] inside macro expansions. [#1505](https://github.com/PyO3/pyo3/pull/1505)
|
||||
- Always use cross-compiling configuration if any of the environment variables are set. [#1514](https://github.com/PyO3/pyo3/pull/1514)
|
||||
|
||||
## [0.13.2] - 2021-02-12
|
||||
### Packaging
|
||||
|
|
62
build.rs
62
build.rs
|
@ -142,36 +142,44 @@ impl CrossCompileConfig {
|
|||
}
|
||||
|
||||
fn cross_compiling() -> Result<Option<CrossCompileConfig>> {
|
||||
let target = env::var("TARGET")?;
|
||||
let host = env::var("HOST")?;
|
||||
if target == host {
|
||||
// Not cross-compiling
|
||||
return Ok(None);
|
||||
}
|
||||
if env::var_os("PYO3_CROSS").is_none()
|
||||
&& env::var_os("PYO3_CROSS_LIB_DIR").is_none()
|
||||
&& env::var_os("PYO3_CROSS_INCLUDE_DIR").is_none()
|
||||
&& env::var_os("PYO3_CROSS_VERSION").is_none()
|
||||
&& env::var_os("PYO3_CROSS_PYTHON_VERSION").is_none()
|
||||
{
|
||||
let target = env::var("TARGET")?;
|
||||
let host = env::var("HOST")?;
|
||||
if target == host {
|
||||
// Not cross-compiling
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
if target == "i686-pc-windows-msvc" && host == "x86_64-pc-windows-msvc" {
|
||||
// Not cross-compiling to compile for 32-bit Python from windows 64-bit
|
||||
return Ok(None);
|
||||
}
|
||||
if target == "i686-pc-windows-msvc" && host == "x86_64-pc-windows-msvc" {
|
||||
// Not cross-compiling to compile for 32-bit Python from windows 64-bit
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
if target == "x86_64-apple-darwin" && host == "aarch64-apple-darwin" {
|
||||
// Not cross-compiling to compile for x86-64 Python from macOS arm64
|
||||
return Ok(None);
|
||||
}
|
||||
if target == "aarch64-apple-darwin" && host == "x86_64-apple-darwin" {
|
||||
// Not cross-compiling to compile for arm64 Python from macOS x86_64
|
||||
return Ok(None);
|
||||
}
|
||||
if target == "x86_64-apple-darwin" && host == "aarch64-apple-darwin" {
|
||||
// Not cross-compiling to compile for x86-64 Python from macOS arm64
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
if host.starts_with(&format!(
|
||||
"{}-{}-{}",
|
||||
env::var("CARGO_CFG_TARGET_ARCH")?,
|
||||
env::var("CARGO_CFG_TARGET_VENDOR")?,
|
||||
env::var("CARGO_CFG_TARGET_OS")?
|
||||
)) {
|
||||
// Not cross-compiling if arch-vendor-os is all the same
|
||||
// e.g. x86_64-unknown-linux-musl on x86_64-unknown-linux-gnu host
|
||||
return Ok(None);
|
||||
if target == "aarch64-apple-darwin" && host == "x86_64-apple-darwin" {
|
||||
// Not cross-compiling to compile for arm64 Python from macOS x86_64
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
if host.starts_with(&format!(
|
||||
"{}-{}-{}",
|
||||
env::var("CARGO_CFG_TARGET_ARCH")?,
|
||||
env::var("CARGO_CFG_TARGET_VENDOR")?,
|
||||
env::var("CARGO_CFG_TARGET_OS")?
|
||||
)) {
|
||||
// Not cross-compiling if arch-vendor-os is all the same
|
||||
// e.g. x86_64-unknown-linux-musl on x86_64-unknown-linux-gnu host
|
||||
return Ok(None);
|
||||
}
|
||||
}
|
||||
|
||||
// Cross-compiling on any other platform
|
||||
|
|
Loading…
Reference in New Issue