— 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
— FCFLAGS needs to contain the compilation flags used when compiling Octave,
otherwise it fails at configure stage when looking for gfortran
— Explicitly add -L$OCTLIBDIR, because with Octave 5 it is no longer there, and
on Fedora the Octave libraries are no in the default linker search path
The MEX files are built out-of-tree (because we want to do them in parallel).
This would create a potential race condition if several builds want to create
the symlinks under mex/matlab/ or mex/octave/.
The solution is to disable those symlinks for out-of-tree builds.
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.