日記帳

日記です。

cygwin で SDL 関連いろいろビルド

ちょっと cygwin をいじるついでにいろいろビルド.いろいろ書きつつ SDL 関連だけですが…

ビルドしたパッケージは以下の通りです.

  • SDL-1.2.13
  • SDL_image-1.2.6
  • SDL_mixer-1.2.8
  • SDL_net-1.2.7
  • SDL_ttf-2.0.9
  • freetype-2.3.6
  • jpeg-6b
  • libogg-1.1.3
  • libpng-1.2.29
  • libvorbis-1.2.0
  • tiff-3.8.2
  • smpeg-0.4.4

jpeg,libpng,tiff,libogg,libvorbis,freetype あたりは cygwin にもパッケージがありますが mingw モードで cygwin1.dll に依存しないようにしてビルドしなおしたものです.

以下ちょっと解説.

SDL_mixer

SDL_mixer.dll は libogg と libvorbis をスタティックリンクしてしまっています.なので単体で Ogg-Vorbis の再生が可能です. mp3 の再生は smpeg.dll を動的ロードするようにコンパイルしてあります.mp3 を再生したい場合にのみ smpeg.dll を同封すればいいです.libogg や libvorbis をスタティックリンクした副作用としてそれらのライブラリに問題があることが発覚した場合に SDL_mixer.dll もビルドし直す必要がある点に注意しましょう.

SDL_image

SDL_image.dll は libpng と libjpeg と libtiff をスタティックリンクしてしまっています.更に libpng が zlib を利用してるので zlib もリンクされています.SDL_mixerの場合と同様にそれらのライブラリに問題があることが発覚した場合に SDL_image.dll もビルドし直す必要があります.

SDL_ttf

SDL_ttf.dll は freetype スタティックリンクしてしまっています.以下同上.

dll 全般

各DLLは大体はデバッグコードを含んでいるので再配布の際にファイルサイズが気になるなら strip コマンドで削りましょう.

strip --strip-unneeded *.dll

久しぶりに cygwin のパッケージリポジトリを作ったけどやっぱりとても面倒ですね.この手のパッケージのビルドプロセスがもっと楽にできればいいんですが…