From ba0895b5299512e5028429e9e0111ab9944899cc Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 26 Apr 2016 16:45:33 +0200 Subject: Add SIRT plugin --- build/linux/Makefile.in | 2 ++ 1 file changed, 2 insertions(+) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index f10f482..14027e1 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -399,8 +399,10 @@ ifeq ($(python),yes) install-python: py $(INSTALL_SH) -m 755 -d @prefix@/python $(INSTALL_SH) -m 755 -d @prefix@/python/astra + $(INSTALL_SH) -m 755 -d @prefix@/python/astra/plugins $(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/astra/plugins/*.py @prefix@/python/astra/plugins $(INSTALL_SH) -m 644 python/finalbuild/*.egg-info @prefix@/python/ @echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" @echo "To use ASTRA in Python, add @prefix@/python/ to your PYTHONPATH" -- cgit v1.2.3 From 64a48bea80b909311351dc3b1345a17c693ddb69 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Wed, 28 Sep 2016 14:58:41 +0200 Subject: Add experimental support for Octave Based on initial patch by @kalvdans. --- build/linux/Makefile.in | 51 +++++++++++++++++++++++++++++++++++++++++++++++- build/linux/configure.ac | 23 ++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) (limited to 'build') 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" -- cgit v1.2.3 From d93769add0fc322c051614d610f1aa645cb859da Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Mon, 21 Nov 2016 10:29:38 +0100 Subject: Add install-octave to .PHONY --- build/linux/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 076cfd1..50afc1c 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -474,7 +474,7 @@ $(srcdir)/configure: $(srcdir)/configure.ac @echo "configure.ac has been changed. Regenerating configure script" cd $(srcdir) && $(SHELL) ./autogen.sh -.PHONY: all mex test clean distclean install install-libraries py python-root-install install-python +.PHONY: all mex test clean distclean install install-libraries py python-root-install install-python install-octave # don't remove intermediate files: .SECONDARY: -- cgit v1.2.3 From 6282fbe29bd2a8594bbc589e3996030e882b84f5 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Mon, 21 Nov 2016 12:16:40 +0100 Subject: Show NVCCFLAGS help --- build/linux/configure.ac | 2 ++ 1 file changed, 2 insertions(+) (limited to 'build') diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 0d80cec..96be24c 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -141,6 +141,8 @@ if test x"$HAVECUDA" = xyes; then AC_MSG_RESULT([$NVCCARCHS]) fi +AC_ARG_VAR(NVCCFLAGS, [CUDA nvcc flags]) + AC_SUBST(HAVECUDA) AC_SUBST(LDFLAGS_CUDA) -- cgit v1.2.3 From fab3c9ab472f1044f8aaf5d08f398f08995ba338 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Mon, 21 Nov 2016 13:27:46 +0100 Subject: Separate python build and install steps --- build/linux/Makefile.in | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 50afc1c..865a936 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -309,14 +309,10 @@ endif ifeq ($(python),yes) py: libastra.la $(MKDIR) python/build - $(MKDIR) python/finalbuild # Note: setting CC to CXX is intentional. Python uses CC for compilation even if input is C++. - cd $(srcdir)/../../python; CXX="${CXX}" CC="${CXX}" 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 + cd $(srcdir)/../../python; CXX="${CXX}" CC="${CXX}" CPPFLAGS="${PYCPPFLAGS}" LDFLAGS="${PYLDFLAGS}" $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build -python-root-install: libastra.la - $(MKDIR) python/build +python-root-install: py # Note: setting CC to CXX is intentional. Python uses CC for compilation even if input is C++. cd $(srcdir)/../../python; CXX="${CXX}" CC="${CXX}" CPPFLAGS="${PYCPPFLAGS}" LDFLAGS="${PYLDFLAGS}" $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build install @@ -433,6 +429,11 @@ endif ifeq ($(python),yes) # TODO: This install location doesn't work well for /usr or /usr/local install-python: py + $(MKDIR) python/finalbuild + # Note: setting CC to CXX is intentional. Python uses CC for compilation even if input is C++. + cd $(srcdir)/../../python; CXX="${CXX}" CC="${CXX}" 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 $(INSTALL_SH) -m 755 -d @prefix@/python $(INSTALL_SH) -m 755 -d @prefix@/python/astra $(INSTALL_SH) -m 755 -d @prefix@/python/astra/plugins -- cgit v1.2.3 From 88ef7076c710c4482d923d1f8a33ec0dec031d7f Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Mon, 21 Nov 2016 16:59:34 +0100 Subject: Update tested cuda compute capabilities --- build/linux/configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'build') diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 96be24c..7ccc8f5 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -133,9 +133,9 @@ fi AC_ARG_WITH(cuda_compute, [[ --with-cuda-compute=archs comma separated list of CUDA compute models (optional)]],,) if test x"$HAVECUDA" = xyes; then AC_MSG_CHECKING([for nvcc archs]) - dnl 10 11 12 13 20 30 32 35 37 50 + dnl 10 11 12 13 20 21 30 32 35 37 50 52 53 60 61 if test x"$with_cuda_compute" = x; then - with_cuda_compute="10,12,20,30,35,50" + with_cuda_compute="20,30,35,50,60" fi ASTRA_FIND_NVCC_ARCHS([$with_cuda_compute],NVCCFLAGS_EXTRA,NVCCARCHS) AC_MSG_RESULT([$NVCCARCHS]) -- cgit v1.2.3 From 7e10c16eee71c608a1dba1dd2fec8471567f6b61 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Mon, 21 Nov 2016 17:00:50 +0100 Subject: Overhaul package installation There are now three ways of installing from configure/make: ./configure --with-install-type=prefix (default) libraries go into @libdir@ matlab tools/mex go into @datadir@/astra/matlab octave tools/mex go into @datadir@/astra/octave python module goes into site-packages ./configure --with-install-type=dir libraries go into @prefix@/lib matlab tools/mex go into @prefix@/matlab octave tools/mex go into @prefix@/octave python module goes into @prefix@/python ./configure --with-install-type=module matlab tools/mex go into @prefix@/matlab octave tools/mex go into @prefix@/octave python module goes into site-packages library is installed along with the matlab/octave/python module(s), with rpath --- build/linux/Makefile.in | 183 +++++++++++++++++++++++++++++------------------ build/linux/configure.ac | 12 +++- 2 files changed, 125 insertions(+), 70 deletions(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 865a936..1c7088e 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -1,12 +1,19 @@ +install_type=@INSTALL_TYPE@ + cuda=@HAVECUDA@ matlab=@HAVEMATLAB@ python=@HAVEPYTHON@ boostutf=@HAVEBOOSTUTF@ - MATLAB_ROOT=@MATLAB_ROOT@ octave=@HAVEOCTAVE@ +MKDIR=mkdir -p +CXX=@CXX@ +LD=@CXX@ +SHELL=@SHELL@ +INSTALL_SH=$(SHELL) $(srcdir)/install-sh + TARGETS=libastra.la ifeq ($(matlab),yes) @@ -25,6 +32,7 @@ all: $(TARGETS) prefix=@prefix@ exec_prefix=@exec_prefix@ +datarootdir=@datarootdir@ srcdir=@srcdir@ abs_top_builddir=@abs_top_builddir@ @@ -43,6 +51,8 @@ LDFLAGS+=-g CPPFLAGS+=@CPPFLAGS_OS@ +BOOSTUTF_LIBS=@LIBS_BOOSTUTF@ + ifeq ($(cuda),yes) CPPFLAGS += @CPPFLAGS_CUDA@ -DASTRA_CUDA NVCCFLAGS += @NVCCFLAGS_EXTRA@ @CPPFLAGS_CUDA@ -I$(srcdir)/../.. -I$(srcdir)/../../include -DASTRA_CUDA @@ -51,58 +61,38 @@ 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) +# TODO: Do we also want -fopenmp for octave? CPPFLAGS+=-I$(MATLAB_ROOT)/extern/include -DMATLAB_MEX_FILE CXXFLAGS+=-fopenmp LDFLAGS+=-fopenmp endif +# MODLDFLAGS are the base LDFLAGS for matlab, octave, python modules +MODLDFLAGS=$(LDFLAGS) -L$(abs_top_builddir)/.libs +ifeq ($(install_type),module) +MODLDFLAGS+=-Wl,-rpath,'\$$ORIGIN' +endif + ifeq ($(python),yes) PYTHON = @PYTHON@ -PYLIBDIR = $(shell $(PYTHON) -c 'from distutils.sysconfig import get_config_var; import six; six.print_(get_config_var("LIBDIR"))') -PYINCDIR = $(shell $(PYTHON) -c 'from distutils.sysconfig import get_python_inc; import six; six.print_(get_python_inc())') +PYLIBDIR := $(shell $(PYTHON) -c 'from distutils.sysconfig import get_config_var; import six; six.print_(get_config_var("LIBDIR"))') +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 += -I../include -PYLDFLAGS = $(LDFLAGS) -PYLDFLAGS += -L$(abs_top_builddir)/.libs +PYLDFLAGS = $(MODLDFLAGS) 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= - -BOOSTUTF_LIBS=@LIBS_BOOSTUTF@ - - -CPPFLAGS+=$(BOOST_CPPFLAGS) -LDFLAGS+=$(BOOST_LDFLAGS) - - -MKDIR=mkdir -p -CXX=@CXX@ -LD=@CXX@ -SHELL=@SHELL@ -INSTALL_SH=$(SHELL) $(srcdir)/install-sh - ifeq ($(matlab),yes) MEXFLAGS = -cxx -MEXLDFLAGS='$$LDFLAGS $(LDFLAGS)' -MEXLIBS = -L.libs -lut +MEXLDFLAGS=\$$LDFLAGS $(MODLDFLAGS) +MEXLIBS = -lut MEXSUFFIX = @MEXSUFFIX@ MEX = @MEX@ @@ -111,13 +101,23 @@ MEXFLAGS += -DASTRA_CUDA endif ifeq ($(python),yes) -MEXPYLDFLAGS='$$LDFLAGS $(LDFLAGS) -L$(PYLIBDIR)' +# TODO: Why PYLIBDIR? +MEXPYLDFLAGS=\$$LDFLAGS $(MODLDFLAGS) -L$(PYLIBDIR) MEXPYLIBS=$(MEXLIBS) -l$(PYLIBVER) endif endif -LIBDIR=/usr/local/lib + +ifeq ($(octave),yes) +OCTLDFLAGS:=$(MODLDFLAGS) +CPPFLAGS += @OCTAVE_CPPFLAGS@ +ifeq ($(cuda),yes) +OCTFLAGS=-DASTRA_CUDA +else +OCTFLAGS= +endif +endif DEPDIR=.deps @@ -293,28 +293,28 @@ DEPDIRS = $(addsuffix $(DEPDIR),$(OBJECT_DIRS)) -include $(wildcard $(addsuffix /*.d,$(DEPDIRS))) LIBDIRS = $(addsuffix .libs,./ src/ cuda/2d/ cuda/3d/) +SONAME=$(shell . ${abs_top_builddir}/libastra.la; echo $$dlname) ifeq ($(matlab),yes) mex: $(MATLAB_MEX) %.$(MEXSUFFIX): %.o $(MATLAB_CXX_OBJECTS) libastra.la - $(MEX) LDFLAGS=$(MEXLDFLAGS) $(MEXFLAGS) $(LIBS) $(MEXLIBS) -lastra -output $* $*.o $(MATLAB_CXX_OBJECTS) + $(MEX) LDFLAGS="$(MEXLDFLAGS)" $(MEXFLAGS) $(LIBS) $(MEXLIBS) -lastra -output $* $*.o $(MATLAB_CXX_OBJECTS) ifeq ($(python),yes) matlab/mex/astra_mex_plugin_c.$(MEXSUFFIX): matlab/mex/astra_mex_plugin_c.o $(MATLAB_CXX_OBJECTS) libastra.la - $(MEX) LDFLAGS=$(MEXPYLDFLAGS) $(MEXFLAGS) $(LIBS) $(MEXPYLIBS) -lastra -output matlab/mex/astra_mex_plugin_c $< $(MATLAB_CXX_OBJECTS) + $(MEX) LDFLAGS="$(MEXPYLDFLAGS)" $(MEXFLAGS) $(LIBS) $(MEXPYLIBS) -lastra -output matlab/mex/astra_mex_plugin_c $< $(MATLAB_CXX_OBJECTS) endif endif ifeq ($(python),yes) py: libastra.la $(MKDIR) python/build - # Note: setting CC to CXX is intentional. Python uses CC for compilation even if input is C++. - cd $(srcdir)/../../python; CXX="${CXX}" CC="${CXX}" CPPFLAGS="${PYCPPFLAGS}" LDFLAGS="${PYLDFLAGS}" $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build - -python-root-install: py - # Note: setting CC to CXX is intentional. Python uses CC for compilation even if input is C++. - cd $(srcdir)/../../python; CXX="${CXX}" CC="${CXX}" CPPFLAGS="${PYCPPFLAGS}" LDFLAGS="${PYLDFLAGS}" $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build install +# TODO: Avoid writing into source dir + ln -s $(abs_top_builddir)/.libs/$(SONAME) $(srcdir)/../../python/astra +# Note: setting CC to CXX is intentional. Python uses CC for compilation even if input is C++. + cd $(srcdir)/../../python; ASTRA_INSTALL_LIBRARY_AS_DATA=$(PYPKGDATA) CXX="${CXX}" CC="${CXX}" CPPFLAGS="${PYCPPFLAGS}" LDFLAGS='${PYLDFLAGS}' $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build + rm $(srcdir)/../../python/astra/$(SONAME) endif @@ -327,7 +327,7 @@ oct: $(OCTAVE_MEX) endif libastra.la: $(ALL_OBJECTS) - ./libtool --mode=link --tag=CXX $(LD) -rpath $(LIBDIR) -o $@ $(LDFLAGS) $(LIBS) $+ + ./libtool --mode=link --tag=CXX $(LD) -rpath @libdir@ -o $@ $(LDFLAGS) $(LIBS) $+ %.o: %.cpp $(MKDIR) $(*D)/$(DEPDIR) @@ -406,32 +406,64 @@ distclean: clean rm -rf $(srcdir)/autom4te.cache rm -f $(srcdir)/configure Makefile -install: install-libraries install-matlab install-python install-octave - install-libraries: libastra.la $(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 $(srcdir)/../../matlab/tools/*.m @prefix@/matlab/tools -# TODO: docs + +# ------------------------ +# INSTALLATION +# ------------------------ + +ifeq ($(install_type),prefix) +# libraries into @libdir@, python into site-packages, mex into @datadir@ +install: install-libraries install-matlab python-root-install install-octave + +PYPKGDATA= +MATLABBASE=@datadir@/astra/matlab +OCTAVEBASE=@datadir@/astra/octave +endif + +ifeq ($(install_type),dir) +# everything into @prefix@ +install: install-libraries install-matlab install-python install-octave + +PYPKGDATA= +MATLABBASE=@prefix@/matlab +OCTAVEBASE=@prefix@/octave +PYTHONBASE=@prefix@/python +endif + +ifeq ($(install_type),module) +# python into site-packages, mex into @datadir@ +# library copied into python/mex directories +# modules built with rpath=$ORIGIN +install: install-matlab python-root-install install-octave + +PYPKGDATA=$(SONAME) +MATLABBASE=@prefix@/matlab +OCTAVEBASE=@prefix@/octave + +install-matlab-so: libastra.la + $(INSTALL_SH) -m 755 -d $(MATLABBASE)/mex + $(INSTALL_SH) -m 644 $(abs_top_builddir)/.libs/$(SONAME) $(MATLABBASE)/mex +install-octave-so: libastra.la + $(INSTALL_SH) -m 755 -d $(OCTAVEBASE)/mex + $(INSTALL_SH) -m 644 $(abs_top_builddir)/.libs/$(SONAME) $(OCTAVEBASE)/mex else -install-matlab: +install-matlab-so: +install-octave-so: endif + + ifeq ($(python),yes) # TODO: This install location doesn't work well for /usr or /usr/local install-python: py $(MKDIR) python/finalbuild # Note: setting CC to CXX is intentional. Python uses CC for compilation even if input is C++. - cd $(srcdir)/../../python; CXX="${CXX}" CC="${CXX}" CPPFLAGS="${PYCPPFLAGS}" LDFLAGS="${PYLDFLAGS}" $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build install \ + cd $(srcdir)/../../python; ASTRA_INSTALL_LIBRARY_AS_DATA=$(PYPKGDATA) CXX="${CXX}" CC="${CXX}" 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 $(INSTALL_SH) -m 755 -d @prefix@/python @@ -441,23 +473,36 @@ install-python: py $(INSTALL_SH) -m 644 python/finalbuild/astra/*.py @prefix@/python/astra $(INSTALL_SH) -m 644 python/finalbuild/astra/plugins/*.py @prefix@/python/astra/plugins $(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 + +python-root-install: py +# Note: setting CC to CXX is intentional. Python uses CC for compilation even if input is C++. + cd $(srcdir)/../../python; ASTRA_INSTALL_LIBRARY_AS_DATA=$(PYPKGDATA) CXX="${CXX}" CC="${CXX}" CPPFLAGS="${PYCPPFLAGS}" LDFLAGS="${PYLDFLAGS}" $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build install else +python-root-install: install-python: endif +ifeq ($(matlab),yes) +install-matlab: $(MATLAB_MEX) install-matlab-so + $(INSTALL_SH) -m 755 -d $(MATLABBASE) + $(INSTALL_SH) -m 755 -d $(MATLABBASE)/mex + $(INSTALL_SH) -m 755 -d $(MATLABBASE)/tools + $(INSTALL_SH) -m 644 $(MATLAB_MEX) $(MATLABBASE)/mex + $(INSTALL_SH) -m 644 $(srcdir)/../../matlab/tools/*.m $(MATLABBASE)/tools +# TODO: docs +else +install-matlab: +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 +install-octave: $(OCTAVE_MEX) install-octave-so + $(INSTALL_SH) -m 755 -d $(OCTAVEBASE) + $(INSTALL_SH) -m 755 -d $(OCTAVEBASE)/mex + $(INSTALL_SH) -m 755 -d $(OCTAVEBASE)/tools + $(INSTALL_SH) -m 644 $(OCTAVE_MEX) $(OCTAVEBASE)/mex + $(INSTALL_SH) -m 644 $(srcdir)/../../matlab/tools/*.m $(OCTAVEBASE)/tools # TODO: docs else install-octave: @@ -475,7 +520,7 @@ $(srcdir)/configure: $(srcdir)/configure.ac @echo "configure.ac has been changed. Regenerating configure script" cd $(srcdir) && $(SHELL) ./autogen.sh -.PHONY: all mex test clean distclean install install-libraries py python-root-install install-python install-octave +.PHONY: all mex test clean distclean install install-libraries py python-root-install install-python install-octave install-matlab-so install-octave-so # don't remove intermediate files: .SECONDARY: diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 7ccc8f5..26fa215 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -24,7 +24,7 @@ dnl dnl ----------------------------------------------------------------------- dnl $Id$ -AC_INIT(astra_toolbox, 1.7.1) +AC_INIT(astra, 1.7.1) AC_CONFIG_SRCDIR([Makefile.in]) LT_INIT([disable-static]) @@ -274,6 +274,15 @@ AC_SUBST(CPPFLAGS_OS) VPATH_SRCDIR="$srcdir" AC_SUBST(VPATH_SRCDIR) + +# Installation type +AC_ARG_WITH(install-type, [[ --with-install-type=prefix|module|dir type of installation (default prefix)]],,with_install_type=prefix) + +INSTALL_TYPE=$with_install_type +AC_SUBST(INSTALL_TYPE) + + + # TODO: # Detection of tools: @@ -299,4 +308,5 @@ echo " Octave : $HAVEOCTAVE" echo " Python : $HAVEPYTHON" echo echo " prefix : $prefix" +echo " install: $with_install_type" echo -- cgit v1.2.3 From bb01a88b5176c13c6881489887ec789dd10849a0 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 22 Nov 2016 09:45:51 +0100 Subject: Build astra_mex_plugin for octave --- build/linux/Makefile.in | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 1c7088e..ecc3903 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -117,6 +117,12 @@ OCTFLAGS=-DASTRA_CUDA else OCTFLAGS= endif +ifeq ($(python),yes) +OCTPYLIBS=-l$(PYLIBVER) +else +OCTPYLIBS= +endif + endif DEPDIR=.deps @@ -270,10 +276,6 @@ MATLAB_MEX=\ matlab/mex/astra_mex_data3d_c.$(MEXSUFFIX) \ matlab/mex/astra_mex_direct_c.$(MEXSUFFIX) -ifeq ($(python),yes) -MATLAB_MEX+=matlab/mex/astra_mex_plugin_c.$(MEXSUFFIX) -endif - OCTAVE_CXX_OBJECTS=\ matlab/mex/octave_support.o @@ -288,6 +290,12 @@ OCTAVE_MEX=\ matlab/mex/astra_mex_data3d_c.mex \ matlab/mex/astra_mex_direct_c.mex +ifeq ($(python),yes) +MATLAB_MEX+=matlab/mex/astra_mex_plugin_c.$(MEXSUFFIX) +OCTAVE_MEX+=matlab/mex/astra_mex_plugin_c.mex +endif + + OBJECT_DIRS = src/ tests/ cuda/2d/ cuda/3d/ matlab/mex/ ./ DEPDIRS = $(addsuffix $(DEPDIR),$(OBJECT_DIRS)) -include $(wildcard $(addsuffix /*.d,$(DEPDIRS))) @@ -323,7 +331,12 @@ 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) + mkoctfile --mex $(OCTFLAGS) $(OCTLDFLAGS) $(LIBS) -lastra --output $* $*.o $(MATLAB_CXX_OBJECTS) $(OCTAVE_CXX_OBJECTS) + +ifeq ($(python),yes) +matlab/mex/astra_mex_plugin_c.mex: matlab/mex/astra_mex_plugin_c.o $(MATLAB_CXX_OBJECTS) $(OCTAVE_CXX_OBJECTS) libastra.la + mkoctfile --mex $(OCTFLAGS) $(OCTLDFLAGS) $(LIBS) $(OCTPYLIBS) -lastra --output matlab/mex/astra_mex_plugin_c $< $(MATLAB_CXX_OBJECTS) $(OCTAVE_CXX_OBJECTS) +endif endif libastra.la: $(ALL_OBJECTS) -- cgit v1.2.3 From a71a219ae5e0faded0c6161e17d8e17d39b01883 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 22 Nov 2016 09:46:05 +0100 Subject: Disable octave interface by default --- build/linux/configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'build') diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 26fa215..785b698 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -179,8 +179,8 @@ AC_SUBST(HAVEMATLAB) # octave -AC_ARG_ENABLE(octave, [[ --disable-octave disable Octave support]]) -if test x"$enable_octave" != xno; then +AC_ARG_ENABLE(octave, [[ --enable-octave enable Octave support]]) +if test x"$enable_octave" = xyes; then AC_PATH_PROG([HAVEOCTAVE], [octave-config], [no], [$PATH]) AC_MSG_CHECKING([for octave]) if test x"HAVEOCTAVE" != xno -a $HAVEMATLAB = yes; then -- cgit v1.2.3 From e69de5d1f5c80c58f9351617bb9ea117fcc6cad3 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 22 Nov 2016 15:24:22 +0100 Subject: Clean up linking against libpython for oct/mex --- build/linux/Makefile.in | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index ecc3903..d760a8e 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -83,6 +83,7 @@ CPPFLAGS += -DASTRA_PYTHON -I$(PYINCDIR) PYCPPFLAGS := $(CPPFLAGS) PYCPPFLAGS += -I../include PYLDFLAGS = $(MODLDFLAGS) +MODPYLIBS=-l$(PYLIBVER) endif # This is below where PYCPPFLAGS copies CPPFLAGS. The python code is built @@ -100,12 +101,6 @@ ifeq ($(cuda),yes) MEXFLAGS += -DASTRA_CUDA endif -ifeq ($(python),yes) -# TODO: Why PYLIBDIR? -MEXPYLDFLAGS=\$$LDFLAGS $(MODLDFLAGS) -L$(PYLIBDIR) -MEXPYLIBS=$(MEXLIBS) -l$(PYLIBVER) -endif - endif @@ -117,14 +112,10 @@ OCTFLAGS=-DASTRA_CUDA else OCTFLAGS= endif -ifeq ($(python),yes) -OCTPYLIBS=-l$(PYLIBVER) -else -OCTPYLIBS= -endif endif + DEPDIR=.deps BASE_OBJECTS=\ @@ -311,7 +302,7 @@ mex: $(MATLAB_MEX) ifeq ($(python),yes) matlab/mex/astra_mex_plugin_c.$(MEXSUFFIX): matlab/mex/astra_mex_plugin_c.o $(MATLAB_CXX_OBJECTS) libastra.la - $(MEX) LDFLAGS="$(MEXPYLDFLAGS)" $(MEXFLAGS) $(LIBS) $(MEXPYLIBS) -lastra -output matlab/mex/astra_mex_plugin_c $< $(MATLAB_CXX_OBJECTS) + $(MEX) LDFLAGS="$(MEXLDFLAGS)" $(MEXFLAGS) $(LIBS) $(MEXLIBS) $(MODPYLIBS) -lastra -output matlab/mex/astra_mex_plugin_c $< $(MATLAB_CXX_OBJECTS) endif endif @@ -335,7 +326,7 @@ oct: $(OCTAVE_MEX) ifeq ($(python),yes) matlab/mex/astra_mex_plugin_c.mex: matlab/mex/astra_mex_plugin_c.o $(MATLAB_CXX_OBJECTS) $(OCTAVE_CXX_OBJECTS) libastra.la - mkoctfile --mex $(OCTFLAGS) $(OCTLDFLAGS) $(LIBS) $(OCTPYLIBS) -lastra --output matlab/mex/astra_mex_plugin_c $< $(MATLAB_CXX_OBJECTS) $(OCTAVE_CXX_OBJECTS) + mkoctfile --mex $(OCTFLAGS) $(OCTLDFLAGS) $(LIBS) $(MODPYLIBS) -lastra --output matlab/mex/astra_mex_plugin_c $< $(MATLAB_CXX_OBJECTS) $(OCTAVE_CXX_OBJECTS) endif endif -- cgit v1.2.3 From bc03dad9393d6fd9aad1ba22c98c223edecc918b Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 22 Nov 2016 16:25:24 +0100 Subject: Show installation paths at end of configure --- build/linux/configure.ac | 49 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) (limited to 'build') diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 785b698..e562e77 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -302,11 +302,46 @@ AC_OUTPUT echo echo "Summary of ASTRA Toolbox build options:" -echo " CUDA : $HAVECUDA" -echo " Matlab : $HAVEMATLAB" -echo " Octave : $HAVEOCTAVE" -echo " Python : $HAVEPYTHON" -echo -echo " prefix : $prefix" -echo " install: $with_install_type" +echo " CUDA : $HAVECUDA" +echo " Matlab: $HAVEMATLAB" +echo " Octave: $HAVEOCTAVE" +echo " Python: $HAVEPYTHON" echo +echo "Installation type: $with_install_type" +case $with_install_type in + prefix) + echo " Library : "$(eval echo `eval echo $libdir`) + if test $HAVEMATLAB = yes; then + echo " Matlab files: "$(eval echo `eval echo $datadir`)"/astra/matlab" + fi + if test $HAVEOCTAVE = yes; then + echo " Octave files: "$(eval echo `eval echo $datadir`)"/astra/octave" + fi + if test $HAVEPYTHON = yes; then + echo " Python files to site-packages" + fi + ;; + dir) + echo " Library : "$(eval echo `eval echo $libdir`) + if test $HAVEMATLAB = yes; then + echo " Matlab files: $prefix/matlab" + fi + if test $HAVEOCTAVE = yes; then + echo " Octave files: $prefix/octave" + fi + if test $HAVEPYTHON = yes; then + echo " Python files: $prefix/python" + fi + ;; + module) + echo " Library into Matlab/Octave/Python module directories" + if test $HAVEMATLAB = yes; then + echo " Matlab files: $prefix/matlab" + fi + if test $HAVEOCTAVE = yes; then + echo " Octave files: $prefix/octave" + fi + if test $HAVEPYTHON = yes; then + echo " Python files to site-packages" + fi +esac -- cgit v1.2.3 From bbda2ad4d12a839701737a98e210cef489d62177 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 22 Nov 2016 17:26:27 +0100 Subject: Avoid six for PYINCDIR in Makefile.in --- build/linux/Makefile.in | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index d760a8e..d248947 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -76,8 +76,7 @@ endif ifeq ($(python),yes) PYTHON = @PYTHON@ -PYLIBDIR := $(shell $(PYTHON) -c 'from distutils.sysconfig import get_config_var; import six; six.print_(get_config_var("LIBDIR"))') -PYINCDIR := $(shell $(PYTHON) -c 'from distutils.sysconfig import get_python_inc; import six; six.print_(get_python_inc())') +PYINCDIR := $(shell $(PYTHON) -c 'from __future__ import print_function; from distutils.sysconfig import get_python_inc; print(get_python_inc())') PYLIBVER = `basename $(PYINCDIR)` CPPFLAGS += -DASTRA_PYTHON -I$(PYINCDIR) PYCPPFLAGS := $(CPPFLAGS) -- cgit v1.2.3 From 19e79122e3f58f22e96a003cc494e38ff255bb0d Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 22 Nov 2016 17:30:08 +0100 Subject: Rename python-root-install to install-python-site-packages --- build/linux/Makefile.in | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index d248947..0ca136a 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -421,7 +421,7 @@ install-libraries: libastra.la ifeq ($(install_type),prefix) # libraries into @libdir@, python into site-packages, mex into @datadir@ -install: install-libraries install-matlab python-root-install install-octave +install: install-libraries install-matlab install-python-site-packages install-octave PYPKGDATA= MATLABBASE=@datadir@/astra/matlab @@ -442,7 +442,7 @@ ifeq ($(install_type),module) # python into site-packages, mex into @datadir@ # library copied into python/mex directories # modules built with rpath=$ORIGIN -install: install-matlab python-root-install install-octave +install: install-matlab install-python-site-packages install-octave PYPKGDATA=$(SONAME) MATLABBASE=@prefix@/matlab @@ -478,11 +478,11 @@ install-python: py $(INSTALL_SH) -m 644 python/finalbuild/*.egg-info @prefix@/python/ # TODO: docs -python-root-install: py +install-python-site-packages: py # Note: setting CC to CXX is intentional. Python uses CC for compilation even if input is C++. cd $(srcdir)/../../python; ASTRA_INSTALL_LIBRARY_AS_DATA=$(PYPKGDATA) CXX="${CXX}" CC="${CXX}" CPPFLAGS="${PYCPPFLAGS}" LDFLAGS="${PYLDFLAGS}" $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build install else -python-root-install: +install-python-site-packages: install-python: endif @@ -523,7 +523,7 @@ $(srcdir)/configure: $(srcdir)/configure.ac @echo "configure.ac has been changed. Regenerating configure script" cd $(srcdir) && $(SHELL) ./autogen.sh -.PHONY: all mex test clean distclean install install-libraries py python-root-install install-python install-octave install-matlab-so install-octave-so +.PHONY: all mex test clean distclean install install-libraries py install-python-site-packages install-python install-octave install-matlab-so install-octave-so # don't remove intermediate files: .SECONDARY: -- cgit v1.2.3 From e72b97ccd734c8bc8c4cb3cbedbb053fb0cd0849 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 22 Nov 2016 17:30:23 +0100 Subject: Remove resolved TODO --- build/linux/Makefile.in | 1 - 1 file changed, 1 deletion(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 0ca136a..d1ce5fb 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -462,7 +462,6 @@ endif ifeq ($(python),yes) -# TODO: This install location doesn't work well for /usr or /usr/local install-python: py $(MKDIR) python/finalbuild # Note: setting CC to CXX is intentional. Python uses CC for compilation even if input is C++. -- cgit v1.2.3 From 496d07d50118bd080e573686f65ed16e39be8f5b Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Wed, 23 Nov 2016 10:54:36 +0100 Subject: Make shared objects 755 --- build/linux/Makefile.in | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index d1ce5fb..ae43afa 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -450,10 +450,10 @@ OCTAVEBASE=@prefix@/octave install-matlab-so: libastra.la $(INSTALL_SH) -m 755 -d $(MATLABBASE)/mex - $(INSTALL_SH) -m 644 $(abs_top_builddir)/.libs/$(SONAME) $(MATLABBASE)/mex + $(INSTALL_SH) -m 755 $(abs_top_builddir)/.libs/$(SONAME) $(MATLABBASE)/mex install-octave-so: libastra.la $(INSTALL_SH) -m 755 -d $(OCTAVEBASE)/mex - $(INSTALL_SH) -m 644 $(abs_top_builddir)/.libs/$(SONAME) $(OCTAVEBASE)/mex + $(INSTALL_SH) -m 755 $(abs_top_builddir)/.libs/$(SONAME) $(OCTAVEBASE)/mex else install-matlab-so: install-octave-so: @@ -471,7 +471,7 @@ install-python: py $(INSTALL_SH) -m 755 -d @prefix@/python $(INSTALL_SH) -m 755 -d @prefix@/python/astra $(INSTALL_SH) -m 755 -d @prefix@/python/astra/plugins - $(INSTALL_SH) -m 644 python/finalbuild/astra/*.so @prefix@/python/astra + $(INSTALL_SH) -m 755 python/finalbuild/astra/*.so @prefix@/python/astra $(INSTALL_SH) -m 644 python/finalbuild/astra/*.py @prefix@/python/astra $(INSTALL_SH) -m 644 python/finalbuild/astra/plugins/*.py @prefix@/python/astra/plugins $(INSTALL_SH) -m 644 python/finalbuild/*.egg-info @prefix@/python/ @@ -490,7 +490,7 @@ install-matlab: $(MATLAB_MEX) install-matlab-so $(INSTALL_SH) -m 755 -d $(MATLABBASE) $(INSTALL_SH) -m 755 -d $(MATLABBASE)/mex $(INSTALL_SH) -m 755 -d $(MATLABBASE)/tools - $(INSTALL_SH) -m 644 $(MATLAB_MEX) $(MATLABBASE)/mex + $(INSTALL_SH) -m 755 $(MATLAB_MEX) $(MATLABBASE)/mex $(INSTALL_SH) -m 644 $(srcdir)/../../matlab/tools/*.m $(MATLABBASE)/tools # TODO: docs else @@ -503,7 +503,7 @@ install-octave: $(OCTAVE_MEX) install-octave-so $(INSTALL_SH) -m 755 -d $(OCTAVEBASE) $(INSTALL_SH) -m 755 -d $(OCTAVEBASE)/mex $(INSTALL_SH) -m 755 -d $(OCTAVEBASE)/tools - $(INSTALL_SH) -m 644 $(OCTAVE_MEX) $(OCTAVEBASE)/mex + $(INSTALL_SH) -m 755 $(OCTAVE_MEX) $(OCTAVEBASE)/mex $(INSTALL_SH) -m 644 $(srcdir)/../../matlab/tools/*.m $(OCTAVEBASE)/tools # TODO: docs else -- cgit v1.2.3 From 775c750552576299b3d232298f8037fe813bdc51 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Fri, 18 Nov 2016 11:57:20 +0100 Subject: Remove unused Cuda.rules file --- build/Cuda.rules | 358 ------------------------------------------------------- 1 file changed, 358 deletions(-) delete mode 100644 build/Cuda.rules (limited to 'build') diff --git a/build/Cuda.rules b/build/Cuda.rules deleted file mode 100644 index 733aa1f..0000000 --- a/build/Cuda.rules +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- cgit v1.2.3 From b72eaca5e13bb239aec8a911979465f2db9b4691 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Fri, 18 Nov 2016 12:01:15 +0100 Subject: Switch to CUDA 8.0 --- build/msvc/gen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'build') diff --git a/build/msvc/gen.py b/build/msvc/gen.py index cc69a62..8fbfaa0 100644 --- a/build/msvc/gen.py +++ b/build/msvc/gen.py @@ -567,7 +567,7 @@ def write_project11_start(P, F): print(' ', file=F) print(' ', file=F) if "mex" not in P["name"]: - print(' ', file=F) + print(' ', file=F) print(' ', file=F) for c in configs: print(''' ''' % (c.name(), ), file=F) @@ -614,7 +614,7 @@ def write_project11_end(P, F): print(' ', file=F) print(' ', file=F) if "mex" not in P["name"]: - print(' ', file=F) + print(' ', file=F) print(' ', file=F) print('', end="", file=F) -- cgit v1.2.3 From d1651c8f753586d1c2f58fcff8531684392f98ff Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Fri, 18 Nov 2016 12:12:03 +0100 Subject: Update CUDA archs --- build/msvc/gen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'build') diff --git a/build/msvc/gen.py b/build/msvc/gen.py index 8fbfaa0..db44c77 100644 --- a/build/msvc/gen.py +++ b/build/msvc/gen.py @@ -690,7 +690,7 @@ def write_main_project11(): else: print(' 32', file=F) print(' true', file=F) - print(' compute_20,sm_20;compute_30,sm_30;compute_30,sm_35;compute_30,compute_30', file=F) + print(' compute_20,sm_20;compute_30,sm_30;compute_35,sm_35;compute_50,sm_50;compute_60,sm_60;compute_60,compute_60', file=F) print(' ', file=F) print(' ', file=F) write_project11_end(P, F) -- cgit v1.2.3 From 57efb1157d06150733a651dc40b8702941e30d3c Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Fri, 18 Nov 2016 12:12:51 +0100 Subject: Update gen.py for VS2015 --- build/msvc/gen.py | 117 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 78 insertions(+), 39 deletions(-) (limited to 'build') diff --git a/build/msvc/gen.py b/build/msvc/gen.py index db44c77..8a40c45 100644 --- a/build/msvc/gen.py +++ b/build/msvc/gen.py @@ -12,26 +12,28 @@ siguid = "2150E333-8FDC-42A3-9474-1A3956D46DE8" # project group # import uuid # uuid.uuid4().__str__().upper() -def create_mex_project(name, uuid11, uuid09): - return { "type": vcppguid, "name": name, "file11": "matlab\\mex\\" + name + "_vc11.vcxproj", "file09": "matlab\\mex\\" + name + "_vc09.vcproj", "uuid11": uuid11, "uuid09": uuid09, "files": [] } +def create_mex_project(name, uuid14, uuid11, uuid09): + return { "type": vcppguid, "name": name, "file14": "matlab\\mex\\" + name + "_vc14.vcxproj", "file11": "matlab\\mex\\" + name + "_vc11.vcxproj", "file09": "matlab\\mex\\" + name + "_vc09.vcproj", "uuid14": uuid14, "uuid11": uuid11, "uuid09": uuid09, "files": [] } -P_astra = { "type": vcppguid, "name": "astra_vc11", "file11": "astra_vc11.vcxproj", "file09": "astra_vc09.vcproj", "uuid11": "BE9F1326-527C-4284-AE2C-D1E25D539CEA", "uuid09": "12926444-6723-46A8-B388-12E65E0577FA" } +P_astra = { "type": vcppguid, "name": "astra_vc11", "file14": "astra_vc14.vcxproj", "file11": "astra_vc11.vcxproj", "file09": "astra_vc09.vcproj", "uuid14": "DABD9D82-609E-4C71-B1CA-A41B07495290", "uuid11": "BE9F1326-527C-4284-AE2C-D1E25D539CEA", "uuid09": "12926444-6723-46A8-B388-12E65E0577FA" } -P0 = create_mex_project("astra_mex", "3FDA35E0-0D54-4663-A3E6-5ABA96F32221", "3FDA35E0-0D54-4663-A3E6-5ABA96F32221") +P0 = create_mex_project("astra_mex", "6FDF72C4-A855-4F1C-A401-6500040B5E28", "3FDA35E0-0D54-4663-A3E6-5ABA96F32221", "3FDA35E0-0D54-4663-A3E6-5ABA96F32221") -P1 = create_mex_project("astra_mex_algorithm", "056BF7A9-294D-487C-8CC3-BE629077CA94", "056BF7A9-294D-487C-8CC3-BE629077CA94") -P2 = create_mex_project("astra_mex_data2d", "E4092269-B19C-46F7-A84E-4F146CC70E44", "E4092269-B19C-46F7-A84E-4F146CC70E44") -P3 = create_mex_project("astra_mex_data3d", "0BEC029B-0929-4BF9-BD8B-9C9806A52065", "0BEC029B-0929-4BF9-BD8B-9C9806A52065") -P4 = create_mex_project("astra_mex_matrix", "9D041710-2119-4230-BCF2-5FBE753FDE49", "9D041710-2119-4230-BCF2-5FBE753FDE49") -P5 = create_mex_project("astra_mex_projector", "4DD6056F-8EEE-4C9A-B2A9-923F01A32E97", "4DD6056F-8EEE-4C9A-B2A9-923F01A32E97") -P6 = create_mex_project("astra_mex_projector3d", "F94CCD79-AA11-42DF-AC8A-6C9D2238A883", "F94CCD79-AA11-42DF-AC8A-6C9D2238A883") -P7 = create_mex_project("astra_mex_log", "03B833F5-4FD6-4FBE-AAF4-E3305CD56D2E", "CA2840B3-DA68-41B5-AC57-F5DFD20ED8F8") -P8 = create_mex_project("astra_mex_direct", "0F68F4E2-BE1B-4A9A-B101-AECF4C069CC7", "85FE09A6-FA49-4314-A2B1-59D77C7442A8") +P1 = create_mex_project("astra_mex_algorithm", "CE5EF874-830C-4C10-8651-CCA2A34ED9E4", "056BF7A9-294D-487C-8CC3-BE629077CA94", "056BF7A9-294D-487C-8CC3-BE629077CA94") +P2 = create_mex_project("astra_mex_data2d", "D2CDCDB3-7AD9-4853-8D87-BDB1DAD9C9C1", "E4092269-B19C-46F7-A84E-4F146CC70E44", "E4092269-B19C-46F7-A84E-4F146CC70E44") +P3 = create_mex_project("astra_mex_data3d", "2A7084C6-62ED-4235-85F4-094C17689DEB", "0BEC029B-0929-4BF9-BD8B-9C9806A52065", "0BEC029B-0929-4BF9-BD8B-9C9806A52065") +P4 = create_mex_project("astra_mex_matrix", "6BFA8857-37EB-4E43-A97C-B860E21599F5", "9D041710-2119-4230-BCF2-5FBE753FDE49", "9D041710-2119-4230-BCF2-5FBE753FDE49") +P5 = create_mex_project("astra_mex_projector", "85ECCF1D-C5F6-4E0E-A4F9-0DE7C0B916B2", "4DD6056F-8EEE-4C9A-B2A9-923F01A32E97", "4DD6056F-8EEE-4C9A-B2A9-923F01A32E97") +P6 = create_mex_project("astra_mex_projector3d", "CA85BDA0-9BDD-495E-B200-BFE863EB6318", "F94CCD79-AA11-42DF-AC8A-6C9D2238A883", "F94CCD79-AA11-42DF-AC8A-6C9D2238A883") +P7 = create_mex_project("astra_mex_log", "88539382-66DB-4BBC-A48E-8B6B3CA6064F", "03B833F5-4FD6-4FBE-AAF4-E3305CD56D2E", "CA2840B3-DA68-41B5-AC57-F5DFD20ED8F8") +P8 = create_mex_project("astra_mex_direct", "47460476-912B-4313-8B10-BDF1D60A84C4", "0F68F4E2-BE1B-4A9A-B101-AECF4C069CC7", "85FE09A6-FA49-4314-A2B1-59D77C7442A8") F_astra_mex = { "type": siguid, "name": "astra_mex", + "file14": "astra_mex", "file11": "astra_mex", "file09": "astra_mex", + "uuid14": "2076FB73-ECFE-4B1B-9A8C-E351C500FAAB", "uuid11": "5E99A109-374E-4102-BE9B-99BA1FA8AA30", "uuid09": "33EF0AC5-B475-40BF-BAE5-67075B204D10", "entries": [ P0, P1, P2, P3, P4, P5, P6, P7, P8 ] } @@ -483,6 +485,8 @@ def write_sln(version): F = open("astra_vc09.sln", "w") elif version == 11: F = open("astra_vc11.sln", "w") + elif version == 14: + F = open("astra_vc14.sln", "w") else: assert(False) print(bom, file=F) @@ -496,6 +500,13 @@ def write_sln(version): print("# Visual Studio 2012", file=F) uuid = "uuid11" file_ = "file11" + elif version == 14: + print("Microsoft Visual Studio Solution File, Format Version 12.00", file=F) + print("# Visual Studio 14", file=F) + print("VisualStudioVersion = 14.0.25420.1", file=F) + print("MinimumVisualStudioVersion = 10.0.40219.1", file=F) + uuid = "uuid14" + file_ = "file14" for p in projects: s = '''Project("{%s}") = "%s", "%s", "{%s}"''' % (p["type"], p["name"], p[file_], p[uuid]) print(s, file=F) @@ -530,7 +541,7 @@ def write_sln(version): print("EndGlobal", file=F) F.close() -def write_project11_start(P, F): +def write_project11_14_start(P, F, version): print(bom + '', file=F) print('', file=F) print(' ', file=F) @@ -543,7 +554,10 @@ def write_project11_start(P, F): print(' ', file=F) if 'mex' in P["name"]: print(' ' + P["name"] + '', file=F) - print(' {' + P["uuid11"] + '}', file=F) + if version == 11: + print(' {' + P["uuid11"] + '}', file=F) + else: + print(' {' + P["uuid14"] + '}', file=F) if 'mex' in P["name"]: print(' astraMatlab', file=F) else: @@ -558,7 +572,10 @@ def write_project11_start(P, F): print(' true', file=F) else: print(' false', file=F) - print(' v110', file=F) + if version == 11: + print(' v110', file=F) + else: + print(' v140', file=F) if 'mex' not in P["name"]: if not c.debug: print(' true', file=F) @@ -575,7 +592,7 @@ def write_project11_start(P, F): print(''' ''', file=F) print(' ', file=F) -def write_project11_end(P, F): +def write_project11_14_end(P, F): l = [ f for f in P["files"] if len(f) > 4 and f[-4:] == ".cpp" ] if l: print(' ', file=F) @@ -619,13 +636,16 @@ def write_project11_end(P, F): print('', end="", file=F) -def write_main_project11(): +def write_main_project11_14(version): P = P_astra; - F = open(P["file11"], "w") - write_project11_start(P, F) + if version == 11: + F = open(P["file11"], "w") + else: + F = open(P["file14"], "w") + write_project11_14_start(P, F, version) for c in configs: print(''' ''' % (c.name(), ), file=F) - if c.cuda: + if c.cuda and version == 11: print(' $(CUDA_INC_PATH);$(IncludePath)', file=F) print(' $(CUDA_LIB_PATH);$(LibraryPath)', file=F) print(' $(SolutionDir)bin\\$(Platform)\\' + c.config() + '\\', file=F) @@ -693,12 +713,15 @@ def write_main_project11(): print(' compute_20,sm_20;compute_30,sm_30;compute_35,sm_35;compute_50,sm_50;compute_60,sm_60;compute_60,compute_60', file=F) print(' ', file=F) print(' ', file=F) - write_project11_end(P, F) + write_project11_14_end(P, F) F.close() -def write_mex_project11(P): - F = open("matlab/mex/" + P["name"] + "_vc11.vcxproj", "w") - write_project11_start(P, F) +def write_mex_project11_14(P, version): + if version == 11: + F = open("matlab/mex/" + P["name"] + "_vc11.vcxproj", "w") + else: + F = open("matlab/mex/" + P["name"] + "_vc14.vcxproj", "w") + write_project11_14_start(P, F, version) print(' ', file=F) print(' <_ProjectFileVersion>11.0.60610.1', file=F) print(' ', file=F) @@ -772,10 +795,10 @@ def write_mex_project11(P): print(' true', file=F) print(' ', file=F) print(' ', file=F) - write_project11_end(P, F) + write_project11_14_end(P, F) F.close() -def write_main_filters11(): +def write_main_filters11_14(): P = P_astra F = open(P["name"] + ".vcxproj.filters", "w") print(bom + '', file=F) @@ -1106,8 +1129,8 @@ def write_mex_project09(P): -if (len(sys.argv) != 2) or (sys.argv[1] not in ["vc09", "vc11", "all"]): - print("Usage: python gen.py [vc09|vc11|all]", file=sys.stderr) +if (len(sys.argv) != 2) or (sys.argv[1] not in ["vc09", "vc11", "vc14", "all"]): + print("Usage: python gen.py [vc09|vc11|vc14|all]", file=sys.stderr) sys.exit(1) @@ -1121,21 +1144,37 @@ except IOError: # Change directory to main dir os.chdir("../..") +if sys.argv[1] in ["vc14", "all"]: + # HACK + P_astra["name"] = "astra_vc14" + write_sln(14) + write_main_project11_14(14) + write_main_filters11_14() + write_mex_project11_14(P0, 14) + write_mex_project11_14(P1, 14) + write_mex_project11_14(P2, 14) + write_mex_project11_14(P3, 14) + write_mex_project11_14(P4, 14) + write_mex_project11_14(P5, 14) + write_mex_project11_14(P6, 14) + write_mex_project11_14(P7, 14) + write_mex_project11_14(P8, 14) + if sys.argv[1] in ["vc11", "all"]: # HACK P_astra["name"] = "astra_vc11" write_sln(11) - write_main_project11() - write_main_filters11() - write_mex_project11(P0) - write_mex_project11(P1) - write_mex_project11(P2) - write_mex_project11(P3) - write_mex_project11(P4) - write_mex_project11(P5) - write_mex_project11(P6) - write_mex_project11(P7) - write_mex_project11(P8) + write_main_project11_14(11) + write_main_filters11_14() + write_mex_project11_14(P0, 11) + write_mex_project11_14(P1, 11) + write_mex_project11_14(P2, 11) + write_mex_project11_14(P3, 11) + write_mex_project11_14(P4, 11) + write_mex_project11_14(P5, 11) + write_mex_project11_14(P6, 11) + write_mex_project11_14(P7, 11) + write_mex_project11_14(P8, 11) if sys.argv[1] in ["vc09", "all"]: # HACK -- cgit v1.2.3 From 80d5397e251d8e12c8cd77efcacc54b9f7de3f0b Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Fri, 18 Nov 2016 16:53:17 +0100 Subject: Add automated Windows build scripts --- build/msvc/build_clean.bat | 12 ++++ build/msvc/build_env.bat | 16 +++++ build/msvc/build_matlab.bat | 14 ++++ build/msvc/build_python27.bat | 28 ++++++++ build/msvc/build_python35.bat | 27 ++++++++ build/msvc/build_release.bat | 145 ++++++++++++++++++++++++++++++++++++++++++ build/msvc/build_setup.bat | 37 +++++++++++ 7 files changed, 279 insertions(+) create mode 100644 build/msvc/build_clean.bat create mode 100644 build/msvc/build_env.bat create mode 100644 build/msvc/build_matlab.bat create mode 100644 build/msvc/build_python27.bat create mode 100644 build/msvc/build_python35.bat create mode 100644 build/msvc/build_release.bat create mode 100644 build/msvc/build_setup.bat (limited to 'build') diff --git a/build/msvc/build_clean.bat b/build/msvc/build_clean.bat new file mode 100644 index 0000000..4525529 --- /dev/null +++ b/build/msvc/build_clean.bat @@ -0,0 +1,12 @@ +@echo off + +set MATLAB_ROOT=C:\Program Files\MATLAB\R2015a + +call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat" + +cd %~dp0 +cd ..\.. + +msbuild astra_vc14.sln /p:Configuration=Release_CUDA /p:Platform=x64 /t:clean + +pause diff --git a/build/msvc/build_env.bat b/build/msvc/build_env.bat new file mode 100644 index 0000000..458209a --- /dev/null +++ b/build/msvc/build_env.bat @@ -0,0 +1,16 @@ +set B_WP27=2.7.10.3 +set B_WP35=3.5.2.3 +set B_WINPYTHON27=D:\wjp\WinPython-64bit-%B_WP27% +set B_WINPYTHON35=D:\wjp\WinPython-64bit-%B_WP35% +set B_MATLAB_ROOT=C:\Program Files\MATLAB\R2015a +set B_VC=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64 +set B_BV=1_62 +set B_BOOST=D:\wjp\boost_%B_BV%_0 + +set B_VCREDIST=D:\wjp\vs2015u3_redist\vc_redist.x64.exe + +set B_README_WP27=C:\WinPython-64bit-%B_WP27%\python-%B_WP27:~0,-2%.amd64\Lib\site-packages +set B_README_WP35=C:\WinPython-64bit-%B_WP35%\python-%B_WP35:~0,-2%.amd64\Lib\site-packages + +set B_RELEASE_TAG=v1.7.1 +set B_RELEASE=1.7.1beta diff --git a/build/msvc/build_matlab.bat b/build/msvc/build_matlab.bat new file mode 100644 index 0000000..7a2ef79 --- /dev/null +++ b/build/msvc/build_matlab.bat @@ -0,0 +1,14 @@ +@echo off + +call "%~dp0build_env.bat" + +call "%B_VC%\vcvars64.bat" + +cd /D %~dp0 +cd ..\.. + +set MATLAB_ROOT=%B_MATLAB_ROOT% + +msbuild astra_vc14.sln /p:Configuration=Release_CUDA /p:Platform=x64 + +pause diff --git a/build/msvc/build_python27.bat b/build/msvc/build_python27.bat new file mode 100644 index 0000000..a9495f0 --- /dev/null +++ b/build/msvc/build_python27.bat @@ -0,0 +1,28 @@ +@echo off + +cd /D %~dp0 +cd ..\.. +set R=%CD% + +call "%~dp0build_env.bat" + +call "%B_WINPYTHON27%\scripts\env.bat" +call "%B_VC%\vcvars64.bat" + +cd /D %R% + +msbuild astra_vc14.sln /p:Configuration=Release_CUDA /p:Platform=x64 /t:astra_vc14 + +cd python + +rd /s /q build +rd /s /q "%WINPYDIR%\lib\site-packages\astra" + +set VS90COMNTOOLS=%VS140COMNTOOLS% +set CL=/DASTRA_CUDA /DASTRA_PYTHON /EHsc +set INCLUDE=%R%\include;%R%\lib\include;%CUDA_PATH%\include +copy ..\bin\x64\Release_CUDA\AstraCuda64.lib astra.lib +python builder.py build_ext --compiler=msvc install +copy ..\bin\x64\Release_CUDA\AstraCuda64.dll "%WINPYDIR%\lib\site-packages\astra" + +pause diff --git a/build/msvc/build_python35.bat b/build/msvc/build_python35.bat new file mode 100644 index 0000000..72c6ec4 --- /dev/null +++ b/build/msvc/build_python35.bat @@ -0,0 +1,27 @@ +@echo off + +cd /D %~dp0 +cd ..\.. +set R=%CD% + +call "%~dp0build_env.bat" + +call "%B_WINPYTHON35%\scripts\env.bat" +call "%B_VC%\vcvars64.bat" + +cd /D %R% + +msbuild astra_vc14.sln /p:Configuration=Release_CUDA /p:Platform=x64 /t:astra_vc14 + +cd python + +rd /s /q build +rd /s /q "%WINPYDIR%\lib\site-packages\astra" + +set CL=/DASTRA_CUDA /DASTRA_PYTHON +set INCLUDE=%R%\include;%R%\lib\include;%CUDA_PATH%\include +copy ..\bin\x64\Release_CUDA\AstraCuda64.lib astra.lib +python builder.py build_ext --compiler=msvc install +copy ..\bin\x64\Release_CUDA\AstraCuda64.dll "%WINPYDIR%\lib\site-packages\astra" + +pause diff --git a/build/msvc/build_release.bat b/build/msvc/build_release.bat new file mode 100644 index 0000000..87bfb28 --- /dev/null +++ b/build/msvc/build_release.bat @@ -0,0 +1,145 @@ +@echo off + +cd /D %~dp0 +cd ..\.. + +set R=%CD% + +call "%~dp0build_env.bat" + +rd /s /q release + +mkdir release +cd release +mkdir src +mkdir matlab +mkdir python27 +mkdir python35 + +cd src +git clone https://github.com/astra-toolbox/astra-toolbox astra-%B_RELEASE% +cd astra-%B_RELEASE% +git checkout %B_RELEASE_TAG% +rd /s /q .git + +pause + +cd %R%\release\matlab +mkdir astra-%B_RELEASE% +cd astra-%B_RELEASE% +xcopy /e /i %R%\samples\matlab samples +xcopy /e /i %R%\matlab\algorithms algorithms +xcopy /e /i %R%\matlab\tools tools +copy %R%\NEWS.txt . +copy %R%\README.txt . +copy %R%\COPYING COPYING.txt + +copy %B_VCREDIST% . + +mkdir mex +copy %R%\bin\x64\Release_CUDA\*.mexw64 mex +copy %R%\bin\x64\Release_CUDA\AstraCuda64.dll mex +copy %R%\bin\x64\Release_CUDA\AstraCuda64.lib mex +copy "%CUDA_PATH%\bin\cudart64_80.dll" mex +copy "%CUDA_PATH%\bin\cufft64_80.dll" mex + +pause + +rem ------------------------------------------------------------------- + +cd %R%\release\python27 +mkdir astra-%B_RELEASE% +cd astra-%B_RELEASE% +xcopy /e /i %R%\samples\python samples +copy %R%\NEWS.txt . +copy %R%\COPYING COPYING.txt + +copy %B_VCREDIST% . + +mkdir astra +call "%B_WINPYTHON27%\scripts\env.bat" +copy %WINPYDIR%\lib\site-packages\astra\*.* astra +copy %R%\bin\x64\Release_CUDA\AstraCuda64.lib astra +copy "%CUDA_PATH%\bin\cudart64_80.dll" astra +copy "%CUDA_PATH%\bin\cufft64_80.dll" astra + +( +echo ----------------------------------------------------------------------- +echo This file is part of the ASTRA Toolbox +echo. +echo Copyright: 2010-2016, iMinds-Vision Lab, University of Antwerp +echo 2014-2016, CWI, Amsterdam +echo http://visielab.uantwerpen.be/ and http://www.cwi.nl/ +echo License: Open Source under GPLv3 +echo Contact: astra@uantwerpen.be +echo Website: http://www.astra-toolbox.com/ +echo ----------------------------------------------------------------------- +echo. +echo. +echo This directory contains pre-built Python modules for the ASTRA Toolbox. +echo. +echo It has been built with WinPython-64bit-%B_WP27%. +echo. +echo To use it, move the astra\ directory to your existing site-packages directory. +echo Its exact location depends on your Python installation, but should look +echo similar to %B_README_WP27% . +echo. +echo Sample code can be found in the samples\ directory. +) > README.txt + +pause + +rem ------------------------------------------------------------------- + +cd %R%\release\python35 +mkdir astra-%B_RELEASE% +cd astra-%B_RELEASE% +xcopy /e /i %R%\samples\python samples +copy %R%\NEWS.txt . +copy %R%\COPYING COPYING.txt + +copy %B_VCREDIST% . + +mkdir astra +call "%B_WINPYTHON35%\scripts\env.bat" +copy %WINPYDIR%\lib\site-packages\astra\*.* astra +copy %R%\bin\x64\Release_CUDA\AstraCuda64.lib astra +copy "%CUDA_PATH%\bin\cudart64_80.dll" astra +copy "%CUDA_PATH%\bin\cufft64_80.dll" astra + +( +echo ----------------------------------------------------------------------- +echo This file is part of the ASTRA Toolbox +echo. +echo Copyright: 2010-2016, iMinds-Vision Lab, University of Antwerp +echo 2014-2016, CWI, Amsterdam +echo http://visielab.uantwerpen.be/ and http://www.cwi.nl/ +echo License: Open Source under GPLv3 +echo Contact: astra@uantwerpen.be +echo Website: http://www.astra-toolbox.com/ +echo ----------------------------------------------------------------------- +echo. +echo. +echo This directory contains pre-built Python modules for the ASTRA Toolbox. +echo. +echo It has been built with WinPython-64bit-%B_WP35%. +echo. +echo To use it, move the astra\ directory to your existing site-packages directory. +echo Its exact location depends on your Python installation, but should look +echo similar to %B_README_WP35% . +echo. +echo Sample code can be found in the samples\ directory. +) > README.txt + +pause + +cd %R%\release\matlab +python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%-matlab-win-x64', 'zip', 'astra-%B_RELEASE%')" +cd %R%\release\python27 +python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%-python27-win-x64', 'zip', 'astra-%B_RELEASE%')" +cd %R%\release\python35 +python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%-python35-win-x64', 'zip', 'astra-%B_RELEASE%')" +cd %R%\release\src +python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%', 'zip', 'astra-%B_RELEASE%')" + +pause diff --git a/build/msvc/build_setup.bat b/build/msvc/build_setup.bat new file mode 100644 index 0000000..4314386 --- /dev/null +++ b/build/msvc/build_setup.bat @@ -0,0 +1,37 @@ +@echo off + +call "%~dp0build_env.bat" + +cd /D %~dp0 +cd ..\.. +set R=%CD% + +rd /s /q "%R%\lib\x64" +rd /s /q "%R%\lib\include\boost" +rd /s /q "%R%\bin\x64\Release_CUDA" + +cd /D "%B_BOOST%\lib64-msvc-14.0" + +mkdir "%R%\lib\x64" +mkdir "%R%\bin\x64\Release_CUDA" + +copy boost_unit_test_framework-vc140-mt-%B_BV%.lib %R%\lib\x64 +copy boost_unit_test_framework-vc140-mt-gd-%B_BV%.lib %R%\lib\x64 + +copy libboost_chrono-vc140-mt-%B_BV%.lib %R%\lib\x64 +copy libboost_chrono-vc140-mt-gd-%B_BV%.lib %R%\lib\x64 + +copy libboost_date_time-vc140-mt-%B_BV%.lib %R%\lib\x64 +copy libboost_date_time-vc140-mt-gd-%B_BV%.lib %R%\lib\x64 + +copy libboost_system-vc140-mt-%B_BV%.lib %R%\lib\x64 +copy libboost_system-vc140-mt-gd-%B_BV%.lib %R%\lib\x64 + +copy libboost_thread-vc140-mt-%B_BV%.lib %R%\lib\x64 +copy libboost_thread-vc140-mt-gd-%B_BV%.lib %R%\lib\x64 + +cd %B_BOOST% + +xcopy /i /e /q boost "%R%\lib\include\boost" + +pause -- cgit v1.2.3 From eeffd2d9748b8912b384a5764b808f5bfc850ade Mon Sep 17 00:00:00 2001 From: Holger Kohr Date: Wed, 23 Nov 2016 10:21:55 +0100 Subject: Separate C++ and python builds & make conda work nicely - make builder (= advanced user or us ourselves) choose compilers and CUDA - add a check for the C++11 flag for nvcc to work around the infamous boost bug if necessary - use conda boost to build the C++ library - simplify python bindings conda recipe to only build the bindings; the C++ library is now a build and runtime dependency - add runtime dependencies to python bindings recipe - some small adjustments to builder.py --- build/linux/configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'build') diff --git a/build/linux/configure.ac b/build/linux/configure.ac index e562e77..3a2a92b 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -228,8 +228,8 @@ if test x"$with_python" != x -a x"$with_python" != xno; then AC_MSG_CHECKING(for Cython module) ASTRA_TRY_PYTHON([ import Cython -from distutils.version import LooseVersion -assert(LooseVersion(Cython.__version__)>=LooseVersion("0.13")) +from pkg_resources import parse_version +assert(parse_version(Cython.__version__) >= parse_version("0.13")) ],,HAVEPYTHON=no) if test x$HAVEPYTHON = xno; then AC_MSG_RESULT(no) -- cgit v1.2.3 From 71db6331f8dd0d5abbeee92977af01293be4f427 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Mon, 28 Nov 2016 15:54:07 +0100 Subject: Update headers (website+2016) --- build/linux/configure.ac | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'build') diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 3a2a92b..2f992ad 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -1,9 +1,9 @@ dnl ----------------------------------------------------------------------- -dnl Copyright: 2010-2015, iMinds-Vision Lab, University of Antwerp -dnl 2014-2015, CWI, Amsterdam +dnl Copyright: 2010-2016, iMinds-Vision Lab, University of Antwerp +dnl 2014-2016, CWI, Amsterdam dnl dnl Contact: astra@uantwerpen.be -dnl Website: http://sf.net/projects/astra-toolbox +dnl Website: http://www.astra-toolbox.com/ dnl dnl This file is part of the ASTRA Toolbox. dnl @@ -22,7 +22,6 @@ dnl You should have received a copy of the GNU General Public License dnl along with the ASTRA Toolbox. If not, see . dnl dnl ----------------------------------------------------------------------- -dnl $Id$ AC_INIT(astra, 1.7.1) AC_CONFIG_SRCDIR([Makefile.in]) -- cgit v1.2.3 From 77f2cedaac088da5107dcfb37ae62d8f3a56f335 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Mon, 5 Dec 2016 14:44:09 +0100 Subject: Update version to 1.8 --- build/linux/configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'build') diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 2f992ad..46c84a5 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -23,7 +23,7 @@ dnl along with the ASTRA Toolbox. If not, see . dnl dnl ----------------------------------------------------------------------- -AC_INIT(astra, 1.7.1) +AC_INIT(astra, 1.8.0) AC_CONFIG_SRCDIR([Makefile.in]) LT_INIT([disable-static]) -- cgit v1.2.3 From 1954121d82238a97f185dc0cdeaf460f5f4b6a77 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Mon, 5 Dec 2016 17:20:18 +0100 Subject: Fix build_release.bat --- build/msvc/build_env.bat | 4 ++-- build/msvc/build_release.bat | 16 ++++++---------- 2 files changed, 8 insertions(+), 12 deletions(-) (limited to 'build') diff --git a/build/msvc/build_env.bat b/build/msvc/build_env.bat index 458209a..8cb7c96 100644 --- a/build/msvc/build_env.bat +++ b/build/msvc/build_env.bat @@ -12,5 +12,5 @@ set B_VCREDIST=D:\wjp\vs2015u3_redist\vc_redist.x64.exe set B_README_WP27=C:\WinPython-64bit-%B_WP27%\python-%B_WP27:~0,-2%.amd64\Lib\site-packages set B_README_WP35=C:\WinPython-64bit-%B_WP35%\python-%B_WP35:~0,-2%.amd64\Lib\site-packages -set B_RELEASE_TAG=v1.7.1 -set B_RELEASE=1.7.1beta +set B_RELEASE_TAG=v1.8 +set B_RELEASE=1.8 diff --git a/build/msvc/build_release.bat b/build/msvc/build_release.bat index 87bfb28..e88cb6e 100644 --- a/build/msvc/build_release.bat +++ b/build/msvc/build_release.bat @@ -17,9 +17,8 @@ mkdir python27 mkdir python35 cd src -git clone https://github.com/astra-toolbox/astra-toolbox astra-%B_RELEASE% +git clone -b %B_RELEASE_TAG% https://github.com/astra-toolbox/astra-toolbox astra-%B_RELEASE% cd astra-%B_RELEASE% -git checkout %B_RELEASE_TAG% rd /s /q .git pause @@ -133,13 +132,10 @@ echo Sample code can be found in the samples\ directory. pause -cd %R%\release\matlab -python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%-matlab-win-x64', 'zip', 'astra-%B_RELEASE%')" -cd %R%\release\python27 -python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%-python27-win-x64', 'zip', 'astra-%B_RELEASE%')" -cd %R%\release\python35 -python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%-python35-win-x64', 'zip', 'astra-%B_RELEASE%')" -cd %R%\release\src -python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%', 'zip', 'astra-%B_RELEASE%')" +cd %R%\release +python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%-matlab-win-x64', 'zip', 'matlab')" +python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%-python27-win-x64', 'zip', 'python27')" +python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%-python35-win-x64', 'zip', 'python35')" +python -c "import shutil; shutil.make_archive('astra-%B_RELEASE%', 'zip', 'src')" pause -- cgit v1.2.3 From ca1a9aaf9435d13cda5b33faa9084e03a42457cb Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Wed, 18 Jan 2017 17:07:23 +0100 Subject: Avoid 'echo -e' for improved sh portability This fixes the CUDA .d file fixup for macOS. --- build/linux/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index ae43afa..5dfb75e 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -358,7 +358,7 @@ endif @rm -f $(*D)/$(DEPDIR)/$(*F).d2 @# 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 + @for x in `cat $(*D)/$(DEPDIR)/$(*F).d`; do if test a$$x != a: -a a$$x != a\\; then (echo; echo "$$x:") >> $(*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 -- cgit v1.2.3 From bf5475783f2a1bdcddf8426fea136f3b09c61859 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Thu, 19 Jan 2017 12:13:35 +0100 Subject: Add small portability comment about CUDA 5.5 --- build/linux/Makefile.in | 1 + 1 file changed, 1 insertion(+) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 5dfb75e..3894a8a 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -353,6 +353,7 @@ ifeq ($(gen_static_libs),yes) @$(NVCC) $(NVCCFLAGS) -c $(<) -o $*.o >/dev/null 2>&1 endif @# Generate a .d file, and change the target name in it from .o to .lo + @# CUDA 5.5's nvcc doesn't have the -MT option we would like to use. @$(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 -- cgit v1.2.3 From 03c3e5b5043cc8cba9aceeb8641d497edd1be7cf Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Wed, 8 Feb 2017 11:27:24 +0100 Subject: Clean up symlink after failed python build --- build/linux/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 3894a8a..371b656 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -311,7 +311,7 @@ py: libastra.la # TODO: Avoid writing into source dir ln -s $(abs_top_builddir)/.libs/$(SONAME) $(srcdir)/../../python/astra # Note: setting CC to CXX is intentional. Python uses CC for compilation even if input is C++. - cd $(srcdir)/../../python; ASTRA_INSTALL_LIBRARY_AS_DATA=$(PYPKGDATA) CXX="${CXX}" CC="${CXX}" CPPFLAGS="${PYCPPFLAGS}" LDFLAGS='${PYLDFLAGS}' $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build + (cd $(srcdir)/../../python; ASTRA_INSTALL_LIBRARY_AS_DATA=$(PYPKGDATA) CXX="${CXX}" CC="${CXX}" CPPFLAGS="${PYCPPFLAGS}" LDFLAGS='${PYLDFLAGS}' $(PYTHON) builder.py build --build-base=$(abs_top_builddir)/python/build) || (rm $(srcdir)/../../python/astra/$(SONAME); false) rm $(srcdir)/../../python/astra/$(SONAME) endif -- cgit v1.2.3 From d85a660f064e8130b27e11c7fd762221c754c315 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Thu, 26 Jan 2017 14:57:57 +0100 Subject: Start work on CFloat32Data3DGPU to allow persistent/external GPU memory --- build/linux/Makefile.in | 5 ++++- build/msvc/gen.py | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 371b656..9066f0a 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -199,7 +199,10 @@ CUDA_CXX_OBJECTS=\ src/CudaFDKAlgorithm3D.lo \ src/CudaSirtAlgorithm3D.lo \ src/CudaBackProjectionAlgorithm3D.lo \ - src/CudaForwardProjectionAlgorithm3D.lo + src/CudaForwardProjectionAlgorithm3D.lo \ + src/Float32Data3DGPU.lo \ + src/Float32ProjectionData3DGPU.lo \ + src/Float32VolumeData3DGPU.lo CUDA_OBJECTS=\ cuda/2d/algo.lo \ diff --git a/build/msvc/gen.py b/build/msvc/gen.py index 8a40c45..9c14ffe 100644 --- a/build/msvc/gen.py +++ b/build/msvc/gen.py @@ -274,6 +274,9 @@ P_astra["filters"]["CUDA\\astra source"] = [ "src\\CudaSartAlgorithm.cpp", "src\\CudaSirtAlgorithm.cpp", "src\\CudaSirtAlgorithm3D.cpp", +"src\\Float32Data3DGPU.cpp", +"src\\Float32ProjectionData3DGPU.cpp", +"src\\Float32VolumeData3DGPU.cpp", ] P_astra["filters"]["CUDA\\cuda headers"] = [ "4e17872e-db7d-41bc-9760-fad1c253b583", @@ -411,7 +414,9 @@ P_astra["filters"]["CUDA\\astra headers"] = [ "include\\astra\\CudaSartAlgorithm.h", "include\\astra\\CudaSirtAlgorithm.h", "include\\astra\\CudaSirtAlgorithm3D.h", - +"include\\astra\\Float32Data3DGPU.h", +"include\\astra\\Float32ProjectionData3DGPU.h", +"include\\astra\\Float32VolumeData3DGPU.h", ] P_astra["filters"]["Projectors\\inline"] = [ "0daffd63-ba49-4a5f-8d7a-5322e0e74f22", -- cgit v1.2.3 From e4ca9eb2bf7371fa9c1ac8951d298c989cb5aa28 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Mon, 23 Jan 2017 11:58:19 +0100 Subject: Let autogen.sh use either glibtoolize or libtoolize on macOS This is necessary since conda's libtool installs libtoolize on macOS. --- build/linux/autogen.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'build') diff --git a/build/linux/autogen.sh b/build/linux/autogen.sh index 544fdeb..bb3b5cc 100755 --- a/build/linux/autogen.sh +++ b/build/linux/autogen.sh @@ -12,8 +12,11 @@ if test $? -ne 0; then exit 1 fi -case `uname` in Darwin*) LIBTOOLIZEBIN=glibtoolize ;; - *) LIBTOOLIZEBIN=libtoolize ;; esac +case `uname` in + Darwin*) + test -x "`which glibtoolize 2>/dev/null`" && LIBTOOLIZEBIN=glibtoolize || LIBTOOLIZEBIN=libtoolize ;; + *) + LIBTOOLIZEBIN=libtoolize ;; esac $LIBTOOLIZEBIN --install --force > /dev/null 2>&1 if test $? -ne 0; then -- cgit v1.2.3 From 0f6c2fdc899b19000c3fcfa3f4e2129dd16a44ce Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Mon, 23 Jan 2017 12:32:10 +0100 Subject: Change lib/lib64 logic macOS CUDA uses lib even on 64 bit --- build/linux/configure.ac | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'build') diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 46c84a5..43cb1a8 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -102,14 +102,7 @@ if test x"$NVCC" != xno; then HAVECUDA=yes BACKUP_CUDA_LDFLAGS="$LDFLAGS" if test x"$with_cuda" != x -a x"$with_cuda" != xyes; then - case $host_cpu in - x86_64) - LDFLAGS_CUDA="-L$with_cuda/lib64" - ;; - *) - LDFLAGS_CUDA="-L$with_cuda/lib" - ;; - esac + test -d $with_cuda/lib64 && LDFLAGS_CUDA="-L$with_cuda/lib64" || LDFLAGS_CUDA="-L$with_cuda/lib" CPPFLAGS_CUDA="-I$with_cuda/include" LDFLAGS="$LDFLAGS $LDFLAGS_CUDA" fi -- cgit v1.2.3 From 99718ef1734c0db06034127da703f70a1c30f1a3 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Fri, 3 Feb 2017 16:57:54 +0100 Subject: Disable openmp on macOS --- build/linux/Makefile.in | 3 +++ build/linux/configure.ac | 3 +++ 2 files changed, 6 insertions(+) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 9066f0a..ae3dec8 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -4,6 +4,7 @@ cuda=@HAVECUDA@ matlab=@HAVEMATLAB@ python=@HAVEPYTHON@ boostutf=@HAVEBOOSTUTF@ +macos=@IS_MACOS@ MATLAB_ROOT=@MATLAB_ROOT@ octave=@HAVEOCTAVE@ @@ -64,9 +65,11 @@ endif ifeq ($(matlab),yes) # TODO: Do we also want -fopenmp for octave? CPPFLAGS+=-I$(MATLAB_ROOT)/extern/include -DMATLAB_MEX_FILE +ifeq ($(macos),no) CXXFLAGS+=-fopenmp LDFLAGS+=-fopenmp endif +endif # MODLDFLAGS are the base LDFLAGS for matlab, octave, python modules MODLDFLAGS=$(LDFLAGS) -L$(abs_top_builddir)/.libs diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 43cb1a8..813b462 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -251,13 +251,16 @@ AC_CANONICAL_HOST case $host_os in darwin* ) CPPFLAGS_OS="-stdlib=libstdc++ -mmacosx-version-min=10.6" + IS_MACOS=yes ;; *) CPPFLAGS_OS="" + IS_MACOS=no ;; esac AC_SUBST(CPPFLAGS_OS) +AC_SUBST(IS_MACOS) # For some reason, some older versions of autoconf produce a config.status # that disables all lines looking like VPATH=@srcdir@ -- cgit v1.2.3 From a3336fc3445fca283be97528d60f2f55501491b0 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Fri, 3 Feb 2017 16:58:36 +0100 Subject: Use @loader_path to make mex files find libastra.0.dylib in cwd --- build/linux/Makefile.in | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index ae3dec8..0120d60 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -304,6 +304,12 @@ mex: $(MATLAB_MEX) %.$(MEXSUFFIX): %.o $(MATLAB_CXX_OBJECTS) libastra.la $(MEX) LDFLAGS="$(MEXLDFLAGS)" $(MEXFLAGS) $(LIBS) $(MEXLIBS) -lastra -output $* $*.o $(MATLAB_CXX_OBJECTS) +ifeq ($(install_type),module) +ifeq ($(macos),yes) + @# tell macOS dynamic loader to look in mex directory for libastra.0.dylib + install_name_tool -change `otool -DX .libs/$(SONAME)` @loader_path/$(SONAME) $@ +endif +endif ifeq ($(python),yes) matlab/mex/astra_mex_plugin_c.$(MEXSUFFIX): matlab/mex/astra_mex_plugin_c.o $(MATLAB_CXX_OBJECTS) libastra.la -- cgit v1.2.3 From f5c25084f09a8f35c4e3d01eb84de984778ae8a9 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Fri, 3 Feb 2017 16:58:56 +0100 Subject: Set stdlib to libstdc++ on macOS consistently --- build/linux/Makefile.in | 3 ++- build/linux/configure.ac | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 0120d60..1c0c56a 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -50,7 +50,8 @@ CXXFLAGS+=-g -O3 -Wall -Wshadow LIBS+=-lpthread LDFLAGS+=-g -CPPFLAGS+=@CPPFLAGS_OS@ +CXXFLAGS+=@CXXFLAGS_OS@ +LDFLAGS+=@LDFLAGS_OS@ BOOSTUTF_LIBS=@LIBS_BOOSTUTF@ diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 813b462..b95d94f 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -250,16 +250,19 @@ AC_SUBST(HAVEPYTHON) AC_CANONICAL_HOST case $host_os in darwin* ) - CPPFLAGS_OS="-stdlib=libstdc++ -mmacosx-version-min=10.6" + CXXFLAGS_OS="-stdlib=libstdc++ -mmacosx-version-min=10.6" + LDFLAGS_OS="-stdlib=libstdc++" IS_MACOS=yes ;; *) - CPPFLAGS_OS="" + CXXFLAGS_OS="" + LDFLAGS_OS="" IS_MACOS=no ;; esac -AC_SUBST(CPPFLAGS_OS) +AC_SUBST(CXXFLAGS_OS) +AC_SUBST(LDFLAGS_OS) AC_SUBST(IS_MACOS) # For some reason, some older versions of autoconf produce a config.status -- cgit v1.2.3 From 00a1c6118b2d64b867c8e640c295462bcccfc7c9 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Fri, 8 Sep 2017 15:03:55 +0200 Subject: Add macOS note --- build/linux/Makefile.in | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'build') diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 1c0c56a..c83e9f0 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -308,7 +308,9 @@ mex: $(MATLAB_MEX) ifeq ($(install_type),module) ifeq ($(macos),yes) @# tell macOS dynamic loader to look in mex directory for libastra.0.dylib - install_name_tool -change `otool -DX .libs/$(SONAME)` @loader_path/$(SONAME) $@ + @# CHECKME: some versions of otool return a two-line output for otool -DX? + @# (xcode 8.2.1 / macos 10.11.6 ?) + install_name_tool -change `otool -DX .libs/$(SONAME) | tail -n 1` @loader_path/$(SONAME) $@ endif endif -- cgit v1.2.3