configure: Fix test for python 3.8
authorAnthony PERARD <anthony.perard@citrix.com>
Fri, 15 Nov 2019 16:15:32 +0000 (16:15 +0000)
committerWei Liu <wl@xen.org>
Wed, 20 Nov 2019 10:46:48 +0000 (10:46 +0000)
https://docs.python.org/3.8/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build

> To embed Python into an application, a new --embed option must be
> passed to python3-config --libs --embed to get -lpython3.8 (link the
> application to libpython). To support both 3.8 and older, try
> python3-config --libs --embed first and fallback to python3-config
> --libs (without --embed) if the previous command fails.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Wei Liu <wl@xen.org>
[ wei: rerun autogen.sh ]

m4/python_devel.m4
tools/configure

index e365cd658e0e2e567d9956b87bbb31db7cd6d884..bbf1e0354b2b954f4dc9d231163cf31a3f2b33e7 100644 (file)
@@ -23,8 +23,15 @@ AS_IF([test x"$pyconfig" = x"no"], [
 ], [
     dnl If python-config is found use it
     CPPFLAGS="$CFLAGS `$PYTHON-config --cflags`"
-    LDFLAGS="$LDFLAGS `$PYTHON-config --ldflags`"
-    LIBS="$LIBS `$PYTHON-config --libs`"
+    dnl We need to use --embed with python 3.8 but not with earlier version so
+    dnl check if it is recognized.
+    python_devel_embed=""
+    if $PYTHON-config --embed >/dev/null 2>/dev/null; then
+      python_devel_embed="--embed"
+    fi
+    LDFLAGS="$LDFLAGS `$PYTHON-config --ldflags $python_devel_embed`"
+    LIBS="$LIBS `$PYTHON-config --libs $python_devel_embed`"
+    unset python_devel_embed
 ])
 
 AC_CHECK_HEADER([Python.h], [],
index d9ccce6d2b887e97d1fcc032343e6a5167040896..e47bcef35165f36a3c2cced443a922da47f94c64 100755 (executable)
@@ -7460,8 +7460,13 @@ if test x"$pyconfig" = x"no"; then :
 else
 
         CPPFLAGS="$CFLAGS `$PYTHON-config --cflags`"
-    LDFLAGS="$LDFLAGS `$PYTHON-config --ldflags`"
-    LIBS="$LIBS `$PYTHON-config --libs`"
+            python_devel_embed=""
+    if $PYTHON-config --embed >/dev/null 2>/dev/null; then
+      python_devel_embed="--embed"
+    fi
+    LDFLAGS="$LDFLAGS `$PYTHON-config --ldflags $python_devel_embed`"
+    LIBS="$LIBS `$PYTHON-config --libs $python_devel_embed`"
+    unset python_devel_embed
 
 fi