summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2017-03-20 15:52:37 +0100
committerWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2017-03-20 15:52:37 +0100
commit53eea5892cd1d51f802533adb9ea94e04b4ce86b (patch)
treeb6875f0aab543e1551c58bfe12d630717894284c
parent4d0d9ca396378813f8559f479ff9a64b0881a627 (diff)
parentcd32957185094680b84014e1ea8411ce6b142f74 (diff)
downloadastra-53eea5892cd1d51f802533adb9ea94e04b4ce86b.tar.gz
astra-53eea5892cd1d51f802533adb9ea94e04b4ce86b.tar.bz2
astra-53eea5892cd1d51f802533adb9ea94e04b4ce86b.tar.xz
astra-53eea5892cd1d51f802533adb9ea94e04b4ce86b.zip
Merge branch 'macOS'
-rw-r--r--README.md15
-rw-r--r--README.txt13
-rw-r--r--build/linux/Makefile.in12
-rwxr-xr-xbuild/linux/autogen.sh7
-rw-r--r--build/linux/configure.ac21
-rw-r--r--matlab/mex/mexCopyDataHelpFunctions.cpp6
-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.sh23
-rw-r--r--python/conda/libastra/meta.yaml4
-rw-r--r--python/conda/linux_release/builder/Dockerfile24
12 files changed, 86 insertions, 39 deletions
diff --git a/README.md b/README.md
index dc523a2..8af69a7 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/README.txt b/README.txt
index 8de13b2..6d84ea0 100644
--- a/README.txt
+++ b/README.txt
@@ -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