From: Simon Marchi Date: Sun, 29 Dec 2019 22:27:04 +0000 (-0500) Subject: build: try calling python-config with --embed X-Git-Tag: v2.0.0~26 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=612785a3d4acb599368ba9a8ac234d86fcc564e1 build: try calling python-config with --embed To get the flags required to link an application with Python 3.8 (such as to embed Python in the application), it is necessary to use the "--embed" flag of python-config. These flags include "-lpython3.8". Without "--embed", the printed flags are for building a Python extension. These don't require being linked with the Python library, since they are dlopen'ed by the library itself. Our Python plugin provider requires being linked with Python, since it embeds a Python interpreter. Since we don't use "--embed" currently when getting link flags, we don't link with the Python library, and therefore the provider is not usable with Python 3.8. The solution proposed here: https://docs.python.org/3/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build is to try calling python-config with --embed first, and then without if that didn't work. With this patch, I am able to use the Python plugin provider with Python 3.8. Change-Id: I0c0e61dd3bded853abf124c651efe98ee7700101 Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/2726 Reviewed-by: Michael Jeanson --- diff --git a/configure.ac b/configure.ac index b1edd9ee..7cbe3ba7 100644 --- a/configure.ac +++ b/configure.ac @@ -510,7 +510,10 @@ AM_PATH_PYTHON([3.0], [ AS_IF([test -z "$PYTHON_LDFLAGS"], [ AC_MSG_CHECKING([Python library flags]) - PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags` + # Python 3.8+ requires that we pass --embed to get the -lpython3.x flag. + AS_IF([! PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags --embed`], [ + PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags` + ]) AC_MSG_RESULT([$PYTHON_LDFLAGS]) ]) ])