NTEmacsビルド(24.5 その3)
Table of Contents
本ビルドの概要
- 簡易IME対応
- -shared-libgcc を指定
- rsvg-2 と gnutls 有効
- シンボル情報無し
MSYS2にてビルド(2015.9.20)
環境構築
の通りにインストール
ソースの入手
GNU ミラーサイト 例えば、ftp://ftp.ring.gr.jp/pub/GNU/emacs/ からダウンロードする。
- emacs-24.5.tar.gz を任意のディレクトリ(例 D:\ドライブ直下)に展開する。
IMEパッチ
上記ページの”IMEの未確定文字のインライン表示”に記載している通り、src/w32fns.c にて、「WM_IME_STARTCOMPOSITION ハンドラ内部で break; するのではなく、goto dflt; する」という変更を行う。
<a name="configure" id="configure">
環境変数の指定
MSYS2 シェルから実行する
$ export MSYSTEM=MINGW32 $ export PKG_CONFIG_PATH=/mingw32/lib/pkgconfig
configure
$ ./configure CFLAGS="-s -O2 -shared-libgcc" --without-dbus
configure実行結果
Configured for `i686-pc-mingw32'. Where should the build process find the source code? . What compiler should emacs be built with? gcc -std=gnu99 -s -O2 -shared-libgcc Should Emacs use the GNU version of malloc? yes Should Emacs use a relocating allocator for buffers? yes Should Emacs use mmap(2) for buffer allocation? no What window system should Emacs use? w32 What toolkit should Emacs use? none Where do we find X Windows header files? NONE Where do we find X Windows libraries? NONE Does Emacs use -lXaw3d? no Does Emacs use -lXpm? yes Does Emacs use -ljpeg? yes Does Emacs use -ltiff? yes Does Emacs use a gif library? yes Does Emacs use a png library? yes Does Emacs use -lrsvg-2? yes Does Emacs use imagemagick? no Does Emacs support sound? yes Does Emacs use -lgpm? no Does Emacs use -ldbus? no Does Emacs use -lgconf? no Does Emacs use GSettings? no Does Emacs use a file notification library? yes (w32) Does Emacs use access control lists? yes Does Emacs use -lselinux? no Does Emacs use -lgnutls? yes Does Emacs use -lxml2? yes Does Emacs use -lfreetype? no Does Emacs use -lm17n-flt? no Does Emacs use -lotf? no Does Emacs use -lxft? no Does Emacs directly use zlib? yes Does Emacs use toolkit scroll bars? yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating lib/Makefile config.status: creating lib-src/Makefile config.status: creating oldXMenu/Makefile config.status: creating doc/emacs/Makefile config.status: creating doc/misc/Makefile config.status: creating doc/lispintro/Makefile config.status: creating doc/lispref/Makefile config.status: creating src/Makefile config.status: creating lwlib/Makefile config.status: creating lisp/Makefile config.status: creating leim/Makefile config.status: creating nextstep/Makefile config.status: creating nt/Makefile config.status: creating admin/unidata/Makefile config.status: creating admin/grammars/Makefile config.status: creating src/config.h config.status: executing depfiles commands config.status: executing src/epaths.h commands config.status: executing src/.gdbinit commands
Makefileより抜粋
cache_file = /dev/null CONFIGURE_FLAGS = --cache-file=$(cache_file) CC=gcc -std=gnu99 CFLAGS=-s -O2 -shared-libgcc LDFLAGS= CPPFLAGS=-mtune=pentium4 -DUSE_CRT_DLL=1 -I ${abs_top_srcdir}/nt/inc EXEEXT=.exe
make
MSYS2のシェルで実行する。
$ make bootstrap
make install
$ make install
MSYS2 の usr/local の下にインストールされる。(例 C:\msys32\usr\local)
DLLのコピー
MSYS2がインストールされていないPCでも動作可能にする為、依存するDLLを emacsのexeファイルがあるフォルダにコピーする。
下記の16ファイルを emacs.exe があるディレクトリにコピーする。
- C:\msys32\mingw32\bin から
- libgcc_s_dw2-1.dll -shared-libgcc を指定した場合には不要・・・かと思ったが必要なようだ。無いとemacs自体が起動できない。
- libgdk_pixbuf-2.0-0.dll
- libgif-7.dll
- libglib-2.0-0.dll
- libgnutls-28.dll
- libgobject-2.0-0.dll
- libiconv-2.dll
- libjpeg-8.dll
- librsvg-2-2.dll
- libpng16-16.dll
- libtiff-5.dll
- libwinpthread-1.dll
- libxml2-2.dll
- libXpm-noX4.dll
- zlib1.dll
cp /c/msys32/mingw32/bin/libgcc_s_dw2-1.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libgdk_pixbuf-2.0-0.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libgif-7.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libglib-2.0-0.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libgnutls-28.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libgobject-2.0-0.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libiconv-2.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libjpeg-8.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/librsvg-2-2.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libpng16-16.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libtiff-5.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libwinpthread-1.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libxml2-2.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/libXpm-noX4.dll /c/msys32/usr/local/bin cp /c/msys32/mingw32/bin/zlib1.dll /c/msys32/usr/local/bin
バイナリ
こちら から提供中