[cig-commits] r13602 - in cs/cigma/trunk: . config

luis at geodynamics.org luis at geodynamics.org
Tue Dec 9 18:15:42 PST 2008


Author: luis
Date: 2008-12-09 18:15:42 -0800 (Tue, 09 Dec 2008)
New Revision: 13602

Added:
   cs/cigma/trunk/config/cigma_boost.m4
Modified:
   cs/cigma/trunk/Makefile.am
   cs/cigma/trunk/config/cigma_python.m4
   cs/cigma/trunk/configure.ac
Log:
Replaced DEB_AX_PYTHON and DEB_AX_BOOST_PYTHON by own macros

Modified: cs/cigma/trunk/Makefile.am
===================================================================
--- cs/cigma/trunk/Makefile.am	2008-12-10 02:15:40 UTC (rev 13601)
+++ cs/cigma/trunk/Makefile.am	2008-12-10 02:15:42 UTC (rev 13602)
@@ -265,7 +265,7 @@
 
 ##lib_LTLIBRARIES += libcigma.la
 ##libpycigma_la_SOURCES = foo.cpp
-##libpycigma_la_CPPFLAGS = $(libcigma_a_CPPFLAGS) $(PYTHON_INCLUDE_DIR)
+##libpycigma_la_CPPFLAGS = $(libcigma_a_CPPFLAGS) $(PYTHON_INCLUDES)
 
 # XXX: uncomment
 #pyexec_PROGRAMS = _cigma.so
@@ -284,7 +284,7 @@
 	CFLAGS="$(CPPFLAGS) -I$(top_srcdir)/src $(libcigma_a_CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)" \
 	LDFLAGS="$(LDFLAGS) -L$$BUILD_DIR/.libs" \
 	ARCHFLAGS="$(ARCHFLAGS)" PYLIBS="$(PYLIBS)" \
-	$(PYTHON_BIN) src/py_cigma_setup.py build --build-lib=$$BUILD_DIR/ --build-temp=$$BUILD_DIR/pybuild -f)
+	$(PYTHON) src/py_cigma_setup.py build --build-lib=$$BUILD_DIR/ --build-temp=$$BUILD_DIR/pybuild -f)
 
 _cigma_so_cxxflags =
 _cigma_so_cxxflags += -I$(top_srcdir)/src

