diff options
-rw-r--r-- | README.md | 15 | ||||
-rw-r--r-- | README.txt | 13 | ||||
-rw-r--r-- | build/linux/Makefile.in | 12 | ||||
-rwxr-xr-x | build/linux/autogen.sh | 7 | ||||
-rw-r--r-- | build/linux/configure.ac | 21 | ||||
-rw-r--r-- | matlab/mex/mexCopyDataHelpFunctions.cpp | 6 | ||||
-rw-r--r-- | python/conda/astra-toolbox/bld.bat (renamed from python/conda/bld.bat) | 0 | ||||
-rw-r--r-- | python/conda/astra-toolbox/build.sh (renamed from python/conda/build.sh) | 0 | ||||
-rw-r--r-- | python/conda/astra-toolbox/meta.yaml (renamed from python/conda/meta.yaml) | 0 | ||||
-rw-r--r-- | python/conda/libastra/build.sh | 23 | ||||
-rw-r--r-- | python/conda/libastra/meta.yaml | 4 | ||||
-rw-r--r-- | python/conda/linux_release/builder/Dockerfile | 24 |
12 files changed, 86 insertions, 39 deletions
@@ -83,6 +83,21 @@ make install This will install Astra into your current Python environment. +### macOS, from source + +Use the Homebrew package manager to install boost, libtool, autoconf, automake. + +``` +cd build/linux +./autogen.sh +CPPFLAGS="-I/usr/local/include" NVCCFLAGS="-I/usr/local/include" ./configure \ + --with-cuda=/usr/local/cuda \ + --with-matlab=/Applications/MATLAB_R2016b.app \ + --prefix=$HOME/astra \ + --with-install-type=module +make +make install +``` ### Windows, from source using Visual Studio 2015 @@ -109,7 +109,20 @@ make install This will install Astra into your current Python environment. +macOS, from source: +-------------------- + +Use the Homebrew package manager to install boost, libtool, autoconf, automake. +cd build/linux +./autogen.sh +CPPFLAGS="-I/usr/local/include" NVCCFLAGS="-I/usr/local/include" ./configure \ + --with-cuda=/usr/local/cuda \ + --with-matlab=/Applications/MATLAB_R2016b.app \ + --prefix=$HOME/astra \ + --with-install-type=module +make +make install Windows, from source using Visual Studio 2015: diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 9066f0a..1c0c56a 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@ @@ -49,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@ @@ -64,9 +66,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 @@ -301,6 +305,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 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 diff --git a/build/linux/configure.ac b/build/linux/configure.ac index 46c84a5..b95d94f 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 @@ -257,14 +250,20 @@ 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 # that disables all lines looking like VPATH=@srcdir@ diff --git a/matlab/mex/mexCopyDataHelpFunctions.cpp b/matlab/mex/mexCopyDataHelpFunctions.cpp index a172a03..74f0538 100644 --- a/matlab/mex/mexCopyDataHelpFunctions.cpp +++ b/matlab/mex/mexCopyDataHelpFunctions.cpp @@ -29,12 +29,10 @@ along with the ASTRA Toolbox. If not, see <http://www.gnu.org/licenses/>. #include "mexHelpFunctions.h" -#define HAVE_OMP - #define ROUND_DOWN(x, s) ((x) & ~((s)-1)) -#ifdef HAVE_OMP -# include <omp.h> +#ifdef _OPENMP +#include <omp.h> #endif #if defined(__SSE2__) diff --git a/python/conda/bld.bat b/python/conda/astra-toolbox/bld.bat index 15777ce..15777ce 100644 --- a/python/conda/bld.bat +++ b/python/conda/astra-toolbox/bld.bat diff --git a/python/conda/build.sh b/python/conda/astra-toolbox/build.sh index 951fd88..951fd88 100644 --- a/python/conda/build.sh +++ b/python/conda/astra-toolbox/build.sh diff --git a/python/conda/meta.yaml b/python/conda/astra-toolbox/meta.yaml index 942397e..942397e 100644 --- a/python/conda/meta.yaml +++ b/python/conda/astra-toolbox/meta.yaml diff --git a/python/conda/libastra/build.sh b/python/conda/libastra/build.sh index 5807697..98220f5 100644 --- a/python/conda/libastra/build.sh +++ b/python/conda/libastra/build.sh @@ -7,17 +7,22 @@ $SRC_DIR/build/linux/autogen.sh # Add C++11 to compiler flags if nvcc supports it, mostly to work around a boost bug NVCC=$CUDA_ROOT/bin/nvcc echo "int main(){return 0;}" > $CONDA_PREFIX/test.cu -$NVCC $CONDA_PREFIX/test.cu -ccbin $CC --std=c++11 -o $CONDA_PREFIX/test.out > /dev/null && EXTRA_NVCCFLAGS="--std=c++11" || /bin/true +$NVCC $CONDA_PREFIX/test.cu -ccbin $CC --std=c++11 -o $CONDA_PREFIX/test.out > /dev/null 2>&1 && EXTRA_NVCCFLAGS="--std=c++11" || true rm -f $CONDA_PREFIX/test.out -$SRC_DIR/build/linux/configure --with-install-type=prefix --with-cuda=$CUDA_ROOT --prefix=$CONDA_PREFIX NVCCFLAGS="-ccbin $CC $EXTRA_NVCCFLAGS" CC=$CC CXX=$CXX CFLAGS="-I$CONDA_PREFIX/include/boost" CXXFLAGS="-I$CONDA_PREFIX/include/boost" +$SRC_DIR/build/linux/configure --with-install-type=prefix --with-cuda=$CUDA_ROOT --prefix=$CONDA_PREFIX NVCCFLAGS="-ccbin $CC -I$CONDA_PREFIX/include $EXTRA_NVCCFLAGS" CC=$CC CXX=$CXX CPPFLAGS="-I$CONDA_PREFIX/include" make install-libraries -LIBPATH=lib -if [ $ARCH == 64 ] - then - LIBPATH+=64 -fi -cp -P $CUDA_ROOT/$LIBPATH/libcudart.so.* $CONDA_PREFIX/lib -cp -P $CUDA_ROOT/$LIBPATH/libcufft.so.* $CONDA_PREFIX/lib + +test -d $CUDA_ROOT/lib64 && LIBPATH="$CUDA_ROOT/lib64" || LIBPATH="$CUDA_ROOT/lib" + +case `uname` in + Darwin*) + cp -P $LIBPATH/libcudart.*.dylib $CONDA_PREFIX/lib + cp -P $LIBPATH/libcufft.*.dylib $CONDA_PREFIX/lib + *) + cp -P $LIBPATH/libcudart.so.* $CONDA_PREFIX/lib + cp -P $LIBPATH/libcufft.so.* $CONDA_PREFIX/lib + ;; +esac diff --git a/python/conda/libastra/meta.yaml b/python/conda/libastra/meta.yaml index c05a466..68cf47a 100644 --- a/python/conda/libastra/meta.yaml +++ b/python/conda/libastra/meta.yaml @@ -16,6 +16,10 @@ build: requirements: build: - vs2015_runtime # [win] + - boost # [osx] + - automake # [osx] + - autoconf # [osx] + - libtool # [osx] run: - vs2015_runtime # [win] diff --git a/python/conda/linux_release/builder/Dockerfile b/python/conda/linux_release/builder/Dockerfile index 8be05b8..2404609 100644 --- a/python/conda/linux_release/builder/Dockerfile +++ b/python/conda/linux_release/builder/Dockerfile @@ -2,16 +2,16 @@ FROM astra-build-env ARG BUILD_NUMBER= WORKDIR /root RUN git clone --depth 1 https://github.com/astra-toolbox/astra-toolbox -RUN [ -z $BUILD_NUMBER ] || perl -pi -e "s/^(\s*number:\s*)[0-9]+$/\${1}$BUILD_NUMBER/" astra-toolbox/python/conda/libastra/meta.yaml astra-toolbox/python/conda/meta.yaml +RUN [ -z $BUILD_NUMBER ] || perl -pi -e "s/^(\s*number:\s*)[0-9]+$/\${1}$BUILD_NUMBER/" astra-toolbox/python/conda/libastra/meta.yaml astra-toolbox/python/conda/astra-toolbox/meta.yaml RUN conda-build --python=3.5 astra-toolbox/python/conda/libastra -RUN conda-build --python 2.7 --numpy 1.8 astra-toolbox/python/conda -RUN conda-build --python 2.7 --numpy 1.9 astra-toolbox/python/conda -RUN conda-build --python 2.7 --numpy 1.10 astra-toolbox/python/conda -RUN conda-build --python 2.7 --numpy 1.11 astra-toolbox/python/conda -RUN conda-build --python 2.7 --numpy 1.12 astra-toolbox/python/conda -RUN conda-build --python 3.5 --numpy 1.9 astra-toolbox/python/conda -RUN conda-build --python 3.5 --numpy 1.10 astra-toolbox/python/conda -RUN conda-build --python 3.5 --numpy 1.11 astra-toolbox/python/conda -RUN conda-build --python 3.5 --numpy 1.12 astra-toolbox/python/conda -RUN conda-build --python 3.6 --numpy 1.11 astra-toolbox/python/conda -RUN conda-build --python 3.6 --numpy 1.12 astra-toolbox/python/conda +RUN conda-build --python 2.7 --numpy 1.8 astra-toolbox/python/conda/astra-toolbox +RUN conda-build --python 2.7 --numpy 1.9 astra-toolbox/python/conda/astra-toolbox +RUN conda-build --python 2.7 --numpy 1.10 astra-toolbox/python/conda/astra-toolbox +RUN conda-build --python 2.7 --numpy 1.11 astra-toolbox/python/conda/astra-toolbox +RUN conda-build --python 2.7 --numpy 1.12 astra-toolbox/python/conda/astra-toolbox +RUN conda-build --python 3.5 --numpy 1.9 astra-toolbox/python/conda/astra-toolbox +RUN conda-build --python 3.5 --numpy 1.10 astra-toolbox/python/conda/astra-toolbox +RUN conda-build --python 3.5 --numpy 1.11 astra-toolbox/python/conda/astra-toolbox +RUN conda-build --python 3.5 --numpy 1.12 astra-toolbox/python/conda/astra-toolbox +RUN conda-build --python 3.6 --numpy 1.11 astra-toolbox/python/conda/astra-toolbox +RUN conda-build --python 3.6 --numpy 1.12 astra-toolbox/python/conda/astra-toolbox |