1 dnl Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
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
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.
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.
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
20 dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 ## ------------------------
24 ## Python file handling
26 ## Modified by Marc Tajchman (06/2001)
27 ## ------------------------
29 dnl CHECK_PYTHON([module, classes])
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
38 AC_DEFUN([CHECK_PYTHON],
44 AC_CHECKING([local Python configuration])
46 AC_REQUIRE([AC_LINKER_OPTIONS])dnl
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
52 changequote(<<, >>)dnl
53 PYTHON_ABIFLAGS=`$PYTHON -c "import sys; print(sys.abiflags)"`
56 AC_SUBST(PYTHON_PREFIX)
58 AC_SUBST(PYTHON_ABIFLAGS)
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
64 if test ! -f "$PY_MAKEFILE"; then
66 PY_MAKEFILE=${PYTHON_PREFIX}/lib${LIB_LOCATION_SUFFIX}/python$PYTHON_VERSION/config-${build_cpu}-${build_os}/Makefile
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
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])
79 AC_SUBST(PYTHON_INCLUDES)
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
94 dnl At times (like when building shared libraries) you may want
95 dnl to know which OS Python thinks this is.
97 AC_SUBST(PYTHON_PLATFORM)
98 PYTHON_PLATFORM=`$PYTHON -c "import sys; print(sys.platform)"`
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])],
105 dnl modification : by default, we install python script in salome root tree
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]
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])
117 AC_SUBST(PYTHON_SITE_PACKAGE)
118 PYTHON_SITE_PACKAGE=$PYTHON_SITE/$PACKAGE
121 dnl Get PYTHON_SITE from --with-python-site-exec or from
122 dnl --with-python-site or from running Python
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
132 PYTHON_SITE_EXEC=${PYTHON_EXEC_PREFIX}"/lib${LIB_LOCATION_SUFFIX}/python"${PYTHON_VERSION}/site-packages
135 dnl Set up the install directory
137 [PYTHON_SITE_INSTALL=$PYTHON_SITE],
138 [PYTHON_SITE_INSTALL=$PYTHON_SITE_PACKAGE])
139 AC_SUBST(PYTHON_SITE_INSTALL)
141 dnl Also lets automake think PYTHON means something.
143 pythondir=${PYTHON_PREFIX}"/lib${LIB_LOCATION_SUFFIX}/python"${PYTHON_VERSION}/
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
150 AC_CHECK_LIB(db,dbopen,PYTHON_LIBS="$PYTHON_LIBS -ldb",db_ok=no)
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
159 AC_CHECK_LIB(dl,dlopen,PYTHON_LIBS="$PYTHON_LIBS -ldl",dl_ok=no)
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
168 AC_CHECK_LIB(util,openpty,PYTHON_LIBS="$PYTHON_LIBS -lutil",openpty_ok=no)
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
177 AC_CHECK_LIB(tcl,Tcl_Init,PYTHON_LIBS="$PYTHON_LIBS -ltcl -ltk",tclinit_ok=no)
182 if test "$python_ok" == "yes"; then
183 AC_MSG_RESULT(looks good)