| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI="5" |
| PYTHON_COMPAT=( python2_7 ) |
| inherit elisp-common eutils multilib multiprocessing python-single-r1 toolchain-funcs |
| |
| DESCRIPTION="The Mozc engine for IBus Framework" |
| HOMEPAGE="https://github.com/google/mozc" |
| |
| PROTOBUF_VER="2.5.0" |
| GMOCK_VER="1.6.0" |
| GTEST_VER="1.6.0" |
| JSONCPP_VER="0.6.0-rc2" |
| MOZC_URL="https://mozc.googlecode.com/files/${P}.tar.bz2" |
| PROTOBUF_URL="https://protobuf.googlecode.com/files/protobuf-${PROTOBUF_VER}.tar.bz2" |
| GMOCK_URL="https://googlemock.googlecode.com/files/gmock-${GMOCK_VER}.zip" |
| GTEST_URL="https://googletest.googlecode.com/files/gtest-${GTEST_VER}.zip" |
| JSONCPP_URL="mirror://sourceforge/jsoncpp/jsoncpp-src-${JSONCPP_VER}.tar.gz" |
| SRC_URI="${MOZC_URL} ${PROTOBUF_URL} |
| test? ( ${GMOCK_URL} ${GTEST_URL} ${JSONCPP_URL} )" |
| |
| LICENSE="BSD ipadic public-domain unicode" |
| SLOT="0" |
| KEYWORDS="~amd64 ~x86" |
| IUSE="emacs +ibus +qt4 renderer test" |
| |
| RDEPEND="dev-libs/glib:2 |
| dev-libs/openssl |
| x11-libs/libxcb |
| emacs? ( virtual/emacs ) |
| ibus? ( >=app-i18n/ibus-1.4.1 ) |
| renderer? ( x11-libs/gtk+:2 ) |
| qt4? ( |
| dev-qt/qtgui:4 |
| app-i18n/zinnia |
| ) |
| ${PYTHON_DEPS}" |
| DEPEND="${RDEPEND} |
| virtual/pkgconfig" |
| |
| BUILDTYPE="${BUILDTYPE:-Release}" |
| |
| RESTRICT="test" |
| |
| SITEFILE=50${PN}-gentoo.el |
| |
| src_unpack() { |
| unpack $(basename ${MOZC_URL}) |
| |
| cd "${S}"/protobuf |
| unpack $(basename ${PROTOBUF_URL}) |
| mv protobuf-${PROTOBUF_VER} files || die |
| |
| if use test; then |
| cd "${S}"/third_party |
| unpack $(basename ${GMOCK_URL}) $(basename ${GTEST_URL}) \ |
| $(basename ${JSONCPP_URL}) |
| mv gmock-${GMOCK_VER} gmock || die |
| mv gtest-${GTEST_VER} gtest || die |
| mv jsoncpp-src-${JSONCPP_VER} jsoncpp || die |
| fi |
| } |
| |
| src_prepare() { |
| epatch "${FILESDIR}"/${P}-drop-Werror.patch |
| epatch "${FILESDIR}"/${PN}-ibus-1.5.4.patch |
| epatch_user |
| } |
| |
| src_configure() { |
| local myconf="--server_dir=/usr/$(get_libdir)/mozc" |
| |
| if ! use qt4 ; then |
| myconf+=" --noqt" |
| export GYP_DEFINES="use_libzinnia=0" |
| fi |
| |
| if ! use renderer ; then |
| export GYP_DEFINES="${GYP_DEFINES} enable_gtk_renderer=0" |
| fi |
| |
| # export GYP_DEFINES="${GYP_DEFINES} use_libprotobuf=1" |
| |
| "${PYTHON}" build_mozc.py gyp ${myconf} || die "gyp failed" |
| } |
| |
| src_compile() { |
| tc-export CC CXX AR AS RANLIB LD |
| |
| local my_makeopts=$(makeopts_jobs) |
| # This is for a safety. -j without a number, makeopts_jobs returns 999. |
| local myjobs=-j${my_makeopts/999/1} |
| |
| local mytarget="server/server.gyp:mozc_server" |
| use emacs && mytarget="${mytarget} unix/emacs/emacs.gyp:mozc_emacs_helper" |
| use ibus && mytarget="${mytarget} unix/ibus/ibus.gyp:ibus_mozc" |
| use renderer && mytarget="${mytarget} renderer/renderer.gyp:mozc_renderer" |
| if use qt4 ; then |
| export QTDIR="${EPREFIX}/usr" |
| mytarget="${mytarget} gui/gui.gyp:mozc_tool" |
| fi |
| |
| V=1 "${PYTHON}" build_mozc.py build_tools -c "${BUILDTYPE}" ${myjobs} || die |
| V=1 "${PYTHON}" build_mozc.py build -c "${BUILDTYPE}" ${mytarget} ${myjobs} || die |
| |
| if use emacs ; then |
| elisp-compile unix/emacs/*.el || die |
| fi |
| } |
| |
| src_test() { |
| tc-export CC CXX AR AS RANLIB LD |
| V=1 "${PYTHON}" build_mozc.py runtests -c "${BUILDTYPE}" || die |
| } |
| |
| src_install() { |
| if use emacs ; then |
| dobin "out_linux/${BUILDTYPE}/mozc_emacs_helper" || die |
| elisp-install ${PN} unix/emacs/*.{el,elc} || die |
| elisp-site-file-install "${FILESDIR}/${SITEFILE}" ${PN} || die |
| fi |
| |
| if use ibus ; then |
| exeinto /usr/libexec || die |
| newexe "out_linux/${BUILDTYPE}/ibus_mozc" ibus-engine-mozc || die |
| insinto /usr/share/ibus/component || die |
| doins "out_linux/${BUILDTYPE}/obj/gen/unix/ibus/mozc.xml" || die |
| insinto /usr/share/ibus-mozc || die |
| ( |
| cd data/images/unix |
| newins ime_product_icon_opensource-32.png product_icon.png || die |
| for f in ui-* |
| do |
| newins ${f} ${f/ui-} || die |
| done |
| ) |
| |
| fi |
| |
| exeinto "/usr/$(get_libdir)/mozc" || die |
| doexe "out_linux/${BUILDTYPE}/mozc_server" || die |
| |
| if use qt4 ; then |
| exeinto "/usr/$(get_libdir)/mozc" || die |
| doexe "out_linux/${BUILDTYPE}/mozc_tool" || die |
| fi |
| |
| if use renderer ; then |
| exeinto "/usr/$(get_libdir)/mozc" || die |
| doexe "out_linux/${BUILDTYPE}/mozc_renderer" || die |
| fi |
| } |
| |
| pkg_postinst() { |
| if use emacs ; then |
| elisp-site-regen |
| elog "You can use mozc-mode via LEIM (Library of Emacs Input Method)." |
| elog "Write the following settings into your init file (~/.emacs.d/init.el" |
| elog "or ~/.emacs) in order to use mozc-mode by default, or you can call" |
| elog "\`set-input-method' and set \"japanese-mozc\" anytime you have loaded" |
| elog "mozc.el" |
| elog |
| elog " (require 'mozc)" |
| elog " (set-language-environment \"Japanese\")" |
| elog " (setq default-input-method \"japanese-mozc\")" |
| elog |
| elog "Having the above settings, just type C-\\ which is bound to" |
| elog "\`toggle-input-method' by default." |
| fi |
| } |
| |
| pkg_postrm() { |
| use emacs && elisp-site-regen |
| } |