Synopsis - Cross-Reference
File: /config/python_ext.m41# 2# Copyright (C) 2007 Stefan Seefeld 3# All rights reserved. 4# Licensed to the public under the terms of the GNU LGPL (>= 2), 5# see the file COPYING for details. 6# 7 8AC_DEFUN([AC_PYTHON_EXT], 9[AC_MSG_CHECKING(for python extension module build information) 10AC_MSG_RESULT([]) 11 12AC_ARG_WITH(python, 13 [ --with-python=PATH specify the Python interpreter], 14 [PYTHON="$with_python"], 15 [PYTHON="python"] 16) 17 18if test -n "$PYTHON" -a "$PYTHON" != yes; then 19 AC_CHECK_PROG(PYTHON, $PYTHON, AC_MSG_ERROR([Cannot find Python interpreter])) 20else 21 AC_PATH_PROG(PYTHON, python2 python, python) 22fi 23PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix" | tr -d "\r"` 24AC_MSG_CHECKING(for Python development environment) 25PYTHON_INCLUDE=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_inc()" | tr -d "\r"` 26PYTHON_H=`$PYTHON -c "from os.path import *; h = join('$PYTHON_INCLUDE', 'Python.h'); print exists(h) and h or ''"` 27if test $PYTHON_H 28then AC_MSG_RESULT(yes) 29else AC_MSG_ERROR([Python.h not found.]) 30fi 31 32AC_SUBST(PYTHON) 33AC_SUBST(PYTHON_INCLUDE) 34 35LIBEXT=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_config_var('SO')" | tr -d "\r"` 36case `uname -s` in 37CYGWIN*) 38 if test `$PYTHON -c "import os; print os.name" | tr -d "\r"` = posix; then 39 PYTHON_VERSION=`$PYTHON -c "import sys; print '%d.%d'%(sys.version_info[[0]],sys.version_info[[1]])"` 40 PYTHON_LIBS="-L$PYTHON_PREFIX/lib/python$PYTHON_VERSION/config -lpython$PYTHON_VERSION" 41dnl Cygwin doesn't have an -lutil, but some versions of distutils tell us to use it anyway. 42dnl It would be better to check for each library it tells us to use with AC_CHECK_LIB, but 43dnl to do that, we need the name of a function in each one, so we'll just hack -lutil out 44dnl of the list. 45 PYTHON_DEP_LIBS=`$PYTHON -c "from distutils import sysconfig; import re; print re.sub(r'\\s*-lutil', '', sysconfig.get_config_var('LIBS') or '')"` 46 else dnl this is 'nt' 47 if test "$CXX" = "g++"; then 48 CPPFLAGS="$CPPFLAGS -D PARSE_MSVC" 49 CFLAGS="-mno-cygwin $CFLAGS" 50 CXXFLAGS="-mno-cygwin $CXXFLAGS" 51 LDFLAGS="-mno-cygwin $LDFLAGS" 52 PYTHON_VERSION=`$PYTHON -c "import sys; print '%d%d'%(sys.version_info[[0]],sys.version_info[[1]])" | tr -d "\r"` 53 PYTHON_LIBS="-L`cygpath -a $PYTHON_PREFIX | tr -d \"\r\"`/Libs -lpython$PYTHON_VERSION" 54 fi 55 PYTHON_INCLUDE=`cygpath -a $PYTHON_INCLUDE | tr -d "\r"` 56 PYTHON_DEP_LIBS=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_config_var('LIBS') or ''" | tr -d "\r"` 57 fi 58 LDSHARED="$CXX -shared" 59 CXXFLAGS="-D_REENTRANT $CXXFLAGS" 60 LIBS="$LIBS $PYTHON_LIBS $PYTHON_DEP_LIBS" 61 ;; 62Darwin) 63 PYTHON_VERSION=`$PYTHON -c "import sys; print '%d.%d'%(sys.version_info[[0]],sys.version_info[[1]])"` 64 PYTHON_LIBS="-L$PYTHON_PREFIX/lib/python$PYTHON_VERSION/config -lpython$PYTHON_VERSION" 65 66 CFLAGS="$CFLAGS -fPIC" 67 CXXFLAGS="$CXXFLAGS -fPIC" 68 LDSHARED="$CXX -dynamiclib -Wl,-undefined,dynamic_lookup" 69 ;; 70*) 71 PYTHON_VERSION=`$PYTHON -c "import sys; print '%d.%d'%(sys.version_info[[0]],sys.version_info[[1]])"` 72 PYTHON_LIBS="-L$PYTHON_PREFIX/lib/python$PYTHON_VERSION/config -lpython$PYTHON_VERSION" 73 74 CFLAGS="$CFLAGS -fPIC" 75 CXXFLAGS="$CXXFLAGS -fPIC" 76 LDSHARED="$CXX -shared" 77 ;; 78esac 79 80dnl do not substitute PYTHON_LIBS, as it is only defined for further configuration 81AC_SUBST(LIBEXT) 82AC_SUBST(LDSHARED) 83 84])dnl