Mac OS X上にGR-Sakuraのローカルビルド環境を構築

概要

タイトルの通り、OS X上にRXマイコンのローカルビルド環境を構築したので、その忘備録も兼ねて。
手順等参考にさせていただいたページは、主に以下の2つです(かつ、リンク先を読んでいただければ目的はおそらくほぼ達成できます)。ありがとうございます。手順上戸惑った点は一度落としてきたソースコードパッケージのバージョンによってビルドエラーが起きたことくらい。
Compilers | codingcipher
GR-SAKURAでmrubyを使う - Qiita
 (こちらの "mrubyのコンパイル" の手前のところまでで手順を追うことで、クロスビルド環境が構築できます。詳細な手順説明助かりました。)


日記的に背景

まだ先人の方々が作られたものを参考に切った貼った寄せ集めたりして試しているレベルですが、今年の夏くらいにGR-Sakura*1を買って、ちょこちょこ動かしてみながら遊んで*2います。


かつての雑誌の付録だったり特集だったりしたマイコンのキットといえばコンパイラや焼き込みのための環境を構築するのに一手間で、ややもするとそこまでで動作確認できたら満足して終わっちゃう、みたいなことも少なくなかったのではないかと思いますが、最近のマイコンモノはWeb上のコンパイラにアクセスしてバイナリ生成が流行のようですね(といっても、このGR-Sakuraとmbedくらいでしょうか?)。しかも基板をPCにUSB繋いでリセットするとUSB Storageとして振る舞い、そこにコンパイル後のバイナリを放り込む、それだけで書き込み完了してプログラムが走るのですから何かを始める敷居が低くて素晴らしいです。
とはいえ、ブラウザ上のエディタでソースコード書くのは、何かこうかつてブログの下書きやメールをブラウザ上で書いているなかうっかり閉じたりして途中保存されてなかった体験がフラッシュバックしたり、案外ブラウザ上エディタ重かったり(PCが比較的非力になってきたため?)、検索いまいち不便だったり、編集の履歴取っておくのはひと手間かかるetc、と便利な反面不安もあるものです。

なので、ローカルでビルドする環境用意したいなーと思っていて、プログラム書いたり動かしたりしながら並行して調べていたのですが、やはり同じことを考えられている方もいらっしゃいました。
GR-SAKURAのローカルビルド環境
KPITさんのと、特殊電子回路(株)さんのものがあるようです。かつ特殊電子回路さんからはWindows(Cygwin)環境向けのクロスコンパイラのバイナリが現在は無料配布されているようですね。


ロスコンパイラのバイナリが得られれば話は早いのですが、OS X環境で使用できるものが容易に入手できないため、KPITよりSource Codeをダウンロードしてきて、ローカルでビルドして環境設定することにします。そこで、参考になる情報無いかなーっと探している中で見つけたのが冒頭のリンクでした。
ところが1つ、9月くらいから作業していたのですが引っかかって止まっていました。KPITからSource Codeをダウンロードする際、確か当時もv13.01が最新で、ソースコードパッケージのうち、GDBのファイル名は以下のものだったのですが、
"gdb-7.6_rx_v13.01.tar.bz2"
このgdb-7.6のmakeが通らず(確か、ヘッダファイルが見つからないとかからErrorが始まる)、パス修正するくらいで通るかな、と期待しながらソースちょっと触ったりしていたのですが、結果うまく行かず。。悩んだ末に最近改めてソースパッケージのダウンロードからやり直すか、と再試行したところ、gdbは7.5ベースに置き換わってました。アレー、まぼろしでも見ていたのでしょうか。。ともあれ、以下の組み合わせですんなり通っています。

今回確認できているパッケージ組み合わせ

・GDBRX v13.01 Source Code of GDB
 "gdb-7.5_rx_v13.01.tar.bz2"
・GNURX v13.01 Source Code of Binutils
 "binutils-2.23.1_rx_v13.01.tar.bz2"
・GNURX v13.01 Source Code of Newlib
 "newlib_2.0.0_rx_v13.01.tar.bz2"
・GNURX v13.01 Source Code of GCC
 "gcc-4.7.3_rx_v13.01.tar.bz2"

gccはKPITのToolのベースバージョンが4.7系のようなので、gcc-4.7をインストールし、configオプションでCC=gcc-4.7指定で構築しました。makefileやライブラリ補完のため、まずはWebコンパイラのzipダウンロード機能を使ってまるっと落としてきたプロジェクトにて、make通ること確認済みです。
テンプレートで一度makefile含めて手元に引っ張っておけば、あとはそれを参考にmakefile追記するなりして使っていけますね。

手順のメモ

イチから構成する場合に備えて必要な全体の手順をざっくり書き直しておくと

1. XCodeのインストール
 Mac App Storeからインストールできる
2. Command Line Toolsのインストール
 XCodeをインストール後、[Preferences]からダウンロードか、
 appleのDeveloppers Siteからdmgダウンロードしてインストール
 (これでgccが使えるようになります、が確か古いバージョンでしたので、任意のバージョンを下でインストール)
3. Homebrewのインストール
 参考: HomebrewをMac OS X Mountain Lionにインストールする - Qiita

$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

 適宜、homebrew自身に診断してもらって指示に従いつつ更新

