世の中にはPSPをクラックして自作ソフトを使おうと言う人たちがいる。
で、今Cを勉強中だから、それに勢いを付けるために、その非公式開発環境であるところのpsptoolchainをMacで揃えようかと思った次第。
でもね、世の中そんなに甘くないんだよねぇ〜、と言うお話。
実はここ数月、Snow LeopardなMacBook Airにそのpsptoolchainをインストールしようと四苦八苦してたんだよね。
でも今のところダメ。
と言うわけで、自分がどこまで調べて、何をやって、どこまでダメなのかを備忘録として残すことに。
2010/02/11追記
よっふぃ〜さんがインストールに成功された模様なので、そちらを参照してください。
http://yoffy.dyndns.org/2010/02/pspsdk_on_mac_os_x_106.html
追記終了。。。
まずやったことは、いろいろなサイト(例えばこことか)に書いてある通り、一般的なツール類をMacPortsからインストールした。
必要なものは、
autoconf
automake
wget
Subversion
とか。
とある場所では
autoconf
automake
bison
flex
gcc
make
ncurses
paptch
subversion
texinfo
wget
なんだとか?
ただ、ここではdoxygenがあると便利とか?
まぁ、おおむねそんな感じの物が必要です、と。
と言うわけで、
McLaren% sudo port install autoconf automake wget subversion
とかやっちゃうわけです。
心配な人は
McLaren% sudo port install autoconf automake bison flex gcc make ncurses paptch subversion texinfo wget doxygen
とかね。
で、どっかにテケトーなディレクトリを作るわけです。
俺はとりあえずDownloadsに置いてみた。
McLaren% mkdir pspdev_temp Mclaren% cd pspdev_temp
お次はシェルの設定ファイルにPATHを通す。
普通のMacでは.bashrcに以下を書き込む。
export PSPDEV=/usr/local/pspdev export PATH=$PATH:$PSPDEV/bin
俺はzshなので.zshrc。
でもこの構文は同じだから同じ記述でOK。
で、PSPDEVの対象がインストール先になる。
実はこれ、どこでもいいらしく、/usr/localじゃなくてもMacPortsの/opt/localとかでもいいし、$HOMEでもぶっちゃけいいらしい。
書き換えが終ったらSubversionでダウンロード。
McLaren% svn checkout svn://svn.ps2dev.org/psp/trunk/psptoolchain
(checkoutをcoにしてもOK)
これで作業用ディレクトリにpsptoolchainが出来たはず。
そこに移動して、
McLaren% ./toolchain.sh
とするとコンパイルおよびインストールが進みますよ〜、と言うふれこみ。
するとどうでしょう。
configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.0+. Try the --with-gmp and/or --with-mpfr options to specify their locations. Copies of these libraries' source code can be found at their respective hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/. See also http://gcc.gnu.org/install/prerequisites.html for additional info. If you obtained GMP and/or MPFR from a vendor distribution package, make sure that you have installed both the libraries and the header files. They may be located in separate packages. ../scripts/002-gcc-4.3.2-stage1.sh: Failed.
GMPかMPFR(もしくはその両方)がおかしいですよ〜、だって。
あ、ちなみに、それ以前に見つからないよ〜系のエラーは恐らくpsptoolchain/dependsのチェック処理でgmpとmpfrのチェックディレクトリが違うから。
そのファイルを開いて下記のように書き換えること。
check-gmp.sh
#!/bin/sh
# check-gmp.sh by Dan Peori (danpeori@oopo.net)
## Check for the gmp library.
# ls /usr/local/gmp-4.3.1/include/gmp.h 1> /dev/null || { echo "ERROR: Install gmp before continuing."; exit 1; }
## Custm for Mac
ls /opt/local/include/gmp.h 1> /dev/null || { echo "ERROR: Install gmp before continuing."; exit 1; }
check-mpfr.sh
#!/bin/sh
# check-mpfr.sh by Dan Peori (danpeori@oopo.net)
## Check for the mpfr library.
#ls /usr/include/mpfr.h 1> /dev/null || { echo "ERROR: Install mpfr before continuing."; exit 1; }
## Custom for Mac
ls /opt/local/include/mpfr.h 1> /dev/null || { echo "ERROR: Install mpfr before continuing."; exit 1; }
こうすれば、MacPortsにインストールされたGMPとMPFRを見るようになる。
んで、いろいろ調べた結果、MacOS X 10.6 Snow LeopardのMPFRにはバグがあります、と。。
いろいろ調べたんだけどねぇ〜。
それこそ毎日調べた。
GMPとMPFRのソースを落としてきて、独自にビルドもした。
わかったことと言えば、GMPとMPFRは数値計算用ライブラリで、GMPが無いとMPFRがインストールできない。
要は拡張ライブラリみたいな物かね?MPFRは。
そしてなぜpsptoolchainに必要なのか?
それは、PSP用のコンパイラを作るため。
UNIXでのデファクトスタンダードであるGCCなんだけど、このGCCがGMPとMPFRを必要とするんだとか。
そもそもなんでGMPとMPFRがおかしくなっているかと言えば、Snow LeopardのOS内部が64ビットにかなり舵取りを決めたから。
とは言いつつも、ラップトップだと32ビットモードで起動しているとかなんだかややこしいんですけれども。。。それどうなのよ?アップルさん。
恐らくその辺りの問題でGMPとMPFRがおかしい。
数少ない情報をたぐり寄せると、恐らくはMPFRだけがおかしい。
おまけにソースからコンパイルしてテストすると、やっぱりエラーが出る(これは両方)。
で、それらをコンパイルできない理由がコンパイラがおかしいからとか読んだから、GCCをビルドすることに。
いや、このときはまだGCCのコンパイルにGMPとMPFRが必要だとはイマイチピンと来ていなかったんだけれども。。
結局出来なくて、MacPortsの各バージョンのGCCをインスコして、/usr/bin/gccのシンボリックリンクをそれらに修正。
更にMac用GCCのコンパイルトラブルの記事を読みあさっていて見つけた記事からすると、psptoolchainのGCCはSnow Leopardではコンパイルできなくて、4.3.2以降から出来る、と。
と言うことはpsptoolchainのGCCを最新版にすれば良いのかと思って、psptoolchainのGCCに関する場所を最新版(現時点で4.4.2)に書き換えて、更に手動でDL。
Diffに書いてある箇所を何となく見つけてきて書き換えてビルとを試みるも、そもそも内部構造が結構変わっていて断念。
問題を解決したとされる4.3.4にして書き換えを試みると、ソース的にはほぼOK。
で、ようやくコンパイルしてみると。。。
なんか、意味不明なコンパイルエラー。。。。
も〜、いや。
MacPortsのmpfrがバージョンアップされていたから、何度目かの正直を実践中。
で、やっぱダメ。。<今ここ
助けてくれそうな人は
http://www.lan.st/forumdisplay.php?f=43&daysprune=-1&order=desc&sort=lastpost
http://arnold.hyperphp.com/forums/
http://forums.qj.net/developers-dungeon/162579-psptoolchain-mac-os-x.html
辺りに居そう。
もうちょっと張り込みます。
そんだけ。

#1 by yoffy on 2010 年 2 月 10 日 - 8:28 AM
とても参考になりました。
toolchainのスクリプトを少し書き換えたらビルド出来たので、まだうまくいっていないようであればお試し下さい。
http://yoffy.dyndns.org/2010/02/pspsdk_on_mac_os_x_106.html
#2 by yu++ on 2010 年 2 月 11 日 - 2:36 PM
おお、すばらしい!
わざわざコメント&備忘録、ありがとうございます。
今、MacがWinに占拠されている状態なのでアレなんですが、非常に参考になりました。