diff options
author | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2019-08-16 12:34:44 +0200 |
---|---|---|
committer | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2019-08-16 12:34:44 +0200 |
commit | 4a396a608aefc3282baea76bc4e1965faa99b4f8 (patch) | |
tree | 1d41969dd8c747f9150256ebffbddedb426e2238 | |
parent | d9261bdb05cd0863a2c3747c812871dbb851646e (diff) | |
download | astra-4a396a608aefc3282baea76bc4e1965faa99b4f8.tar.gz astra-4a396a608aefc3282baea76bc4e1965faa99b4f8.tar.bz2 astra-4a396a608aefc3282baea76bc4e1965faa99b4f8.tar.xz astra-4a396a608aefc3282baea76bc4e1965faa99b4f8.zip |
Check for the mex -R2017b option in configure
Since we use mex for linking, but CXX for compiling, we also need to
set a preprocessor macro to emulate the -R2017b option. Currently we
use -DMATLAB_MEXCMD_RELEASE=700, but it is unclear if this is the
recommended way.
This is required to build with Matlab R2018a and newer.
-rw-r--r-- | build/linux/Makefile.in | 4 | ||||
-rw-r--r-- | build/linux/acinclude.m4 | 20 | ||||
-rw-r--r-- | build/linux/configure.ac | 17 |
3 files changed, 37 insertions, 4 deletions
diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 078a1a2..209206e 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -67,7 +67,7 @@ endif ifeq ($(matlab),yes) # TODO: Do we also want -fopenmp for octave? -CPPFLAGS+=-I$(MATLAB_ROOT)/extern/include -DMATLAB_MEX_FILE +CPPFLAGS+=-I$(MATLAB_ROOT)/extern/include -DMATLAB_MEX_FILE @CPPFLAGS_MATLAB@ ifeq ($(macos),no) CXXFLAGS+=-fopenmp LDFLAGS+=-fopenmp @@ -101,7 +101,7 @@ endif CPPFLAGS+=-I$(srcdir)/../../include -I$(srcdir)/../../lib/include ifeq ($(matlab),yes) -MEXFLAGS = -cxx +MEXFLAGS = @MEXFLAGS@ -cxx MEXLDFLAGS=\$$LDFLAGS $(MODLDFLAGS) MEXLIBS = -lut MEXSUFFIX = @MEXSUFFIX@ diff --git a/build/linux/acinclude.m4 b/build/linux/acinclude.m4 index d6866c3..135c1c6 100644 --- a/build/linux/acinclude.m4 +++ b/build/linux/acinclude.m4 @@ -38,8 +38,7 @@ extern "C" void mexFunction() { } _ACEOF $CXX -fPIC -c -o conftest.o conftest.cc -$MEX -cxx -output conftest conftest.o -$2="" +$MEX -cxx -output conftest conftest.o >/dev/null 2>&1 for suffix in $1; do if test -f "conftest.$suffix"; then $2="$suffix" @@ -49,6 +48,23 @@ done rm -f conftest.cc conftest.o ]) +dnl ASTRA_CHECK_MEX_OPTION(option, mex-suffix, action-if-supported, action-if-not-supported) +dnl Check if an option is supported by mex. +dnl We test if mex works by testing if it produces a mex file as output; +dnl this is required since 'mex' is also a commonly installed LaTeX format +AC_DEFUN([ASTRA_CHECK_MEX_OPTION],[ +cat >conftest.cc <<_ACEOF +extern "C" void mexFunction() { +} +_ACEOF +$CXX -fPIC -c -o conftest.o conftest.cc +$MEX $1 -cxx -output conftest conftest.o >/dev/null 2>&1 +AS_IF([test -f "conftest.$2"],[ + rm -f "conftest.$2" + $3],[$4]) +rm -f conftest.cc conftest.o +]) + dnl ASTRA_RUN_STOREOUTPUT(command, output) AC_DEFUN([ASTRA_RUN_STOREOUTPUT],[{ diff --git a/build/linux/configure.ac b/build/linux/configure.ac index ffb525a..0a9024e 100644 --- a/build/linux/configure.ac +++ b/build/linux/configure.ac @@ -174,7 +174,24 @@ if test x"$with_matlab" != x; then fi fi +AC_MSG_CHECKING([if mex requires the -R2017b option]) +if test x"$HAVEMATLAB" = xyes; then + ASTRA_CHECK_MEX_OPTION([-R2017b],[$MEXSUFFIX],[ + MEXFLAGS="-R2017b" + # TODO: check if this is the best way of emulating -R2017b when using + # CXX directly to compile mex files. + CPPFLAGS_MATLAB="-DMATLAB_MEXCMD_RELEASE=700" + AC_MSG_RESULT([yes]) + ],[ + MEXFLAGS= + CPPFLAGS_MATLAB= + AC_MSG_RESULT([no]) + ]) +fi + AC_SUBST(HAVEMATLAB) +AC_SUBST(MEXFLAGS) +AC_SUBST(CPPFLAGS_MATLAB) # octave |