$ brew doctor
$ brew update
$ brew upgrade

 参考: Mac OSX 10.9 Mavericks で Homebrew
 (Mavericks環境でも特に特別な対応は必要なさそう)
4. 必要Libraryのインストール
 ここより、基本的に先にリンク貼ってるjjzakさんの手順を参考にしました。

$ brew install mpfr gmp libmpc libelf texinfo

5. gccのインストール
 任意バージョンのものを入れるため、こちらもhomebrew使って4.7をインストール
 (確か、searchでgcc47と出てきたので、それを入れたハズ)

$ brew install gcc47

 (ところで、homebrewってインストール完了後にターミナルにビールアイコンでてくるのが何気に面白いですよね)
6. KPITからソースコードのダウンロードと、展開
 KPIT GNU Tools & Support よりダウンロード
 開発者登録が必要(USER LOGINのところの"Register"より)
 「Free Downloads」→「Source Code」から、
 ・GDBRX v13.01 Source Code of GDB
 ・GNURX v13.01 Source Code of Binutils
 ・GNURX v13.01 Source Code of Newlib
 ・GNURX v13.01 Source Code of GCC
 をダウンロード。何かディレクトリ作ってそこに置いて解凍。

$ tar -jxvf (ファイル名)

7. binutilのmakeとインストール

$ cd binutils-2.23.1
$ ./configure -target=rx-elf -prefix=(インストール先) -disable-werror CC=gcc-4.7
$ make
$ make install

8. gccのmake前に、パスを通す

$ export PATH=$PATH:(インストール先)/bin

9. gccのmakeとインストール

$ cd ..
$ cd gcc-4.7.3

ソースコード展開したディレクトリでコンパイルを行うとエラーになるので、buildというディレクトリを作って、そこでコンパイルを行います。また、newlibのライブラリ群も関係するのでシンボリックリンクを。

$ mkdir build
$ ln -s ../newlib-2.0.0/newlib .
$ ln -s ../newlib-2.0.0/libgloss .
$ cd build

$ ../configure --prefix=(インストール先) --target=rx-elf --enable-lnguages=c,c++ --disable-libstdcxx-pch --disable-multilib --with-newlib --disable-nls --disable-libgfortran CC=gcc-4.7

$ make
$ make install

10. newlibのmakeとインストール

$ cd ../../newlib-2.0.0
$ ./configure --enable-newlib-hw-fp --target=rx-elf --prefix=(インストール先)

$ make
$ make install

11. gdbのmakeとインストール

$ cd ../gdb-7.5
$ ./configure --prefix=(インストール先) --target=rx-elf --disable-werror

$ make
$ make install

12. .bash_profileにパス追加
ここまでで構築はほぼできていて、あとは使いやすいようクロスコンパイラのインストール先にパスを通しておくのみです。OS Xでは、/Users/(ユーザ名)/ 下に ".bash_profile"というファイルがあるので、そこに、先ほどのコンパイル前にパスを通す、のコマンドを追加しておきます。

$ export PATH=$PATH:(インストール先)/bin



こんな具合に、プロジェクトのソース置いてるディレクトリでmakeすれば、bin生成できるように。(今はMIDI関連実験してます、警告出まくっているのは自分のソースの問題なので、ご容赦ください)

今後

これで、ローカルPC上で好きなエディタ使ってコード書いたり、XCode使ったりもできます*3。あとgit使って履歴管理等もできるので、思いついたようにコード変えながら試すのがより気楽になります。
あと環境としても少し整えとく部分としては、いくつか違う機能を作ると思うので、Webコンパイラ上のままのディレクトリ構成ではなくて、ライブラリ部分は共通にしてプロジェクト毎にライブラリ抱き込んだ形にせずに管理できるようにしておこうかな、と。makefileの書き換え。

あと、まともにデバッガも使って動作確認しなくちゃいけなくなったら結局JTAG + エミュレータ環境はWindows上になっちゃうのかなぁ、、というのが不安なところ*4。各種動作のタイミング等よく理解していないところもある中、どこまでprintfデバッグやLED表示でしのげるでしょうか(笑)

      • -

10/31:
 バージョンの誤記修正
 3. Homebrewのインストール, 6. KPITからソースコードのダウンロードと、展開
 の部分について少し追記

      • -

*1:H8やSH系マイコン昔触ったりしたなぁ、というRenesasが出しているArduino互換性を持たせた32ビットマイコン 参照 → がじぇっとルネサス | ルネサス エレクトロニクス

*2:Arduinoシールドやライブラリも使える分、既成のキットなどでマイコン遊びする分には相当あれこれできて、絶賛寄り道中。でも作りたいものの下地にできそうなので、なおさら寄り道も楽しかったり。

*3:軽いのでテキストエディタで書くのが好きですが、IDEを使うとコード上の警告とか関数管理できたりやっぱり助かる面が多いので。XCodeで任意のmake実効するための参考リンク→ Mac - Xcode4.6.xでMakefileを使ってビルド・デバッグするには

*4:古くなったのとクラッシュしたのもあってWindowsのNotePC手放したので、気軽に使いやすいNotePCがMacBook Airなのがアレ。Bootcamp使えば解決、と言われるともやもや。。