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 | 
