From 3cd64d9bee24b673c5394d827b3b775da0cd33c6 Mon Sep 17 00:00:00 2001
From: Thomas Jahns <jahns@dkrz.de>
Date: Mon, 1 May 2023 21:56:08 +0200
Subject: [PATCH] Fix generation of python SO with libtool.

---
 configure.ac                  |  1 +
 interfaces/Makefile.am        | 21 +++++----------------
 interfaces/python/Makefile.am | 24 ++++++++++++++++++++++++
 3 files changed, 30 insertions(+), 16 deletions(-)
 create mode 100644 interfaces/python/Makefile.am

diff --git a/configure.ac b/configure.ac
index 30b9cadee..729ae8710 100644
--- a/configure.ac
+++ b/configure.ac
@@ -728,6 +728,7 @@ AC_CONFIG_FILES([
   examples/Makefile
   examples/pio/Makefile
   interfaces/Makefile
+  interfaces/python/Makefile
   src/Makefile
   src/cmake/cdi/cdi-config-version.cmake
   src/cmake/cdi/cdi-config.cmake
diff --git a/interfaces/Makefile.am b/interfaces/Makefile.am
index 55f7cc1cf..1a46da7bc 100644
--- a/interfaces/Makefile.am
+++ b/interfaces/Makefile.am
@@ -7,6 +7,7 @@ test_PROGRAMS_ = CdiInfo
 
 CdiInfo_SOURCES = CdiInfo.cpp
 CdiInfo_LDADD = libcdipp.la
+AM_CXXFLAGS = -static
 
 AM_CPPFLAGS = -I$(abs_top_srcdir)/src
 
@@ -15,6 +16,8 @@ install_exec_local =
 uninstall_local =
 clean_local =
 
+SUBDIRS = python
+
 if ENABLE_RUBY_INTERFACE
 V_MAKERUBY = $(v_MAKERUBY_@AM_V@)
 v_MAKERUBY_ = $(v_MAKERUBY_@AM_DEFAULT_V@)
@@ -40,7 +43,7 @@ ruby/Cdi.la: ruby/cdi_wrapper.cpp ruby/Makefile libcdipp.la
 	    TIMESTAMP_DIR='.dirstamp' \
 	    CDI_INCFLAGS='-I$(abs_srcdir)' \
 	    CDI_CPPFLAGS='$(AM_CPPFLAGS) $(CPPFLAGS)' \
-	    CDI_CXXFLAGS='$(AM_CXXFLAGS) -shared $(CXXFLAGS)' \
+	    CDI_CXXFLAGS='-shared $(CXXFLAGS)' \
 	    CDI_LDFLAGS='$(AM_LDFLAGS) -module -avoid-version $(LDFLAGS) -rpath $$(RUBYARCHDIR)' \
 	    CDI_LIBS='$(LIBS)' \
 	    CCDLFLAGS= \
@@ -101,16 +104,8 @@ endif !with_on_demand_check_programs
 endif ENABLE_RUBY_INTERFACE
 
 AUTOMAKE_OPTIONS = subdir-objects
-if ENABLE_PYTHON_INTERFACE
-
-python_PYTHON = python/Cdi.py
-pyexec_LTLIBRARIES = python/_Cdi.la
-python__Cdi_la_SOURCES = python/cdi_wrapper.cpp
-python__Cdi_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON_CPPFLAGS)
-python__Cdi_la_CXXFLAGS = $(AM_CXXFLAGS) -shared
-python__Cdi_la_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version
-python__Cdi_la_LIBADD = libcdipp.la $(PYTHON_LIBS)
 
+if ENABLE_PYTHON_INTERFACE
 if with_on_demand_check_programs
 check_PROGRAMS = $(test_PROGRAMS_)
 else !with_on_demand_check_programs
@@ -122,12 +117,6 @@ if MAINTAINER_MODE
 ruby/cdi_wrapper.cpp: cdi.i cdi.hpp
 	$(AM_V_GEN)$(MKDIR_P) $(@D) && $(SWIG) -ruby -c++ -globalmodule -o $@ $<
 
-python/Cdi.py: cdi.i cdi.hpp
-	$(AM_V_GEN)$(SWIG) -python -c++ -o python/cdi_wrapper.cpp $<
-
-python/cdi_wrapper.cpp: python/Cdi.py
-	$(AM_V_at)test -f $@ || rm -f $<
-	$(AM_V_at)test -f $@ || $(MAKE) $(AM_MAKEFLAGS) $<
 else !MAINTAINER_MODE
 ruby/cdi_wrapper.cpp python/Cdi.py python/cdi_wrapper.cpp:
 	@:;{ \
diff --git a/interfaces/python/Makefile.am b/interfaces/python/Makefile.am
new file mode 100644
index 000000000..a3dc56ecf
--- /dev/null
+++ b/interfaces/python/Makefile.am
@@ -0,0 +1,24 @@
+if ENABLE_PYTHON_INTERFACE
+
+python_PYTHON = Cdi.py
+pyexec_LTLIBRARIES = _Cdi.la
+_Cdi_la_SOURCES = cdi_wrapper.cpp
+_Cdi_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON_CPPFLAGS)
+AM_CXXFLAGS = -shared
+AM_LDFLAGS = -module -avoid-version
+AM_CPPFLAGS = -I$(srcdir)/.. -I$(top_srcdir)/src
+_Cdi_la_LIBADD = ../libcdipp.la $(PYTHON_LIBS)
+
+../libcdipp.la:
+	$(am__cd) .. && $(MAKE) libcdipp.la
+
+endif ENABLE_PYTHON_INTERFACE
+
+if MAINTAINER_MODE
+Cdi.py: ../cdi.i ../cdi.hpp
+	$(AM_V_GEN)$(SWIG) -python -c++ -o cdi_wrapper.cpp $<
+
+cdi_wrapper.cpp: Cdi.py
+	$(AM_V_at)test -f $@ || rm -f $<
+	$(AM_V_at)test -f $@ || $(MAKE) $(AM_MAKEFLAGS) $<
+endif
-- 
GitLab