diff options
author | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2016-09-28 14:58:41 +0200 |
---|---|---|
committer | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2016-11-18 17:58:13 +0100 |
commit | 64a48bea80b909311351dc3b1345a17c693ddb69 (patch) | |
tree | 323747764903567f0de3b484bc202059637d5ac9 /build/linux | |
parent | 51b2e49e08901fd649f8cc13b8ba1d33166e413f (diff) | |
download | astra-64a48bea80b909311351dc3b1345a17c693ddb69.tar.gz astra-64a48bea80b909311351dc3b1345a17c693ddb69.tar.bz2 astra-64a48bea80b909311351dc3b1345a17c693ddb69.tar.xz astra-64a48bea80b909311351dc3b1345a17c693ddb69.zip |
Add experimental support for Octave
Based on initial patch by @kalvdans.
Diffstat (limited to 'build/linux')
-rw-r--r-- | build/linux/Makefile.in | 51 | ||||
-rw-r--r-- | build/linux/configure.ac | 23 |
2 files changed, 73 insertions, 1 deletions
diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 14027e1..076cfd1 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -5,6 +5,7 @@ boostutf=@HAVEBOOSTUTF@ MATLAB_ROOT=@MATLAB_ROOT@ +octave=@HAVEOCTAVE@ TARGETS=libastra.la @@ -16,6 +17,10 @@ ifeq ($(python),yes) TARGETS+=py endif +ifeq ($(octave),yes) +TARGETS+=oct +endif + all: $(TARGETS) prefix=@prefix@ @@ -46,6 +51,16 @@ LIBS += -lcudart -lcufft NVCC = @NVCC@ endif +ifeq ($(octave),yes) +OCTLDFLAGS:=$(LDFLAGS) +CPPFLAGS += @OCTAVE_CPPFLAGS@ +ifeq ($(cuda),yes) +OCTFLAGS=-DASTRA_CUDA +else +OCTFLAGS= +endif +endif + ifeq ($(matlab),yes) CPPFLAGS+=-I$(MATLAB_ROOT)/extern/include -DMATLAB_MEX_FILE CXXFLAGS+=-fopenmp @@ -259,6 +274,20 @@ ifeq ($(python),yes) MATLAB_MEX+=matlab/mex/astra_mex_plugin_c.$(MEXSUFFIX) endif +OCTAVE_CXX_OBJECTS=\ + matlab/mex/octave_support.o + +OCTAVE_MEX=\ + matlab/mex/astra_mex_algorithm_c.mex \ + matlab/mex/astra_mex_data2d_c.mex \ + matlab/mex/astra_mex_c.mex \ + matlab/mex/astra_mex_matrix_c.mex \ + matlab/mex/astra_mex_projector_c.mex \ + matlab/mex/astra_mex_projector3d_c.mex \ + matlab/mex/astra_mex_log_c.mex \ + matlab/mex/astra_mex_data3d_c.mex \ + matlab/mex/astra_mex_direct_c.mex + OBJECT_DIRS = src/ tests/ cuda/2d/ cuda/3d/ matlab/mex/ ./ DEPDIRS = $(addsuffix $(DEPDIR),$(OBJECT_DIRS)) -include $(wildcard $(addsuffix /*.d,$(DEPDIRS))) @@ -294,6 +323,13 @@ python-root-install: libastra.la endif +ifeq ($(octave),yes) +oct: $(OCTAVE_MEX) + +%.mex: %.o $(MATLAB_CXX_OBJECTS) $(OCTAVE_CXX_OBJECTS) libastra.la + mkoctfile --mex $(OCTFLAGS) $(OCTLDFLAGS) $(LIBS) -L.libs -lastra --output $* $*.o $(MATLAB_CXX_OBJECTS) $(OCTAVE_CXX_OBJECTS) +endif + libastra.la: $(ALL_OBJECTS) ./libtool --mode=link --tag=CXX $(LD) -rpath $(LIBDIR) -o $@ $(LDFLAGS) $(LIBS) $+ @@ -374,7 +410,7 @@ distclean: clean rm -rf $(srcdir)/autom4te.cache rm -f $(srcdir)/configure Makefile -install: install-libraries install-matlab install-python +install: install-libraries install-matlab install-python install-octave install-libraries: libastra.la $(INSTALL_SH) -m 755 -d @libdir@ @@ -413,6 +449,19 @@ else install-python: endif +ifeq ($(octave),yes) +# TODO: This install location doesn't work well for /usr or /usr/local +install-octave: $(OCTAVE_MEX) + $(INSTALL_SH) -m 755 -d @prefix@/octave + $(INSTALL_SH) -m 755 -d @prefix@/octave/mex + $(INSTALL_SH) -m 755 -d @prefix@/octave/tools + $(INSTALL_SH) -m 644 $(OCTAVE_MEX) @prefix@/octave/mex + $(INSTALL_SH) -m 644 $(srcdir)/../../matlab/tools/*.m @prefix@/octave/tools +# TODO: docs +else +install-octave: +endif + Makefile: $(srcdir)/Makefile.in config.status CONFIG_HEADERS= CONFIG_LINKS= CONFIG_FILES=$@ $(SHELL) ./config.status diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 630b08d..0d80cec 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -175,6 +175,28 @@ fi AC_SUBST(HAVEMATLAB) +# octave + +AC_ARG_ENABLE(octave, [[ --disable-octave disable Octave support]]) +if test x"$enable_octave" != xno; then + AC_PATH_PROG([HAVEOCTAVE], [octave-config], [no], [$PATH]) + AC_MSG_CHECKING([for octave]) + if test x"HAVEOCTAVE" != xno -a $HAVEMATLAB = yes; then + HAVEOCTAVE=no + AC_MSG_RESULT([no (since Matlab support is enabled)]) + else + if test x"$HAVEOCTAVE" != xno; then + OCTAVE_CPPFLAGS="-I`octave-config -p OCTINCLUDEDIR`" + AC_SUBST(OCTAVE_CPPFLAGS) + HAVEOCTAVE=yes + fi + AC_MSG_RESULT($HAVEOCTAVE) + fi +else + HAVEOCTAVE=no +fi +AC_SUBST(HAVEOCTAVE) + # python AC_ARG_WITH(python, [[ --with-python=path path of Python binary (optional)]],,) @@ -271,6 +293,7 @@ echo echo "Summary of ASTRA Toolbox build options:" echo " CUDA : $HAVECUDA" echo " Matlab : $HAVEMATLAB" +echo " Octave : $HAVEOCTAVE" echo " Python : $HAVEPYTHON" echo echo " prefix : $prefix" |