summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org>2020-12-24 00:00:00 +0000
committerMike Gilbert <floppym@gentoo.org>2020-12-27 13:39:09 -0500
commita8d6f62a23fcd36032df86eb2e2093907852124e (patch)
treee4db733a04afe34b76c86559eb23615abca37ce8 /app-i18n/mozc/files
parentdev-db/sqlite: Version bump (3.34.0). (diff)
downloadgentoo-a8d6f62a23fcd36032df86eb2e2093907852124e.tar.gz
gentoo-a8d6f62a23fcd36032df86eb2e2093907852124e.tar.bz2
gentoo-a8d6f62a23fcd36032df86eb2e2093907852124e.zip
app-i18n/mozc: Version bump (2.26.4220_p20201212102434_p20201219202429).
Signed-off-by: Arfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org> Signed-off-by: Mike Gilbert <floppym@gentoo.org>
Diffstat (limited to 'app-i18n/mozc/files')
-rw-r--r--app-i18n/mozc/files/mozc-2.26.4220-environmental_variables.patch89
-rw-r--r--app-i18n/mozc/files/mozc-2.26.4220-server_path_check.patch95
-rw-r--r--app-i18n/mozc/files/mozc-2.26.4220-system_abseil-cpp.patch407
-rw-r--r--app-i18n/mozc/files/mozc-2.26.4220-system_gtest.patch141
-rw-r--r--app-i18n/mozc/files/mozc-2.26.4220-system_jsoncpp.patch117
5 files changed, 849 insertions, 0 deletions
diff --git a/app-i18n/mozc/files/mozc-2.26.4220-environmental_variables.patch b/app-i18n/mozc/files/mozc-2.26.4220-environmental_variables.patch
new file mode 100644
index 00000000000..dccdff76f15
--- /dev/null
+++ b/app-i18n/mozc/files/mozc-2.26.4220-environmental_variables.patch
@@ -0,0 +1,89 @@
+https://github.com/google/mozc/issues/470
+
+--- /src/base/system_util.cc
++++ /src/base/system_util.cc
+@@ -226,6 +226,11 @@
+
+ std::string UserProfileDirectoryImpl::GetUserProfileDirectory() const {
+ #if defined(OS_CHROMEOS)
++ const char *configuration_directory_env = Environ::GetEnv("MOZC_CONFIGURATION_DIRECTORY");
++ if (configuration_directory_env) {
++ return configuration_directory_env;
++ }
++
+ // TODO(toka): Must use passed in user profile dir which passed in. If mojo
+ // platform the user profile is determined on runtime.
+ // It's hack, the user profile dir should be passed in. Although the value in
+@@ -245,13 +250,23 @@
+ #elif defined(OS_IOS)
+ // OS_IOS block must be placed before __APPLE__ because both macros are
+ // currently defined on iOS.
+- //
++
++ const char *configuration_directory_env = Environ::GetEnv("MOZC_CONFIGURATION_DIRECTORY");
++ if (configuration_directory_env) {
++ return configuration_directory_env;
++ }
++
+ // On iOS, use Caches directory instead of Application Spport directory
+ // because the support directory doesn't exist by default. Also, it is backed
+ // up by iTunes and iCloud.
+ return FileUtil::JoinPath({MacUtil::GetCachesDirectory(), kProductPrefix});
+
+ #elif defined(OS_WIN)
++ const char *configuration_directory_env = Environ::GetEnv("MOZC_CONFIGURATION_DIRECTORY");
++ if (configuration_directory_env) {
++ return configuration_directory_env;
++ }
++
+ DCHECK(SUCCEEDED(Singleton<LocalAppDataDirectoryCache>::get()->result()));
+ std::string dir = Singleton<LocalAppDataDirectoryCache>::get()->path();
+
+@@ -263,6 +278,11 @@
+
+
+ #elif defined(__APPLE__)
++ const char *configuration_directory_env = Environ::GetEnv("MOZC_CONFIGURATION_DIRECTORY");
++ if (configuration_directory_env) {
++ return configuration_directory_env;
++ }
++
+ std::string dir = MacUtil::GetApplicationSupportDirectory();
+ # ifdef GOOGLE_JAPANESE_INPUT_BUILD
+ dir = FileUtil::JoinPath(dir, "Google");
+@@ -276,6 +296,11 @@
+
+
+ #elif defined(OS_LINUX)
++ const char *configuration_directory_env = Environ::GetEnv("MOZC_CONFIGURATION_DIRECTORY");
++ if (configuration_directory_env) {
++ return configuration_directory_env;
++ }
++
+ // 1. If "$HOME/.mozc" already exists,
+ // use "$HOME/.mozc" for backward compatibility.
+ // 2. If $XDG_CONFIG_HOME is defined
+@@ -395,6 +420,11 @@
+ #endif // OS_WIN
+
+ std::string SystemUtil::GetServerDirectory() {
++ const char *server_directory_env = Environ::GetEnv("MOZC_SERVER_DIRECTORY");
++ if (server_directory_env) {
++ return server_directory_env;
++ }
++
+ #ifdef OS_WIN
+ DCHECK(SUCCEEDED(Singleton<ProgramFilesX86Cache>::get()->result()));
+ # if defined(GOOGLE_JAPANESE_INPUT_BUILD)
+@@ -453,6 +483,11 @@
+ }
+
+ std::string SystemUtil::GetDocumentDirectory() {
++ const char *documents_directory_env = Environ::GetEnv("MOZC_DOCUMENTS_DIRECTORY");
++ if (documents_directory_env) {
++ return documents_directory_env;
++ }
++
+ #if defined(__APPLE__)
+ return GetServerDirectory();
+ #elif defined(MOZC_DOCUMENT_DIRECTORY)
diff --git a/app-i18n/mozc/files/mozc-2.26.4220-server_path_check.patch b/app-i18n/mozc/files/mozc-2.26.4220-server_path_check.patch
new file mode 100644
index 00000000000..8dbabeac003
--- /dev/null
+++ b/app-i18n/mozc/files/mozc-2.26.4220-server_path_check.patch
@@ -0,0 +1,95 @@
+https://github.com/google/mozc/issues/471
+
+--- /src/ipc/ipc_path_manager.cc
++++ /src/ipc/ipc_path_manager.cc
+@@ -340,9 +340,21 @@
+ return false;
+ }
+
++ // Expand symbolic links in the expected server path to avoid false negatives
++ // during comparisons of the expected server path and the actual server path.
++ string real_server_path = server_path;
++#ifndef OS_WIN
++ char real_server_path_[PATH_MAX];
++ if (realpath(server_path.c_str(), real_server_path_) == NULL) {
++ LOG(ERROR) << "realpath failed: " << strerror(errno);
++ return false;
++ }
++ real_server_path = real_server_path_;
++#endif
++
+ // compare path name
+ if (pid == server_pid_) {
+- return (server_path == server_path_);
++ return (real_server_path == server_path_);
+ }
+
+ server_pid_ = 0;
+@@ -352,17 +364,17 @@
+ {
+ std::wstring expected_server_ntpath;
+ const std::map<string, std::wstring>::const_iterator it =
+- expected_server_ntpath_cache_.find(server_path);
++ expected_server_ntpath_cache_.find(real_server_path);
+ if (it != expected_server_ntpath_cache_.end()) {
+ expected_server_ntpath = it->second;
+ } else {
+ std::wstring wide_server_path;
+- Util::UTF8ToWide(server_path, &wide_server_path);
++ Util::UTF8ToWide(real_server_path, &wide_server_path);
+ if (WinUtil::GetNtPath(wide_server_path, &expected_server_ntpath)) {
+- // Caches the relationship from |server_path| to
+- // |expected_server_ntpath| in case |server_path| is renamed later.
++ // Caches the relationship from |real_server_path| to
++ // |expected_server_ntpath| in case |real_server_path| is renamed later.
+ // (This can happen during the updating).
+- expected_server_ntpath_cache_[server_path] = expected_server_ntpath;
++ expected_server_ntpath_cache_[real_server_path] = expected_server_ntpath;
+ }
+ }
+
+@@ -379,9 +391,9 @@
+ return false;
+ }
+
+- // Here we can safely assume that |server_path| (expected one) should be
++ // Here we can safely assume that |real_server_path| (expected one) should be
+ // the same to |server_path_| (actual one).
+- server_path_ = server_path;
++ server_path_ = real_server_path;
+ server_pid_ = pid;
+ }
+ #endif // OS_WIN
+@@ -406,7 +418,7 @@
+ #ifdef OS_LINUX
+ // load from /proc/<pid>/exe
+ char proc[128];
+- char filename[512];
++ char filename[PATH_MAX];
+ absl::SNPrintF(proc, sizeof(proc) - 1, "/proc/%u/exe", pid);
+ const ssize_t size = readlink(proc, filename, sizeof(filename) - 1);
+ if (size == -1) {
+@@ -419,18 +431,18 @@
+ server_pid_ = pid;
+ #endif // OS_LINUX
+
+- VLOG(1) << "server path: " << server_path << " " << server_path_;
+- if (server_path == server_path_) {
++ VLOG(1) << "server path: " << real_server_path << " " << server_path_;
++ if (real_server_path == server_path_) {
+ return true;
+ }
+
+ #ifdef OS_LINUX
+- if ((server_path + " (deleted)") == server_path_) {
+- LOG(WARNING) << server_path << " on disk is modified";
++ if ((real_server_path + " (deleted)") == server_path_) {
++ LOG(WARNING) << real_server_path << " on disk is modified";
+ // If a user updates the server binary on disk during the server is running,
+ // "readlink /proc/<pid>/exe" returns a path with the " (deleted)" suffix.
+ // We allow the special case.
+- server_path_ = server_path;
++ server_path_ = real_server_path;
+ return true;
+ }
+ #endif // OS_LINUX
diff --git a/app-i18n/mozc/files/mozc-2.26.4220-system_abseil-cpp.patch b/app-i18n/mozc/files/mozc-2.26.4220-system_abseil-cpp.patch
new file mode 100644
index 00000000000..33f72b8f7a6
--- /dev/null
+++ b/app-i18n/mozc/files/mozc-2.26.4220-system_abseil-cpp.patch
@@ -0,0 +1,407 @@
+https://github.com/google/mozc/issues/490
+
+--- /src/base/absl.gyp
++++ /src/base/absl.gyp
+@@ -28,119 +28,209 @@
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ {
+- 'variables': {
+- 'absl_srcdir': '<(DEPTH)/third_party/abseil-cpp/absl',
+- 'gen_absl_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/abseil-cpp/absl',
+- },
++ 'conditions': [
++ ['use_system_abseil_cpp==0', {
++ 'variables': {
++ 'absl_srcdir': '<(DEPTH)/third_party/abseil-cpp/absl',
++ 'gen_absl_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/abseil-cpp/absl',
++ },
++ }],
++ ],
+ 'targets': [
+ {
+ 'target_name': 'absl_base',
+- 'type': 'static_library',
+ 'toolsets': ['host', 'target'],
+- 'sources': [
+- '<(absl_srcdir)/base/internal/cycleclock.cc',
+- '<(absl_srcdir)/base/internal/low_level_alloc.cc',
+- '<(absl_srcdir)/base/internal/raw_logging.cc',
+- '<(absl_srcdir)/base/internal/spinlock.cc',
+- '<(absl_srcdir)/base/internal/spinlock_wait.cc',
+- '<(absl_srcdir)/base/internal/sysinfo.cc',
+- '<(absl_srcdir)/base/internal/thread_identity.cc',
+- '<(absl_srcdir)/base/internal/throw_delegate.cc',
+- '<(absl_srcdir)/base/internal/unscaledcycleclock.cc',
+- '<(absl_srcdir)/container/internal/raw_hash_set.cc',
+- '<(absl_srcdir)/hash/internal/city.cc',
+- '<(absl_srcdir)/hash/internal/hash.cc',
+- ],
+- 'msvs_disabled_warnings': [
+- # 'type' : forcing value to bool 'true' or 'false'
+- # (performance warning)
+- # http://msdn.microsoft.com/en-us/library/b6801kcy.aspx
+- '4800',
++ 'conditions': [
++ ['use_system_abseil_cpp==1', {
++ 'type': 'none',
++ 'all_dependent_settings': {
++ 'link_settings': {
++ 'libraries': [
++ '-labsl_base -labsl_city -labsl_hash -labsl_malloc_internal -labsl_raw_hash_set -labsl_raw_logging_internal -labsl_spinlock_wait -labsl_throw_delegate',
++ ],
++ },
++ },
++ }, {
++ 'type': 'static_library',
++ 'sources': [
++ # libabsl_base
++ '<(absl_srcdir)/base/internal/cycleclock.cc',
++ # libabsl_malloc_internal
++ '<(absl_srcdir)/base/internal/low_level_alloc.cc',
++ # libabsl_raw_logging_internal
++ '<(absl_srcdir)/base/internal/raw_logging.cc',
++ # libabsl_base
++ '<(absl_srcdir)/base/internal/spinlock.cc',
++ # libabsl_spinlock_wait
++ '<(absl_srcdir)/base/internal/spinlock_wait.cc',
++ # libabsl_base
++ '<(absl_srcdir)/base/internal/sysinfo.cc',
++ '<(absl_srcdir)/base/internal/thread_identity.cc',
++ # libabsl_throw_delegate
++ '<(absl_srcdir)/base/internal/throw_delegate.cc',
++ # libabsl_base
++ '<(absl_srcdir)/base/internal/unscaledcycleclock.cc',
++ # libabsl_raw_hash_set
++ '<(absl_srcdir)/container/internal/raw_hash_set.cc',
++ # libabsl_city
++ '<(absl_srcdir)/hash/internal/city.cc',
++ # libabsl_hash
++ '<(absl_srcdir)/hash/internal/hash.cc',
++ ],
++ 'msvs_disabled_warnings': [
++ # 'type' : forcing value to bool 'true' or 'false'
++ # (performance warning)
++ # http://msdn.microsoft.com/en-us/library/b6801kcy.aspx
++ '4800',
++ ],
++ }],
+ ],
+ },
+ {
+ 'target_name': 'absl_numeric',
+- 'type': 'static_library',
+ 'toolsets': ['host', 'target'],
+- 'sources': [
+- '<(absl_srcdir)/numeric/int128.cc',
+- ],
+- 'dependencies': [
+- 'absl_base',
++ 'conditions': [
++ ['use_system_abseil_cpp==1', {
++ 'type': 'none',
++ 'all_dependent_settings': {
++ 'link_settings': {
++ 'libraries': [
++ '-labsl_int128',
++ ],
++ },
++ },
++ }, {
++ 'type': 'static_library',
++ 'sources': [
++ # libabsl_int128
++ '<(absl_srcdir)/numeric/int128.cc',
++ ],
++ 'dependencies': [
++ 'absl_base',
++ ],
++ }],
+ ],
+ },
+ {
+ 'target_name': 'absl_strings_internal',
+- 'type': 'static_library',
+ 'toolsets': ['host', 'target'],
+- 'sources': [
+- '<(absl_srcdir)/strings/internal/charconv_bigint.cc',
+- '<(absl_srcdir)/strings/internal/charconv_parse.cc',
+- '<(absl_srcdir)/strings/internal/escaping.cc',
+- '<(absl_srcdir)/strings/internal/memutil.cc',
+- '<(absl_srcdir)/strings/internal/str_format/arg.cc',
+- '<(absl_srcdir)/strings/internal/str_format/bind.cc',
+- '<(absl_srcdir)/strings/internal/str_format/extension.cc',
+- '<(absl_srcdir)/strings/internal/str_format/float_conversion.cc',
+- '<(absl_srcdir)/strings/internal/str_format/output.cc',
+- '<(absl_srcdir)/strings/internal/str_format/parser.cc',
+- '<(absl_srcdir)/strings/internal/utf8.cc',
+- ],
+- 'dependencies': [
+- 'absl_base',
+- 'absl_numeric',
++ 'conditions': [
++ ['use_system_abseil_cpp==1', {
++ 'type': 'none',
++ 'all_dependent_settings': {
++ 'link_settings': {
++ 'libraries': [
++ '-labsl_strings_internal',
++ ],
++ },
++ },
++ }, {
++ 'type': 'static_library',
++ 'sources': [
++ # libabsl_strings
++ '<(absl_srcdir)/strings/internal/charconv_bigint.cc',
++ '<(absl_srcdir)/strings/internal/charconv_parse.cc',
++ # libabsl_strings_internal
++ '<(absl_srcdir)/strings/internal/escaping.cc',
++ # libabsl_strings
++ '<(absl_srcdir)/strings/internal/memutil.cc',
++ # libabsl_str_format_internal
++ '<(absl_srcdir)/strings/internal/str_format/arg.cc',
++ '<(absl_srcdir)/strings/internal/str_format/bind.cc',
++ '<(absl_srcdir)/strings/internal/str_format/extension.cc',
++ '<(absl_srcdir)/strings/internal/str_format/float_conversion.cc',
++ '<(absl_srcdir)/strings/internal/str_format/output.cc',
++ '<(absl_srcdir)/strings/internal/str_format/parser.cc',
++ # libabsl_strings_internal
++ '<(absl_srcdir)/strings/internal/utf8.cc',
++ ],
++ 'dependencies': [
++ 'absl_base',
++ 'absl_numeric',
++ ],
++ }],
+ ],
+ },
+ {
+ 'target_name': 'absl_strings',
+- 'type': 'static_library',
+ 'toolsets': ['host', 'target'],
+- 'sources': [
+- '<(absl_srcdir)/strings/ascii.cc',
+- '<(absl_srcdir)/strings/charconv.cc',
+- '<(absl_srcdir)/strings/escaping.cc',
+- '<(absl_srcdir)/strings/match.cc',
+- '<(absl_srcdir)/strings/numbers.cc',
+- '<(absl_srcdir)/strings/str_cat.cc',
+- '<(absl_srcdir)/strings/str_replace.cc',
+- '<(absl_srcdir)/strings/str_split.cc',
+- '<(absl_srcdir)/strings/string_view.cc',
+- '<(absl_srcdir)/strings/substitute.cc',
+- ],
+- 'dependencies': [
+- 'absl_base',
+- 'absl_numeric',
+- 'absl_strings_internal',
++ 'conditions': [
++ ['use_system_abseil_cpp==1', {
++ 'type': 'none',
++ 'all_dependent_settings': {
++ 'link_settings': {
++ 'libraries': [
++ '-labsl_str_format_internal -labsl_strings -labsl_strings_internal',
++ ],
++ },
++ },
++ }, {
++ 'type': 'static_library',
++ 'sources': [
++ # libabsl_strings
++ '<(absl_srcdir)/strings/ascii.cc',
++ '<(absl_srcdir)/strings/charconv.cc',
++ '<(absl_srcdir)/strings/escaping.cc',
++ '<(absl_srcdir)/strings/match.cc',
++ '<(absl_srcdir)/strings/numbers.cc',
++ '<(absl_srcdir)/strings/str_cat.cc',
++ '<(absl_srcdir)/strings/str_replace.cc',
++ '<(absl_srcdir)/strings/str_split.cc',
++ '<(absl_srcdir)/strings/string_view.cc',
++ '<(absl_srcdir)/strings/substitute.cc',
++ ],
++ 'dependencies': [
++ 'absl_base',
++ 'absl_numeric',
++ 'absl_strings_internal',
++ ],
++ }],
+ ],
+ },
+ {
+ 'target_name': 'absl_time',
+- 'type': 'static_library',
+ 'toolsets': ['host', 'target'],
+- 'sources': [
+- '<(absl_srcdir)/time/civil_time.cc',
+- '<(absl_srcdir)/time/clock.cc',
+- '<(absl_srcdir)/time/duration.cc',
+- '<(absl_srcdir)/time/format.cc',
+- '<(absl_srcdir)/time/time.cc',
+- '<(absl_srcdir)/time/internal/cctz/src/civil_time_detail.cc',
+- '<(absl_srcdir)/time/internal/cctz/src/time_zone_fixed.cc',
+- '<(absl_srcdir)/time/internal/cctz/src/time_zone_format.cc',
+- '<(absl_srcdir)/time/internal/cctz/src/time_zone_if.cc',
+- '<(absl_srcdir)/time/internal/cctz/src/time_zone_impl.cc',
+- '<(absl_srcdir)/time/internal/cctz/src/time_zone_info.cc',
+- '<(absl_srcdir)/time/internal/cctz/src/time_zone_libc.cc',
+- '<(absl_srcdir)/time/internal/cctz/src/time_zone_lookup.cc',
+- '<(absl_srcdir)/time/internal/cctz/src/time_zone_posix.cc',
+- '<(absl_srcdir)/time/internal/cctz/src/zone_info_source.cc',
+- ],
+- 'cflags': [
+- '-Wno-error',
+- ],
+- 'dependencies': [
+- 'absl_base',
+- 'absl_numeric',
+- 'absl_strings_internal',
++ 'conditions': [
++ ['use_system_abseil_cpp==1', {
++ 'type': 'none',
++ 'all_dependent_settings': {
++ 'link_settings': {
++ 'libraries': [
++ '-labsl_civil_time -labsl_time -labsl_time_zone',
++ ],
++ },
++ },
++ }, {
++ 'type': 'static_library',
++ 'sources': [
++ # libabsl_time
++ '<(absl_srcdir)/time/civil_time.cc',
++ '<(absl_srcdir)/time/clock.cc',
++ '<(absl_srcdir)/time/duration.cc',
++ '<(absl_srcdir)/time/format.cc',
++ '<(absl_srcdir)/time/time.cc',
++ # libabsl_civil_time
++ '<(absl_srcdir)/time/internal/cctz/src/civil_time_detail.cc',
++ # libabsl_time_zone
++ '<(absl_srcdir)/time/internal/cctz/src/time_zone_fixed.cc',
++ '<(absl_srcdir)/time/internal/cctz/src/time_zone_format.cc',
++ '<(absl_srcdir)/time/internal/cctz/src/time_zone_if.cc',
++ '<(absl_srcdir)/time/internal/cctz/src/time_zone_impl.cc',
++ '<(absl_srcdir)/time/internal/cctz/src/time_zone_info.cc',
++ '<(absl_srcdir)/time/internal/cctz/src/time_zone_libc.cc',
++ '<(absl_srcdir)/time/internal/cctz/src/time_zone_lookup.cc',
++ '<(absl_srcdir)/time/internal/cctz/src/time_zone_posix.cc',
++ '<(absl_srcdir)/time/internal/cctz/src/zone_info_source.cc',
++ ],
++ 'cflags': [
++ '-Wno-error',
++ ],
++ 'dependencies': [
++ 'absl_base',
++ 'absl_numeric',
++ 'absl_strings_internal',
++ ],
++ }],
+ ],
+ },
+ ],
+--- /src/config/config_test.gyp
++++ /src/config/config_test.gyp
+@@ -36,6 +36,7 @@
+ 'config_handler_test.cc',
+ ],
+ 'dependencies': [
++ '../base/absl.gyp:absl_base',
+ '../testing/testing.gyp:gtest_main',
+ '../testing/testing.gyp:mozctest',
+ 'config.gyp:config_handler',
+@@ -80,6 +81,7 @@
+ 'character_form_manager_test.cc',
+ ],
+ 'dependencies': [
++ '../base/absl.gyp:absl_base',
+ '../testing/testing.gyp:gtest_main',
+ 'config.gyp:character_form_manager',
+ ],
+--- /src/gyp/common.gypi
++++ /src/gyp/common.gypi
+@@ -194,7 +194,13 @@
+ 'include_dirs': [
+ '<(abs_depth)',
+ '<(SHARED_INTERMEDIATE_DIR)',
+- '<(absl_dir)',
++ ],
++ 'conditions': [
++ ['use_system_abseil_cpp==0', {
++ 'include_dirs': [
++ '<(absl_dir)',
++ ],
++ }],
+ ],
+ 'mac_framework_headers': [],
+ 'target_conditions': [
+--- /src/gyp/common_win.gypi
++++ /src/gyp/common_win.gypi
+@@ -307,10 +307,16 @@
+ 'include_dirs': [
+ '<(abs_depth)',
+ '<(SHARED_INTERMEDIATE_DIR)',
+- '<(absl_dir)',
+ '<@(msvs_includes)',
+ '<(wtl_dir)/include',
+ ],
++ 'conditions': [
++ ['use_system_abseil_cpp==0', {
++ 'include_dirs': [
++ '<(absl_dir)',
++ ],
++ }],
++ ],
+ 'msvs_configuration_attributes': {
+ 'CharacterSet': '<(win_char_set_unicode)',
+ },
+--- /src/gyp/defines.gypi
++++ /src/gyp/defines.gypi
+@@ -63,6 +63,10 @@
+ # use_libibus represents if ibus library is used or not.
+ # This option is only for Linux.
+ 'use_libibus%': '0',
++
++ # use_system_abseil_cpp represents if system version or bundled version
++ # of abseil-cpp library is used.
++ 'use_system_abseil_cpp%': '0',
+ },
+ 'target_defaults': {
+ 'defines': [
+--- /src/gyp/directories.gypi
++++ /src/gyp/directories.gypi
+@@ -31,7 +31,12 @@
+ 'variables': {
+ # Top directory of third party libraries.
+ 'third_party_dir': '<(DEPTH)/third_party',
+- 'absl_dir': '<(DEPTH)/third_party/abseil-cpp',
++
++ 'conditions': [
++ ['use_system_abseil_cpp==0', {
++ 'absl_dir': '<(DEPTH)/third_party/abseil-cpp',
++ }],
++ ],
+
+ # Top directory of additional third party libraries.
+ 'ext_third_party_dir%': '<(abs_depth)/third_party',
+--- /src/session/session_test.gyp
++++ /src/session/session_test.gyp
+@@ -221,6 +221,7 @@
+ 'internal/key_event_transformer_test.cc',
+ ],
+ 'dependencies': [
++ '../base/absl.gyp:absl_base',
+ '../base/base.gyp:base',
+ '../converter/converter_base.gyp:converter_mock',
+ '../engine/engine.gyp:mock_converter_engine',
+--- /src/storage/storage_test.gyp
++++ /src/storage/storage_test.gyp
+@@ -41,6 +41,7 @@
+ 'tiny_storage_test.cc',
+ ],
+ 'dependencies': [
++ '../base/absl.gyp:absl_base',
+ '../testing/testing.gyp:gtest_main',
+ 'storage.gyp:storage',
+ ],
diff --git a/app-i18n/mozc/files/mozc-2.26.4220-system_gtest.patch b/app-i18n/mozc/files/mozc-2.26.4220-system_gtest.patch
new file mode 100644
index 00000000000..47891fab9b4
--- /dev/null
+++ b/app-i18n/mozc/files/mozc-2.26.4220-system_gtest.patch
@@ -0,0 +1,141 @@
+https://github.com/google/mozc/issues/490
+
+--- /src/gyp/defines.gypi
++++ /src/gyp/defines.gypi
+@@ -67,6 +67,10 @@
+ # use_system_abseil_cpp represents if system version or bundled version
+ # of abseil-cpp library is used.
+ 'use_system_abseil_cpp%': '0',
++
++ # use_system_gtest represents if system version or bundled version
++ # of gtest library is used.
++ 'use_system_gtest%': '0',
+ },
+ 'target_defaults': {
+ 'defines': [
+--- /src/testing/testing.gyp
++++ /src/testing/testing.gyp
+@@ -59,54 +59,76 @@
+ 'targets': [
+ {
+ 'target_name': 'testing',
+- 'type': 'static_library',
+- 'variables': {
+- 'gtest_defines': [
+- 'GTEST_LANG_CXX11=1',
+- 'GTEST_HAS_TR1_TUPLE=0', # disable tr1 tuple in favor of C++11 tuple.
+- ],
+- 'gtest_dir': '<(third_party_dir)/gtest/googletest',
+- 'gmock_dir': '<(third_party_dir)/gtest/googlemock',
+- },
+- 'sources': [
+- '<(gmock_dir)/src/gmock-cardinalities.cc',
+- '<(gmock_dir)/src/gmock-internal-utils.cc',
+- '<(gmock_dir)/src/gmock-matchers.cc',
+- '<(gmock_dir)/src/gmock-spec-builders.cc',
+- '<(gmock_dir)/src/gmock.cc',
+- '<(gtest_dir)/src/gtest-death-test.cc',
+- '<(gtest_dir)/src/gtest-filepath.cc',
+- '<(gtest_dir)/src/gtest-matchers.cc',
+- '<(gtest_dir)/src/gtest-port.cc',
+- '<(gtest_dir)/src/gtest-printers.cc',
+- '<(gtest_dir)/src/gtest-test-part.cc',
+- '<(gtest_dir)/src/gtest-typed-test.cc',
+- '<(gtest_dir)/src/gtest.cc',
+- ],
+- 'include_dirs': [
+- '<(gmock_dir)',
+- '<(gmock_dir)/include',
+- '<(gtest_dir)',
+- '<(gtest_dir)/include',
+- ],
+- 'defines': [
+- '<@(gtest_defines)',
+- ],
+- 'all_dependent_settings': {
+- 'defines': [
+- '<@(gtest_defines)',
+- ],
+- 'include_dirs': [
+- '<(gmock_dir)/include',
+- '<(gtest_dir)/include',
+- ],
+- },
+ 'conditions': [
+- ['(_toolset=="target" and compiler_target=="clang") or '
+- '(_toolset=="host" and compiler_host=="clang")', {
+- 'cflags': [
+- '-Wno-missing-field-initializers',
+- '-Wno-unused-private-field',
++ ['use_system_gtest==1', {
++ 'type': 'none',
++ 'variables': {
++ 'gtest_defines': [
++ 'GTEST_LANG_CXX11=1',
++ 'GTEST_HAS_TR1_TUPLE=0', # disable tr1 tuple in favor of C++11 tuple.
++ ],
++ },
++ 'all_dependent_settings': {
++ 'defines': [
++ '<@(gtest_defines)',
++ ],
++ 'link_settings': {
++ 'libraries': [
++ '-lgmock -lgtest',
++ ],
++ },
++ },
++ }, {
++ 'type': 'static_library',
++ 'variables': {
++ 'gtest_defines': [
++ 'GTEST_LANG_CXX11=1',
++ 'GTEST_HAS_TR1_TUPLE=0', # disable tr1 tuple in favor of C++11 tuple.
++ ],
++ 'gtest_dir': '<(third_party_dir)/gtest/googletest',
++ 'gmock_dir': '<(third_party_dir)/gtest/googlemock',
++ },
++ 'sources': [
++ '<(gmock_dir)/src/gmock-cardinalities.cc',
++ '<(gmock_dir)/src/gmock-internal-utils.cc',
++ '<(gmock_dir)/src/gmock-matchers.cc',
++ '<(gmock_dir)/src/gmock-spec-builders.cc',
++ '<(gmock_dir)/src/gmock.cc',
++ '<(gtest_dir)/src/gtest-death-test.cc',
++ '<(gtest_dir)/src/gtest-filepath.cc',
++ '<(gtest_dir)/src/gtest-matchers.cc',
++ '<(gtest_dir)/src/gtest-port.cc',
++ '<(gtest_dir)/src/gtest-printers.cc',
++ '<(gtest_dir)/src/gtest-test-part.cc',
++ '<(gtest_dir)/src/gtest-typed-test.cc',
++ '<(gtest_dir)/src/gtest.cc',
++ ],
++ 'include_dirs': [
++ '<(gmock_dir)',
++ '<(gmock_dir)/include',
++ '<(gtest_dir)',
++ '<(gtest_dir)/include',
++ ],
++ 'defines': [
++ '<@(gtest_defines)',
++ ],
++ 'all_dependent_settings': {
++ 'defines': [
++ '<@(gtest_defines)',
++ ],
++ 'include_dirs': [
++ '<(gmock_dir)/include',
++ '<(gtest_dir)/include',
++ ],
++ },
++ 'conditions': [
++ ['(_toolset=="target" and compiler_target=="clang") or '
++ '(_toolset=="host" and compiler_host=="clang")', {
++ 'cflags': [
++ '-Wno-missing-field-initializers',
++ '-Wno-unused-private-field',
++ ],
++ }],
+ ],
+ }],
+ ],
diff --git a/app-i18n/mozc/files/mozc-2.26.4220-system_jsoncpp.patch b/app-i18n/mozc/files/mozc-2.26.4220-system_jsoncpp.patch
new file mode 100644
index 00000000000..7ff132eaa59
--- /dev/null
+++ b/app-i18n/mozc/files/mozc-2.26.4220-system_jsoncpp.patch
@@ -0,0 +1,117 @@
+https://github.com/google/mozc/issues/490
+
+--- /src/gyp/defines.gypi
++++ /src/gyp/defines.gypi
+@@ -71,6 +71,10 @@
+ # use_system_gtest represents if system version or bundled version
+ # of gtest library is used.
+ 'use_system_gtest%': '0',
++
++ # use_system_jsoncpp represents if system version or bundled version
++ # of jsoncpp library is used.
++ 'use_system_jsoncpp%': '0',
+ },
+ 'target_defaults': {
+ 'defines': [
+--- /src/net/jsoncpp.gyp
++++ /src/net/jsoncpp.gyp
+@@ -31,32 +31,60 @@
+ 'targets': [
+ {
+ 'target_name': 'jsoncpp',
+- 'type': 'static_library',
+- 'variables': {
+- 'jsoncpp_root': '<(third_party_dir)/jsoncpp',
+- 'jsoncpp_srcs': [
+- '<(jsoncpp_root)/src/lib_json/json_reader.cpp',
+- '<(jsoncpp_root)/src/lib_json/json_value.cpp',
+- '<(jsoncpp_root)/src/lib_json/json_writer.cpp',
+- ],
+- 'jsoncpp_include_dirs': ['<(jsoncpp_root)/include'],
+- 'jsoncpp_additional_macros': ['JSON_USE_EXCEPTION=0'],
+- },
+- 'defines': [
+- '<@(jsoncpp_additional_macros)',
++ 'conditions': [
++ ['use_system_jsoncpp==1', {
++ 'type': 'none',
++ 'variables': {
++ 'jsoncpp_additional_macros': [
++ 'JSON_USE_EXCEPTION=0',
++ 'MOZC_USE_SYSTEM_JSONCPP',
++ ],
++ },
++ 'all_dependent_settings': {
++ 'defines': [
++ '<@(jsoncpp_additional_macros)',
++ ],
++ 'cflags': [
++ '<!@(pkg-config --cflags jsoncpp)',
++ ],
++ 'link_settings': {
++ 'libraries': [
++ '<!@(pkg-config --libs-only-l jsoncpp)',
++ ],
++ 'ldflags': [
++ '<!@(pkg-config --libs-only-L jsoncpp)',
++ ],
++ }
++ },
++ }, {
++ 'type': 'static_library',
++ 'variables': {
++ 'jsoncpp_root': '<(third_party_dir)/jsoncpp',
++ 'jsoncpp_srcs': [
++ '<(jsoncpp_root)/src/lib_json/json_reader.cpp',
++ '<(jsoncpp_root)/src/lib_json/json_value.cpp',
++ '<(jsoncpp_root)/src/lib_json/json_writer.cpp',
++ ],
++ 'jsoncpp_include_dirs': ['<(jsoncpp_root)/include'],
++ 'jsoncpp_additional_macros': ['JSON_USE_EXCEPTION=0'],
++ },
++ 'defines': [
++ '<@(jsoncpp_additional_macros)',
++ ],
++ 'sources': [
++ '<@(jsoncpp_srcs)',
++ 'jsoncpp.h',
++ ],
++ 'include_dirs': [
++ '<@(jsoncpp_include_dirs)',
++ ],
++ 'all_dependent_settings': {
++ 'defines': [
++ '<@(jsoncpp_additional_macros)',
++ ],
++ },
++ }],
+ ],
+- 'sources': [
+- '<@(jsoncpp_srcs)',
+- 'jsoncpp.h',
+- ],
+- 'include_dirs': [
+- '<@(jsoncpp_include_dirs)',
+- ],
+- 'all_dependent_settings': {
+- 'defines': [
+- '<@(jsoncpp_additional_macros)',
+- ],
+- },
+ },
+ ],
+ }
+--- /src/net/jsoncpp.h
++++ /src/net/jsoncpp.h
+@@ -35,7 +35,11 @@
+ // Mozc basically disables C++ exception.
+ #define JSON_USE_EXCEPTION 0
+ #endif // !JSON_USE_EXCEPTION
++#ifdef MOZC_USE_SYSTEM_JSONCPP
++#include <json/json.h>
++#else
+ #include "third_party/jsoncpp/include/json/json.h"
++#endif
+ #define MOZC_JSONCPP_JSON_H_INCLUDED
+ #endif // !MOZC_JSONCPP_JSON_H_INCLUDED
+