Last active
September 18, 2016 11:15
-
-
Save rzl24ozi/1dd94943f638e84ef1c0 to your computer and use it in GitHub Desktop.
about patches and how to build emacs on Windows. (Japanese)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
※以下は emacs-25 リリース前のものなので現在では内容が古くなっているかもしれません。 | |
emacs-25(以降)の README.txt も参照してみてください。 | |
■各パッチについて | |
emacs-24.5-*.diff は emacs-24.5 に対するパッチです。 | |
□emacs-24.5-x64.diff (https://gist.github.com/rzl24ozi/68c29ac4fe64f1aa8887) | |
GNU emacs(x64) (http://hp.vector.co.jp/authors/VA052357/emacs.html) | |
に同梱のパッチ | |
(GNU emacs(x64) インストール後に C:\Program Files\GNU\Emacs23\distfiles\ | |
下にあるもの) | |
を(全てではありませんが) emacs-24.5 の mingw版、cygwin版(emacs-w32) | |
に適用できるようにしたものです。 | |
#ファイル名に x64 がついてますが 32bit 版でも使用できます。 | |
GNU emacs(x64) のダイナミックロード機能は私にはうまく動かせなかったので | |
含まれていませんが、cmigemo 組み込みについては GNU emacs(x64) | |
のダイナミックロード機能追加前の方法で組み込めるようにしています。 | |
MSYS2 や cygwin のパッケージの jpeg は libjpeg-turbo のようですが | |
この場合イメージフィットオプション (GNU emacs(x64)のページ参照) が | |
効かないようです。イメージフィットオプションを試してみるなら | |
http://www.ijg.org/ からソースを取得し自ビルドして使用するなどして | |
ください。 | |
元の GNU emacs(x64) のパッチの lisp/site-init.el, lisp/site-start.el | |
は sample/lisp/site-init.el, sample/lisp/site-start.el に移動しました。 | |
configure に以下のオプションを追加しています。 | |
W32-IME, RECONVERSION, DOCUMENTFEED, cmigemo組み込み | |
がデフォルトで有効ですが無効にしたい場合に以下を指定してください。 | |
--without-w32-ime : W32-IME無効(同時にRECONVERSION、DOCUMENTFEEDも無効) | |
--without-reconversion : RECONVERSION無効(同時にDOCUMENTFEEDも無効) | |
--without-documentfeed : DOCUMENTFEED無効 | |
--without-cmigemo : cmigemo組み込み無効 | |
以下は emacs-24.5-x64.diff での修正分を分割したものです。 | |
- emacs-24.5-w32-ime.diff (https://gist.github.com/rzl24ozi/a282260d2dd136daab14) | |
IME関連 | |
- emacs-24.5-cmigemo.diff (https://gist.github.com/rzl24ozi/d3937f7db645c74f9a42) | |
cmigemo 組み込み | |
- emacs-24.5-image-fit.diff (https://gist.github.com/rzl24ozi/fd6bc3cd4963044b661c) | |
イメージフィットオプション | |
- emacs-24.5-cygwin-rsvg.diff (https://gist.github.com/rzl24ozi/30c13cff407318d1b69a) | |
cygwin版 emacs-w32 に rsvg 組み込み追加 | |
□emacs-24.5-mingw-imagemagick.diff (https://gist.github.com/rzl24ozi/d588b40217b80e3dae65) | |
mingw版 emacs に imagemagick を組み込めるようにします。 | |
□emacs-24.5-disable-w32-ime.diff (https://gist.github.com/rzl24ozi/f0c6cb3f20b9733b3d3f) | |
mingw版 emacs、cygwin版 emacs-w32 に 以下の関数を追加します。 | |
(disable-w32-ime) ; IME無効化(IMEをONにできなくなります) | |
(enable-w32-ime) ; IME無効化を元に戻す | |
(w32-ime-disabled-p) ; IMEが無効化されている場合 t を返す | |
□emacs-24.5-ImmDisableIME.diff (https://gist.github.com/rzl24ozi/20aa4cfaaa7256bd3aa3) | |
起動時に ImmDisableIME () を使用して IME を無効化します。IME 有効にはできません。 | |
W32-IMEイラネ な人向け。やっていることは | |
http://d.hatena.ne.jp/pekke/20140525/1401001174 | |
にあるものと同じです。 | |
■w32-imeパッチ済バイナリ | |
w32-imeパッチ済バイナリが以下で公開されています。IMEパッチ版を手っ取り早く動かしたい方はどうぞ。 | |
mingw64版: chuntaro 氏により https://github.com/chuntaro/NTEmacs64 にて | |
mingw32版: Wurly 氏により http://cha.la.coocan.jp/doc/NTEmacs.html にて | |
cygwin版(32bit): gnupack (http://sourceforge.jp/projects/gnupack/) に | |
w32-ime, cygwin-rsvg, disable-w32-ime パッチ済 emacs-w32 が同梱 | |
■MinGW 版のビルド | |
MSYS2 インストールについて詳細は | |
http://sourceforge.net/p/msys2/wiki/MSYS2%20installation/ | |
などご参照ください。 | |
その他、chuntaro 氏が https://github.com/chuntaro/NTEmacs64 にて | |
公開されているビルド手順など参考にさせていただきました。 | |
ありがとうございます。こちらもご参照ください。 | |
□MSYS2 | |
MSYS2 インストーラー | |
https://sourceforge.net/projects/msys2/files/Base/x86_64/ の msys2-x86_64-YYYYMMDD.exe (64bit Windows の場合) | |
https://sourceforge.net/projects/msys2/files/Base/i686/ の msys2-i686-YYYYMMDD.exe (32bit Windows の場合) | |
(YYYYMMDDは年月日) | |
をダウンロード、実行しインストール。インストーラーがうまく動かないようなら別の日付のものを試してみてください。 | |
インストーラー終了時 MSYS2 実行中のチェックを入れたまま完了、起動した MSYS2 シェルで | |
$ pacman -Syuu | |
としてシステムを更新。終わったら Alt+F4 で終了。 | |
□emacs のビルド | |
cygwin をインストールしている環境で cygwin の bin などを PATH に入れて | |
いるとうまくビルドできないことがあるようなので cygwin は PATH から除外 | |
しておいてください。 | |
ビルドの邪魔になることがあるのでセキュリティソフトなどは一時的に停止しておいた方がよいかと思います。 | |
以下は 64bit 版のビルドになります。 | |
32bit 版のビルドであれば mingw32.exe を起動し x86_64 を i686 に読みかえて作業してください。 | |
Windows が 32bit 版の場合は当然 64bit 版のビルドは無理なので 32bit 版をビルドしてください。 | |
MSYS2 インストール先の mingw64.exe を起動し、 | |
$ pacman -S base-devel | |
$ pacman -S mingw-w64-x86_64 | |
$ pacman -S mingw-w64-x86_64-gcc | |
$ pacman -S mingw-w64-x86_64-giflib | |
$ pacman -S mingw-w64-x86_64-gnutls | |
$ pacman -S mingw-w64-x86_64-librsvg | |
$ pacman -S mingw-w64-x86_64-xpm-nox | |
でビルド関連のパッケージをインストール。 | |
emacs-24.5 ソースを展開しソーストップディレクトリに移動。 | |
必要に応じパッチを当ててください。 | |
configure.ac を変更するパッチを当てた場合は | |
$ ./autogen.sh | |
を実行し configure を生成しなおしておいてください。 | |
emacs-24.5 ソーストップディレクトリで | |
$ ./configure --host=x86_64-w64-mingw32 --prefix=(emacsインストール場所) | |
$ make | |
$ make install | |
で emacs 本体のインストール完了。 | |
32bit 版では emacs が終了時にクラッシュすることがあるようなので | |
LDFLAGS=-shared-libgcc を指定しておいた方がよいでしょう。 | |
--prefix は x:/... の形式で指定すると src/epaths.h の PATH_SITELOADSEARCH | |
の設定に失敗し site-lisp が load-path のデフォルトに入らなくなります。 | |
/x/... のように指定してください。 | |
デフォルトで CFLAGS が -g3 -O2 になるのでビルドされた emacs の | |
ファイルサイズがデバッグ情報のため大きくなります。 | |
気になるようなら configure 時に CFLAGS=-O2 などと指定してください。 | |
デフォルトで make install 時に .info や .el が圧縮されますが圧縮したくない | |
場合は configure に --without-compress-install を指定するか、 | |
$ make GZIP_PROG="" install | |
でインストールしてください。 | |
[imagemagick組み込み] | |
emacs-24.5-mingw-imagemagick.diff を当てた場合は ImageMagick が組み込めますが、emacs 本体が ImageMagick-6 | |
までにしか対応していないようなので MSYS2 パッケージの mingw-w64-x86_64-imagemagick 最新版は使えません。 | |
以前の ImageMagick-6 のときに何故かうまく画像が表示できなかったこともあり私は ImageMagick を以下のように | |
自ビルドしています。 | |
パッケージの mingw-w64-x86_64-imagemagick をインストールしていたら | |
$ pacman -Rs mingw-w64-x86_64-imagemagick | |
で削除。 | |
http://www.imagemagick.org/download/releases/ | |
から ImageMagick-6.8.9-10 ソースをダウンロードし展開、ソーストップディレクトリに移動して | |
$ ./configure --host=x86_64-w64-mingw32 --enable-hdri --with-rsvg --prefix=(ImageMagickインストール場所) | |
$ make install | |
emacs の configure 実行時に PKG_CONFIG_PATH を | |
PKG_CONFIG_PATH=(ImageMagickインストール場所)/lib/pkgconfig:$PKG_CONFIG_PATH | |
に設定、emacs の make 時に PATH に (ImageMagickインストール場所)/bin を追加しておいてください。 | |
ここではとりあえずソースに修正を加えずビルドできたバージョンの imagemagick を使用しましたが | |
https://sourceforge.net/projects/msys2/files/REPOS/MINGW/Sources/ | |
の mingw-w64-x86_64-imagemagick-6 パッケージのソース(いずれ削除されるかもしれませんが)に含まれているパッチを | |
参考にすれば ImageMagick-6.9.* はビルドできるかと思います。新しめのものの方がいいとかであればお試しください。 | |
[cmigemo組み込み] | |
emacs-24.5-x64.diff または emacs-24.5-cmigemo.diff を当てた場合は | |
cmigemo が組み込めます。組み込む場合は | |
https://osdn.jp/projects/nkf/downloads/64158/nkf-2.1.4.tar.gz/ | |
から nkf のソースを取得してmake、インストールしておき | |
http://www.kaoriya.net/software/cmigemo (https://github.com/koron/cmigemo) | |
から C/Migemo のソースコードを取得して展開、ソーストップディレクトリに | |
移動して | |
$ ./configure --prefix=(cmigemoインストール場所) | |
$ make mingw-install | |
でインストール。 | |
emacs の configure 実行時に | |
$ CPPFLAGS=-I(cmigemoインストール場所)/include ./confiugre ... | |
のように指定してください。 | |
[DLLなどのコピー] | |
MSYS2 環境外でも使えるように dynamic-library-alist にある dll とそれらが | |
依存する dll、emacs 本体が依存する dll を /mingw64/ 下 (32bit 版であれば /mingw32/ 下) から | |
(emacsインストール場所)/bin/ 下へコピーしておいてください。 | |
dll の依存関係は Dependency Walker (http://www.dependencywalker.com/) | |
などでわかります。 | |
私の場合は以下をコピーしました。 | |
gnutls のバージョンが上がって dll のファイル名が dynamic-library-alist に | |
あるものと一致しなくなっています。 | |
dynamic-library-alist を修正するか、libgnutls-30.dll を libgnutls-28.dll に | |
リネームして対処してください。 | |
libgcc_s_seh-1.dll # 64bit版の場合 | |
libgcc_s_dw2-1.dll # 32bit版の場合 | |
libXpm-noX4.dll | |
libbz2-1.dll | |
libcairo-2.dll | |
libcroco-0.6-3.dll | |
libexpat-1.dll | |
libffi-6.dll | |
libfontconfig-1.dll | |
libfreetype-6.dll | |
libgdk_pixbuf-2.0-0.dll | |
libgif-7.dll | |
libgio-2.0-0.dll | |
libglib-2.0-0.dll | |
libgmodule-2.0-0.dll | |
libgmp-10.dll | |
libgnutls-30.dll # dynamic-library-alist の修正 または libgnutls-28.dll にリネームが必要 | |
libgobject-2.0-0.dll | |
libgraphite2.dll | |
libharfbuzz-0.dll | |
libhogweed-4-2.dll | |
libiconv-2.dll | |
libidn-11.dll | |
libintl-8.dll | |
libjpeg-8.dll | |
liblzma-5.dll | |
libnettle-6-2.dll | |
libp11-kit-0.dll | |
libpango-1.0-0.dll | |
libpangocairo-1.0-0.dll | |
libpangoft2-1.0-0.dll | |
libpangowin32-1.0-0.dll | |
libpcre-1.dll | |
libpixman-1-0.dll | |
libpng16-16.dll | |
librsvg-2-2.dll | |
libstdc++-6.dll | |
libtasn1-6.dll | |
libtiff-5.dll | |
libwinpthread-1.dll | |
libxml2-2.dll | |
zlib1.dll | |
imagemagick を組み込んだ場合はさらに | |
libgomp-1.dll | |
および (ImageMagickインストール場所)/bin から | |
libMagickCore-6.Q16HDRI-2.dll | |
libMagickWand-6.Q16HDRI-2.dll | |
を、cmigemo を組み込んだ場合は (cmigemoインストール場所)/bin から | |
migemo.dll | |
をコピーしておいてください。 | |
cmigemo を組み込んだ場合は | |
(cmigemoインストール場所)/share/migemo/utf-8/* | |
も (emacsインストール先)/share/emacs/24.5/etc/migemo/utf-8/ 下へコピー | |
しておいてください。 | |
cmigemo.el を load すれば migemo のインクリメンタル検索ができます。 | |
cmigemo.el は emacs-24.5-x64.diff や emacs-24.5-cmigemo.diff を当てた後の | |
site-lisp/ 下にあります。 | |
■cygwin emacs-w32 のビルド | |
ビルド関連のライブラリはパッケージの *-devel をインストールしておけば | |
よいです。pkg-config, autoconf, automake 他、ビルドに必要なコマンド類 | |
もパッケージからインストールしておいてください。 | |
configure.ac を変更するパッチを当てた場合は configure 実行前に | |
$ ./autogen.sh | |
を実行して configure を生成しなおしておいてください。 | |
emacs-24.5-x64.diff や emacs-24.5-cmigemo.diff を当てた場合に cmigemo を | |
組み込むなら | |
https://osdn.jp/projects/nkf/downloads/64158/nkf-2.1.4.tar.gz/ | |
から nkf のソースを取得してmake、インストールしておき | |
http://www.kaoriya.net/software/cmigemo (https://github.com/koron/cmigemo) | |
から C/Migemo ソースコードを取得、 | |
$ ./configure | |
$ make cyg-install | |
でインストールしておいてください。 | |
emacs-24.5 ソーストップディレクトリで | |
$ ./configure --with-w32 --prefix=(emacsインストール場所) | |
$ make | |
$ make install | |
でインストール完了です。 | |
以上 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment