最終更新日: 2016-09-24 土 14:20
ホーム | 文書トップ | 目次

NTEmacsビルド(24.5 その2)

Table of Contents

本ビルドの概要

  • rzl24ozi氏のIMEパッチ対応版
  • 環境変数 PKG_CONFIG_PATH の指定
  • -shared-libgcc により終了時のクラッシュ不具合対策

MSYS2にてビルド(2015.4.18)

環境構築

の通りにインストール

ソースの入手

GNU ミラーサイト 例えば、ftp://ftp.ring.gr.jp/pub/GNU/emacs/ からダウンロードする。

(今回、上記にはまだ置かれていなかったので http://ftp.gnu.org/gnu/emacs/ からダウンロードした)

  • emacs-24.5.tar.gz を任意のディレクトリに展開する

IMEパッチ

rzl24ozi 氏のIMEパッチ対応

  • https://gist.github.com/rzl24ozi
    • emacs-24.5-w32-ime.diff をダウンロード
  • 上記のパッチを適用する場合は、ソースツリーのトップディレクトリにファイルを置き、下記を実行する
$ patch -b -p0 < emacs-24.5-w32-ime.diff
$ autoconf
patching file ./configure.ac
patching file ./lisp/international/w32-ime.el
patching file ./lisp/language/japan-util.el
patching file ./lisp/loadup.el
patching file ./lisp/startup.el
patching file ./src/frame.c
patching file ./src/frame.h
patching file ./src/keyboard.c
patching file ./src/lisp.mk
patching file ./src/w32fns.c
patching file ./src/w32font.c
patching file ./src/w32font.h
patching file ./src/w32term.c
patching file ./src/w32term.h
patching file ./src/window.c
patching file ./src/xdisp.c

環境変数の指定

$ export MSYSTEM=MINGW32
$ export PKG_CONFIG_PATH=/mingw32/lib/pkgconfig

configure

何も指定しない場合は下記でよいのだが、

$ ./configure

/etc/PROBLEMS に、Emacs終了時にクラッシュする不具合についての記載がある。

\** Emacs crashes when exiting the Emacs session

This was reported to happen when some optional DLLs, such as those
used for displaying images or the GnuTLS library or zlib compression
library, which are loaded on-demand, have a runtime dependency on the
libgcc DLL, libgcc_s_dw2-1.dll.  The reason seems to be a bug in
libgcc which rears its ugly head whenever the libgcc DLL is loaded
after Emacs has started.

One solution for this problem is to find an alternative build of the
same optional library that does not depend on the libgcc DLL.

Another possibility is to rebuild Emacs with the -shared-libgcc
switch, which will force Emacs to load libgcc_s_dw2-1.dll on startup,
ahead of any optional DLLs loaded on-demand later in the session.

よって、これを回避する為、下記のオプションをつける。

-shared-libgcc 以外のオプションは、オプション無しで configure を実行した際に Makefile に記述されるオプションを元にしている。

$ ./configure CFLAGS="-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 -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
  Does Emacs support W32-IME?                             yes
  Does Emacs support RECONVERSION?                        yes
  Does Emacs support DOCUMENTFEED?                        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=-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

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

バイナリ

こちら から提供中

その他

基本的に、ビルド方法に関しては NTEmacsビルド(24.4) を踏襲。

ホーム | 文書トップ | 目次
Created by Emacs 25.2.1 (Org mode 8.2.10)