Update README macOS instructions for both Apple silicon and intel
(cherry picked from commit 940cfa893b1fec83ff824e36851b82d36fd68875)silicon-new-samplers
parent
6ded657545
commit
c09e367db5
79
README.md
79
README.md
|
@ -116,7 +116,7 @@ Some important options:
|
|||
- `--disable-octave`: skip the compilation of MEX files for Octave
|
||||
- `--disable-doc`: skip the compilation of the documentation (PDF and HTML)
|
||||
|
||||
You may need to specify additional options to the configure script, see the output of the `--help` option, and also the platform specific instructions below. If the configuration goes well, the script will tell you which components are correctly configured and will be built.
|
||||
You may need to specify additional options to the configure script, see the output of the `--help` option, and also the platform specific instructions below. If the configuration goes well, the script will tell you which components are correctly configured and will be built.
|
||||
|
||||
Note that it is possible that some MEX files cannot be compiled, due to missing
|
||||
build dependencies. If you find no way of installing the missing dependencies,
|
||||
|
@ -156,7 +156,7 @@ or only with Octave:
|
|||
```sh
|
||||
make check-octave
|
||||
```
|
||||
Note that running the testsuite with Octave requires the additional packages `pstoedit`, `epstool`, `xfig`, and `gnuplot`.
|
||||
Note that running the testsuite with Octave requires the additional packages `pstoedit`, `epstool`, `xfig`, and `gnuplot`.
|
||||
|
||||
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:
|
||||
```sh
|
||||
|
@ -410,46 +410,49 @@ create a temporary alias to ensure that `brew` points to the Intel packages.
|
|||
|
||||
For the following steps open Terminal.app and enter the commands listed below.
|
||||
|
||||
The following commands install all requirements and Dynare from source.
|
||||
They should be entered at the command prompt in Terminal.app.
|
||||
|
||||
### Preparatory work
|
||||
|
||||
- Install Rosetta 2 (Apple Silicon only):
|
||||
```sh
|
||||
softwareupdate --install-rosetta --agree-to-license
|
||||
```
|
||||
|
||||
- Install the Xcode Command Line Tools:
|
||||
```sh
|
||||
xcode-select --install
|
||||
```
|
||||
|
||||
- Create environmental variables for which platform you want to compile for, i.e. either `arm64` or `x86_64`:
|
||||
|
||||
For `arm64` run the following commands:
|
||||
```sh
|
||||
export ARCH=arm64
|
||||
export BREWDIR=/opt/homebrew
|
||||
```
|
||||
|
||||
For `x86_64` run the following commands:
|
||||
```sh
|
||||
export ARCH=x86_64
|
||||
export BREWDIR=/usr/local
|
||||
```
|
||||
|
||||
- Install [Homebrew](https://brew.sh/):
|
||||
```sh
|
||||
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
arch -$ARCH /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
```
|
||||
The prefix `arch -x86_64` makes sure that you are using Rosetta 2 to install Homebrew.
|
||||
|
||||
- Apple Silicon only: Make a (temporary) alias to run `brew` under Rosetta 2:
|
||||
- Make sure that you are running `brew` correctly either from `/opt/homebrew/bin` or from `/usr/local/bin` by temporarily (!) prepending it to the path:
|
||||
```sh
|
||||
alias brew='arch -x86_64 /usr/local/bin/brew'
|
||||
which brew
|
||||
#brew: aliased to arch -x86_64 /usr/local/bin/brew
|
||||
export PATH="$BREWDIR/bin:$PATH"
|
||||
```
|
||||
|
||||
- Install required Homebrew packages and link sphinx-doc:
|
||||
```sh
|
||||
brew install automake bison flex boost gcc gsl libmatio veclibfort octave sphinx-doc wget
|
||||
brew link --force sphinx-doc
|
||||
arch -$ARCH $BREWDIR/bin/brew install automake bison flex boost gcc gsl libmatio veclibfort octave sphinx-doc wget
|
||||
arch -$ARCH $BREWDIR/bin/brew link --force sphinx-doc
|
||||
```
|
||||
|
||||
- Install [MacTeX](http://www.tug.org/mactex/index.html) using the universal installer. MacTeX runs natively on both ARM and Intel machines. On Apple Silicon, we need to put `pdflatex` and `bibtex` into our path:
|
||||
```sh
|
||||
ln -s /Library/TeX/texbin/pdflatex /usr/local/bin/pdflatex
|
||||
ln -s /Library/TeX/texbin/bibtex /usr/local/bin/bibtex
|
||||
```
|
||||
Alternatively, if you don’t want to install MacTeX, you should pass the `--disable-doc` flag to the `configure` command below.
|
||||
- Install [MacTeX](http://www.tug.org/mactex/index.html) using the universal installer. MacTeX runs natively on both ARM and Intel machines. Alternatively, if you don’t want to install MacTeX, you should pass the `--disable-doc` flag to the `configure` command below.
|
||||
|
||||
- Install MATLAB and additional toolboxes. We recommend, but don't require, the following: Optimization, Global Optimization, Statistics and Machine Learning, Econometrics, and Control System. As there is no ARM version of MATLAB yet, Rosetta 2 will be used on Apple Silicon machines. Don't forget to run MATLAB at least once to make sure you have a valid license.
|
||||
- Install MATLAB and additional toolboxes. We recommend, but don't require, the following: Optimization, Global Optimization, Statistics and Machine Learning, Econometrics, and Control System. Currently, MATLAB offers a native Apple silicon version of R2022a as an open beta. You can sign up and install it (including Azul Zulu OpenJDK 8) using [the official instructions](https://de.mathworks.com/support/apple-silicon-r2022a-beta.html). Unfortunately, no toolboxes are ported yet. Don't forget to run MATLAB at least once to make sure you have a valid license.
|
||||
|
||||
- Compile and install SLICOT, needed for the `kalman_steady_state` MEX file.
|
||||
```sh
|
||||
|
@ -458,11 +461,11 @@ cd $HOME/dynare/slicot
|
|||
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
|
||||
make -j$(sysctl -n hw.ncpu) FORTRAN=gfortran OPTS="-O2" LOADER=gfortran lib
|
||||
cp slicot.a /usr/local/lib/libslicot_pic.a
|
||||
make -j$(sysctl -n hw.physicalcpu) FORTRAN=$BREWDIR/bin/gfortran OPTS="-O2" LOADER=gfortran lib
|
||||
cp slicot.a $BREWDIR/lib/libslicot_pic.a
|
||||
make clean
|
||||
make -j$(sysctl -n hw.ncpu) FORTRAN=gfortran OPTS="-O2 -fdefault-integer-8" LOADER=gfortran lib
|
||||
cp slicot.a /usr/local/lib/libslicot64_pic.a
|
||||
make -j$(sysctl -n hw.physicalcpu) FORTRAN=$BREWDIR/bin/gfortran OPTS="-O2 -fdefault-integer-8" LOADER=gfortran lib
|
||||
cp slicot.a $BREWDIR/lib/libslicot64_pic.a
|
||||
cd $HOME/dynare
|
||||
```
|
||||
|
||||
|
@ -473,42 +476,40 @@ cd $HOME/dynare/x13as
|
|||
wget https://www2.census.gov/software/x-13arima-seats/x13as/unix-linux/program-archives/x13as_asciisrc-v1-1-b59.tar.gz
|
||||
tar xf x13as_asciisrc-v1-1-b59.tar.gz
|
||||
sed -i '' 's/-static//g' makefile.gf
|
||||
make -j$(sysctl -n hw.ncpu) -f makefile.gf FC=gfortran LINKER=gfortran FFLAGS="-O2 -std=legacy" PROGRAM=x13as
|
||||
cp x13as /usr/local/bin/x13as
|
||||
make -j$(sysctl -n hw.physicalcpu) -f makefile.gf FC=$BREWDIR/bin/gfortran LINKER=$BREWDIR/bin/gfortran FFLAGS="-O2 -std=legacy" PROGRAM=x13as
|
||||
cp x13as $BREWDIR/bin/x13as
|
||||
cd ;
|
||||
x13as
|
||||
```
|
||||
|
||||
### Compile Dynare from source
|
||||
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. Apple Silicon: make sure `brew`
|
||||
points towards `/usr/local/bin/brew` (see above).
|
||||
The following commands will download the Dynare source code and compile it.
|
||||
|
||||
- Prepare the Dynare sources for the unstable version:
|
||||
```sh
|
||||
mkdir -p $HOME/dynare/unstable
|
||||
git clone --recurse-submodules https://git.dynare.org/Dynare/dynare.git $HOME/dynare/unstable
|
||||
cd $HOME/dynare/unstable
|
||||
arch -x86_64 autoreconf -si
|
||||
arch -$ARCH autoreconf -si
|
||||
```
|
||||
You can also choose a specific version of Dynare by checking out the corresponding branch or a specific tag with git.
|
||||
|
||||
- Configure Dynare from the source directory:
|
||||
```sh
|
||||
arch -x86_64 ./configure CC=gcc-12 CXX=g++-12 CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib LEX=/usr/local/opt/flex/bin/flex YACC=/usr/local/opt/bison/bin/bison --with-matlab=/Applications/MATLAB_R2021b.app
|
||||
arch -$ARCH ./configure CC=gcc-11 CXX=g++-11 CPPFLAGS=-I$BREWDIR/include LDFLAGS=-L$BREWDIR/lib LEX=$BREWDIR/opt/flex/bin/flex YACC=$BREWDIR/opt/bison/bin/bison --with-matlab=/Applications/MATLAB_R2022a.app
|
||||
```
|
||||
where you need to adapt the path to MATLAB. If you don’t have MATLAB, simply replace `--with-matlab=<…>` by `--disable-matlab`. Check the output of the command whether Dynare is configured for building everything except the internal docs of Dynare and M2HTML.
|
||||
|
||||
- Compile:
|
||||
```sh
|
||||
arch -x86_64 make -j$(sysctl -n hw.ncpu)
|
||||
arch -$ARCH make -j$(sysctl -n hw.physicalcpu)
|
||||
```
|
||||
|
||||
|
||||
### Optional: pass the full PATH to MATLAB to run system commands
|
||||
If you start MATLAB from a terminal, you will get the PATH inherited from the shell. However, when you click on the icon in macOS, you are not running at the terminal: the program is run by launcher, which does not go through a shell login session. You get the system default PATH which includes `/usr/bin:/bin:/usr/sbin:/sbin`, but not `/usr/local/bin` or `$HOME/.local/bin`. So if you want to use system commands like `pdflatex` or `x13as` you should either call them by their full path (e.g `/Library/TeX/texbin/pdflatex`) or append the PATH in MATLAB by running `setenv('PATH', [getenv('PATH') ':/usr/local/bin:$HOME/.local/bin:/Library/TeX/texbin']);`. Alternatively, you can create a `startup.m` file or change the system default PATH in the `/etc/paths` file.
|
||||
If you start MATLAB from a terminal, you will get the PATH inherited from the shell. However, when you click on the application icon in macOS, you are not running at the terminal level: the program is run by launcher, which does not go through a shell login session. You get the system default PATH which includes `/usr/bin:/bin:/usr/sbin:/sbin`, but not `/usr/local/bin` or `$HOME/.local/bin`. So if you want to use system commands like `pdflatex` or `x13as` you should either call them by their full path (e.g `/Library/TeX/texbin/pdflatex`) or append the PATH in MATLAB by running `setenv('PATH', [getenv('PATH') ':/usr/local/bin:$HOME/.local/bin:/Library/TeX/texbin']);`. Alternatively, you can create a `startup.m` file or change the system default PATH in the `/etc/paths` file.
|
||||
|
||||
Tested on
|
||||
- macOS Monterey 12.1 (Apple M1 Virtual Machine)
|
||||
- macOS Monterey 12.1 (MacBook Air Intel)
|
||||
- macOS Monterey 12.1 (MacBook Air M1)
|
||||
- macOS Monterey 12.1-12.4 (Apple M1 Virtual Machine)
|
||||
- macOS Monterey 12.1-12.4 (MacBook Air Intel)
|
||||
- macOS Monterey 12.1-12.4 (MacBook Air M1)
|
||||
|
|
Loading…
Reference in New Issue