aboutsummaryrefslogtreecommitdiff
path: root/japanese
diff options
context:
space:
mode:
authorMaho Nakata <maho@FreeBSD.org>2011-06-28 04:04:52 +0000
committerMaho Nakata <maho@FreeBSD.org>2011-06-28 04:04:52 +0000
commit79e65382cea89c245dbbba9a928ce8c0c3ce5763 (patch)
treede0679520053769aacdb3eac7025f8b45ec1917c /japanese
parentd74e55cc9e70eeb74bcc4e125a40c966159cd091 (diff)
downloadports-79e65382cea89c245dbbba9a928ce8c0c3ce5763.tar.gz
ports-79e65382cea89c245dbbba9a928ce8c0c3ce5763.zip
Add japanese/mozc-el port.
Mozc.el is an Emacs client of Mozc, so you can input Japanese via mozc in your tty, bypassing ibus. WWW: http://code.google.com/p/mozc/ Submitted by: TAKANO, Yuji
Notes
Notes: svn path=/head/; revision=276545
Diffstat (limited to 'japanese')
-rw-r--r--japanese/Makefile1
-rw-r--r--japanese/mozc-el/Makefile87
-rw-r--r--japanese/mozc-el/distinfo2
-rw-r--r--japanese/mozc-el/files/patch-base_iconv.cc14
-rw-r--r--japanese/mozc-el/files/patch-base_mutex.h16
-rw-r--r--japanese/mozc-el/files/patch-base_process.cc22
-rw-r--r--japanese/mozc-el/files/patch-base_util.cc17
-rw-r--r--japanese/mozc-el/files/patch-build_mozc.py11
-rw-r--r--japanese/mozc-el/files/patch-build_tools_mozc_version.py11
-rw-r--r--japanese/mozc-el/files/patch-gui_about_dialog_about_dialog.cc14
-rw-r--r--japanese/mozc-el/files/patch-gyp_common.gypi15
-rw-r--r--japanese/mozc-el/files/patch-ipc_ipc_path_manager.cc11
-rw-r--r--japanese/mozc-el/files/patch-ipc_unix_ipc.cc65
-rw-r--r--japanese/mozc-el/files/patch-server_mozc_server.cc49
-rw-r--r--japanese/mozc-el/files/patch-unix_ibus_gen_mozc_xml.py35
-rw-r--r--japanese/mozc-el/files/patch-unix_ibus_mozc.xml24
-rw-r--r--japanese/mozc-el/files/patch-unix_ibus_path_util.cc25
-rw-r--r--japanese/mozc-el/files/patch-unix_scim_scim.gyp11
-rw-r--r--japanese/mozc-el/files/pkg-message.in10
-rw-r--r--japanese/mozc-el/pkg-descr4
20 files changed, 444 insertions, 0 deletions
diff --git a/japanese/Makefile b/japanese/Makefile
index e3da65fcece7..68c67eadded1 100644
--- a/japanese/Makefile
+++ b/japanese/Makefile
@@ -198,6 +198,7 @@
SUBDIR += monafonts
SUBDIR += monafonts-ttf
SUBDIR += mozc-additions
+ SUBDIR += mozc-el
SUBDIR += mozc-server
SUBDIR += mozc-tool
SUBDIR += mtools
diff --git a/japanese/mozc-el/Makefile b/japanese/mozc-el/Makefile
new file mode 100644
index 000000000000..722c3a406518
--- /dev/null
+++ b/japanese/mozc-el/Makefile
@@ -0,0 +1,87 @@
+# New ports collection makefile for: mozc-tool
+# Date created: 26 June 2010
+# Whom: TAKANO, Yuji
+#
+# $FreeBSD$
+#
+
+PORTNAME= mozc-el
+PORTVERSION= 0.13.523.102
+CATEGORIES= japanese textproc
+MASTER_SITES= http://people.freebsd.org/~daichi/distfiles/
+DISTNAME= mozc-${PORTVERSION}
+
+MAINTAINER= maho@FreeBSD.org
+COMMENT= Mozc for GNU Emacs
+
+BUILD_DEPENDS= gsed:${PORTSDIR}/textproc/gsed \
+ ${LOCALBASE}/bin/grep:${PORTSDIR}/textproc/gnugrep \
+ gyp:${PORTSDIR}/devel/py-gyp-devel
+LIB_DEPENDS= curl.6:${PORTSDIR}/ftp/curl \
+ gtest.0:${PORTSDIR}/devel/googletest \
+ protobuf.7:${PORTSDIR}/devel/protobuf
+RUN_DEPENDS= xdg-open:${PORTSDIR}/devel/xdg-utils
+
+USE_BZIP2= yes
+USE_EMACS= yes
+USE_GMAKE= yes
+USE_ICONV= yes
+USE_PYTHON= yes
+USE_QT_VER= 4
+QT_COMPONENTS= gui dbus qmake_build moc_build uic_build rcc_build
+
+PLIST_FILES= ${EMACS_VERSION_SITE_LISPDIR}/mozc.el \
+ ${EMACS_VERSION_SITE_LISPDIR}/mozc.elc \
+ bin/mozc_emacs_helper
+
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_DEBUG_CODE)
+BUILD_MODE=Debug
+.else
+BUILD_MODE=Release
+.endif
+
+.if !defined(NOPORTDOCS)
+SUB_FILES= pkg-message
+.endif
+
+REPLACE_FILES= ${WRKSRC}/build_mozc.py \
+ ${WRKSRC}/gyp/common.gypi \
+ ${WRKSRC}/base/util.cc \
+ ${WRKSRC}/base/process.cc \
+ ${WRKSRC}/gui/about_dialog/about_dialog.cc
+
+post-patch:
+ @for FILE in ${REPLACE_FILES}; \
+ do \
+ ${SED} -i .bak -e "s/@@LOCALBASE@@/${LOCALBASE:S/\//\\\//g}/g" \
+ $${FILE}; \
+ done;
+
+do-build:
+ @cd ${WRKSRC}/; \
+ export BUILD_COMMAND=${GMAKE}; \
+ ${PYTHON_CMD} build_mozc.py gyp --gypdir=${LOCALBASE}/bin; \
+ ${PYTHON_CMD} build_mozc.py build \
+ -c ${BUILD_MODE} --qtdir=${QT_LIBDIR} \
+ unix/emacs/emacs.gyp:mozc_emacs_helper
+ @cd ${WRKSRC}/unix/emacs; \
+ ${EMACS_CMD} -batch -q -no-site-file -no-init-file \
+ -f batch-byte-compile mozc.el
+
+do-install:
+ @${INSTALL_PROGRAM} \
+ ${WRKSRC}/out_linux/${BUILD_MODE}/mozc_emacs_helper \
+ ${LOCALBASE}/bin/mozc_emacs_helper
+ @${INSTALL_DATA} \
+ ${WRKSRC}/unix/emacs/mozc.el \
+ ${PREFIX}/${EMACS_VERSION_SITE_LISPDIR}/mozc.el
+ @${INSTALL_DATA} \
+ ${WRKSRC}/unix/emacs/mozc.elc \
+ ${PREFIX}/${EMACS_VERSION_SITE_LISPDIR}/mozc.elc
+
+post-install:
+ @${CAT} ${PKGMESSAGE}
+
+.include <bsd.port.post.mk>
diff --git a/japanese/mozc-el/distinfo b/japanese/mozc-el/distinfo
new file mode 100644
index 000000000000..e403a6074a72
--- /dev/null
+++ b/japanese/mozc-el/distinfo
@@ -0,0 +1,2 @@
+SHA256 (mozc-0.13.523.102.tar.bz2) = e83a6fa874ac27cd5f15c014f22a5c03c749e9009a078fb812d4e127892abbe2
+SIZE (mozc-0.13.523.102.tar.bz2) = 39269824
diff --git a/japanese/mozc-el/files/patch-base_iconv.cc b/japanese/mozc-el/files/patch-base_iconv.cc
new file mode 100644
index 000000000000..d7dae90d339f
--- /dev/null
+++ b/japanese/mozc-el/files/patch-base_iconv.cc
@@ -0,0 +1,14 @@
+--- base/iconv.cc.org 2010-11-06 10:43:30.936188326 +0900
++++ base/iconv.cc 2010-11-06 11:22:34.282186490 +0900
+@@ -52,7 +52,11 @@
+ size_t olen_org = olen;
+ iconv(ic, 0, &ilen, 0, &olen); // reset iconv state
+ while (ilen != 0) {
++#ifdef __FreeBSD__
++ if (iconv(ic, (const char **)(&ibuf), &ilen, &obuf, &olen)
++#else
+ if (iconv(ic, reinterpret_cast<char **>(&ibuf), &ilen, &obuf, &olen)
++#endif
+ == static_cast<size_t>(-1)) {
+ return;
+ }
diff --git a/japanese/mozc-el/files/patch-base_mutex.h b/japanese/mozc-el/files/patch-base_mutex.h
new file mode 100644
index 000000000000..85cf9e037e95
--- /dev/null
+++ b/japanese/mozc-el/files/patch-base_mutex.h
@@ -0,0 +1,16 @@
+--- base/mutex.h.org 2010-11-06 10:44:01.433194789 +0900
++++ base/mutex.h 2010-11-06 10:44:28.939186472 +0900
+@@ -82,11 +82,11 @@
+ // PTHREAD_MUTEX_RECURSIVE_NP and PTHREAD_MUTEX_RECURSIVE seem to be
+ // variants. For example, Mac OS X 10.4 had
+ // PTHREAD_MUTEX_RECURSIVE_NP but Mac OS X 10.5 does not
+-#ifdef OS_MACOSX
++#if defined(OS_MACOSX) || defined(__FreeBSD__)
+ #define PTHREAD_MUTEX_RECURSIVE_VALUE PTHREAD_MUTEX_RECURSIVE
+ #endif
+
+-#ifdef OS_LINUX
++#if defined(OS_LINUX) && !defined(__FreeBSD__)
+ #define PTHREAD_MUTEX_RECURSIVE_VALUE PTHREAD_MUTEX_RECURSIVE_NP
+ #endif
+
diff --git a/japanese/mozc-el/files/patch-base_process.cc b/japanese/mozc-el/files/patch-base_process.cc
new file mode 100644
index 000000000000..2deec58c1720
--- /dev/null
+++ b/japanese/mozc-el/files/patch-base_process.cc
@@ -0,0 +1,22 @@
+--- base/process.cc.org 2010-11-06 10:44:33.530187843 +0900
++++ base/process.cc 2010-11-06 10:45:08.765186704 +0900
+@@ -194,13 +194,18 @@
+ return ShellExecuteInSystemDir(L"open", wurl.c_str(), NULL, SW_SHOW);
+ #endif
+
+-#ifdef OS_LINUX
++#if defined(OS_LINUX) && !defined(__FreeBSD__)
+ static const char kBrowserCommand[] = "/usr/bin/xdg-open";
+ // xdg-open which uses kfmclient or gnome-open internally works both on KDE
+ // and GNOME environments.
+ return SpawnProcess(kBrowserCommand, url);
+ #endif // LINUX
+
++#ifdef __FreeBSD__
++ static const char kBrowserCommand[] = "@@LOCALBASE@@/bin/xdg-open";
++ return SpawnProcess(kBrowserCommand, url);
++#endif
++
+ #ifdef OS_MACOSX
+ return MacProcess::OpenBrowserForMac(url);
+ #endif // OS_MACOSX
diff --git a/japanese/mozc-el/files/patch-base_util.cc b/japanese/mozc-el/files/patch-base_util.cc
new file mode 100644
index 000000000000..1f5bdabf7ba8
--- /dev/null
+++ b/japanese/mozc-el/files/patch-base_util.cc
@@ -0,0 +1,17 @@
+--- base/util.cc.org 2010-11-06 10:45:14.448193623 +0900
++++ base/util.cc 2010-11-06 10:46:11.717188704 +0900
+@@ -1629,9 +1629,13 @@
+ return MacUtil::GetServerDirectory();
+ #endif // OS_MACOSX
+
+-#ifdef OS_LINUX
++#if defined(OS_LINUX) && !defined(__FreeBSD__)
+ return "/usr/lib/mozc";
+ #endif // OS_LINUX
++
++#ifdef __FreeBSD__
++ return "@@LOCALBASE@@/bin";
++#endif
+ }
+
+ string Util::GetServerPath() {
diff --git a/japanese/mozc-el/files/patch-build_mozc.py b/japanese/mozc-el/files/patch-build_mozc.py
new file mode 100644
index 000000000000..d3504fffc41c
--- /dev/null
+++ b/japanese/mozc-el/files/patch-build_mozc.py
@@ -0,0 +1,11 @@
+--- build_mozc.py.org 2010-11-06 10:46:16.225188464 +0900
++++ build_mozc.py 2010-11-06 10:46:35.213186660 +0900
+@@ -69,7 +69,7 @@
+
+ def IsLinux():
+ """Returns true if the platform is Linux."""
+- return os.name == 'posix' and os.uname()[0] == 'Linux'
++ return os.name == 'posix' and ( os.uname()[0] == 'Linux' or os.uname()[0] == 'FreeBSD' )
+
+
+ # TODO(yukawa): Move this function to util.py (b/2715400)
diff --git a/japanese/mozc-el/files/patch-build_tools_mozc_version.py b/japanese/mozc-el/files/patch-build_tools_mozc_version.py
new file mode 100644
index 000000000000..df3a35cc7d0a
--- /dev/null
+++ b/japanese/mozc-el/files/patch-build_tools_mozc_version.py
@@ -0,0 +1,11 @@
+--- build_tools/mozc_version.py.org 2010-11-06 10:46:40.900188220 +0900
++++ build_tools/mozc_version.py 2010-11-06 10:47:03.466651555 +0900
+@@ -55,7 +55,7 @@
+
+ def IsLinux():
+ """Returns true if the platform is Linux."""
+- return os.name == 'posix' and os.uname()[0] == 'Linux'
++ return os.name == 'posix' and ( os.uname()[0] == 'Linux' or os.uname()[0] == 'FreeBSD' )
+
+
+ def CalculateRevisionForPlatform(revision):
diff --git a/japanese/mozc-el/files/patch-gui_about_dialog_about_dialog.cc b/japanese/mozc-el/files/patch-gui_about_dialog_about_dialog.cc
new file mode 100644
index 000000000000..3e9ed169b980
--- /dev/null
+++ b/japanese/mozc-el/files/patch-gui_about_dialog_about_dialog.cc
@@ -0,0 +1,14 @@
+--- gui/about_dialog/about_dialog.cc.org 2010-11-06 10:47:08.291193501 +0900
++++ gui/about_dialog/about_dialog.cc 2010-11-06 10:48:08.940188276 +0900
+@@ -106,7 +106,11 @@
+ SetLabelText(label_terms);
+ SetLabelText(label_credits);
+
++#ifdef __FreeBSD__
++ product_image_.reset(new QImage("@@LOCALBASE@@/share/mozc-tool/icons/product_logo.png"));
++#else
+ product_image_.reset(new QImage(":/product_logo.png"));
++#endif
+ }
+
+ void AboutDialog::paintEvent(QPaintEvent *event) {
diff --git a/japanese/mozc-el/files/patch-gyp_common.gypi b/japanese/mozc-el/files/patch-gyp_common.gypi
new file mode 100644
index 000000000000..75a5ddb8921a
--- /dev/null
+++ b/japanese/mozc-el/files/patch-gyp_common.gypi
@@ -0,0 +1,15 @@
+--- gyp/common.gypi.org 2010-11-06 10:50:16.532187538 +0900
++++ gyp/common.gypi 2010-11-06 10:50:37.769189168 +0900
+@@ -436,6 +436,12 @@
+ '-lz',
+ '<@(extra_linux_libs)',
+ ],
++ 'include_dirs': [
++ '@@LOCALBASE@@/include'
++ ],
++ 'ldflags': [
++ '-L@@LOCALBASE@@/lib'
++ ],
+ 'conditions': [
+ ['use_libgtest==0', {
+ 'include_dirs': [
diff --git a/japanese/mozc-el/files/patch-ipc_ipc_path_manager.cc b/japanese/mozc-el/files/patch-ipc_ipc_path_manager.cc
new file mode 100644
index 000000000000..d1e6b742e4a1
--- /dev/null
+++ b/japanese/mozc-el/files/patch-ipc_ipc_path_manager.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_path_manager.cc.org 2010-11-06 10:50:41.620188667 +0900
++++ ipc/ipc_path_manager.cc 2010-11-06 10:51:04.912186952 +0900
+@@ -265,7 +265,7 @@
+ *ipc_name = kIPCPrefix;
+ #endif // OS_WINDOWS
+
+-#ifdef OS_LINUX
++#if defined(OS_LINUX) && !defined(__FreeBSD__)
+ // On Linux, use abstract namespace which is independent of the file system.
+ (*ipc_name)[0] = '\0';
+ #endif
diff --git a/japanese/mozc-el/files/patch-ipc_unix_ipc.cc b/japanese/mozc-el/files/patch-ipc_unix_ipc.cc
new file mode 100644
index 000000000000..a437b149c50b
--- /dev/null
+++ b/japanese/mozc-el/files/patch-ipc_unix_ipc.cc
@@ -0,0 +1,65 @@
+--- ipc/unix_ipc.cc.org 2010-11-06 10:51:14.204190823 +0900
++++ ipc/unix_ipc.cc 2010-11-06 10:54:18.096187153 +0900
+@@ -41,7 +41,7 @@
+ #include <sys/time.h>
+ #include <sys/types.h>
+ #include <sys/un.h>
+-#ifdef OS_MACOSX
++#if defined(OS_MACOSX) || defined(__FreeBSD__)
+ #include <sys/ucred.h>
+ #endif
+ #include <sys/wait.h>
+@@ -124,7 +124,7 @@
+ bool IsPeerValid(int socket, pid_t *pid) {
+ *pid = 0;
+
+-#ifdef OS_MACOSX
++#if defined(OS_MACOSX) || defined(__FreeBSD__)
+ // If the OS is MAC, we should validate the peer by using LOCAL_PEERCRED.
+ struct xucred peer_cred;
+ socklen_t peer_cred_len = sizeof(struct xucred);
+@@ -146,7 +146,7 @@
+ *pid = 0;
+ #endif
+
+-#ifdef OS_LINUX
++#if defined(OS_LINUX) && !defined(__FreeBSD__)
+ struct ucred peer_cred;
+ int peer_cred_len = sizeof(peer_cred);
+ if (getsockopt(socket, SOL_SOCKET, SO_PEERCRED,
+@@ -303,7 +303,7 @@
+ address.sun_family = AF_UNIX;
+ ::memcpy(address.sun_path, server_address.data(), server_address_length);
+ address.sun_path[server_address_length] = '\0';
+-#ifdef OS_MACOSX
++#if defined(OS_MACOSX) || defined(__FreeBSD__)
+ address.sun_len = SUN_LEN(&address);
+ const size_t sun_len = sizeof(address);
+ #else
+@@ -423,21 +423,21 @@
+ SO_REUSEADDR,
+ reinterpret_cast<char *>(&on),
+ sizeof(on));
+-#ifdef OS_MACOSX
++#if defined(OS_MACOSX) || defined(__FreeBSD__)
+ addr.sun_len = SUN_LEN(&addr);
+ const size_t sun_len = sizeof(addr);
+ #else
+ const size_t sun_len = sizeof(addr.sun_family) + server_address_.size();
+ #endif
+- if (!IsAbstractSocket(server_address_)) {
+- // Linux does not use files for IPC.
+- ::chmod(server_address_.c_str(), 0600);
+- }
+ if (::bind(socket_, reinterpret_cast<sockaddr *>(&addr), sun_len) != 0) {
+ // The UNIX domain socket file (server_address_) already exists?
+ LOG(FATAL) << "bind() failed: " << strerror(errno);
+ return;
+ }
++ if (!IsAbstractSocket(server_address_)) {
++ // Linux does not use files for IPC.
++ ::chmod(server_address_.c_str(), 0600);
++ }
+
+ if (::listen(socket_, num_connections) < 0) {
+ LOG(FATAL) << "listen() failed: " << strerror(errno);
diff --git a/japanese/mozc-el/files/patch-server_mozc_server.cc b/japanese/mozc-el/files/patch-server_mozc_server.cc
new file mode 100644
index 000000000000..4ad2a7be1db7
--- /dev/null
+++ b/japanese/mozc-el/files/patch-server_mozc_server.cc
@@ -0,0 +1,49 @@
+--- server/mozc_server.cc.org 2010-11-06 10:54:20.721190331 +0900
++++ server/mozc_server.cc 2010-11-06 10:55:39.283188573 +0900
+@@ -30,6 +30,9 @@
+ #ifdef OS_WINDOWS
+ #include <windows.h>
+ #endif
++#ifdef __FreeBSD__
++#include <signal.h>
++#endif
+
+ #include "base/base.h"
+ #include "base/process.h"
+@@ -46,6 +49,23 @@
+ mozc::SessionServer *g_session_server = NULL;
+ }
+
++#ifdef __FreeBSD__
++static void sig_func(int num)
++{
++ VLOG(1) << "signal " << num << " recieved.";
++ switch (num) {
++ case SIGINT:
++ case SIGHUP:
++ case SIGTERM:
++ if (g_session_server)
++ g_session_server->Terminate();
++ break;
++ default:
++ break;
++ }
++}
++#endif
++
+ namespace mozc {
+ namespace {
+
+@@ -122,6 +142,12 @@
+ return -1;
+ }
+
++#ifdef __FreeBSD__
++ ::signal(SIGINT, sig_func);
++ ::signal(SIGHUP, sig_func);
++ ::signal(SIGTERM, sig_func);
++#endif
++
+ // Create a new thread.
+ // We can't call Loop() as Loop() doesn't make a thread.
+ // We have to make a thread here so that ShutdownSessionCallback()
diff --git a/japanese/mozc-el/files/patch-unix_ibus_gen_mozc_xml.py b/japanese/mozc-el/files/patch-unix_ibus_gen_mozc_xml.py
new file mode 100644
index 000000000000..d10874b052ee
--- /dev/null
+++ b/japanese/mozc-el/files/patch-unix_ibus_gen_mozc_xml.py
@@ -0,0 +1,35 @@
+--- unix/ibus/gen_mozc_xml.py.org 2010-11-06 10:55:42.821186000 +0900
++++ unix/ibus/gen_mozc_xml.py 2010-11-06 10:56:59.661189967 +0900
+@@ -39,6 +39,7 @@
+
+ import optparse
+ import sys
++import os
+
+ # Information to generate <component> part of mozc.xml. %s will be replaced with
+ # a product name, 'Mozc' or 'Google Japanese Input'.
+@@ -64,6 +65,24 @@
+ 'rank': '0',
+ }
+
++if os.uname()[0] == 'FreeBSD':
++ IBUS_COMPONENT_PROPS = {
++ 'name': 'com.google.IBus.Mozc',
++ 'description': '%s Component',
++ 'exec': '@@LOCALBASE@@/libexec/ibus-engine-mozc --ibus',
++ 'version': '0.0.0.0',
++ 'author': 'Google Inc.',
++ 'license': 'New BSD',
++ 'homepage': 'http://code.google.com/p/mozc/',
++ 'textdomain': 'ibus-mozc',
++ }
++ IBUS_ENGINE_COMMON_PROPS = {
++ 'description': '%s (Japanese Input Method)',
++ 'language': 'ja',
++ 'icon': '@@LOCALBASE@@/share/ibus-mozc/icons/product_logo.png',
++ 'rank': '0',
++ }
++
+ # A dictionary from --platform to engines that are used in the platform. The
+ # information is used to generate <engines> part of mozc.xml.
+ IBUS_ENGINES_PROPS = {
diff --git a/japanese/mozc-el/files/patch-unix_ibus_mozc.xml b/japanese/mozc-el/files/patch-unix_ibus_mozc.xml
new file mode 100644
index 000000000000..624ff45d68ab
--- /dev/null
+++ b/japanese/mozc-el/files/patch-unix_ibus_mozc.xml
@@ -0,0 +1,24 @@
+--- unix/ibus/mozc.xml.org 2010-11-06 10:57:06.006187725 +0900
++++ unix/ibus/mozc.xml 2010-11-06 10:57:28.462186463 +0900
+@@ -0,0 +1,21 @@
++<component>
++ <name>com.google.IBus.Mozc</name>
++ <description>Mozc Component</description>
++ <exec>@@LOCALBASE@@/libexec/ibus-engine-mozc --ibus</exec>
++ <version>0.0.0.0</version>
++ <author>Google Inc.</author>
++ <license>New BSD</license>
++ <homepage>http://code.google.com/p/mozc/</homepage>
++ <textdomain>ibus-mozc</textdomain>
++ <engines>
++ <engine>
++ <rank>0</rank>
++ <description>Mozc (Japanese Input Method)</description>
++ <language>ja</language>
++ <icon>@@LOCALBASE@@/share/ibus-mozc/icons/product_logo.png</icon>
++ <layout>jp</layout>
++ <name>mozc-jp</name>
++ <longname>Mozc</longname>
++ </engine>
++ </engines>
++</component>
diff --git a/japanese/mozc-el/files/patch-unix_ibus_path_util.cc b/japanese/mozc-el/files/patch-unix_ibus_path_util.cc
new file mode 100644
index 000000000000..532d5c92b0a0
--- /dev/null
+++ b/japanese/mozc-el/files/patch-unix_ibus_path_util.cc
@@ -0,0 +1,25 @@
+--- unix/ibus/path_util.cc.org 2010-11-06 10:57:33.500187940 +0900
++++ unix/ibus/path_util.cc 2010-11-06 10:58:12.395186886 +0900
+@@ -30,14 +30,22 @@
+ #include "unix/ibus/path_util.h"
+
+ namespace {
++#ifdef __FreeBSD__
++const char kInstalledDirectory[] = "@@LOCALBASE@@/share/ibus-mozc";
++#else
+ const char kInstalledDirectory[] = "/usr/share/ibus-mozc";
++#endif
+ }
+
+ namespace mozc {
+ namespace ibus {
+
+ string GetIconPath(const string &icon_file) {
++#ifdef __FreeBSD__
++ return string("@@LOCALBASE@@/share/ibus-mozc/icons/") + icon_file;
++#else
+ return kInstalledDirectory + string("/") + icon_file;
++#endif
+ }
+
+ } // namespace ibus
diff --git a/japanese/mozc-el/files/patch-unix_scim_scim.gyp b/japanese/mozc-el/files/patch-unix_scim_scim.gyp
new file mode 100644
index 000000000000..128dc6b98854
--- /dev/null
+++ b/japanese/mozc-el/files/patch-unix_scim_scim.gyp
@@ -0,0 +1,11 @@
+--- unix/scim/scim.gyp.org 2010-11-06 10:58:16.438187044 +0900
++++ unix/scim/scim.gyp 2010-11-06 10:58:34.829186459 +0900
+@@ -44,7 +44,7 @@
+ '../../session/session.gyp:session',
+ ],
+ 'scim_defines': [
+- 'SCIM_ICONDIR="<!@(pkg-config --variable=icondir scim)"',
++ 'SCIM_ICONDIR="@@LOCALBASE@@/share/scim-mozc/icons/"',
+ ]
+ },
+ 'targets': [
diff --git a/japanese/mozc-el/files/pkg-message.in b/japanese/mozc-el/files/pkg-message.in
new file mode 100644
index 000000000000..478791d44948
--- /dev/null
+++ b/japanese/mozc-el/files/pkg-message.in
@@ -0,0 +1,10 @@
+Now, mozc.el has been succesfully installed.
+You need to add following lines to ~/.emacs to use mozc in
+your emacs.
+
+(require 'mozc)
+(set-language-environment "Japanese")
+(setq default-input-method "japanese-mozc")
+(global-set-key (kbd "C-o") 'toggle-input-method)
+
+Thanks!
diff --git a/japanese/mozc-el/pkg-descr b/japanese/mozc-el/pkg-descr
new file mode 100644
index 000000000000..097f107626aa
--- /dev/null
+++ b/japanese/mozc-el/pkg-descr
@@ -0,0 +1,4 @@
+Mozc.el is an Emacs client of Mozc, so you can input
+Japanese via mozc in your tty, bypassing ibus.
+
+WWW: http://code.google.com/p/mozc/