123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- dnl -*- mode: m4; c-basic-offset: 2; indent-tabs-mode: nil; -*-
- dnl vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
- dnl
- dnl pandora-build: A pedantic build system
- dnl
- dnl Copyright (C) 2009 Sun Microsystems, Inc.
- dnl Copyright (C) 2008 Sebastian Huber <sebastian-huber@web.de>
- dnl Copyright (C) 2008 Alan W. Irwin <irwin@beluga.phys.uvic.ca>
- dnl Copyright (C) 2008 Rafael Laboissiere <rafael@laboissiere.net>
- dnl Copyright (C) 2008 Andrew Collier <colliera@ukzn.ac.za>
- dnl Copyright (C) 2008 Matteo Settenvini <matteo@member.fsf.org>
- dnl Copyright (C) 2008 Horst Knorr <hk_classes@knoda.org>
- dnl
- dnl This program is free software: you can redistribute it and/or modify it
- dnl under the terms of the GNU General Public License as published by the
- dnl Free Software Foundation, either version 3 of the License, or (at your
- dnl option) any later version.
- dnl
- dnl This program is distributed in the hope that it will be useful, but
- dnl WITHOUT ANY WARRANTY; without even the implied warranty of
- dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
- dnl Public License for more details.
- dnl
- dnl You should have received a copy of the GNU General Public License along
- dnl with this program. If not, see <http://www.gnu.org/licenses/>.
- dnl
- dnl As a special exception, the respective Autoconf Macro's copyright owner
- dnl gives unlimited permission to copy, distribute and modify the configure
- dnl scripts that are the output of Autoconf when processing the Macro. You
- dnl need not follow the terms of the GNU General Public License when using
- dnl or distributing such scripts, even though portions of the text of the
- dnl Macro appear in them. The GNU General Public License (GPL) does govern
- dnl all other use of the material that constitutes the Autoconf Macro.
- dnl
- dnl This special exception to the GPL applies to versions of the Autoconf
- dnl Macro released by the Autoconf Macro Archive. When you make and
- dnl distribute a modified version of the Autoconf Macro, you may extend this
- dnl special exception to the GPL to apply to your modified version as well.
- dnl SYNOPSIS
- dnl
- dnl PANDORA_PYTHON3_DEVEL([version])
- dnl
- dnl DESCRIPTION
- dnl
- dnl Note: Defines as a precious variable "PYTHON3_VERSION". Don't override it
- dnl in your configure.ac.
- dnl
- dnl This macro checks for Python and tries to get the include path to
- dnl 'Python.h'. It provides the $(PYTHON3_CPPFLAGS) and $(PYTHON3_LDFLAGS)
- dnl output variables. It also exports $(PYTHON3_EXTRA_LIBS) and
- dnl $(PYTHON3_EXTRA_LDFLAGS) for embedding Python in your code.
- dnl
- dnl You can search for some particular version of Python by passing a
- dnl parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please
- dnl note that you *have* to pass also an operator along with the version to
- dnl match, and pay special attention to the single quotes surrounding the
- dnl version number. Don't use "PYTHON3_VERSION" for this: that environment
- dnl variable is declared as precious and thus reserved for the end-user.
- dnl
- dnl LAST MODIFICATION
- dnl
- dnl 2009-08-23
- AC_DEFUN([PANDORA_PYTHON3_DEVEL],[
- #
- # Allow the use of a (user set) custom python version
- #
- AC_ARG_VAR([PYTHON3_VERSION],[The installed Python
- version to use, for example '3.0'. This string
- will be appended to the Python interpreter
- canonical name.])
- AS_IF([test -z "$PYTHON3"],[
- AC_PATH_PROG([PYTHON3],[python[$PYTHON3_VERSION]])
- ])
- AS_IF([test -z "$PYTHON3"],[
- PANDORA_MSG_ERROR([Cannot find python$PYTHON3_VERSION in your system path])
- PYTHON3_VERSION=""
- ])
- #
- # if the macro parameter ``version'' is set, honour it
- #
- if test -n "$1"; then
- AC_MSG_CHECKING([for a version of Python $1])
- ac_supports_python3_ver=`$PYTHON3 -c "import sys, string; \
- ver = string.split(sys.version)[[0]]; \
- print(ver $1)"`
- if test "$ac_supports_python3_ver" = "True"; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- PANDORA_MSG_ERROR([this package requires Python $1.
- If you have it installed, but it isn't the default Python
- interpreter in your system path, please pass the PYTHON3_VERSION
- variable to configure. See ``configure --help'' for reference.
- ])
- PYTHON_VERSION=""
- fi
- fi
- #
- # Check if you have distutils, else fail
- #
- AC_MSG_CHECKING([for Python3 distutils package])
- ac_python3_distutils_result=`$PYTHON3 -c "import distutils" 2>&1`
- if test -z "$ac_python3_distutils_result"; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- PANDORA_MSG_ERROR([cannot import Python3 module "distutils".
- Please check your Python3 installation. The error was:
- $ac_python3_distutils_result])
- PYTHON3_VERSION=""
- fi
- #
- # Check for Python include path
- #
- AC_MSG_CHECKING([for Python3 include path])
- if test -z "$PYTHON3_CPPFLAGS"; then
- python3_path=`$PYTHON3 -c "import distutils.sysconfig; \
- print(distutils.sysconfig.get_python_inc());"`
- if test -n "${python3_path}"; then
- python3_path="-I$python3_path"
- fi
- PYTHON3_CPPFLAGS=$python3_path
- fi
- AC_MSG_RESULT([$PYTHON3_CPPFLAGS])
- AC_SUBST([PYTHON3_CPPFLAGS])
- #
- # Check for Python library path
- #
- AC_MSG_CHECKING([for Python3 library path])
- if test -z "$PYTHON3_LDFLAGS"; then
- # (makes two attempts to ensure we've got a version number
- # from the interpreter)
- py3_version=`$PYTHON3 -c "from distutils.sysconfig import *; \
- print(' '.join(get_config_vars('VERSION')))"`
- if test "$py3_version" == "[None]"; then
- if test -n "$PYTHON3_VERSION"; then
- py3_version=$PYTHON3_VERSION
- else
- py3_version=`$PYTHON3 -c "import sys; \
- print(sys.version[[:3]])"`
- fi
- fi
- PYTHON3_LDFLAGS=`$PYTHON3 -c "from distutils.sysconfig import *; \
- print('-L' + get_python_lib(0,1), \
- '-lpython');"`$py3_version
- fi
- AC_MSG_RESULT([$PYTHON3_LDFLAGS])
- AC_SUBST([PYTHON3_LDFLAGS])
- #
- # Check for site packages
- #
- AC_MSG_CHECKING([for Python3 site-packages path])
- if test -z "$PYTHON3_SITE_PKG"; then
- PYTHON3_SITE_PKG=`$PYTHON3 -c "import distutils.sysconfig; \
- print(distutils.sysconfig.get_python_lib(0,0));"`
- fi
- AC_MSG_RESULT([$PYTHON3_SITE_PKG])
- AC_SUBST([PYTHON3_SITE_PKG])
- #
- # libraries which must be linked in when embedding
- #
- AC_MSG_CHECKING(for Python3 embedding libraries)
- if test -z "$PYTHON3_EMBED_LIBS"; then
- PYTHON3_EMBED_LIBS=`$PYTHON3 -c "import distutils.sysconfig; \
- conf = distutils.sysconfig.get_config_var; \
- print(conf('LOCALMODLIBS'), conf('LIBS'))"`
- fi
- AC_MSG_RESULT([$PYTHON3_EMBED_LIBS])
- AC_SUBST(PYTHON3_EMBED_LIBS)
- #
- # linking flags needed when embedding
- #
- AC_MSG_CHECKING(for Python3 embedding linking flags)
- if test -z "$PYTHON3_EMBED_LDFLAGS"; then
- PYTHON3_EMBED_LDFLAGS=`$PYTHON3 -c "import distutils.sysconfig; \
- conf = distutils.sysconfig.get_config_var; \
- print(conf('LINKFORSHARED'))"`
- fi
- AC_MSG_RESULT([$PYTHON3_EMBED_LDFLAGS])
- AC_SUBST(PYTHON3_EMBED_LDFLAGS)
- #
- # final check to see if everything compiles alright
- #
- AC_MSG_CHECKING([for Python3 development environment consistency])
- AC_LANG_PUSH([C])
- # save current global flags
- ac_save_LIBS="$LIBS"
- ac_save_CPPFLAGS="$CPPFLAGS"
- LIBS="$ac_save_LIBS $PYTHON3_LDFLAGS"
- CPPFLAGS="$ac_save_CPPFLAGS $PYTHON3_CPPFLAGS"
- AC_TRY_LINK([
- #include <Python.h>
- ],[
- Py_Initialize();
- ],[python3exists=yes],[python3exists=no])
- AC_MSG_RESULT([$python3exists])
- if test ! "$python3exists" = "yes"; then
- AC_MSG_WARN([
- Could not link test program to Python3.
- Maybe the main Python3 library has been installed in some non-standard
- library path. If so, pass it to configure, via the LDFLAGS environment
- variable.
- Example: ./configure LDFLAGS="-L/usr/non-standard-path/python3/lib"
- ============================================================================
- ERROR!
- You probably have to install the development version of the Python3 package
- for your distribution. The exact name of this package varies among them.
- ============================================================================
- ])
- PYTHON3_VERSION=""
- fi
- AC_LANG_POP
- # turn back to default flags
- CPPFLAGS="$ac_save_CPPFLAGS"
- LIBS="$ac_save_LIBS"
- #
- # all done!
- #
- ])
|