summaryrefslogtreecommitdiffstats
path: root/m4/python.m4
blob: ba3b57301e755dfb41458e3ba4895589967d167d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
dnl copied from pygtk
dnl
dnl a macro to check for ability to create python extensions
dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
dnl function also defines PYTHON_INCLUDES
AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
[AC_REQUIRE([AM_PATH_PYTHON])
AC_MSG_CHECKING(for python development headers)
dnl deduce PYTHON_INCLUDES
py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
if test "$py_prefix" != "$py_exec_prefix"; then
  PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
fi
AC_SUBST(PYTHON_INCLUDES)
dnl check if the headers exist:
save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
AC_TRY_CPP([#include <Python.h>],dnl
[AC_MSG_RESULT(found)
$1],dnl
[AC_MSG_RESULT(not found)
$2])
CPPFLAGS="$save_CPPFLAGS"
])

dnl copied and modified from gnome-python
dnl
dnl AM_CHECK_PYMOD(MODNAME [,VERSION, VERSION_MATCHER [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
dnl Check if a module of a particular version is visible to python.
AC_DEFUN([AM_CHECK_PYMOD],
[AC_REQUIRE([AM_PATH_PYTHON])
py_mod_var=`echo $1`
AC_MSG_CHECKING(for python module $1 ifelse([$2],[],,[>= $2]))
AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
ifelse([$2],[], [prog="
import sys
try:
        import $1
except ImportError:
        sys.exit(1)
except:
        sys.exit(0)
sys.exit(0)"], [prog="
import sys, string, $1
curverstr = $3
# use method from AM_PYTHON_CHECK_VERSION
minver = map(int, string.split('$2', '.'))
length = len[(minver)]
minver += [[0, 0, 0]]
minverhex = 0
for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]]
curver = map(int, string.split(curverstr, '.')[[:length]])
curver += [[0, 0, 0]]
curverhex = 0
for i in xrange(0, 4): curverhex = (curverhex << 8) + curver[[i]]
if (curverhex >= minverhex):
        sys.exit(0)
else:
        sys.exit(1)
sys.exit(0)"])
if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
  then
    eval "py_cv_mod_$py_mod_var=yes"
  else
    eval "py_cv_mod_$py_mod_var=no"
  fi
])
py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
if test "x$py_val" != xno; then
  AC_MSG_RESULT(yes)
  ifelse([$4], [],, [$4
])dnl
else
  AC_MSG_RESULT(no)
  ifelse([$5], [],, [$5
])dnl
fi
])

dnl check for python
AC_DEFUN([LIBGPOD_CHECK_PYTHON],
[
    dnl aclocal-1.7 is missing this when version is used in AM_PATH_PYTHON, fudge it
    am_display_PYTHON=python

    AC_ARG_WITH(python,
        AC_HELP_STRING([--with-python=PATH],
            [build python bindings [[default=yes]]]),
        [with_python=$withval],[with_python=yes])

    AC_MSG_CHECKING(whether to build python bindings)
    if test "X$with_python" != Xno; then
        if test "X$with_python" != Xyes; then
            PYTHON=$with_python
        fi
        with_python=yes
    fi
    AC_MSG_RESULT($with_python)

    if test "X$with_python" = Xyes; then
        if test -z "$PYTHON"; then
            AC_PATH_PROG(PYTHON, python)
        fi
    
        if test -n "$PYTHON"; then
            AM_PATH_PYTHON($PYTHON_MIN_VERSION)
            AM_CHECK_PYTHON_HEADERS(with_python="yes",with_python="no")
    
            if test "X$with_python" = Xyes; then
                dnl test for python ldflags
                dnl copied from the Redland RDF bindings, http://librdf.org/
                if test `uname` = Darwin; then
                    PYTHON_LDFLAGS="-Wl,-F. -Wl,-F. -bundle"
                    if $PYTHON -c 'import sys, string; sys.exit(string.find(sys.prefix,"Framework")+1)'; then
                        :
                    else
                        PYTHON_LDFLAGS="$PYTHON_LDFLAGS -framework Python"
                    fi
                else
                    PYTHON_LDFLAGS="-shared"
                fi
                AC_SUBST(PYTHON_LDFLAGS)

                dnl check for mutagen module >= $PYTHON_MUTAGEN_MIN_VERSION
                AM_CHECK_PYMOD(mutagen,$PYTHON_MUTAGEN_MIN_VERSION,mutagen.version_string,,with_python=no)

                dnl this test should perhaps be re-enabled, but only produce a warning -- tmz
                dnl if test "X$have_gdkpixbuf" = "Xyes" -a "X$have_pygobject" = "Xyes"; then
                dnl     dnl check for gtk module >= $PYTHON_GTK_MIN_VERSION
                dnl     AM_CHECK_PYMOD(gtk,$PYTHON_GTK_MIN_VERSION,'.'.join(map(str, gtk.ver)),,with_python=no)
                dnl fi

                dnl check for swig
                if test "X$with_python" = Xyes; then
                    AC_PROG_SWIG($SWIG_MIN_VERSION)
                    with_python="$has_swig"
                fi
            fi
        else
            AC_MSG_WARN(python not found.  try --with-python=/path/to/python)
            with_python="no"
        fi
    fi
    AM_CONDITIONAL(HAVE_PYTHON, test x$with_python = xyes)
])dnl