Evas に限った話ではなく、実行時に動的にライブラリをロードするような仕組みを持っているものを cygwin に移植する場合には気をつけないといけないことがある。
Evas はさまざまなフォーマットの画像ファイルをサポートしているが、それらは別モジュールとして、提供されている。そして、Evas が処理するフォーマットに応じて、それを動的にロードする仕組みとなっているため、ローダとなる部分を修正しておく必要がある。そうしておかないと cygwin の共有ライブラリの拡張子は dll であるが、linux などでは so であるため、ローダが所定のディレクトリの module.so を探そうとして、こけてしまうことになる。*1
Evas では具体的にはローダが module.dll を探せるような修正を加えておく必要がある。これはコンパイル時にはわからないため、気をつけておかなければならない。ソースは幸いなことに先の Windows 対応で既にある程度は修正されているため、それに便乗すれば良い。
--- origsrc/evas-0.9.9.042/src/lib/file/evas_module.c 2007-10-17 18:29:18.000000000 +0900 +++ src/evas-0.9.9.042/src/lib/file/evas_module.c 2008-02-10 23:41:39.812500000 +0900 @@ -317,7 +317,7 @@ if (em->loaded) return 1; /* printf("LOAD %s\n", em->name); */ -#ifdef _WIN32 +#if defined(_WIN32) || defined(__CYGWIN__) snprintf(buf, sizeof(buf), "%s/%s/%s/module.dll", em->path, em->name, MODULE_ARCH); #else snprintf(buf, sizeof(buf), "%s/%s/%s/module.so", em->path, em->name, MODULE_ARCH);
Evas は多様なフォーマットに対応しているが、cygwin を標準インストールしただけでは、configure において、そのほとんどが認識されない。SVG とか cairo とかも欲しいという人は Cygwin Ports から、それらをインストール後にビルドすると良いだろう。