Wiiリモコンで操作できるプレゼン・マシンの製作(2) ―― Wiiリモコンを動作させるためのミドルウェアを組み込む
tag: 組み込み ディジタル・デザイン
技術解説 2009年10月27日
2.CWiidのポーティング手順
●CWiidのソース取得
まずベースとするCWiidのソースを取得します(Androidのビルド環境は前回用意したものを使用します).git-cloneコマンドでCWiidの本家のリポジトリをクローンします.
$ cd ~/mydroid/external
$ git-clone git://github.com/abstrakraft/cwiid.git cwiid
ベースとするバージョンを統一するため, git-checkoutコマンドで最新のcwiid-0.6.00をチェック・アウトします.
$ cd cwiid
$ git-checkout -f cwiid-0.6.00
●Android向けの変更の概要
CWiidをAndroidに対応させるための変更概要は以下の通りです.
表1 Androidに対応させるための変更点
「とりあえずWiiリモコンを動かしたい」という方もいらっしゃると思うので,パッチ・ファイルを用意しました. パッチ・ファイルをホーム・ディレクトリに配置したあと,以下の手順でパッチを適用し,「ビルドとSDカードへのコピー」に進んでください.
$ cd ~/mydroid
$ patch -p1 < ~/ep52android2_cwiid-for-android.patch
●Android.mkの追加
本稿では"common","libcwiid",および"wminput"サブディレクトリのみを使用します.各Android.mkの役割とAndroid.mkを配置するディレクトリは,以下の通りです.
ここでは一般的なAndroid.mkの書き方について説明します(各Android.mkの詳細については,パッチ・ファイルを参照).ライブラリをビルドするAndroid.mkの例として,libcwiid.soをビルドするためのAndroid.mkを以下に示します.
●未解決シンボルを含む共有ライブラリのビルド対応
Androidのビルド・システムでは,共有ライブラリのシンボル解決がビルド時に行われます(図2).このため,accやir_ptrプラグインなどの未解決シンボルを含む共有ライブラリをビルドすることが出来ません.この場合,シンボルの実体があるロード・モジュールを共有ライブラリ化し,これを未解決シンボルを含む共有ライブラリから動的リンクすることで,ビルド時にシンボル解決が可能となります(bluezも同様の対処を行っている).
図2 未解決シンボルを含む共有ライブラリ対応の概要
この修正はwminputのAndroid.mkで行っています.詳細はパッチ・ファイルを参照してください.