Salome HOME
python.m4 updated for Python 3
[modules/kernel.git] / salome_adm / unix / config_files / python.m4
1 dnl Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
2 dnl
3 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 dnl
6 dnl This library is free software; you can redistribute it and/or
7 dnl modify it under the terms of the GNU Lesser General Public
8 dnl License as published by the Free Software Foundation; either
9 dnl version 2.1 of the License, or (at your option) any later version.
10 dnl
11 dnl This library is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 dnl Lesser General Public License for more details.
15 dnl
16 dnl You should have received a copy of the GNU Lesser General Public
17 dnl License along with this library; if not, write to the Free Software
18 dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 dnl
20 dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 dnl
22
23 ## ------------------------
24 ## Python file handling
25 ## From Andrew Dalke
26 ## Modified by Marc Tajchman (06/2001)
27 ## ------------------------
28
29 dnl CHECK_PYTHON([module, classes])
30 dnl
31 dnl Adds support for distributing Python modules or classes.
32 dnl Python library files distributed as a `module' are installed
33 dnl under PYTHON_SITE_PACKAGE (eg, ./python1.5/site-package/package-name)
34 dnl while those distributed as `classes' are installed under PYTHON_SITE
35 dnl (eg, ./python1.5/site-packages).  The default is to install as
36 dnl a `module'.
37
38 AC_DEFUN([CHECK_PYTHON],
39  [
40   python_ok=yes
41  
42   AM_PATH_PYTHON([3])
43   
44   AC_CHECKING([local Python configuration])
45
46   AC_REQUIRE([AC_LINKER_OPTIONS])dnl
47
48   PYTHON_PREFIX=`echo $PYTHON | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
49   PYTHON_PREFIX=`echo $PYTHON_PREFIX | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
50   PYTHONHOME=$PYTHON_PREFIX
51
52   changequote(<<, >>)dnl
53   PYTHON_ABIFLAGS=`$PYTHON -c "import sys; print(sys.abiflags)"`
54   changequote([, ])dnl
55
56   AC_SUBST(PYTHON_PREFIX)
57   AC_SUBST(PYTHONHOME)
58   AC_SUBST(PYTHON_ABIFLAGS)
59
60   PY_MAKEFILE=${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python$PYTHON_VERSION/config/Makefile
61   if test ! -f "$PY_MAKEFILE"; then
62     PY_MAKEFILE=${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python$PYTHON_VERSION/config-${PYTHON_VERSION}${PYTHON_ABIFLAGS}-${build_cpu}-${build_os}/Makefile
63   fi
64   if test ! -f "$PY_MAKEFILE"; then
65     # For Ubuntu >= 13.04
66     PY_MAKEFILE=${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python$PYTHON_VERSION/config-${build_cpu}-${build_os}/Makefile
67   fi
68   if test ! -f "$PY_MAKEFILE"; then
69     if test "${build_cpu::6}" = "x86_64" ; then
70       PY_MAKEFILE=${PYTHON_PREFIX}/lib64/python$PYTHON_VERSION/config/Makefile
71     fi
72   fi
73   if test ! -f "$PY_MAKEFILE"; then
74      AC_MSG_WARN([*** Couldn't find ${PY_MAKEFILE}.  Maybe you are
75 *** missing the development portion of the python installation])
76      python_ok=no
77   fi
78
79   AC_SUBST(PYTHON_INCLUDES)
80   AC_SUBST(PYTHON_LIBS)
81
82   PYTHON_INCLUDES=-I$PYTHON_PREFIX/include/python$PYTHON_VERSION
83   PYTHON_LIBS="-L${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/config -lpython${PYTHON_VERSION}"
84   PYTHON_LIB=$PYTHON_LIBS
85   PYTHON_LIBA=${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python$PYTHON_VERSION/config/libpython$PYTHON_VERSION.a
86   if test "${build_cpu::6}" = "x86_64" ; then
87     if test "$PY_MAKEFILE" = "${PYTHON_PREFIX}/lib64/python$PYTHON_VERSION/config/Makefile" ; then
88       PYTHON_LIBS="-L${PYTHON_PREFIX}/lib64/python${PYTHON_VERSION}/config -lpython${PYTHON_VERSION}"
89       PYTHON_LIB=$PYTHON_LIBS
90       PYTHON_LIBA=${PYTHON_PREFIX}/lib64/python$PYTHON_VERSION/config/libpython$PYTHON_VERSION.a
91     fi
92   fi
93
94   dnl At times (like when building shared libraries) you may want
95   dnl to know which OS Python thinks this is.
96
97   AC_SUBST(PYTHON_PLATFORM)
98   PYTHON_PLATFORM=`$PYTHON -c "import sys; print(sys.platform)"`
99
100   AC_SUBST(PYTHON_SITE)
101   AC_ARG_WITH(python-site,
102     [AC_HELP_STRING([--with-python-site=DIR],
103        [Use DIR for installing platform independent Python site-packages])],
104
105 dnl modification : by default, we install python script in salome root tree
106
107 dnl [PYTHON_SITE="$withval"
108 dnl python_site_given=yes],
109 dnl [PYTHON_SITE=$PYTHON_PREFIX"/lib/python"$PYTHON_VERSION/site-packages
110 dnl python_site_given=no]
111
112    [PYTHON_SITE="$withval"
113     python_site_given=yes],
114    [PYTHON_SITE=${prefix}"/lib${LIB_LOCATION_SUFFIX}/python"${PYTHON_VERSION}/site-packages
115     python_site_given=no])
116
117   AC_SUBST(PYTHON_SITE_PACKAGE)
118   PYTHON_SITE_PACKAGE=$PYTHON_SITE/$PACKAGE
119
120
121   dnl Get PYTHON_SITE from --with-python-site-exec or from
122   dnl --with-python-site or from running Python
123
124   AC_SUBST(PYTHON_SITE_EXEC)
125   AC_ARG_WITH(python-site-exec,
126     [AC_HELP_STRING([--with-python-site-exec=DIR],
127                     [Use DIR for installing platform dependent Python site-packages])],
128     [PYTHON_SITE_EXEC="$withval"],
129     [if test "$python_site_given" = yes; then
130        PYTHON_SITE_EXEC=$PYTHON_SITE
131      else
132        PYTHON_SITE_EXEC=${PYTHON_EXEC_PREFIX}"/lib${LIB_LOCATION_SUFFIX}/python"${PYTHON_VERSION}/site-packages
133      fi])
134
135   dnl Set up the install directory
136   ifelse($1, classes,
137 [PYTHON_SITE_INSTALL=$PYTHON_SITE],
138 [PYTHON_SITE_INSTALL=$PYTHON_SITE_PACKAGE])
139   AC_SUBST(PYTHON_SITE_INSTALL)
140
141   dnl Also lets automake think PYTHON means something.
142
143   pythondir=${PYTHON_PREFIX}"/lib${LIB_LOCATION_SUFFIX}/python"${PYTHON_VERSION}/
144   AC_SUBST(pythondir)
145
146  AC_MSG_CHECKING([if we need libdb])
147  PY_NEEDOPENDB=`nm $PYTHON_LIBA | grep dbopen | grep U`
148   if test "x$PY_NEEDOPENDB" != "x"; then
149      AC_MSG_RESULT(yes)
150      AC_CHECK_LIB(db,dbopen,PYTHON_LIBS="$PYTHON_LIBS -ldb",db_ok=no)
151   else
152      AC_MSG_RESULT(no)
153   fi
154
155  AC_MSG_CHECKING([if we need libdl])
156   PY_NEEDOPENDL=`nm $PYTHON_LIBA | grep dlopen | grep U`
157   if test "x$PY_NEEDOPENDL" != "x"; then
158      AC_MSG_RESULT(yes)
159      AC_CHECK_LIB(dl,dlopen,PYTHON_LIBS="$PYTHON_LIBS -ldl",dl_ok=no)
160   else
161      AC_MSG_RESULT(no)
162   fi
163
164  AC_MSG_CHECKING([if we need libutil])
165   PY_NEEDOPENPTY=`nm $PYTHON_LIBA | grep openpty | grep U`
166   if test "x$PY_NEEDOPENPTY" != "x"; then
167      AC_MSG_RESULT(yes)
168      AC_CHECK_LIB(util,openpty,PYTHON_LIBS="$PYTHON_LIBS -lutil",openpty_ok=no)
169   else
170      AC_MSG_RESULT(no)
171   fi
172
173  AC_MSG_CHECKING([if we need tcltk])
174   PY_NEEDTCLTK=`nm $PYTHON_LIBA | grep Tcl_Init | grep U`
175   if test "x$PY_NEEDTCLTK" != "x"; then
176      AC_MSG_RESULT(yes)
177      AC_CHECK_LIB(tcl,Tcl_Init,PYTHON_LIBS="$PYTHON_LIBS -ltcl -ltk",tclinit_ok=no)
178   else
179      AC_MSG_RESULT(no)
180   fi
181
182   if test "$python_ok" == "yes"; then
183       AC_MSG_RESULT(looks good)
184   fi
185 ])