emacs for gnupack 24.0.92のビルド(SVGとGnuTLS対応版)

追記

下記の手順では,tiff表示に問題があることをコメントでご指摘いただきました.NTEmacsスレ921さん,ありがとうございます.

  • libtiff-3.dlllibtiff3.dllにリネーム
  • libjpeg-8.dlllibjpeg-uchar-boolean-8.dllにコピー

なお,画像表示の確認は http://sourceforge.jp/projects/gnupack/downloads/46325/splash.tar.bz2/のファイルを用いて行っています.



emacs 24.0.92を SVG表示と GnuTLS対応を有効にしてWindowsでビルドしました.あと,IME変換中のフォントで不具合があったので修正しました.

IME変換中フォントの不具合について.

2ch NTEmacs スレッド 2 >>919さんからの指摘および修正パッチを取り込ませていただいています.


919 :906:2011/11/13(日) 18:01:27.28 id:Rno7HZ940

>>907
先週 IME ON で C-x 5 2、C-x 5 0 すると落ちると報告したものです。
#今回は落ちるという話ではありませんw

複数frameで異なるフォントを使っていると、frame移動後の最初の変換では
変換中フォントが前のframeのフォントのままのようですね。
(2回目以降はそのframeのフォントになる)

調べてみると struct frame *f のフォントのハンドル(HFONT)が
FONT_HANDLE (FRAME_FONT (f))
で取得できるようなので、これをつかってフォントが変わっていたら設定する
パッチを作ってみました。907 のパッチ後との差分です。
私の環境ではうまくいっているように思えます。

http://www1.axfc.net/uploader/File/so/71554

#w32_ime_font と w32_set_ime_font がわかれているとやりにくかったので
#w32_ime_font は 907 で修正いただいたのですが削除してしまいました^^;
#あと w32_set_ime_font 呼び出しを w32_set_ime_conv_window 内へ移動。

以上、ご参考までに。

SVG表示について.

ビルドにはソースレベルでの修正が必要らしく,2ch NTEmacs スレッド 2 >>921さんのパッチを取り込ませていただいています.


921 :906:2011/11/20(日) 10:24:29.13 id:gJqrVi3k0

>>920
SVG対応ですが私は
http://sourceforge.net/projects/gladewin32/files/gtk%2B-win32-devel/2.12.9/
gtk-dev-2.12.9-win32-2.exeを使いました。
libxpm, libungif 以外の画像関係ライブラリもふくまれているようなの
でそれらもこっちを使っています。

以下、すこしはまったところ。

gtk-dev-2.12.9-win32-2.exeをinstallすると勝手にPATHに
インストールディレクトリ/bin を加えてしまうようなのでwindows
システムのプロパティ→環境変数から削除しました。

・これに入っていた jpeg を使おうとしたからでしょうが
include/jmorecfg.h の INT32 の typedef が w32api の basetsd.h の定義と
conflict してしまいます。
jmorecfg.h の typedef long INT32; を #ifndef _BASETSD_H ... #endif しました。

・24.* で src/image.c のマクロの DEF_IMGLIB_FN が 2 引数から 3 引数に
変更されているようなのですが、SVG 関係は修正されていないので修正しました。

24 pretest (24.0.91) での差分
http://www1.axfc.net/uploader/File/so/71782


922 :906:2011/11/20(日) 10:27:36.03 id:gJqrVi3k0
>>921の続き

・907 のパッチをあてたものを --with-svg で configure すると
src/alloc.c の staticpro で staticidx が NSTATICS をこえてしまう
ようで、ビルドした emacs を起動するといきなり落ちます(ビルドは
できる)。
いくつがよいかよくわかりませんがとりあえず NSTATICS を 0x640→0x650 に
しました。

emacs の bin の下にコピーしておくべき dll が多くなりすぎてよくわからん^^;
とりあえず、以下をコピーしています。

jpeg62.dll libtiff3.dll libpng12.dll zlib1.dll librsvg-2-2.dll
libcairo-2.dll libfontconfig-1.dll libfreetype-6.dll libxml2.dll
iconv.dll libcroco-0.6-3.dll libglib-2.0-0.dll intl.dll
libgdk_pixbuf-2.0-0.dll libgmodule-2.0-0.dll libgobject-2.0-0.dll
libgio-2.0-0.dll libgsf-1-114.dll bzip2.dll libpango-1.0-0.dll
libpangocairo-1.0-0.dll libpangoft2-1.0-0.dll libpangowin32-1.0-0.dll

