Stéphane Adjemian committed Sep 01, 2015 1   Houtan Bastani committed Jul 21, 2015 2 3 4 5 6 7   Houtan Bastani committed Jun 19, 2013 8 9 10 11 12 13 14 # Dynare Described on the homepage: Most users should use the precompiled package available for your OS, also available via the Dynare homepage: .  Houtan Bastani committed Dec 08, 2015 15 16 # Contributions  Sébastien Villemot committed Sep 10, 2018 17 To contribute to Dynare and participate in the Dynare community, please see: [CONTRIBUTING.md](https://git.dynare.org/Dynare/dynare/blob/master/CONTRIBUTING.md)  Houtan Bastani committed Dec 08, 2015 18   Houtan Bastani committed Jun 19, 2013 19 20 21 22 23 24 25 26 27 28 29 30 31 32 # License Most of the source files are covered by the GNU General Public Licence version 3 or later (there are some exceptions to this, see [license.txt](license.txt) in Dynare distribution for specifics). # Building Dynare From Source Here, we explain how to build from source: - Dynare, including preprocessor and MEX files for MATLAB and Octave - Dynare++ - all the associated documentation (PDF and HTML) This source can be retrieved in three forms:  Sébastien Villemot committed Sep 10, 2018 33 - via git, at  Sébastien Villemot committed Dec 16, 2013 34 - using the stable source archive of the latest Dynare version (currently 4.4) from  Houtan Bastani committed Jun 19, 2013 35 36 37 38 39 40 - using a source snapshot of the unstable version, from Note that if you obtain the source code via git, you will need to install more tools (see below). The first section of this page gives general instructions, which apply to all platforms. Then some specific platforms are discussed.  Sébastien Villemot committed Nov 08, 2018 41 **Note:** Here, when we refer to 32-bit or 64-bit, we refer to the type of MATLAB installation, not the type of Windows installation. It is perfectly possible to run a 32-bit MATLAB on a 64-bit Windows: in that case, instructions for Windows 32-bit should be followed. To determine the type of your MATLAB installation, type:  Houtan Bastani committed Jun 19, 2013 42 43 44 matlab >> computer   Sébastien Villemot committed Nov 08, 2018 45 46 47 at the MATLAB prompt: if it returns PCWIN64, GLNX64 or MACI64, then you have a 64-bit MATLAB; if it returns PCWIN, MACI or GLNX, then you have a 32-bit MATLAB.  Houtan Bastani committed Jun 19, 2013 48 49 50 51 52 53  **Contents** 1. [**General Instructions**](#general-instructions) 1. [**Debian or Ubuntu**](#debian-or-ubuntu) 1. [**Windows**](#windows)  Houtan Bastani committed Feb 13, 2018 54 1. [**macOS**](#macos)  Houtan Bastani committed Jun 19, 2013 55 56 57 58 59 60 61 62  ## General Instructions ### Prerequisites A number of tools and libraries are needed in order to recompile everything. You don't necessarily need to install everything, depending on what you want to compile. - A POSIX compliant shell and an implementation of Make (mandatory)  Sébastien Villemot committed Feb 01, 2019 63 64 - The [GNU Compiler Collection](http://gcc.gnu.org/), version 6 or later, with gcc, g++ and gfortran (mandatory)  Sébastien Villemot committed Nov 08, 2018 65 66 67 - MATLAB (if you want to compile the MEX for MATLAB) - [GNU Octave](http://www.octave.org), with the development headers (if you want to compile the MEX for Octave)  Sébastien Villemot committed Jun 27, 2018 68 - [Boost libraries](http://www.boost.org), version 1.36 or later (with the filesystem library compiled)  Sébastien Villemot committed Nov 06, 2018 69 - [Bison](http://www.gnu.org/software/bison/), version 3.0 or later (only if you get the source through Git)  Houtan Bastani committed Jun 19, 2013 70 71 72 73 - [Flex](http://flex.sourceforge.net/), version 2.5.4 or later (only if you get the source through Git) - [Autoconf](http://www.gnu.org/software/autoconf/), version 2.62 or later (only if you get the source through Git) (see [Installing an updated version of Autoconf in your own directory, in GNU/Linux](http://www.dynare.org/DynareWiki/AutoMake)) - [Automake](http://www.gnu.org/software/automake/), version 1.11.2 or later (only if you get the source through Git) (see [Installing an updated version of AutoMake in your own directory, in GNU/Linux](http://www.dynare.org/DynareWiki/AutoMake)) - An implementation of BLAS and LAPACK: either [ATLAS](http://math-atlas.sourceforge.net/), [OpenBLAS](http://xianyi.github.com/OpenBLAS/), Netlib ([BLAS](http://www.netlib.org/blas/), [LAPACK](http://www.netlib.org/lapack/)) or [MKL](http://software.intel.com/en-us/intel-mkl/) (only if you want to build Dynare++)  Sébastien Villemot committed Feb 12, 2019 74 - [MAT File I/O library](http://sourceforge.net/projects/matio/), version 1.5 or later (if you want to compile Markov-Switching code, the estimation DLL, k-order DLL and Dynare++)  Houtan Bastani committed Jun 19, 2013 75 76 - [SLICOT](http://www.slicot.org) (if you want to compile the Kalman steady state DLL) - [GSL library](http://www.gnu.org/software/gsl/) (if you want to compile Markov-Switching code)  Sébastien Villemot committed Jan 08, 2019 77 78 - A decent LaTeX distribution (if you want to compile PDF documentation), ideally with Beamer  Houtan Bastani committed Jun 19, 2013 79 - For building the reference manual:  Sébastien Villemot committed Feb 21, 2019 80 81 82  - [Sphinx](http://www.sphinx-doc.org/) - [MathJax](https://www.mathjax.org/) - [Doxygen](http://www.stack.nl/%7Edimitri/doxygen/) (if you want to build Dynare preprocessor source documentation)  Sébastien Villemot committed Dec 16, 2013 83 - For Octave, the development libraries corresponding to the UMFPACK packaged with Octave  Houtan Bastani committed Jun 19, 2013 84 85 86 87 88 89 90  ### Preparing the sources If you have downloaded the sources from an official source archive or the source snapshot, just unpack it. If you want to use Git, do the following from a terminal:  Sébastien Villemot committed Sep 10, 2018 91  git clone --recursive https://git.dynare.org/Dynare/dynare.git  Houtan Bastani committed Jun 19, 2013 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112  cd dynare autoreconf -si The last line runs Autoconf and Automake in order to prepare the build environment (this is not necessary if you got the sources from an official source archive or the source snapshot). ### Configuring the build tree Simply launch the configure script from a terminal:  ./configure  If you have MATLAB, you need to indicate both the MATLAB location and version. For example, on GNU/Linux:  ./configure --with-matlab=/usr/local/MATLAB/R2013a MATLAB_VERSION=8.1  Note that the MATLAB version can also be specified via the MATLAB family product release (R2009a, R2008b, ...). Alternatively, you can disable the compilation of MEX files for MATLAB with the --disable-matlab flag, and MEX files for Octave with --disable-octave. You may need to specify additional options to the configure script, see the platform specific instructions below.  Houtan Bastani committed Jan 25, 2016 113 Note that if you don't want to compile the C/C++ programs with debugging information, you can specify the CFLAGS and CXXFLAGS variables to the configure script, such as:  Houtan Bastani committed Jun 19, 2013 114 115 116  ./configure CFLAGS="-O3" CXXFLAGS="-O3"   Sébastien Villemot committed Nov 08, 2018 117 To remove debugging information for MATLAB MEX functions, the analagous call would be:  Houtan Bastani committed Jan 25, 2016 118 119 120 121  ./configure MATLAB_MEX_CFLAGS="-O3" MATLAB_MEX_CXXFLAGS="-O3"   Houtan Bastani committed Jun 19, 2013 122 123 If you want to give a try to the parallelized versions of some mex files (A_times_B_kronecker_C and sparse_hessian_times_B_kronecker_C used to get the reduced form of the second order approximation of the model) you can add the --enable-openmp flag, for instance:   Sébastien Villemot committed Nov 08, 2018 124 ./configure --with-matlab=/usr/local/MATLAB/R2013a MATLAB_VERSION=8.1 --enable-openmp  Houtan Bastani committed Jun 19, 2013 125 126 127  If the configuration goes well, the script will tell you which components are correctly configured and will be built.  Johannes Pfeifer committed Jan 27, 2017 128 ### Building  Houtan Bastani committed Jun 19, 2013 129 130 131 132 133 134 135 136 137 138 139 140 141 142  Binaries and Info documentation are built with:  make  PDF and HTML documentation are respectively built with:  make pdf make html  The testsuites can be run with:  make check   Johannes Pfeifer committed Sep 13, 2016 143 144 145 146  Note that running the testsuite with Octave requires the additional packages pstoedit, epstool, xfig, and gnuplot.  Stéphane Adjemian (Charybdis) committed Jan 25, 2017 147 148 ### Check  Sébastien Villemot committed Nov 08, 2018 149 The Git source comes with unit tests (in the MATLAB functions) and integration tests (under the tests subfolder). All the tests can be run with:  Stéphane Adjemian (Charybdis) committed Jan 25, 2017 150 151 152  make check   Sébastien Villemot committed Nov 08, 2018 153 154 In the tests subfolder. If Dynare has been compiled against MATLAB and Octave, the tests will be run with MATLAB and Octave. Depending on your PC, this can take several hours. It is possible to run the tests only with MATLAB:  Stéphane Adjemian (Charybdis) committed Jan 25, 2017 155 156 157 158 159  make check-matlab  or only with Octave:   Johannes Pfeifer committed Jan 27, 2017 160 make check-octave  Stéphane Adjemian (Charybdis) committed Jan 25, 2017 161 162 163 164 165 166 167  A summary of the results is available in tests/run_test_matlab_output.txt or tests/run_test_octave_output.txt. Often, it does not make sense to run the complete testsuite. For instance, if you modify codes only related to the perfect foresight model solver, you can decide to run only a subset of the integration tests, with:  make deterministic_simulations   Sébastien Villemot committed Nov 08, 2018 168 This will run all the integration tests in tests/deterministic_simulations with MATLAB and Octave. Again, it is possible to do this only with MATLAB:  Stéphane Adjemian (Charybdis) committed Jan 25, 2017 169 170 171 172 173 174 175  make m/deterministic_simulations  or with Octave:  make o/deterministic_simulations   Sébastien Villemot committed Nov 08, 2018 176 Finally if you want to run a single integration test, e.g. deterministic_simulations/lbj/rbc.mod with MATLAB:  Stéphane Adjemian (Charybdis) committed Jan 25, 2017 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191  make deterministic_simulations/lbj/rbc.m.trs  or with Octave:  make deterministic_simulations/lbj/rbc.o.trs  The result of the test (PASSED or FAILED) will be printed in the terminal, the produced log can be displayed with:  make deterministic_simulations/lbj/rbc.m.drs  or  make deterministic_simulations/lbj/rbc.o.drs   Johannes Pfeifer committed Jan 27, 2017 192 193 194 195 196 Note that only tests will be executed where the m.trs/o.trs does not yet exist. You can run  make clean  in the tests folder to delete files that were created by the run of the testsuite. You can also manually delete the desired m.trs/o.trs file(s).  Stéphane Adjemian (Charybdis) committed Jan 25, 2017 197   Houtan Bastani committed Jun 19, 2013 198 199 ## Debian or Ubuntu  Sébastien Villemot committed Nov 06, 2018 200 All the prerequisites are packaged:  Houtan Bastani committed Jun 19, 2013 201 202  - build-essential (for gcc, g++ and make)  Houtan Bastani committed Jan 21, 2015 203 - gfortran  Sébastien Villemot committed Nov 06, 2018 204 - liboctave-dev  Sébastien Villemot committed Jun 27, 2018 205 - libboost-graph-dev and libboost-filesystem-dev  Sébastien Villemot committed Nov 06, 2018 206 - libgsl-dev  Houtan Bastani committed Jun 19, 2013 207 208 - libmatio-dev - libslicot-dev and libslicot-pic  Sébastien Villemot committed Dec 16, 2013 209 - libsuitesparse-dev  Houtan Bastani committed Jun 19, 2013 210 211 212 213 214 215 216 - flex - bison - autoconf - automake - texlive - texlive-publishers (for Econometrica bibliographic style) - texlive-latex-extra (for fullpage.sty)  Stéphane Adjemian (Hermes) committed Aug 23, 2016 217 - texlive-fonts-extra (for ccicons)  Sébastien Villemot committed Nov 06, 2018 218 219 - texlive-latex-recommended - texlive-science (for amstex)  Sébastien Villemot committed Feb 26, 2019 220 - texlive-generic-extra (for Sphinx)  Sébastien Villemot committed Jun 29, 2017 221 - lmodern (for macroprocessor PDF)  Sébastien Villemot committed Feb 21, 2019 222 223 - python3-sphinx - libjs-mathjax  Houtan Bastani committed Jun 19, 2013 224 225 - doxygen  Sébastien Villemot committed Nov 06, 2018 226 You can install them all at once with:  Michel Juillard committed Jul 18, 2018 227   Sébastien Villemot committed Feb 26, 2019 228 apt install build-essential gfortran liboctave-dev libboost-graph-dev libboost-filesystem-dev libgsl-dev libmatio-dev libslicot-dev libslicot-pic libsuitesparse-dev flex bison autoconf automake texlive texlive-publishers texlive-latex-extra texlive-fonts-extra texlive-latex-recommended texlive-science texlive-generic-extra lmodern python3-sphinx libjs-mathjax doxygen  Michel Juillard committed Jul 18, 2018 229 230   Houtan Bastani committed Jun 19, 2013 231 232 ## Windows  Sébastien Villemot committed Nov 06, 2018 233 234 - Install [MSYS2](http://www.msys2.org) (pick the 64-bit version) - Run a MSYS MinGW 64-bit shell  Sébastien Villemot committed Nov 06, 2018 235 236 237 238 239 240 241 - Update the system:  pacman -Syu  You may be asked to close the window at the end of the first upgrade batch, in which case you should rerun the upgrade in a new window to complete the upgrade.  Sébastien Villemot committed Nov 06, 2018 242 243 244 245 - Install all needed dependencies:  pacman -S git autoconf automake-wrapper bison flex make tar texinfo mingw-w64-x86_64-gcc mingw-w64-x86_64-gcc-fortran mingw-w64-x86_64-boost mingw-w64-x86_64-gsl mingw-w64-x86_64-matio mingw-w64-x86_64-openblas   Sébastien Villemot committed Nov 08, 2018 246 - **(Optional)** compile and install SLICOT, needed for the kalman_steady_state  Sébastien Villemot committed Nov 06, 2018 247 248 249 250 251  MEX file  wget https://deb.debian.org/debian/pool/main/s/slicot/slicot_5.0+20101122.orig.tar.gz tar xf slicot_5.0+20101122.orig.tar.gz cd slicot-5.0+20101122  Sébastien Villemot committed Nov 08, 2018 252 make FORTRAN=gfortran OPTS="-O2 -fno-underscoring -fdefault-integer-8" LOADER=gfortran slicot.a  Sébastien Villemot committed Nov 06, 2018 253 254 255 256 257 258 259 260 261 262 263 264 265 266 mkdir -p /usr/local/lib cp slicot.a /usr/local/lib/libslicot64_pic.a cd ..  - Clone and prepare the Dynare sources:  git clone --recursive https://git.dynare.org/Dynare/dynare.git cd dynare autoreconf -si  - Configure Dynare:  ./configure --with-boost-system=boost_system-mt --with-boost-filesystem=boost_filesystem-mt --with-slicot=/usr/local --with-matlab=<…> MATLAB_VERSION=<…> --disable-octave   Sébastien Villemot committed Nov 08, 2018 267 268 269 where the path and version of MATLAB are specified. Note that you should use the MSYS2 notation and not put spaces in the MATLAB path, so you probably want to use something like /c/Progra~1/MATLAB/….  Sébastien Villemot committed Nov 06, 2018 270 271 272 273 - Compile:  make   Sébastien Villemot committed Nov 21, 2018 274 275 276 277 - Run the testsuite:  make -C tests check-matlab   Sébastien Villemot committed Nov 06, 2018 278   Sébastien Villemot committed Nov 08, 2018 279 **Note:** The above assumes that you have a 64-bit version of MATLAB. It can be  Sébastien Villemot committed Nov 06, 2018 280 281 282 adapted to a 32-bit MATLAB with the following modifications: - run the MSYS MinGW 32-bit shell  Sébastien Villemot committed Nov 08, 2018 283 - replace x86_64 by i686 in packages names on the pacman command-line  Sébastien Villemot committed Nov 06, 2018 284 285 286 - for SLICOT, remove the -fdefault-integer-8 option, and instead copy the library into /usr/local/lib/libslicot_pic.a  Sébastien Villemot committed Nov 08, 2018 287 **Note:** Compiling the MEX files for Octave and the documentation under MSYS2 is  Sébastien Villemot committed Nov 06, 2018 288 currently not supported.  Houtan Bastani committed Jun 19, 2013 289   Houtan Bastani committed Feb 13, 2018 290 291 ## macOS  Sébastien Villemot committed Nov 08, 2018 292 To simply use a snapshot of Dynare, you have two choices. On MATLAB, you can  Houtan Bastani committed Feb 13, 2018 293 294 295 296 297 use the [snapshot build](http://www.dynare.org/snapshot/macosx/) provided by Dynare. On Octave, you can simply install [Homebrew](https://brew.sh/) and run brew install dynare --HEAD (See the Install Dynare (unstable) section of [this webpage](http://www.dynare.org/DynareWiki/InstallOnMacOSX) for more details).  Houtan Bastani committed Feb 13, 2018 298 299  If you do not wish to use the snapshots provided by Dynare or Homebrew, follow  Houtan Bastani committed Feb 13, 2018 300 301 302 the directions below to build Dynare on your local machine. Preparatory work:  Houtan Bastani committed Jun 19, 2013 303   Houtan Bastani committed Nov 03, 2014 304 - Install the Xcode Command Line Tools:  Houtan Bastani committed Feb 13, 2018 305 306 307 308 309 310 311  - Open Terminal.app and type xcode-select --install - Install [Homebrew](https://brew.sh/) by following the instructions on their website The following commands will install the programs that Dynare needs to compile. They should be entered at the command prompt in Terminal.app. - brew install automake bison flex boost fftw gcc gsl hdf5 libmatio metis veclibfort  Houtan Bastani committed Oct 31, 2014 312 - **(Optional)** To compile Dynare mex files for use on Octave:  Houtan Bastani committed Feb 13, 2018 313 314 315 316 317  - brew install octave - brew install suite-sparse - **(Optional)** To compile Dynare documentation - Install the latest version of [MacTeX](http://www.tug.org/mactex/), deselecting the option to install Ghostscript - brew install doxygen latex2html  Houtan Bastani committed Feb 13, 2018 318 319 320 321 322  The following commands will download the Dynare source code and compile it. They should be entered at the command prompt in Terminal.app from the folder where you want Dynare installed.  Sébastien Villemot committed Sep 10, 2018 323 - git clone https://git.dynare.org/Dynare/dynare.git  Houtan Bastani committed Feb 13, 2018 324 325 326 - cd dynare - PATH="/usr/local/opt/bison/bin:/usr/local/opt/flex/bin:\$PATH" - autoreconf -si  Sébastien Villemot committed Nov 08, 2018 327 - ./configure --disable-octave --with-matlab=/Applications/MATLAB_R2017b.app MATLAB_VERSION=R2017b, adjusting the MATLAB path and version to accord with your local installation. If you don't have MATLAB, simply type ./configure --disable-octave  Houtan Bastani committed Feb 13, 2018 328 329 330 331 332 - make -j - **(Optional)** To then build mex files for Octave, run - cd mex/build/octave - ./configure CXXFLAGS="-std=c++0x" - make -j