Salome HOME
Merge branch 'master' into V9_dev
[tools/configuration.git] / autotools / m4 / 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   AC_ARG_WITH(python,
43    [AC_HELP_STRING([--with-python=DIR],[root directory path of python installation])],
44    [PYTHON="$withval/bin/python"
45     AC_MSG_RESULT("select python distribution in $withval")
46    ], [
47     AC_PATH_PROG(PYTHON, python)
48     ])
49   
50   AC_CHECKING([local Python configuration])
51
52   AC_REQUIRE([AC_LINKER_OPTIONS])dnl
53
54   PYTHON_PREFIX=`echo $PYTHON | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
55   PYTHON_PREFIX=`echo $PYTHON_PREFIX | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
56   PYTHONHOME=$PYTHON_PREFIX
57
58   AC_SUBST(PYTHON_PREFIX)
59   AC_SUBST(PYTHONHOME)
60
61   changequote(<<, >>)dnl
62   PYTHON_VERSION=`$PYTHON -c "import sys; print(sys.version[:3])"`
63   changequote([, ])dnl
64   AC_SUBST(PYTHON_VERSION)
65
66   PY_MAKEFILE=${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python$PYTHON_VERSION/config/Makefile
67   if test ! -f "$PY_MAKEFILE"; then
68     # For Ubuntu >= 13.04
69     PY_MAKEFILE=${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python$PYTHON_VERSION/config-${build_cpu}-${build_os}/Makefile
70   fi
71   if test ! -f "$PY_MAKEFILE"; then
72     if test "${build_cpu::6}" = "x86_64" ; then
73       PY_MAKEFILE=${PYTHON_PREFIX}/lib64/python$PYTHON_VERSION/config/Makefile
74     fi
75   fi
76   if test ! -f "$PY_MAKEFILE"; then
77      AC_MSG_WARN([*** Couldn't find ${PY_MAKEFILE}.  Maybe you are
78 *** missing the development portion of the python installation])
79      python_ok=no
80   fi
81
82   AC_SUBST(PYTHON_INCLUDES)
83   AC_SUBST(PYTHON_LIBS)
84
85   PYTHON_INCLUDES=-I$PYTHON_PREFIX/include/python$PYTHON_VERSION
86   PYTHON_LIBS="-L${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python${PYTHON_VERSION}/config -lpython${PYTHON_VERSION}"
87   PYTHON_LIB=$PYTHON_LIBS
88   PYTHON_LIBA=${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python$PYTHON_VERSION/config/libpython$PYTHON_VERSION.a
89   if test "${build_cpu::6}" = "x86_64" ; then
90     if test "$PY_MAKEFILE" = "${PYTHON_PREFIX}/lib64/python$PYTHON_VERSION/config/Makefile" ; then
91       PYTHON_LIBS="-L${PYTHON_PREFIX}/lib64/python${PYTHON_VERSION}/config -lpython${PYTHON_VERSION}"
92       PYTHON_LIB=$PYTHON_LIBS
93       PYTHON_LIBA=${PYTHON_PREFIX}/lib64/python$PYTHON_VERSION/config/libpython$PYTHON_VERSION.a
94     fi
95   fi
96
97   dnl At times (like when building shared libraries) you may want
98   dnl to know which OS Python thinks this is.
99
100   AC_SUBST(PYTHON_PLATFORM)
101   PYTHON_PLATFORM=`$PYTHON -c "import sys; print(sys.platform)"`
102
103   AC_SUBST(PYTHON_SITE)
104   AC_ARG_WITH(python-site,
105     [AC_HELP_STRING([--with-python-site=DIR],
106        [Use DIR for installing platform independent Python site-packages])],
107
108 dnl modification : by default, we install python script in salome root tree
109
110 dnl [PYTHON_SITE="$withval"
111 dnl python_site_given=yes],
112 dnl [PYTHON_SITE=$PYTHON_PREFIX"/lib/python"$PYTHON_VERSION/site-packages
113 dnl python_site_given=no]
114
115    [PYTHON_SITE="$withval"
116     python_site_given=yes],
117    [PYTHON_SITE=${prefix}"/lib${LIB_LOCATION_SUFFIX}/python"${PYTHON_VERSION}/site-packages
118     python_site_given=no])
119
120   AC_SUBST(PYTHON_SITE_PACKAGE)
121   PYTHON_SITE_PACKAGE=$PYTHON_SITE/$PACKAGE
122
123
124   dnl Get PYTHON_SITE from --with-python-site-exec or from
125   dnl --with-python-site or from running Python
126
127   AC_SUBST(PYTHON_SITE_EXEC)
128   AC_ARG_WITH(python-site-exec,
129     [AC_HELP_STRING([--with-python-site-exec=DIR],
130                     [Use DIR for installing platform dependent Python site-packages])],
131     [PYTHON_SITE_EXEC="$withval"],
132     [if test "$python_site_given" = yes; then
133        PYTHON_SITE_EXEC=$PYTHON_SITE
134      else
135        PYTHON_SITE_EXEC=${PYTHON_EXEC_PREFIX}"/lib${LIB_LOCATION_SUFFIX}/python"${PYTHON_VERSION}/site-packages
136      fi])
137
138   dnl Set up the install directory
139   ifelse($1, classes,
140 [PYTHON_SITE_INSTALL=$PYTHON_SITE],
141 [PYTHON_SITE_INSTALL=$PYTHON_SITE_PACKAGE])
142   AC_SUBST(PYTHON_SITE_INSTALL)
143
144   dnl Also lets automake think PYTHON means something.
145
146   pythondir=${PYTHON_PREFIX}"/lib${LIB_LOCATION_SUFFIX}/python"${PYTHON_VERSION}/
147   AC_SUBST(pythondir)
148
149  AC_MSG_CHECKING([if we need libdb])
150  PY_NEEDOPENDB=`nm $PYTHON_LIBA | grep dbopen | grep U`
151   if test "x$PY_NEEDOPENDB" != "x"; then
152      AC_MSG_RESULT(yes)
153      AC_CHECK_LIB(db,dbopen,PYTHON_LIBS="$PYTHON_LIBS -ldb",db_ok=no)
154   else
155      AC_MSG_RESULT(no)
156   fi
157
158  AC_MSG_CHECKING([if we need libdl])
159   PY_NEEDOPENDL=`nm $PYTHON_LIBA | grep dlopen | grep U`
160   if test "x$PY_NEEDOPENDL" != "x"; then
161      AC_MSG_RESULT(yes)
162      AC_CHECK_LIB(dl,dlopen,PYTHON_LIBS="$PYTHON_LIBS -ldl",dl_ok=no)
163   else
164      AC_MSG_RESULT(no)
165   fi
166
167  AC_MSG_CHECKING([if we need libutil])
168   PY_NEEDOPENPTY=`nm $PYTHON_LIBA | grep openpty | grep U`
169   if test "x$PY_NEEDOPENPTY" != "x"; then
170      AC_MSG_RESULT(yes)
171      AC_CHECK_LIB(util,openpty,PYTHON_LIBS="$PYTHON_LIBS -lutil",openpty_ok=no)
172   else
173      AC_MSG_RESULT(no)
174   fi
175
176  AC_MSG_CHECKING([if we need tcltk])
177   PY_NEEDTCLTK=`nm $PYTHON_LIBA | grep Tcl_Init | grep U`
178   if test "x$PY_NEEDTCLTK" != "x"; then
179      AC_MSG_RESULT(yes)
180      AC_CHECK_LIB(tcl,Tcl_Init,PYTHON_LIBS="$PYTHON_LIBS -ltcl -ltk",tclinit_ok=no)
181   else
182      AC_MSG_RESULT(no)
183   fi
184
185   if test "$python_ok" == "yes"; then
186       AC_MSG_RESULT(looks good)
187   fi
188 ])