以上です。

SVG表示に必要なライブラリは,教えていただいた Glade/Gtk+ for Windowsで公開されているものが古かったので,GNOMEの公式サイト(http://www.gtk.org/download/win32.php)で公開されているものを利用しました.SVG表示以外にも他の画像表示で使えそうなライブラリも,GNOME公式サイトで公開されているものを利用しました.取得したライブラリは以下のとおり.

取得したライブラリは,以下の要領で展開して,-IC:\gnupack_devel-7.xx\app\libs\include -LC:\gnupack_devel-7.xx\app\libs\libで使えるようにしました.



# ls
atk_1.32.0-2_win32.zip gtk+-dev_2.24.8-1_win32.zip
atk-dev_1.32.0-2_win32.zip jpeg_8-1_win32.zip
cairo_1.10.2-2_win32.zip jpeg-dev_8-1_win32.zip
cairo-dev_1.10.2-2_win32.zip libcroco_0.6.2-1_win32.zip
expat_2.0.1-1_win32.zip libcroco-dev_0.6.2-1_win32.zip
expat-dev_2.0.1-1_win32.zip libpng_1.4.3-1_win32.zip
fontconfig_2.8.0-2_win32.zip libpng-dev_1.4.3-1_win32.zip
fontconfig-dev_2.8.0-2_win32.zip librsvg_2.32.1-1_win32.zip
freetype_2.4.4-1_win32.zip librsvg-dev_2.32.1-1_win32.zip
freetype-dev_2.4.4-1_win32.zip libtiff_3.9.2-1_win32.zip
gdk-pixbuf_2.24.0-1_win32.zip libtiff-dev_3.9.2-1_win32.zip
gdk-pixbuf-dev_2.24.0-1_win32.zip libxml2_2.7.7-1_win32.zip
gettext-runtime_0.18.1.1-2_win32.zip libxml2-dev_2.7.7-1_win32.zip
gettext-runtime-dev_0.18.1.1-2_win32.zip pango_1.29.4-1_win32.zip
glib_2.28.8-1_win32.zip pango-dev_1.29.4-1_win32.zip
glib-dev_2.28.8-1_win32.zip zlib_1.2.5-2_win32.zip
gtk+_2.24.8-1_win32.zip zlib-dev_1.2.5-2_win32.zip

# 全ファイルを解凍
# for i in *zip ; do unzip $i ; done

# 解凍済みの zipファイルを削除
# rm -f *zip

# bin,include,lib以外のディレクトリを削除
# rm -rf etc man manifest share src

# lib配下にある glibconfig.hと gdkconfig.hを includeにコピー
# cp lib/glib-2.0/include/glibconfig.h include
# cp lib/gtk-2.0/include/gdkconfig.h include

# include配下でバージョン番号を含んだディレクトリ内のファイルを include直下に移動
# mv -f include/*/* include
# mv include/glib-2.0/gio/* include/gio
# rmdir include/*/*
# rmdir include/*

# libtiff-3.dllを libtiff3.dllにリネーム
# mv bin/libtiff-3.dll bin/libtiff3.dll

# libjpeg-8.dllを libjpeg-uchar-boolean-8.dllにコピー
# cp bin/libjpeg-8.dll bin/libjpeg-uchar-boolean-8.dll

# libjpeg-8.dllを libjpeg.dllにリネーム
# mv bin/libjpeg-8.dll bin/libjpeg.dll

# mkdir "C:\gnupack_devel-7.02\app\libs"
# mv * "C:\gnupack_devel-7.02\app\libs"

GnuTLS対応について.

GnuTLS対応に必要なライブラリは,GnuTLS公式サイトから辿れる http://josefsson.org/gnutls4win/より入手しました.ダウンロード後は,mingw32-gnutls_2.10.1-1_all.debを一度 Windowsの解凍ソフトで展開し,さらに含まれる data.tar.gzを展開してできた usr/i586-mingw32msvc/配下の binincludelibを所定のディレクトリにコピーしてください.私は gnomeのライブラリと同じディレクトC:\gnupack_devel-7.xx\app\libsにコピーしました.

なお,上記のライブラリに含まれない libxmpと libungifは他と同様に C:\gnupack_devel-7.xx\app\libsに格納しています.