最終更新日: 2019-01-03 木 12:10
ホーム | 文書トップ | 目次

NTEmacsビルド(24.4)

Table of Contents

24.4以降のWindow用ビルドについて

これまでEmacsのWindows用ビルドはソースツリーの ntディレクトリ以下の、configure.bat を実行してコンフィギュレーションを行っていた。

24.4ではこのバッチファイルを実行すると、下記のメッセージが表示される。

\****************************************************************

\*** THIS METHOD OF BUILDING EMACS IS NO LONGER SUPPORTED. **

\*** INSTEAD, FOLLOW THE INSTRUCTIONS FROM INSTALL. **

\****************************************************************

Continue running this script at your own risks ? (Y/N)y

これを継続しても、結局ビルドNGになる。

なので、上記メッセージに従い、nt/INSTALL を読んでみる。 ちなみに、従来(23.3以前)の INSTALL は INSTALL.OLD にrenameされている。

新しいINSTALLによると、 今後は、MSYS/MinGWでのビルドをサポートしていくという方針のようだ。 つまり、nt以下でなく、ソースのトップディレクトリから、configure を実行するということであり、ビルド方法が他のプラットフォームと共通化されるということである。 これ自体は好ましいことである。

MSYS2にてビルド

環境構築

の通りにインストール

ソースの入手

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

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

<a name="imepatch" id="imepatch">

IMEパッチ

簡易対応

patch -b -p0 < emacs-24.4-windows-ime-simple.patch

rzl24ozi 氏のIMEパッチ対応

  • 従来同等のIMEパッチを作成された方あり!
  • https://gist.github.com/rzl24ozi
    • emacs-24.4-w32-ime.diff をダウンロード
  • 上記のパッチを適用する場合は、ソースツリーのトップディレクトリにファイルを置き、下記を実行する
$ patch -b -p0 < emacs-24.4-w32-ime.diff
$ autoconf

configure

環境変数を変更する。 ちなみに、MSYS2のシェルで MSYSTEM の値は MSYS となっていた。

$ export MSYSTEM=MINGW32
$ ./configure
  • IMEパッチ(簡易対応)適用時
Configured for `i686-pc-mingw32'.

  Where should the build process find the source code?    .
  What compiler should emacs be built with?               gcc  -std=gnu99 -g3 -O2 -gdwarf-2
  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?                                no
  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?                                no
  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
  • IMEパッチ(rzl24ozi)適用時
Configured for `i686-pc-mingw32'.

  Where should the build process find the source code?    .
  What compiler should emacs be built with?               gcc  -std=gnu99 -g3 -O2 -gdwarf-2
  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?                                no
  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?                                no
  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

make

  • emacsのshellからだとautoreconfで失敗するので、MSYS2のシェルで実行する。
$ make bootstrap

make install

$ make install

DLLのコピー

MSYS2がインストールされていないPCでも動作可能にする為、依存するDLLを emacsのexeファイルがあるフォルダにコピーしたい。

DLLの特定を行った。特定のプロセスはこちら

下記の16ファイルを emacs.exe があるディレクトリにコピーする。

  • C:\msys32\mingw32\bin から
    • libgcc_s_dw2-1.dll
    • 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

バイナリ

こちら から提供中

その他

gnutls

configure で -lgnutls が no になってしまう

$ pacman -Sl | grep tls
mingw32 mingw-w64-i686-gnutls 3.3.9-1 [インストール済み]

MSYS2には gnutls インストールされているはずなのだが、チェックでNGになってしまう。

http://ftp.gnu.org/pub/gnu/emacs/windows/ によると

You can get pre-built binaries (including any dependency DLLs) at
http://sourceforge.net/projects/ezwinports/files/.

ということなのだが、、提供しているバイナリファイルはほぼMSYS2の中身と同じで、これを使用したとしても結果は同じではないかと推測する。

参考

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