diff --git a/config/python.m4 b/config/python.m4 index 663ccf9..af4d8d7 100644 --- a/config/python.m4 +++ b/config/python.m4 @@ -48,7 +48,6 @@ AC_MSG_RESULT([$python_includespec]) AC_SUBST(python_majorversion)[]dnl AC_SUBST(python_version)[]dnl -AC_SUBST(python_configdir)[]dnl AC_SUBST(python_includespec)[]dnl ])# _PGAC_CHECK_PYTHON_DIRS @@ -69,8 +68,14 @@ python_libdir=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(N python_ldlibrary=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDLIBRARY'))))"` python_so=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('SO'))))"` ldlibrary=`echo "${python_ldlibrary}" | sed "s/${python_so}$//"` +python_framework=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('PYTHONFRAMEWORK'))))"` +python_enable_shared=`${PYTHON} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_vars().get('Py_ENABLE_SHARED',0))"` -if test x"${python_libdir}" != x"" -a x"${python_ldlibrary}" != x"" -a x"${python_ldlibrary}" != x"${ldlibrary}" +if test -n "$python_framework"; then + python_frameworkprefix=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('PYTHONFRAMEWORKPREFIX'))))"` + python_libspec="-F $python_frameworkprefix -framework $python_framework" + python_enable_shared=1 +elif test x"${python_libdir}" != x"" -a x"${python_ldlibrary}" != x"" -a x"${python_ldlibrary}" != x"${ldlibrary}" then # New way: use the official shared library ldlibrary=`echo "${ldlibrary}" | sed "s/^lib//"` @@ -86,13 +91,16 @@ else python_libspec="-L${python_libdir} -lpython${python_ldversion}" fi -python_additional_libs=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"` +if test -z "$python_framework"; then + python_additional_libs=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"` +fi AC_MSG_RESULT([${python_libspec} ${python_additional_libs}]) AC_SUBST(python_libdir)[]dnl AC_SUBST(python_libspec)[]dnl AC_SUBST(python_additional_libs)[]dnl +AC_SUBST(python_enable_shared)[]dnl # threaded python is not supported on OpenBSD AC_MSG_CHECKING(whether Python is compiled with thread support) diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 9cc14da..ecfb801 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -175,11 +175,11 @@ enable_dtrace = @enable_dtrace@ enable_coverage = @enable_coverage@ enable_thread_safety = @enable_thread_safety@ +python_enable_shared = @python_enable_shared@ python_includespec = @python_includespec@ python_libdir = @python_libdir@ python_libspec = @python_libspec@ python_additional_libs = @python_additional_libs@ -python_configdir = @python_configdir@ python_majorversion = @python_majorversion@ python_version = @python_version@ diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile index afd8dea..e9b5e3c 100644 --- a/src/pl/plpython/Makefile +++ b/src/pl/plpython/Makefile @@ -5,13 +5,20 @@ top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -# On some platforms we can only build PL/Python if libpython is a -# shared library. Since there is no official way to determine this -# (at least not in pre-2.3 Python), we see if there is a file that is -# named like a shared library. +# We need libpython as a shared library. In Python >=2.5, configure +# asks Python directly. But because this has been broken in Debian +# for a long time (http://bugs.debian.org/695979), and to support +# older Python versions, we see if there is a file that is named like +# a shared library as a fallback. (Note that this is wrong on OS X, +# where DLSUFFIX is .so, but libpython is a .dylib. Python <2.5 is +# therefore not supported on OS X.) +ifeq (1,$(python_enable_shared)) +shared_libpython = yes +else ifneq (,$(wildcard $(python_libdir)/libpython*$(DLSUFFIX)*)) shared_libpython = yes endif +endif # Windows needs to convert backslashed paths to normal slashes, # and we have to remove -lpython from the link since we are building our own @@ -21,13 +28,6 @@ python_includespec := $(subst \,/,$(python_includespec)) override python_libspec = endif -# Darwin (OS X) has its own ideas about how to do this. -ifeq ($(PORTNAME), darwin) -shared_libpython = yes -override python_libspec = -framework Python -override python_additional_libs = -endif - # If we don't have a shared library, we have to skip it. ifeq ($(shared_libpython),yes)