Added: cs/cigma/trunk/config/cigma_boost.m4
===================================================================
--- cs/cigma/trunk/config/cigma_boost.m4	                        (rev 0)
+++ cs/cigma/trunk/config/cigma_boost.m4	2008-12-10 02:15:42 UTC (rev 13602)
@@ -0,0 +1,67 @@
+i##############################################################################
+# -*- Autoconf -*-
+#
+#
+
+
+###############################################################################
+#
+# CIGMA_BOOST_PYTHON
+#
+
+AC_DEFUN([CIGMA_BOOST_PYTHON],[
+
+    AC_REQUIRE([CIGMA_PYTHON])
+
+    AS_VAR_PUSHDEF([ax_BoostPython], [ax_cv_boost_python])dnl
+    AC_LANG_PUSH([C++])
+    ax_cv_boost_python_save_CPPFLAGS=$CPPFLAGS
+    CPPFLAGS="-I$PYTHON_INCDIR $CPPFLAGS"
+    AC_CHECK_HEADER([boost/python.hpp],
+                    [AC_DEFINE([HAVE_BOOST_PYTHON],,[define if the Boost::Python library is available])])
+    CPPFLAGS=$ax_cv_boost_python_save_CPPFLAGS
+    AC_LANG_POP([C++])
+
+    ax_python_lib=boost_python
+    AC_ARG_WITH([boost-python],
+        AS_HELP_STRING([--with-boost-python],[specify the boost python library to use]),
+                       [ax_python_lib=$withval],
+                       [for suffix in mt st gcc-mt gcc gcc41-mt gcc41 gcc42-mt gcc42; do
+                          ax_python_lib_extra="$ax_python_lib_extra $ax_python_lib-$suffix";
+                        done;
+                        ax_python_lib="$ax_python_lib $ax_python_lib_extra"]
+    )
+
+    AS_VAR_PUSHDEF([ax_Search], [ax_cv_search])dnl
+    AC_CACHE_CHECK([for Usable Boost::Python library], [ax_Search],
+                   [AC_LANG_PUSH([C++])
+                    ax_cv_search_save_CXXFLAGS=$CXXFLAGS
+                    CXXFLAGS="-I$PYTHON_INCDIR $CXXFLAGS"
+                    ax_cv_search_save_LIBS=$LIBS
+                    for ax_current_lib in $ax_python_lib; do
+                      ax_res=-l$ax_current_lib
+                      LIBS="-l$ax_current_lib $PYTHON_BLDLIBRARY $ax_cv_search_save_LIBS"
+                      AC_LINK_IFELSE([#include <boost/python/module.hpp>
+                                      using namespace boost::python;
+                                      BOOST_PYTHON_MODULE(test) { throw "Boost::Python test."; }
+                                      int main() {return 0;}],
+                                     [AS_VAR_SET([ax_Search], [$ax_res])])
+                      AS_VAR_SET_IF([ax_Search], [break])dnl
+                    done
+                    AS_VAR_SET_IF([ax_Search], , [AS_VAR_SET([ax_Search], [no])])
+                    LIBS=$ax_cv_search_save_LIBS
+                    AC_LANG_POP([C++])]
+    )
+
+    ax_res=AS_VAR_GET([ax_Search])
+    AS_IF([test "$ax_res" != "no"],
+          [BOOST_PYTHON_LIBS="$ax_res"
+           AC_SUBST(BOOST_PYTHON_LIBS)
+           AC_DEFINE([HAVE_BOOST_PYTHON],,[define if the Boost::Python library is available])],
+          [AS_WARN([No suitable Boost::Python library found])])dnl
+    AS_VAR_POPDEF([ax_Search])dnl
+
+])
+
+
+# vim: syntax=config

Modified: cs/cigma/trunk/config/cigma_python.m4
===================================================================
--- cs/cigma/trunk/config/cigma_python.m4	2008-12-10 02:15:40 UTC (rev 13601)
+++ cs/cigma/trunk/config/cigma_python.m4	2008-12-10 02:15:42 UTC (rev 13602)
@@ -3,9 +3,132 @@
 #
 #
 
+##############################################################################
+#
+# CIGMA_PYTHON
+#
+AC_DEFUN([CIGMA_PYTHON],[
+    AC_REQUIRE([CIGMA_PYTHON_SYSCONFIG])
+    PYTHON_INCLUDES="-I$PYTHON_INCDIR"
+    AC_SUBST([PYTHON_INCLUDES])
+])
 
 ##############################################################################
 #
+# CIGMA_PYTHON_SYSCONFIG
+#
+AC_DEFUN([CIGMA_PYTHON_SYSCONFIG], [
+
+    AC_REQUIRE([AM_PATH_PYTHON])
+    AC_MSG_CHECKING([$am_display_PYTHON sysconfig])
+
+cat >sysconfig.py <<END_OF_PYTHON
+[import os, sys
+from distutils import sysconfig
+def cygpath(wpath):
+    s = os.popen('cygpath -u "%s"' % wpath)
+    path = s.read().strip()
+    s.close()
+    return path
+incdir = sysconfig.get_python_inc()
+keys = (
+    'BLDLIBRARY',
+    'LDFLAGS',
+    'LDLAST',
+    'LDLIBRARY',
+    'LIBDIR',
+    'LIBP',
+    'LIBPL',
+    'LIBS',
+    'LINKFORSHARED',
+    'MODLIBS',
+    'SYSLIBS',
+    'LA_LDFLAGS',
+)
+if os.name == "nt":
+    # We are running under Python for Windows (the real one...
+    # not Cygwin Python, under which 'os.name' is 'posix').
+    # We assume that we are still in the Cygwin POSIX environment,
+    # however (this is 'configure', after all); so we convert
+    # all Windows pathnames to POSIX pathnames using 'cygpath'.
+    incdir = cygpath(incdir)
+    vars = {}
+    libs = os.path.join(sys.prefix, "libs")
+    libs = cygpath(libs)
+    version = sysconfig.get_python_version()
+    version = version.replace('.', '')
+    vars['BLDLIBRARY'] = "-L%s -lpython%s" % (libs, version)
+else:
+    vars = sysconfig.get_config_vars()
+    # transform AIX's python.exp
+    vars['LINKFORSHARED'] = vars['LINKFORSHARED'].replace('Modules',vars['LIBPL'])
+    if vars['LDLIBRARY'] == vars['LIBRARY']:
+        # "On systems without shared libraries, LDLIBRARY is the same as LIBRARY"
+        vars['BLDLIBRARY'] = "-L%(LIBPL)s -lpython%(VERSION)s" % vars
+    elif vars['BLDLIBRARY']:
+        #     The 'mpicc' wrapper for LAM/MPI isn't very smart about "-L"
+        # options.  Adding "-L/usr/lib" can cause "-lmpi" to be found in /usr/lib
+        # instead of LAM's 'lib' directory.  Of course, avoiding "-L/usr/lib"
+        # doesn't really fix the problem, but it does make it much less likely;
+        # and "-L/usr/lib" is redundant and potentially problematic anyway.
+        #     Python 2.4 and later puts a symlink to libpython.so in LIBPL
+        # (/usr/lib/python2.x/config), which makes adding "-L$LIBDIR"
+        # (in addition to "-L$LIBPL") completely redundant.
+        #     But we still support Python 2.3, and we prefer shared to static,
+        # so we still add "-L$LIBDIR" when Python is installed in a non-standard
+        # location.  Note that the linker will still prefer shared over static
+        # with only "-L/usr/lib/python2.3/config" on the link line.
+        libdir = ""
+        if vars['LIBDIR'] != "/usr/lib":
+            libdir = "-L%(LIBDIR)s "
+        # Important: on Cygwin, the import library for libpython.dll is
+        # nested inside Python's 'config' directory (see Issue39).  This means
+        # that the linker always needs help finding "-lpython2.x" (in the form
+        # of "-L$LIBPL"), even for the "system" Python installed under /usr.
+        vars['BLDLIBRARY'] = (libdir + "-L%(LIBPL)s -lpython%(VERSION)s") % vars
+    else:
+        # "On Mac OS X frameworks, BLDLIBRARY is blank"
+        # See also Issue39.
+        framework = "%(PYTHONFRAMEWORKDIR)s/Versions/%(VERSION)s/%(PYTHONFRAMEWORK)s" % vars
+        PYTHONFRAMEWORK = vars.get('PYTHONFRAMEWORK', 'Python')
+        vars['LINKFORSHARED'] = vars['LINKFORSHARED'].replace(framework, "-framework " + PYTHONFRAMEWORK)
+        vars['LA_LDFLAGS'] = "-Wl,-framework,%s" % PYTHONFRAMEWORK
+vars['LDFLAGS'] = '' # only causes trouble (e.g., "-arch i386 -arch ppc" on Mac) -- see issue97
+print 'PYTHON_INCDIR="%s"' % incdir
+for key in keys:
+    print 'PYTHON_%s="%s"' % (key, vars.get(key, ''))
+]
+END_OF_PYTHON
+
+    eval `$PYTHON sysconfig.py 2>/dev/null`
+    if test -n "$PYTHON_INCDIR"; then
+        AC_MSG_RESULT(ok)
+    else
+        AC_MSG_ERROR(["failed
+
+Run '$PYTHON sysconfig.py' to see what wrong.
+"])
+    fi
+
+    #rm -f sysconfig.py
+    AC_SUBST([PYTHON_INCDIR], [$PYTHON_INCDIR])
+    AC_SUBST([PYTHON_BLDLIBRARY], [$PYTHON_BLDLIBRARY])
+    AC_SUBST([PYTHON_LDFLAGS], [$PYTHON_LDFLAGS])
+    AC_SUBST([PYTHON_LDLAST], [$PYTHON_LDLAST])
+    AC_SUBST([PYTHON_LDLIBRARY], [$PYTHON_LDLIBRARY])
+    AC_SUBST([PYTHON_LIBDIR], [$PYTHON_LIBDIR])
+    AC_SUBST([PYTHON_LIBP], [$PYTHON_LIBP])
+    AC_SUBST([PYTHON_LIBPL], [$PYTHON_LIBPL])
+    AC_SUBST([PYTHON_LIBS], [$PYTHON_LIBS])
+    AC_SUBST([PYTHON_LINKFORSHARED], [$PYTHON_LINKFORSHARED])
+    AC_SUBST([PYTHON_MODLIBS], [$PYTHON_MODLIBS])
+    AC_SUBST([PYTHON_SYSLIBS], [$PYTHON_SYSLIBS])
+    AC_SUBST([PYTHON_LA_LDFLAGS], [$PYTHON_LA_LDFLAGS])
+])dnl CIT_PYTHON_SYSCONFIG
+
+
+##############################################################################
+#
 # CIGMA_PYTHON_INCDIR
 #
 # Determine the directory containing <Python.h> using distutils.
@@ -22,10 +145,13 @@
     AC_SUBST([PYTHON_INCDIR])
 ])
 
