はじめに
BluespecSystemVerilogとはVerilogやVHDLと同じくハードウェア記述言語の一種です。十年ほど前から商用の処理系としてBluespec Compilerが存在していたのですが、つい先日オープンソースになりました。
BluespecSystemVerilogはHaskellベースの文法を持っていて、処理系もHaskellで書かれています。
早速ビルドしてみようと思ってREADMEを見ると「cabalでライブラリをインストールしてmakeせよ」と書いてあります。
しかし今時のHaskell環境はstackを使っていることが多いと思うので、このためだけにcabalや素のghcを入れるのはいまいちです。
というわけでstackでBluespec Compilerをビルドしてみることにしました。
準備
まずリポジトリをクローンしてサブモジュールを取得します。
$ git clone https://github.com/B-Lang-org/bsc
$ cd bsc
$ git submodule update --init --recursive
また依存ライブラリとビルドに使うツールがいくつかあるので入れておきます。
$ apt-get install libfontconfig1-dev libx11-dev libxft-dev
$ apt-get install gperf flex bison
stackのインストール
既にstackを使っている場合は不要ですが、そうでない場合は以下のようにインストールしてデフォルトのghcを取得しておきます。
$ curl -sSL https://get.haskellstack.org/ | sh
$ stack update
Haskellのライブラリインストール
元のREADMEでは「cabalでインストールする」となっている部分です。
普通stackの依存ライブラリはプロジェクトディレクトリのpackage.yamlに書きますが、今回はプロジェクトがないのでグローバルな場所にライブラリをインストールします。
$ stack install regex-compat syb old-time
ビルド
stackのプロジェクトならstack build
でいいのですが、残念ながらそうではないのでmakeでビルドします。Makefile
内ではGHC
変数でghcコマンドを定義しているのでstackのghcを使うように変更してやります。
$ make GHC="stack ghc -- "
うまくいけばこれでビルド完了まで通るはずです。