— allow the user to override compilation flags for MATLAB MEX (it was already
working for the preprocessor, the MEX for Octave and Dynare++)
— increase the symmetry of MEX build infrastructure between MATLAB and Octave
— when linking MEX for Octave, do not add the output of “mkoctfile -p FLIBS”.
It is unneeded, and it can create a conflict between the system compiler and
a user-supplied compiler
By the way:
— restore optimization on macOS for C/C++ MEX (it had been removed in
5df2392a09)
— remove -fno-omit-frame-pointer on MATLAB/Linux, since it would be cancelled
by subsequent -O2 and should not be needed anyways
— remove FFLAGS under Octave, unused
Currently it is not applied consistently to all binaries we produce.
Moreover we do not really have a way to test support for older macOS versions.
If there are problems, we might reintroduce this flag later, but we will have
to it consistently across all binaries.
* The macOS snapshot until this point did not work unless the user had already installed `libmatio`, `gsl`, and `gcc` via Homebrew.
* We are not modifying `m4/ax_matio.m4` as we want to still be able to compile against shared libraries in development
This check recently broke under my MSYS2 installation. I’m unsure why, but I
guess it’s related to some Windows 10 update.
The solution is to stop calling it through “cmd”, and to call it directly as an
executable.
The scripts are based the former “dynare-build” project. They have been
overhauled and simplified.
Building a Windows package (both installer and zip archive) is as easy as
running “make -C windows” (provided the right Debian packages are installed,
use the “windows/install-packages.sh” script for that purpose).
The layout of MEX files for Octave in the package has been
changed (mex/octave/win32/ and mex/octave/win64/ instead of mex/octave32/ and
mex/octave/), for consistency with MATLAB MEX.
On Windows, this means that a POSIX threads implementation is no longer needed,
since C++11 threads are implemented using native Windows threads.
On GNU/Linux and macOS, POSIX threads are still used under the hood.
A new m4 macro (AX_CXX11_THREAD) is used to add the proper compilation
flags (instead of AX_PTHREAD).
- Use the -static flag when linking Dynare++, so that shipping libquadmath and
libgcc DLL in the installer is no longer needed.
- Use AM_CXXFLAGS and AM_LDFLAGS variables for changing flags, since CXXFLAGS
and LDFLAGS are user variables. Also, this avoids passing these flags down to
configure scripts in subdirectories.
- Check for the SZIP library in the configure test for the MatIO, this is
needed under MSYS2.
- Statically link MatIO and GSL in MEX files for MATLAB, this is needed under
MSYS2.
This commit was breaking the detection of slicot. My understanding is that
autoconf is not able to deal with spaces in paths, hence Windows users have not
choice but to use the 8.3 notation for MATLAB location.
This reverts commit 4ab79c55f0.