diff options
author | Willem Jan Palenstijn <wjp@usecode.org> | 2015-02-26 16:30:43 +0100 |
---|---|---|
committer | Willem Jan Palenstijn <wjp@usecode.org> | 2015-02-26 16:30:43 +0100 |
commit | 9e2bb413a937aefe57f4fcf343413543ae57258a (patch) | |
tree | f4d87d40ae17775e4e3c744476d31d56b5dba64b /build | |
parent | 0ca00f4c671d6d583ae77838d3e0d4fcd411f077 (diff) | |
parent | e0aca18f687e9f49223ffb24b9be354bed4b150a (diff) | |
download | astra-9e2bb413a937aefe57f4fcf343413543ae57258a.tar.gz astra-9e2bb413a937aefe57f4fcf343413543ae57258a.tar.bz2 astra-9e2bb413a937aefe57f4fcf343413543ae57258a.tar.xz astra-9e2bb413a937aefe57f4fcf343413543ae57258a.zip |
Merge pull request #16 from dmpelt/python-interface
Add Python interface
Diffstat (limited to 'build')
-rw-r--r-- | build/linux/Makefile.in | 45 | ||||
-rw-r--r-- | build/linux/acinclude.m4 | 12 | ||||
-rw-r--r-- | build/linux/configure.ac | 63 |
3 files changed, 111 insertions, 9 deletions
diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 5b4c9fa..6620446 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -1,5 +1,7 @@ cuda=@HAVECUDA@ matlab=@HAVEMATLAB@ +python=@HAVEPYTHON@ + MATLAB_ROOT=@MATLAB_ROOT@ @@ -9,6 +11,10 @@ ifeq ($(matlab),yes) TARGETS+=mex endif +ifeq ($(python),yes) +TARGETS+=py +endif + all: $(TARGETS) prefix=@prefix@ @@ -40,6 +46,14 @@ CXXFLAGS+=-fopenmp LDFLAGS+=-fopenmp endif +ifeq ($(python),yes) +PYCPPFLAGS = ${CPPFLAGS} +PYCPPFLAGS += -I../include +PYLDFLAGS = ${LDFLAGS} +PYLDFLAGS += -L../build/linux/.libs +PYTHON = @PYTHON@ +endif + BOOST_CPPFLAGS= BOOST_LDFLAGS= @@ -54,7 +68,7 @@ LD=@CXX@ SHELL=@SHELL@ ifeq ($(matlab),yes) -MEXFLAGS = -cxx +MEXFLAGS = -cxx MEXLDFLAGS='$$LDFLAGS $(LDFLAGS)' MEXLIBS = -L.libs -lut MEXSUFFIX = @MEXSUFFIX@ @@ -227,6 +241,14 @@ mex: $(MATLAB_MEX) $(MEX) LDFLAGS=$(MEXLDFLAGS) $(MEXFLAGS) $(LIBS) $(MEXLIBS) -lastra -output $* $*.o $(MATLAB_CXX_OBJECTS) endif +ifeq ($(python),yes) +py: libastra.la + cd ../../python; CPPFLAGS="${PYCPPFLAGS}" LDFLAGS="${PYLDFLAGS}" $(PYTHON) builder.py install \ + --install-base=./finalbuild --install-headers=./finalbuild --install-purelib=./finalbuild \ + --install-platlib=./finalbuild --install-scripts=./finalbuild --install-data=./finalbuild +endif + + libastra.la: $(ALL_OBJECTS) ./libtool --mode=link --tag=CXX $(LD) -rpath $(LIBDIR) -o $@ $(LDFLAGS) $(LIBS) $+ @@ -279,6 +301,8 @@ clean: rm -f $(addsuffix /*.d,$(DEPDIRS)) rm -f $(addsuffix /*,$(LIBDIRS)) rm -f $(TEST_OBJECTS) test.bin + rm -fr ../../python/finalbuild/ + rm -fr ../../python/build/ distclean: clean rm -f config.guess config.sub ltmain.sh libtool install-sh @@ -287,7 +311,7 @@ distclean: clean rm -rf autom4te.cache rm -f configure Makefile -install: install-libraries install-matlab +install: install-libraries install-matlab install-python install-libraries: libastra.la ./install-sh -m 755 -d @libdir@ @@ -307,6 +331,23 @@ else install-matlab: endif +ifeq ($(python),yes) +# TODO: This install location doesn't work well for /usr or /usr/local +install-python: py + ./install-sh -m 755 -d @prefix@/python + ./install-sh -m 755 -d @prefix@/python/astra + ./install-sh -m 644 ../../python/finalbuild/astra/*.so @prefix@/python/astra + ./install-sh -m 644 ../../python/finalbuild/astra/*.py @prefix@/python/astra + ./install-sh -m 644 ../../python/finalbuild/*.egg-info @prefix@/python/ + @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" + @echo "To use ASTRA in Python, add @prefix@/python/ to your PYTHONPATH" + @echo "and @libdir@ to your LD_LIBRARY_PATH." + @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" +# TODO: docs +else +install-python: +endif + Makefile: Makefile.in config.status CONFIG_HEADERS= CONFIG_LINKS= CONFIG_FILES=$@ $(SHELL) ./config.status diff --git a/build/linux/acinclude.m4 b/build/linux/acinclude.m4 index 713b5d3..e4b6de7 100644 --- a/build/linux/acinclude.m4 +++ b/build/linux/acinclude.m4 @@ -70,6 +70,18 @@ AC_DEFUN([ASTRA_RUN_LOGOUTPUT],[{ }]) +dnl ASTRA_TRY_PYTHON(code, action-if-ok, action-if-not-ok) +AC_DEFUN([ASTRA_TRY_PYTHON],[ +cat >conftest.py <<_ACEOF +$1 +_ACEOF +ASTRA_RUN_LOGOUTPUT($PYTHON conftest.py) +AS_IF([test $? = 0],[$2],[ + AS_ECHO(["$as_me: failed program was:"]) >&AS_MESSAGE_LOG_FD + sed 's/^/| /' conftest.py >&AS_MESSAGE_LOG_FD + $3]) +]) + dnl ASTRA_CHECK_NVCC(variable-to-set,cppflags-to-set) AC_DEFUN([ASTRA_CHECK_NVCC],[ diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 7397986..b97a7a0 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -1,26 +1,26 @@ dnl ----------------------------------------------------------------------- dnl Copyright: 2010-2015, iMinds-Vision Lab, University of Antwerp dnl 2014-2015, CWI, Amsterdam -dnl +dnl dnl Contact: astra@uantwerpen.be dnl Website: http://sf.net/projects/astra-toolbox -dnl +dnl dnl This file is part of the ASTRA Toolbox. -dnl -dnl +dnl +dnl dnl The ASTRA Toolbox is free software: you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation, either version 3 of the License, or dnl (at your option) any later version. -dnl +dnl dnl The ASTRA Toolbox is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the dnl GNU General Public License for more details. -dnl +dnl dnl You should have received a copy of the GNU General Public License dnl along with the ASTRA Toolbox. If not, see <http://www.gnu.org/licenses/>. -dnl +dnl dnl ----------------------------------------------------------------------- dnl $Id$ @@ -160,6 +160,54 @@ fi AC_SUBST(HAVEMATLAB) +# python + +AC_ARG_WITH(python, [[ --with-python=path path of Python binary (optional)]],,) + +HAVEPYTHON=no +if test x"$with_python" != x -a x"$with_python" != xno; then + if test x"$with_python" = xyes; then + PYTHON=python + else + PYTHON="$with_python" + fi + AC_MSG_CHECKING(for python) + ASTRA_RUN_LOGOUTPUT(echo 'import sys' | $PYTHON -) + if test $? -ne 0; then + AC_MSG_ERROR(Python binary not found)] + fi + AC_MSG_RESULT([$PYTHON]) + HAVEPYTHON=yes + AC_SUBST(PYTHON) + AC_MSG_CHECKING(for numpy module) + ASTRA_TRY_PYTHON([import numpy],,HAVEPYTHON=no) + if test x$HAVEPYTHON = xno; then + AC_MSG_RESULT(no) + AC_MSG_ERROR(You need the numpy module to use the ASTRA toolbox in Python) + fi + AC_MSG_RESULT(yes) + AC_MSG_CHECKING(for Cython module) + ASTRA_TRY_PYTHON([ +import Cython +from distutils.version import LooseVersion +assert(LooseVersion(Cython.__version__)>=LooseVersion("0.13")) +],,HAVEPYTHON=no) + if test x$HAVEPYTHON = xno; then + AC_MSG_RESULT(no) + AC_MSG_ERROR(You need the Cython module (version >=0.13) to use the ASTRA toolbox in Python) + fi + AC_MSG_RESULT(yes) + AC_MSG_CHECKING(for six module) + ASTRA_TRY_PYTHON([import six]) + if test x$HAVEPYTHON = xno; then + AC_MSG_RESULT(no) + AC_MSG_ERROR(You need the six module to use the ASTRA toolbox in Python) + fi + AC_MSG_RESULT(yes) +fi + +AC_SUBST(HAVEPYTHON) + # TODO: @@ -181,6 +229,7 @@ echo echo "Summary of ASTRA Toolbox build options:" echo " CUDA : $HAVECUDA" echo " Matlab : $HAVEMATLAB" +echo " Python : $HAVEPYTHON" echo echo " prefix : $prefix" echo |