+
 ##############################################################################
 #
 # CIGMA_CHECK_NUMPY
 #
+# Check whether we can import the numpy module, and determine its version number.
+#
 AC_DEFUN([CIGMA_CHECK_NUMPY],[
 
     AC_REQUIRE([AM_PATH_PYTHON])

Modified: cs/cigma/trunk/configure.ac
===================================================================
--- cs/cigma/trunk/configure.ac	2008-12-10 02:15:40 UTC (rev 13601)
+++ cs/cigma/trunk/configure.ac	2008-12-10 02:15:42 UTC (rev 13602)
@@ -30,6 +30,7 @@
 
 dnl Check for Python
 AM_PATH_PYTHON(2.4, :)
+CIGMA_PYTHON_SYSCONFIG
 if [ test "$PYTHON" != : ]; then
     AM_CONDITIONAL(HAVE_PYTHON, true)
 else
@@ -49,12 +50,15 @@
 AX_BOOST_FILESYSTEM
 AX_BOOST_PROGRAM_OPTIONS
 
-DEB_AX_PYTHON
-echo "PYTHON_BIN is '$PYTHON_BIN'"
-echo "PYTHON_INCLUDE_DIR is '$PYTHON_INCLUDE_DIR'"
-echo "PYTHON_LIB is '$PYTHON_LIB'"
+#DEB_AX_PYTHON
+#echo "PYTHON_BIN is '$PYTHON_BIN'"
+#echo "PYTHON_INCLUDE_DIR is '$PYTHON_INCLUDE_DIR'"
+#echo "PYTHON_LIB is '$PYTHON_LIB'"
+#DEB_AX_BOOST_PYTHON
+#echo "BOOST_PYTHON_LIBS is '$BOOST_PYTHON_LIBS'"
 
-DEB_AX_BOOST_PYTHON
+CIGMA_BOOST_PYTHON
+echo "PYTHON is '$PYTHON'"
 echo "BOOST_PYTHON_LIBS is '$BOOST_PYTHON_LIBS'"
 if test -z "$BOOST_PYTHON_LIBS"; then
     AC_MSG_ERROR([[boost::python could not be found. Please ensure that LDFLAGS is configured properly, or specify --with-boost]])
@@ -102,11 +106,12 @@
 
 echo "-"
 echo "- PYTHON               : $PYTHON"
-echo "- PYTHON_BIN           : $PYTHON_BIN"
-echo "- PYTHON_INCLUDE_DIR   : $PYTHON_INCLUDE_DIR"
+echo "- PYTHON_INCLUDES      : $PYTHON_INCLUDES"
 echo "- PYTHON_LIBS          : $PYTHON_LIBS"
+echo "- PYTHON_BLDLIBRARY    : $PYTHON_BLDLIBRARY"
 echo "- PYTHON_NUMPY         : $PYTHON_NUMPY"
 echo "- PYTHON_NUMPY_VERSION : $PYTHON_NUMPY_VERSION"
+echo "- NUMPY_INCLUDES       : $NUMPY_INCLUDES"
 
 # if using tsuna_boost.m4
 #echo "-"



More information about the CIG-COMMITS mailing list