SystemC の環境構築　macOS ver

#はじめに
今回は研究にSystemCを用いるため、Macに環境を構築することにした。
研究室のマシンは使いたくないだけである。
#環境
* MacBook Air
* MacOS (Catalina) version 10.15.1

#手順
まず、MacにXcode Command Line Toolsをインストールする必要がある。

```
$ xcode-select --install
```
エラーが出た場合、Appleの公式サイトからもダウンロードできるそうだ。

次にコンパイラとしてgcc-8をhomebrewを用いてインストールする。
これは、SystemC推奨のコンパイラである。

```
$ brew install gcc@8
```

確認するためにバージョンを確認して欲しい

```
$gcc-8 -v

Using built-in specs.
COLLECT_GCC=gcc-8
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc@8/8.3.0_1/libexec/gcc/x86_64-apple-darwin18/8.3.0/lto-wrapper
Target: x86_64-apple-darwin18
Configured with: ../configure --build=x86_64-apple-darwin18 --prefix=/usr/local/Cellar/gcc@8/8.3.0_1 --libdir=/usr/local/Cellar/gcc@8/8.3.0_1/lib/gcc/8 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-8 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --with-pkgversion='Homebrew GCC 8.3.0_1' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-multilib --with-native-system-header-dir=/usr/include --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk
Thread model: posix
gcc version 8.3.0 (Homebrew GCC 8.3.0_1)

$g++-8 -v 

Using built-in specs.
COLLECT_GCC=g++-8
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc@8/8.3.0_1/libexec/gcc/x86_64-apple-darwin18/8.3.0/lto-wrapper
Target: x86_64-apple-darwin18
Configured with: ../configure --build=x86_64-apple-darwin18 --prefix=/usr/local/Cellar/gcc@8/8.3.0_1 --libdir=/usr/local/Cellar/gcc@8/8.3.0_1/lib/gcc/8 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-8 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --with-pkgversion='Homebrew GCC 8.3.0_1' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-multilib --with-native-system-header-dir=/usr/include --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk
Thread model: posix
gcc version 8.3.0 (Homebrew GCC 8.3.0_1)
```
以上のような出力が返ってくると成功している。

次に本題であるSystemCのインストールに移る。

まず、[SystemCダウンロードサイト](https://www.accellera.org/downloads/standards/systemc)からSystemCの圧縮された[ソースコード](https://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.3.tar.gz)をダウンロードする。今回は最新バージョンのSystemC2.3.3をインストールする。

次からはコマンドラインでの作業となる。

```
$ cd ~/Downloads
$ tar xzf systemc-2.3.3.tar
$ sudo mkdir /Library/SystemC
$ mv systemc-2.3.3 /Library/SystemC
$ cd /Library/SystemC/systemc-2.3.3
$ mkdir objdir
$ cd objdir
$ export CXX=g++-8  <--ここを忘れてできないことが多い
$ ../configure
$ make
$ make install
```

インストール作業は以上となる。一応正しくインストールできたか確認する。

```
$ make check
```
このままだとPATHの関係でうまく使えないため、書き換える必要がある。
今~/Downloadsにあるsystemc2.3.3フォルダを他のとこに移動させPATHを通す必要がある。

```
$ cd ~/Downloads
$ sudo mkdir /usr/Library/SystemC
$ sudo mv ~/Downloads/systemc-2.3.3 /usr/Library/SystemC/
$ ln -s /usr/Library/SystemC ~/usr/local/include/
```

これでライブラリを移動したということで、PATHを通していきたいと思う。

```
$ export SYSTEMC_HOME=/usr/local/include/SystemC/systemc-2.3.3
$ export CPLUS_INCLUDE_PATH=$SYSTEMC_HOME/include
$ export LIBRARY_PATH=$SYSTEMC_HOME/lib-macosx64
```

これを~/.bashrc や ~/.zprofileなどに書き込んであげればいいと思う。

コンパイル時に使うMakefileを例として示す。

```script:Makefile
TARGET=hello
LINK=systemc
CXX=g++-8

all:$(TARGET).cpp
	$(CXX) $(TARGET).cpp -o $(TARGET).o -l $(LINK)
```



#おわりに
これからはソフトとハードの協調設計が主流になると考えているあたり、開発コストを考えてもRTLベタ書きよりも優位な部分は出てくるはずなので、もっと勉強していきたいと思う。