mozc_emacs_helper の Windows上のコンパイル

mozc version 2.17.2288.100の場合です。残念ながら、その後何回かトライしましたが、後のversionでは上手くできていません。

コンパイル済みのバイナリ

コンパイル済みのバイナリはここにあります。

準備

depot_toolsを使っても良いはずですが、私は上手く動かなかったので、python2.7とninjaを直接インストールしました。 pythonはPATHを通しておきました。 ninja github.com/ninja-build/ninja/releases からダウンロードして、PATHが通っている場所にコピーしました。

git clone https://github.com/google/mozc.git --recursive

sourceの修正

branding=Mozc のままだと、Google日本語入力と通信が上手く出来ないようです。以下のように修正したら動きました。 mozc\src\build_mozc.py
--- src.orig/build_mozc.py      2016-01-10 16:58:38.978852300 +0900
+++ src/build_mozc.py   2016-01-10 16:14:26.145930200 +0900
@@ -345,7 +345,7 @@
   parser = optparse.OptionParser(usage='Usage: %prog gyp [options]')
   AddCommonOptions(parser)
   AddGeneratorOption(parser)
-  default_branding = 'Mozc'
+  default_branding = 'GoogleJapaneseInput'
   parser.add_option('--branding', dest='branding', default=default_branding,
                     help='Specifies the branding. [default: %default]')
   parser.add_option('--gypdir', dest='gypdir',
mozc\src\win32\build32\build32.gyp
--- src.orig/win32/build32/build32.gyp  2016-01-10 16:53:05.597285800 +0900
+++ src/win32/build32/build32.gyp       2016-01-10 15:45:47.054732300 +0900
@@ -49,6 +49,7 @@
             '../broker/broker.gyp:mozc_broker32',
             '../ime/ime.gyp:mozc_ime',
             '../tip/tip.gyp:mozc_tip32',
+                       '../../unix/emacs/emacs.gyp:mozc_emacs_helper',
           ],
           'conditions': [
             ['use_dynamically_linked_qt!=1', {
mozc\src\win32\build64\build64.gyp
--- src/win32/build64/build64.gyp.orig  2016-01-10 16:50:34.853723900 +0900
+++ src/win32/build64/build64.gyp       2016-01-10 15:46:47.153259800 +0900
@@ -46,6 +46,7 @@
             '../broker/broker.gyp:mozc_broker64',
             '../ime/ime.gyp:mozc_ime',
             '../tip/tip.gyp:mozc_tip64',
+                       '../../unix/emacs/emacs.gyp:mozc_emacs_helper',
           ],
           'conditions': [
             ['branding=="GoogleJapaneseInput"', {
mozc\src\data_manager\packed\packed_data_manager.gyp
--- src/data_manager/packed/packed_data_manager.gyp.orig        2016-01-10 16:56:32.269967400 +0900
+++ src/data_manager/packed/packed_data_manager.gyp     2016-01-10 16:23:01.338638700 +0900
@@ -40,7 +40,7 @@
       },
       'includes': [ 'packed_data_manager.gypi' ],
     }],
-    ['branding=="Mozc"', {
+    ['branding=="GoogleJapaneseInput"', {
       'variables': {
         'dataset_dir': 'oss',
         'dataset_tag': 'oss',
mozc\src\data_manager\packed\packed_data_manager_base.gyp
--- src/data_manager/packed/packed_data_manager_base.gyp.orig   2016-01-10 16:57:09.134508600 +0900
+++ src/data_manager/packed/packed_data_manager_base.gyp        2016-01-10 16:23:19.361753500 +0900
@@ -96,7 +96,7 @@
       },
       'includes': [ 'packed_data_manager_base.gypi' ],
     }],
-    ['branding=="Mozc"', {
+    ['branding=="GoogleJapaneseInput"', {
       'variables': {
         'dataset_dir': 'oss',
         'dataset_tag': 'oss',

コンパイル

以下はコマンドプロンプトから実行しました。

$ cd src
$ python.bat build_mozc.py gyp --msvs_version=2013 --noqt --branding=GoogleJapaneseInput
$ python.bat build_mozc.py build -c Release package

buildをやり直す場合は

$ python.bat build_mozc.py clean

動作の確認

 echo -e '(0 CreateSession)\n(1 SendKey 1 hiragana)\n(2 SendKey 1 hiragana)\n(3 SendKey 1 97)' | ./mozc_emacs_helper.exe

を実行します。以下のようになっていれば、OKです。

((mozc-emacs-helper . t)(version . "2.17.2288.100")(config . ((preedit-method . roman))))
((emacs-event-id . 0)(emacs-session-id . 1)(output . ()))
((emacs-event-id . 1)(emacs-session-id . 1)(output . ((id . "14103043341600411975")(mode . hiragana)(consumed . t)(status . ((activated . t)(mode . hiragana)(comeback-mode . hiragana))))))
((emacs-event-id . 2)(emacs-session-id . 1)(output . ((id . "14103043341600411975")(mode . hiragana)(consumed . t)(status . ((activated . t)(mode . hiragana)(comeback-mode . hiragana))))))
((emacs-event-id . 3)(emacs-session-id . 1)(output . ((id . "14103043341600411975")(mode . hiragana)(consumed . t)(preedit . ((cursor . 1)(segment ((annotation . underline)(value . "あ")(value-length . 1)(key . "あ")))))(candidates . ((size . 1)(candidate ((index . 0)(value . "あ")(annotation . ((description . "ひらがな")))(id . 0)))(position . 0)(category . suggestion)(display-type . main)(footer . ((label . "Tabキーで選択")))(page-size . 9)))(status . ((activated . t)(mode . hiragana)(comeback-mode . hiragana)))(all-candidate-words . ((candidates ((id . 0)(index . 0)(value . "あ")(annotation . ((description . "ひらがな")))))(category . suggestion))))))

あとは、mozc_emacs_helper.exeをPATHが通っているフォルダにコピーして終わりです。

参考

emacs-mozc を動かすための設定(mozc_emacs_helper コンパイル編)を参考しました。