Merge pull request #1316 from JohannesPfeifer/mingw
Add mingw to dyn_mex.m and document compiler options and installation.time-shift
commit
6fcd3f4eb9
|
@ -162,6 +162,7 @@ Installation and configuration
|
||||||
|
|
||||||
* Software requirements::
|
* Software requirements::
|
||||||
* Installation of Dynare::
|
* Installation of Dynare::
|
||||||
|
* Compiler installation::
|
||||||
* Configuration::
|
* Configuration::
|
||||||
|
|
||||||
Installation of Dynare
|
Installation of Dynare
|
||||||
|
@ -422,6 +423,7 @@ If you want to give a URL, use the address of the Dynare website:
|
||||||
@menu
|
@menu
|
||||||
* Software requirements::
|
* Software requirements::
|
||||||
* Installation of Dynare::
|
* Installation of Dynare::
|
||||||
|
* Compiler installation::
|
||||||
* Configuration::
|
* Configuration::
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
@ -461,25 +463,13 @@ If under GNU Octave, the following
|
||||||
@uref{http://octave.sourceforge.net/,Octave-Forge} packages: optim,
|
@uref{http://octave.sourceforge.net/,Octave-Forge} packages: optim,
|
||||||
io, statistics, control.
|
io, statistics, control.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Mac OS X Octave users will also need to install
|
||||||
|
gnuplot if they want graphing capabilities.
|
||||||
|
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
If you plan to use the @code{use_dll} option of the @code{model}
|
|
||||||
command, you will need to install the necessary requirements for
|
|
||||||
compiling MEX files on your machine. If you are using MATLAB under
|
|
||||||
Windows, install a C++ compiler on your machine and configure it with
|
|
||||||
MATLAB: see
|
|
||||||
@uref{http://www.dynare.org/DynareWiki/ConfigureMatlabWindowsForMexCompilation,instructions
|
|
||||||
on the Dynare wiki}. Users of Octave under Linux should install the
|
|
||||||
package for MEX file compilation (under Debian or Ubuntu, it is called
|
|
||||||
@file{liboctave-dev}). If you are
|
|
||||||
using Octave or MATLAB under Mac OS X, you should install the latest
|
|
||||||
version of XCode: see
|
|
||||||
@uref{http://www.dynare.org/DynareWiki/InstallOnMacOSX,instructions on
|
|
||||||
the Dynare wiki}. Mac OS X Octave users will also need to install
|
|
||||||
gnuplot if they want graphing capabilities. Users of MATLAB under
|
|
||||||
Linux and Mac OS X, and users of Octave under Windows, normally need
|
|
||||||
to do nothing, since a working compilation environment is available by
|
|
||||||
default.
|
|
||||||
|
|
||||||
@node Installation of Dynare
|
@node Installation of Dynare
|
||||||
@section Installation of Dynare
|
@section Installation of Dynare
|
||||||
|
@ -554,6 +544,59 @@ Then you will need to recompile the pre-processor and the dynamic
|
||||||
loadable libraries. Please refer to
|
loadable libraries. Please refer to
|
||||||
@uref{https://github.com/DynareTeam/dynare/blob/master/README.md,README.md}.
|
@uref{https://github.com/DynareTeam/dynare/blob/master/README.md,README.md}.
|
||||||
|
|
||||||
|
@node Compiler installation
|
||||||
|
@section Compiler installation
|
||||||
|
|
||||||
|
If you plan to use the @code{use_dll} option of the @code{model}
|
||||||
|
command, you will need to install the necessary requirements for
|
||||||
|
compiling MEX files on your machine.
|
||||||
|
|
||||||
|
If you are using MATLAB, please check
|
||||||
|
@uref{http://www.mathworks.com/support/compilers} for supported compilers for
|
||||||
|
your MATLAB version on your operating system. After installing your compiler,
|
||||||
|
select it using @code{mex -setup} in Matlab and clicking on the required compiler.
|
||||||
|
|
||||||
|
Octave comes with built-in functionality for compiling mex-files.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* On Windows::
|
||||||
|
* On Debian GNU/Linux and Ubuntu::
|
||||||
|
* On Mac OS X::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node On Windows
|
||||||
|
@subsection On Windows
|
||||||
|
|
||||||
|
If you are using MATLAB under Windows, install a C++ compiler on your machine and configure it with
|
||||||
|
MATLAB. There are at least two free compilers you can use. First, there is Microsoft's Visual Studio
|
||||||
|
Community (@uref{https://www.visualstudio.com/}), which has the largest history of MATLAB support, but
|
||||||
|
requires much space on the hard-disk. Second, since MATLAB R2015b, MATLAB supports the MinGW-w64 C/C++
|
||||||
|
Compiler from TDM-GCC. To install this compiler, use the Add-Ons menu of MATLAB. Search for MinGW or
|
||||||
|
select it from Features.
|
||||||
|
|
||||||
|
For older version of MATLAB, in particular before R2014a, it may sometimes make sense to use the gcc compiler
|
||||||
|
provided by Cygwin. However, integrating it in MATLAB can be quite cumbersome and should be considered as a
|
||||||
|
legacy option. For details, see
|
||||||
|
@uref{http://www.dynare.org/DynareWiki/ConfigureMatlabWindowsForMexCompilation,instructions
|
||||||
|
on the Dynare wiki}.
|
||||||
|
|
||||||
|
@node On Debian GNU/Linux and Ubuntu
|
||||||
|
@subsection On Debian GNU/Linux and Ubuntu
|
||||||
|
|
||||||
|
Users of MATLAB under Linux need to have a working compilation environment installed. If not already present,
|
||||||
|
it can be installed via @code{apt-get install build-essential}.
|
||||||
|
|
||||||
|
Users of Octave under Linux should install the package for MEX file compilation
|
||||||
|
(under Debian or Ubuntu, it is called @file{liboctave-dev}).
|
||||||
|
|
||||||
|
@node On Mac OS X
|
||||||
|
@subsection On Mac OS X
|
||||||
|
If you are using MATLAB under Mac OS X, you should install the latest
|
||||||
|
version of XCode: see
|
||||||
|
@uref{http://www.dynare.org/DynareWiki/InstallOnMacOSX,instructions on
|
||||||
|
the Dynare wiki}.
|
||||||
|
|
||||||
|
|
||||||
@node Configuration
|
@node Configuration
|
||||||
@section Configuration
|
@section Configuration
|
||||||
|
|
||||||
|
@ -821,17 +864,23 @@ used. Alternatively, the path can be temporarly modified by the user at
|
||||||
the top of the @file{*.mod} file (using Matlab/Octave's @code{addpath}
|
the top of the @file{*.mod} file (using Matlab/Octave's @code{addpath}
|
||||||
command).
|
command).
|
||||||
|
|
||||||
@item cygwin
|
@item mingw
|
||||||
Tells Dynare that your MATLAB is configured for compiling MEX files with
|
Tells Dynare that your MATLAB is configured for compiling MEX files with the
|
||||||
Cygwin (@pxref{Software requirements}). This option is only available
|
MinGW-compiler from TDM-GCC (@pxref{Compiler installation}). This option is
|
||||||
under Windows, and is used in conjunction with @code{use_dll}.
|
only available under Windows, and is used in conjunction with
|
||||||
|
@code{use_dll}.
|
||||||
|
|
||||||
@item msvc
|
@item msvc
|
||||||
Tells Dynare that your MATLAB is configured for compiling MEX files with
|
Tells Dynare that your MATLAB is configured for compiling MEX files with
|
||||||
Microsoft Visual C++ (@pxref{Software requirements}). This option is
|
Microsoft Visual C++ (@pxref{Compiler installation}). This option is
|
||||||
only available under Windows, and is used in conjunction with
|
only available under Windows, and is used in conjunction with
|
||||||
@code{use_dll}.
|
@code{use_dll}.
|
||||||
|
|
||||||
|
@item cygwin
|
||||||
|
Tells Dynare that your MATLAB is configured for compiling MEX files with
|
||||||
|
Cygwin (@pxref{Compiler installation}). This option is only available
|
||||||
|
under Windows, and is used in conjunction with @code{use_dll}.
|
||||||
|
|
||||||
@item parallel[=@var{CLUSTER_NAME}]
|
@item parallel[=@var{CLUSTER_NAME}]
|
||||||
Tells Dynare to perform computations in parallel. If @var{CLUSTER_NAME}
|
Tells Dynare to perform computations in parallel. If @var{CLUSTER_NAME}
|
||||||
is passed, Dynare will use the specified cluster to perform parallel
|
is passed, Dynare will use the specified cluster to perform parallel
|
||||||
|
@ -1860,8 +1909,9 @@ NOT trigger linearization of the model.
|
||||||
Instructs the preprocessor to create dynamic loadable libraries (DLL)
|
Instructs the preprocessor to create dynamic loadable libraries (DLL)
|
||||||
containing the model equations and derivatives, instead of writing those
|
containing the model equations and derivatives, instead of writing those
|
||||||
in M-files. You need a working compilation environment, @i{i.e.}
|
in M-files. You need a working compilation environment, @i{i.e.}
|
||||||
a working @code{mex} command (see @ref{Software requirements} for more
|
a working @code{mex} command (see @ref{Compiler installation} for more
|
||||||
details). Using this option can result in faster simulations or
|
details). On MATLAB for Windows, you will need to also pass the compiler name at
|
||||||
|
the command line. Using this option can result in faster simulations or
|
||||||
estimations, at the expense of some initial compilation
|
estimations, at the expense of some initial compilation
|
||||||
time.@footnote{In particular, for big models, the compilation step can
|
time.@footnote{In particular, for big models, the compilation step can
|
||||||
be very time-consuming, and use of this option may be counter-productive
|
be very time-consuming, and use of this option may be counter-productive
|
||||||
|
|
|
@ -52,7 +52,10 @@ if ~exist('OCTAVE_VERSION')
|
||||||
% Add /TP flag as fix for #1227
|
% Add /TP flag as fix for #1227
|
||||||
eval(['mex -O LINKFLAGS="$LINKFLAGS /export:Dynamic" COMPFLAGS="/TP" ' basename '_dynamic.c ' basename '_dynamic_mex.c'])
|
eval(['mex -O LINKFLAGS="$LINKFLAGS /export:Dynamic" COMPFLAGS="/TP" ' basename '_dynamic.c ' basename '_dynamic_mex.c'])
|
||||||
eval(['mex -O LINKFLAGS="$LINKFLAGS /export:Static" COMPFLAGS="/TP" ' basename '_static.c ' basename '_static_mex.c'])
|
eval(['mex -O LINKFLAGS="$LINKFLAGS /export:Static" COMPFLAGS="/TP" ' basename '_static.c ' basename '_static_mex.c'])
|
||||||
elseif strcmp(win_compiler,'cygwin')
|
elseif strcmp(win_compiler,'mingw')
|
||||||
|
eval(['mex -O LINKFLAGS="$LINKFLAGS /export:Dynamic" ' basename '_dynamic.c ' basename '_dynamic_mex.c'])
|
||||||
|
eval(['mex -O LINKFLAGS="$LINKFLAGS /export:Static" ' basename '_static.c ' basename '_static_mex.c'])
|
||||||
|
elseif strcmp(win_compiler,'cygwin') %legacy support for Cygwin with mexopts.bat
|
||||||
% MATLAB/Windows + Cygwin g++
|
% MATLAB/Windows + Cygwin g++
|
||||||
eval(['mex -O PRELINK_CMDS1="echo EXPORTS > mex.def & echo ' ...
|
eval(['mex -O PRELINK_CMDS1="echo EXPORTS > mex.def & echo ' ...
|
||||||
'mexFunction >> mex.def & echo Dynamic >> mex.def" ' ...
|
'mexFunction >> mex.def & echo Dynamic >> mex.def" ' ...
|
||||||
|
@ -62,7 +65,7 @@ if ~exist('OCTAVE_VERSION')
|
||||||
basename '_static.c ' basename '_static_mex.c'])
|
basename '_static.c ' basename '_static_mex.c'])
|
||||||
else
|
else
|
||||||
error(['When using the USE_DLL option, you must give either ' ...
|
error(['When using the USE_DLL option, you must give either ' ...
|
||||||
'''cygwin'' or ''msvc'' option to the ''dynare'' command'])
|
'''cygwin'', ''mingw'' or ''msvc'' option to the ''dynare'' command'])
|
||||||
end
|
end
|
||||||
elseif isunix
|
elseif isunix
|
||||||
% MATLAB/Linux
|
% MATLAB/Linux
|
||||||
|
|
Loading…
Reference in New Issue