From 4e13c0eae89dfb921fe8893127ff39e7a93ba28f Mon Sep 17 00:00:00 2001
From: messense <messense@icloud.com>
Date: Sat, 13 Apr 2024 15:43:06 +0800
Subject: [PATCH] Link libpython for AIX target (#4073)

---
 newsfragments/4073.fixed.md    | 1 +
 pyo3-build-config/src/impl_.rs | 2 ++
 2 files changed, 3 insertions(+)
 create mode 100644 newsfragments/4073.fixed.md

diff --git a/newsfragments/4073.fixed.md b/newsfragments/4073.fixed.md
new file mode 100644
index 00000000000..0f77647e42d
--- /dev/null
+++ b/newsfragments/4073.fixed.md
@@ -0,0 +1 @@
+fixes undefined symbol errors when building extension module on AIX by linking `libpython`
diff --git a/pyo3-build-config/src/impl_.rs b/pyo3-build-config/src/impl_.rs
index d5373db9655..2ee68503faa 100644
--- a/pyo3-build-config/src/impl_.rs
+++ b/pyo3-build-config/src/impl_.rs
@@ -775,6 +775,8 @@ pub fn is_linking_libpython() -> bool {
 /// Must be called from a PyO3 crate build script.
 fn is_linking_libpython_for_target(target: &Triple) -> bool {
     target.operating_system == OperatingSystem::Windows
+        // See https://github.com/PyO3/pyo3/issues/4068#issuecomment-2051159852
+        || target.operating_system == OperatingSystem::Aix
         || target.environment == Environment::Android
         || target.environment == Environment::Androideabi
         || !is_extension_module()