2011年05月11日


NP2 をiPhoneに移植してみる(1)

そんな訳で、iPhoneにNP2でも移植してみようと思います。

NP2というのはNeko Project IIという往年のNEC製パソコン PC-9801のエミュレータです。念のため。

そうは言ってもひっそりぃはiPhone向けアプリの開発なんぞやったことはありませんので、七転び八起きというか七転八倒しながら手探りの状態で開発を進めていくことになりますので、まぁのんびりと見守っていただければ。

もちろんPSPの方も開発をやめた訳ではないのであしからず。Dingoo A320はもう開発しないと思われ...

まずは「ひっそりぃ.com | iPhoneソフト開発に向け、XcodeをインストールしSDLを試してみた」にてMacにXcodeのインストールとSDLを動かすところまでは試してみました。

その後、とりあえずXcodeのIDE環境にNP2のソースをぶち込んでみていろいろ格闘していた訳ですが、なぜかうまくソースが登録できなかったり、コンパイルされないファイルがあったり、それをぷちぷちとマウスでクリックしてコンパイルできるようにしたり、うがー、どうもグラフィカルなIDE環境はひっそりぃには合わないようです。
スクラッチからプログラムを作成する場合には、IDE環境は良いかもしれませんが、すでにMakefileにより管理されているプログラムを移すのには適していないかもしれません。

そこで、IDE環境から離れて、MakefileをXcodeとiPhone SDKを使う様に変更することにします。もちろんiPhoneシミュレータを含めたXcodeのデバッグ環境は利用したいですね。

ただ、ググってみてもあまり参考となる資料がなく、文字通り手探り状態ないばらの道な気がしないでもないですが、まぁそれはそれ。

まずはXcode環境で既存プログラムをビルドして、そのログや設定ファイル等を眺めて参考となるものがないか試してみましょう。
とりあえず知りたいのは、コンパイラ、リンカの実体、そしてコンパイル、リンク時のオプションといったところでしょうか。
これらは、iPhoneシミュレータ用、iPhoneデバイス用それぞれの場合でどう変わるか、またDebug/Retailの設定でどう変わるかも見てみます。

早速、「ひっそりぃ.com | iPhoneソフト開発に向け、XcodeをインストールしSDLを試してみた」で使ったSDL-1.3の中の
SDL-1.3.0-5538/Xcode-iPhoneOS/Template/SDL iOS Application
をXcodeでビルドしてみます。
このディレクトリは、XcodeでSDLアプリを開発するときのベースとなるスケルトン、いわば一番簡単なSDLアプリが含まれています。

まず、上記ディレクトリに含まれる、SDLiPhoneOS.xcodeprojアイコンをクリックしてXcodeを起動します。SDLのライブラリとincludeファイルが登録されていないので、これは別途ビルドして本ディレクトリに持ってきます。インクルードファイルはシミュレータ用もデバイス用も共通なのでよいのですが、ライブラリ「libSDL.a」は実体が異なるので、まずはシミュレータ用をコピーしました。

それではXocdeで「シミュレータ用」、構成「デバッグ」でビルドしてみます。実行すればシミュレータ上で起動もできます。

kdofiafhgu.jpg

それでは、Makefile作成のヒントとなる文字列を探してみます。grepの引数-rはディレクトリを再起的に、-lはファイル名のみを表示するオプションです。

$ grep -lr gcc *
SDL/include/SDL_endian.h
SDL/lib/libSDL.a
build/___PROJECTNAME___.build/Debug-iphonesimulator/___PROJECTNAME___.build/build-state.dat
build/Debug-iphonesimulator/___PROJECTNAME___.app.dSYM/Contents/Resources/DWARF/___PROJECTNAME___
$

上二つはSDL側のファイルなので除外。一番下は実行ファイルなのでこれも除外。

$ file build/Debug-iphonesimulator/___PROJECTNAME___.app.dSYM/Contents/Resources/DWARF/___PROJECTNAME___
build/Debug-iphonesimulator/___PROJECTNAME___.app.dSYM/Contents/Resources/DWARF/___PROJECTNAME___: Mach-O dSYM companion file i386
$

ということで、3つ目の以下のファイルを確認します。

build/___PROJECTNAME___.build/Debug-iphonesimulator/___PROJECTNAME___.build/build-state.dat

でいきなりですが判明したことは

作業ディレクトリに移動後、以下の環境変数を設定している。

setenv LANG en_US.US-ASCII
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"

コンパイラは以下。
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2
コンパイルオプションは長過ぎるので書きませんが、気になるところを挙げると、-arch i386、これはシミュレータ用なのでこうなる。-Iや-Dも確認ok。
リンカもgccを用いており、リンカオプションの気になるところは、-Lも確認ok、また-frameworkというオプションがいくつかあるので、これでFrameworkをリンクしているようです。リンクの結果できたオブジェクトは以下となります。
build/Debug-iphonesimulator/___PROJECTNAME___.app/___PROJECTNAME___
あとはbuiltin-infoPlistUtilityというコマンドでInfo.plistというファイルを何かしていたり、dsymutilコマンドとかpbxcpコマンドやらも何かしているが、何をしているのかはまだ不明、といったところ。

うむ、これだけ情報があれば、なんとかMakefileをXcode用に変更できそうな気がしてきました。
ということで今回はここまで。




posted by ひっそりぃ at 2011/05/11 15:35 | Comment(0) | TrackBack(0) | iPhone | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。