diff options
| -rw-r--r-- | build/linux/Makefile.in | 100 | ||||
| -rw-r--r-- | build/linux/configure.ac | 15 | ||||
| -rw-r--r--[-rwxr-xr-x] | matlab/mex/astra_mex_direct_c.cpp | 0 | ||||
| -rw-r--r-- | python/conda/meta.yaml | 1 | 
4 files changed, 76 insertions, 40 deletions
| diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 01ef527..3018674 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -21,7 +21,10 @@ all: $(TARGETS)  prefix=@prefix@  exec_prefix=@exec_prefix@ -VPATH=../.. +srcdir=@srcdir@ +abs_top_builddir=@abs_top_builddir@ + +VPATH=@VPATH_SRCDIR@/../..  CPPFLAGS=@SAVED_CPPFLAGS@  CXXFLAGS=@SAVED_CXXFLAGS@ @@ -29,7 +32,6 @@ NVCCFLAGS=@SAVED_NVCCFLAGS@  LDFLAGS=@SAVED_LDFLAGS@  LIBS=@SAVED_LIBS@ -CPPFLAGS+=-I../.. -I../../include -I../../lib/include  CXXFLAGS+=-g -O3 -Wall -Wshadow  LIBS+=-lpthread  LDFLAGS+=-g @@ -38,7 +40,7 @@ CPPFLAGS+=@CPPFLAGS_OS@  ifeq ($(cuda),yes)  CPPFLAGS  += @CPPFLAGS_CUDA@ -DASTRA_CUDA -NVCCFLAGS += @NVCCFLAGS_EXTRA@ @CPPFLAGS_CUDA@ -I../.. -I../../include -DASTRA_CUDA +NVCCFLAGS += @NVCCFLAGS_EXTRA@ @CPPFLAGS_CUDA@ -I$(srcdir)/../.. -I$(srcdir)/../../include -DASTRA_CUDA  LDFLAGS   += @LDFLAGS_CUDA@  LIBS      += -lcudart -lcufft  NVCC       = @NVCC@ @@ -56,14 +58,18 @@ PYLIBDIR = $(shell $(PYTHON) -c 'from distutils.sysconfig import get_config_var;  PYINCDIR = $(shell $(PYTHON) -c 'from distutils.sysconfig import get_python_inc; import six; six.print_(get_python_inc())')  PYLIBVER = `basename $(PYINCDIR)`  CPPFLAGS += -DASTRA_PYTHON -I$(PYINCDIR) -PYCPPFLAGS  = $(CPPFLAGS) +PYCPPFLAGS  := $(CPPFLAGS)  PYCPPFLAGS  += -I../include  PYLDFLAGS = $(LDFLAGS) -PYLDFLAGS   += -L../build/linux/.libs +PYLDFLAGS   += -L$(abs_top_builddir)/.libs  LIBS		+= -l$(PYLIBVER)  LDFLAGS += -L$(PYLIBDIR)  endif +# This is below where PYCPPFLAGS copies CPPFLAGS.  The python code is built +# from a different directory, so these relative includes would be wrong. +CPPFLAGS+=-I$(srcdir)/../.. -I$(srcdir)/../../include -I$(srcdir)/../../lib/include +  BOOST_CPPFLAGS=  BOOST_LDFLAGS= @@ -78,6 +84,7 @@ MKDIR=mkdir -p  CXX=@CXX@  LD=@CXX@  SHELL=@SHELL@ +INSTALL_SH=$(SHELL) $(srcdir)/install-sh  ifeq ($(matlab),yes)  MEXFLAGS  = -cxx @@ -264,12 +271,15 @@ 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 +	$(MKDIR) python/build +	$(MKDIR) python/finalbuild +	cd $(srcdir)/../../python; CPPFLAGS="${PYCPPFLAGS}" LDFLAGS="${PYLDFLAGS}" $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build install \ +	--install-base=$(abs_top_builddir)/python/finalbuild --install-headers=$(abs_top_builddir)/python/finalbuild --install-purelib=$(abs_top_builddir)/python/finalbuild \ +	--install-platlib=$(abs_top_builddir)/python/finalbuild --install-scripts=$(abs_top_builddir)/python/finalbuild --install-data=$(abs_top_builddir)/python/finalbuild  python-root-install: libastra.la -	cd ../../python; CPPFLAGS="${PYCPPFLAGS}" LDFLAGS="${PYLDFLAGS}" $(PYTHON) builder.py install +	$(MKDIR) python/build +	cd $(srcdir)/../../python; CPPFLAGS="${PYCPPFLAGS}" LDFLAGS="${PYLDFLAGS}" $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build install  endif @@ -285,18 +295,23 @@ libastra.la: $(ALL_OBJECTS)  	$(MKDIR) $(*D)/$(DEPDIR)  	./libtool --mode=compile --tag=CXX $(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o +gen_static_libs := `./libtool --features | grep -q 'disable static' && echo no || echo yes` +  ifeq ($(cuda),yes)  %.lo: %.cu  	@# Behave like libtool: compile both a PIC and a non-PIC object file  	@$(MKDIR) $(*D) -	$(NVCC) $(NVCCFLAGS) -c $(<) -o $*.o  	@$(MKDIR) $(*D)/.libs  	@$(MKDIR) $(*D)/$(DEPDIR) -	@$(NVCC) $(NVCCFLAGS) -c $(<) -Xcompiler -fPIC -DPIC -o $(*D)/.libs/$(*F).o >/dev/null 2>&1 -	@# Generate a .d file, and change the target name in it from .o to .lo -	@$(NVCC) $(NVCCFLAGS) -M $(<) -odir $(*D) -o $(*D)/$(DEPDIR)/$(*F).d2 -	@sed '1s/\.o :/.lo :/' < $(*D)/$(DEPDIR)/$(*F).d2 > $(*D)/$(DEPDIR)/$(*F).d -	@rm -f $(*D)/$(DEPDIR)/$(*F).d2 +	$(NVCC) $(NVCCFLAGS) -c $(<) -Xcompiler -fPIC -DPIC -o $(*D)/.libs/$(*F).o +ifeq ($(gen_static_libs),yes) +	@$(NVCC) $(NVCCFLAGS) -c $(<) -o $*.o >/dev/null 2>&1 +endif +	@# Generate a .d file, with target name $*.lo +	@$(NVCC) $(NVCCFLAGS) -M $(<) -MT $(*F).lo -odir $(*D) -o $(*D)/$(DEPDIR)/$(*F).d +	@# Generate empty targets for all dependencies listed in the .d file. +	@# This mimics gcc's -MP option. +	@for x in `cat $(*D)/$(DEPDIR)/$(*F).d`; do if test a$$x != a: -a a$$x != a\\; then echo -e "\n$$x:\n" >> $(*D)/$(DEPDIR)/$(*F).d; fi; done  	@# Generate a fake libtool .lo file  	@echo "# $*.lo - a libtool object file" > $*.lo  	@echo "# Generated by" `./libtool --version | head -n 1` >> $*.lo @@ -308,7 +323,11 @@ ifeq ($(cuda),yes)  	@echo "pic_object='.libs/$(*F).o'" >> $*.lo  	@echo >> $*.lo  	@echo "# Name of the non-PIC object." >> $*.lo +ifeq ($(gen_static_libs),yes)  	@echo "non_pic_object='$(*F).o'" >> $*.lo +else +	@echo "non_pic_object=none" >> $*.lo +endif  	@# Remove generated .linkinfo file  	@rm -f $(*F).linkinfo  endif @@ -331,33 +350,33 @@ clean:  	rm -f $(addsuffix /*.d,$(DEPDIRS))  	rm -f $(addsuffix /*,$(LIBDIRS))  	rm -f $(TEST_OBJECTS) test.bin -	rm -fr ../../python/finalbuild/ -	rm -fr ../../python/build/ -	rm -f ../../python/astra/*.cpp -	rm -f ../../python/astra/*.c +	rm -fr python/finalbuild/ +	rm -fr python/build/ +	rm -f $(srcdir)/../../python/astra/*.cpp +	rm -f $(srcdir)/../../python/astra/*.c  distclean: clean -	rm -f config.guess config.sub ltmain.sh libtool install-sh +	rm -f $(srcdir)/config.guess $(srcdir)/config.sub $(srcdir)/ltmain.sh libtool $(srcdir)/install-sh  	rm -f config.log config.status -	rm -f aclocal.m4 -	rm -rf autom4te.cache -	rm -f configure Makefile +	rm -f $(srcdir)/aclocal.m4 +	rm -rf $(srcdir)/autom4te.cache +	rm -f $(srcdir)/configure Makefile  install: install-libraries install-matlab install-python  install-libraries: libastra.la -	./install-sh -m 755 -d @libdir@ -	./libtool --mode=install ./install-sh -m 644 libastra.la @libdir@ +	$(INSTALL_SH) -m 755 -d @libdir@ +	./libtool --mode=install $(INSTALL_SH) -m 644 libastra.la @libdir@  	./libtool --mode=finish @libdir@  ifeq ($(matlab),yes)  # TODO: This install location doesn't work well for /usr or /usr/local  install-matlab: $(MATLAB_MEX) -	./install-sh -m 755 -d @prefix@/matlab -	./install-sh -m 755 -d @prefix@/matlab/mex -	./install-sh -m 755 -d @prefix@/matlab/tools -	./install-sh -m 644 $(MATLAB_MEX) @prefix@/matlab/mex -	./install-sh -m 644 ../../matlab/tools/*.m @prefix@/matlab/tools +	$(INSTALL_SH) -m 755 -d @prefix@/matlab +	$(INSTALL_SH) -m 755 -d @prefix@/matlab/mex +	$(INSTALL_SH) -m 755 -d @prefix@/matlab/tools +	$(INSTALL_SH) -m 644 $(MATLAB_MEX) @prefix@/matlab/mex +	$(INSTALL_SH) -m 644 $(srcdir)/../../matlab/tools/*.m @prefix@/matlab/tools  # TODO: docs  else  install-matlab: @@ -366,11 +385,11 @@ 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/ +	$(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." @@ -381,18 +400,21 @@ install-python:  endif -Makefile: Makefile.in config.status +Makefile: $(srcdir)/Makefile.in config.status  	CONFIG_HEADERS= CONFIG_LINKS= CONFIG_FILES=$@ $(SHELL) ./config.status -config.status: configure +config.status: $(srcdir)/configure  	@echo "configure script has changed. Re-running it with last parameters"  	$(SHELL) ./config.status --recheck -configure: configure.ac +$(srcdir)/configure: $(srcdir)/configure.ac  	@echo "configure.ac has been changed. Regenerating configure script" -	$(SHELL) ./autogen.sh +	cd $(srcdir) && $(SHELL) ./autogen.sh  .PHONY: all mex test clean distclean install install-libraries  # don't remove intermediate files:  .SECONDARY: + +# disable all implicit built-in rules +.SUFFIXES: diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 684a4c5..630b08d 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -213,12 +213,19 @@ assert(LooseVersion(Cython.__version__)>=LooseVersion("0.13"))    fi    AC_MSG_RESULT(yes)    AC_MSG_CHECKING(for six module) -  ASTRA_TRY_PYTHON([import six]) +  ASTRA_TRY_PYTHON([import six],,HAVEPYTHON=no)    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) +  AC_MSG_CHECKING(for scipy module) +  ASTRA_TRY_PYTHON([import scipy],,HAVEPYTHON=no) +  if test x$HAVEPYTHON = xno; then +    AC_MSG_RESULT(no) +    AC_MSG_ERROR(You need the scipy module to use the ASTRA toolbox in Python) +  fi +  AC_MSG_RESULT(yes)  fi  AC_SUBST(HAVEPYTHON) @@ -236,6 +243,12 @@ esac  AC_SUBST(CPPFLAGS_OS) +# For some reason, some older versions of autoconf produce a config.status +# that disables all lines looking like VPATH=@srcdir@ +# (More recent autoconf fixes the too broad matching there.) +# We use a different variable name as a workaround. +VPATH_SRCDIR="$srcdir" +AC_SUBST(VPATH_SRCDIR)  # TODO: diff --git a/matlab/mex/astra_mex_direct_c.cpp b/matlab/mex/astra_mex_direct_c.cpp index 38b3f59..38b3f59 100755..100644 --- a/matlab/mex/astra_mex_direct_c.cpp +++ b/matlab/mex/astra_mex_direct_c.cpp diff --git a/python/conda/meta.yaml b/python/conda/meta.yaml index 41250dc..7e4679b 100644 --- a/python/conda/meta.yaml +++ b/python/conda/meta.yaml @@ -21,6 +21,7 @@ requirements:      - python      - cython >=0.13      - numpy +    - scipy      - six    run: | 
