結論
おとなしくWSLとか入れてLinux互換環境とかにしてからやったほうが無難
やったこと
- RasberryPiPicoでRubyっていうと今はpicorubyがいいのかな、と考えた
- GNU Arm Toolchainは入れてあって、WindowネイティブでRasPiPicoバイナリは生成可能。(arm-none-eabi-gcc.exeはある)
- なんてことないだろう、とWindowsのcmdコンソールから開始。
- picorubyソース一式を落としてくる
- CRubyが入っていないことに気づき、てきとうにインストール
- 中身をのぞいてみるが、デフォルトはクロスコンパイル対応になっていないので、build_config/default.rbの中身をほぼbuild_config/prk_firmware-cortex-m0plus.rbにすげかえる。
- rake実行→止まる。ここから苦難の始まり。
- コンパイラがないと言われる→実はWindows環境でのCコンパイラも必要。gcc (mingw64) を入れる。
- cpコマンドがない→バッチファイルとrubyで即席ででっちあげる
- lempar.cが読めないと怒られる→picorubyではパーザとしてlemonというのを使っているらしく、先にlemon.exeを生成して使うのだが、そいつのテンプレートファイル指定がデフォルトだと動かないらしい。オプションに" -T../lib/lempar.c"を追加。
- gccのオプションをいじってWarningを抑制したのだが、これは関係なさそう
- Don't know how to build task 'D:/_dev/pico/picoruby/build/host/bin/picorbc' と怒られる。作り方わからないから教えろよ、ということなのだが、実のところは実行ファイルがpicorbc.exeだということを教えてやればよいのだった。lib/picoruby/build.rb の self.mrbcfile = "#{build_dir}/bin/picorbc" を self.mrbcfile = exefile("#{build_dir}/bin/picorbc") に変更。これでやっと正常終了し、picorbc.exeができた。
ここまで丸一日。だいたいWindowsネイティブでやろうとしたせいだ。それにしてもrakefileの設定は複雑怪奇でわけがわからない。ぐぐってもRailsでの使い方ばかりひっかかるし。
以上、おぼえとして。