Boost logo

Boost Interest :

Subject: Re: [Boost-cmake] 1.40.0.cmake5 (?) builds cleanly
From: Denis Arnaud (denis.arnaud_boost_at_[hidden])
Date: 2009-12-22 05:31:29


2009/12/21 Troy D. Straszheim <troy_at_[hidden]>

> AFAIK this is the only python module built by boost and nobody has given
> serious thought to where it should be installed. This is a large can of
> wriggly worms. /usr/lib[64]/python2.6/boost does sounds reasonable, the
> important thing is that it is on the system's PYTHONPATH. You'd also
> need to drop an empty __init__.py into that boost directory.
>

As I understand, the building of Python modules (extensions) is configured
thanks to the boost_python_extension directive within CMakeLists.txt files.
Also, it is then easy to see where such extensions are generated:
 $ find . -name '*.txt' -exec grep -Hn "boost_python_extension" {} \;
 ./libs/python/test/CMakeLists.txt:39:
boost_python_extension(${BPL_EXTENSION_MODULE} ${SRC})
 ./libs/python/test/CMakeLists.txt:53:
boost_python_extension(${TESTNAME}_ext "${TESTNAME}.cpp")
 ./libs/python/test/CMakeLists.txt:139:boost_python_extension(builtin_converters_ext
test_builtin_converters.cpp)
 ./libs/python/test/CMakeLists.txt:146:#
boost_python_extension(overload_resolution test_overload_resolution.cpp)
 ./libs/python/test/CMakeLists.txt:208:boost_python_extension(map_indexing_suite_ext
 ./libs/parameter/test/CMakeLists.txt:70:
boost_python_extension(${BPL_EXTENSION_MODULE} ${SRC})
 ./libs/parameter/test/CMakeLists.txt:84:
boost_python_extension(${TESTNAME}_ext "${TESTNAME}.cpp")
 ./libs/mpi/src/CMakeLists.txt:54: boost_python_extension(mpi
 ./tools/build/CMake/selftest_projects/pymodules/src/CMakeLists.txt:10:boost_python_extension(fooext_rel
 ./tools/build/CMake/selftest_projects/pymodules/src/CMakeLists.txt:20:boost_python_extension(fooext_dbg
 ./tools/build/CMake/selftest_projects/pymodules/src/CMakeLists.txt:30:boost_python_extension(fooext_default
 ./tools/build/CMake/selftest_projects/pymodules/src/CMakeLists.txt:42:boost_python_extension(fooext_test_linkflags
 ./tools/build/CMake/test/libs/d/src/CMakeLists.txt:55:boost_python_extension(doesntbuild

So, you are right, Troy: except for MPI, only test suites build Python
extensions.
Following is the building directive for the MPI Python extension (in
libs/mpi/src/CMakeLists.txt):
  boost_python_extension(mpi
    python/collectives.cpp
    [...]
    python/py_timer.cpp

    DEPENDS boost_python boost_mpi
    SHARED_COMPILE_FLAGS "-DBOOST_MPI_DYN_LINK=1
-DBOOST_MPI_PYTHON_DYN_LINK=1 -DBOOST_PYTHON_DYN_LINK=1"
    LINK_FLAGS ${MPI_LINK_FLAGS}
    LINK_LIBS ${MPI_LIBRARIES} ${PYTHON_LIBRARIES})

So, as I understand, we should explicitly link the mpi.so Python extension,
not only with the MPI libraries, but also with the Boost.MPI ones
(libboost_mpi.so). We would have to amend the LINK_LIBS directive with
something like:
    LINK_LIBS ${MPI_LIBRARIES} ${PYTHON_LIBRARIES} ${BOOST_MPI_LIBRARIES}

But I do not see any such ${BOOST_MPI_LIBRARIES} variable defined. How
should we do it?

The other question is: how could we set a distinct installation path for
that Python extension?
We could maybe define a CMAKE_PYTEXT_INSTALL_PREFIX variable for that
purpose?

Thanks in advance

Denis



Boost-cmake list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk