前回 Mach-O で REALbasic 5.5 のプラグインを作れそうと分かった時に、開発を全て Mac で済ます事ができると楽だなぁ、ということで MinGW for Mac OS X を作ってみる事に。
Rb 5.5 持ってないならそんなことやっても意味ないんじゃないの?
と思われそうだけれど Rb 4.0 用のプラグインは Windows の DLL さえ特定のフォルダに放り込んであれば、Plugin SDK の DLLtoResource を使わずに
MPW でスクリプトを流して最後まで完成できるようにしてある。
だから Windows 版の作成を Terminal スクリプトで作らせて特定のフォルダに放り込むようにしておけば、そのまま MPW のスクリプトを流して完成できるのだ!
binutils の作成
http://ftp.gnu.org/gnu/binutils/
から binutils-2.14.tar.gz をダウンロードして解凍。
% cd ~/binutils-2.14
% mkdir build
% cd build
% ../configure --target=i686-pc-mingw32 --prefix=/usr/local/mingw
% make
% sudo make install
※Windows ソフトを作る時にデフォルトで PentiumPro 未満にも対応させたい場合は i686 を i386 とか i586 とかにする。
※/usr/local/mingw はインストールしたいディレクトリを設定。
gcc の作成
MinGW - Download
から mingw-runtime-3.3.tar.gz と w32api-2.5.tar.gz をダウンロードして解凍。
mingw-runtime-3.3/include, mingw-runtime-3.3/lib, w32api-2.5/include, w32api-2.5/lib を /usr/local/mingw にコピー。
% sudo cp -r ~/mingw-runtime-3.3/include /usr/local/mingw
% sudo cp -r ~/mingw-runtime-3.3/lib /usr/local/mingw
% sudo cp -r ~/w32api-2.5/ /usr/local/mingw
どこから手に入れたか忘れたけど
http://ftp.gnu.org/gnu/gcc/
みたいなところから gcc-3.3.3.tar.gz をダウンロードして解凍。
そのままビルドすると i686-pc-mingw32-ar が無いと怒られたので /usr/local/mingw/bin にパスを通してからビルドした。
あと、basic_file.cc が ioctl が無い、と怒り出すので排除。俺はこれで解決しちゃったけど basic_file.cc はビルド中に作られるファイルだから元のファイルは恐らく gcc-3.3.3/libstdc++-v3/config/io/basic_file_stdio.cc。include が一通り終わった辺りに
#ifdef FIONREAD
#undef FIONREAD
#endif
を追記。
% setenv PATH "/usr/local/mingw/bin:${PATH}"
% cd ~/gcc-3.3.3
% mkdir build
% cd build
% sudo ../configure --with-gcc --with-gnu-ld --with-gnu-as --target=i686-pc-mingw32 --prefix=/usr/local/mingw --with-headers=/usr/local/mingw/include/ --with-libs=/usr/local/mingw/lib/ --enable-threads --disable-nls --enable-languages=c++,objc --disable-win32-registry --disable-shared --enable-sjlj-exceptions
% sudo make
% sudo make install
稼働テスト
#include <iostream>
int main( int argc, char ** argv )
{
std::out << "Hello World!!" << std::endl;
return 0;
}
ってな test.cpp を作って
% setenv PATH "/usr/local/mingw/i686-pc-mingw32/bin:${PATH}"
% g++ test.cpp -o test.exe
でコンパイル。作成された test.exe を Windows に持っていってコマンドプロンプトから
C:\> test.exe
Hello World!!
C:\>
出来た!!
配布
とってもうちの環境に依存してそうな気もするけど、一応配布してみる。
MinGW For Mac ( 48 MB )
インストーラ作るの面倒くさいから誰かパッケージ作ってくれるとうれしいけど、マウントしたら
% sudo cp -r "/Volumes/MinGW_For_Mac/mingw" /usr/local
ってやってみて、上の稼働テストが成功するかやってみて。動作報告求ム!
---------- 1:30AM 追記
MinGW on Linux
なんていうページが_| ̄|○
丸一日頑張ったのに……これ見てればもっと早く作れたんじゃぁ…