diff --git a/.gitmodules b/.gitmodules index eb741b11..3c101b85 100644 --- a/.gitmodules +++ b/.gitmodules @@ -57,3 +57,6 @@ [submodule "libime-jyutping"] path = libime-jyutping url = https://github.com/fcitx/libime-jyutping +[submodule "librime-predict"] + path = librime-predict + url = https://github.com/rime/librime-predict diff --git a/glog b/glog index b33e3bad..34b8da64 160000 --- a/glog +++ b/glog @@ -1 +1 @@ -Subproject commit b33e3bad4c46c8a6345525fd822af355e5ef9446 +Subproject commit 34b8da6496aec6a98277808701cfa834fae9801f diff --git a/librime b/librime index 72f833de..1f3bf356 160000 --- a/librime +++ b/librime @@ -1 +1 @@ -Subproject commit 72f833dee67ca2295c0abd76fde0dce8fc58ab87 +Subproject commit 1f3bf35691a5ad066ef36775e289525f3b092e28 diff --git a/librime-lua b/librime-lua index 9c611a15..b2ad34cc 160000 --- a/librime-lua +++ b/librime-lua @@ -1 +1 @@ -Subproject commit 9c611a15277b9978960df780a8f5ca3dee630354 +Subproject commit b2ad34cc8c639b7bb1bc6abcde08621b57e3e055 diff --git a/librime-octagram b/librime-octagram index a6ced5a1..bd12863f 160000 --- a/librime-octagram +++ b/librime-octagram @@ -1 +1 @@ -Subproject commit a6ced5a1d623afed17284fbaa395dd3a8b019a14 +Subproject commit bd12863f45fbbd5c7db06d5ec8be8987b10253bf diff --git a/librime-predict b/librime-predict new file mode 160000 index 00000000..72e4d717 --- /dev/null +++ b/librime-predict @@ -0,0 +1 @@ +Subproject commit 72e4d717e56c6542569c88b317700b3471164c42 diff --git a/patches/glog.patch b/patches/glog.patch new file mode 100644 index 00000000..041445c7 --- /dev/null +++ b/patches/glog.patch @@ -0,0 +1,36 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b787631..1fc8cf4 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -402,6 +402,7 @@ add_custom_command ( + COMMAND ${CMAKE_COMMAND} -E touch ${_glog_EMPTY_SOURCE} + ) + ++target_compile_options(glog_internal PRIVATE "-ffile-prefix-map=${CMAKE_SOURCE_DIR}=.") + add_library (glog + $ + ${_glog_EMPTY_SOURCE} +diff --git a/src/glog/platform.h b/src/glog/platform.h +index 4aaf5b0..f118ca8 100644 +--- a/src/glog/platform.h ++++ b/src/glog/platform.h +@@ -42,6 +42,9 @@ + # ifndef GLOG_OS_LINUX + # define GLOG_OS_LINUX + # endif ++# if defined(__ANDROID__) ++# define GLOG_OS_ANDROID ++# endif + #elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) + # define GLOG_OS_MACOSX + #elif defined(__FreeBSD__) +@@ -52,9 +55,6 @@ + # define GLOG_OS_OPENBSD + #elif defined(__EMSCRIPTEN__) + # define GLOG_OS_EMSCRIPTEN +-#elif defined(__ANDROID__) +-# define GLOG_OS_ANDROID +-#else + // TODO(hamaji): Add other platforms. + #error Platform not supported by glog. Please consider to contribute platform information by submitting a pull request on Github. + #endif diff --git a/patches/librime-predict.patch b/patches/librime-predict.patch new file mode 100644 index 00000000..c726e0ba --- /dev/null +++ b/patches/librime-predict.patch @@ -0,0 +1,18 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 07703bf..5ab6d3b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -4,6 +4,7 @@ cmake_minimum_required(VERSION 3.10) + aux_source_directory(src predict_src) + + add_library(rime-predict-objs OBJECT ${predict_src}) ++target_compile_options(rime-predict-objs PRIVATE "-ffile-prefix-map=${CMAKE_SOURCE_DIR}=.") + if(BUILD_SHARED_LIBS) + set_target_properties(rime-predict-objs + PROPERTIES +@@ -15,4 +16,4 @@ set(plugin_objs $ PARENT_SCOPE) + set(plugin_deps ${rime_library} PARENT_SCOPE) + set(plugin_modules "predict" PARENT_SCOPE) + +-add_subdirectory(tools) ++# add_subdirectory(tools) diff --git a/patches/librime.patch b/patches/librime.patch index 20242244..ecc38120 100644 --- a/patches/librime.patch +++ b/patches/librime.patch @@ -11,15 +11,15 @@ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6364e1c8..347107f0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt -@@ -143,6 +143,8 @@ if(BUILD_SHARED_LIBS) +@@ -162,6 +162,8 @@ if(BUILD_SHARED_LIBS) else() add_library(rime-static STATIC ${rime_src}) target_link_libraries(rime-static ${rime_deps}) + target_compile_options(rime-static PRIVATE "-ffile-prefix-map=${CMAKE_SOURCE_DIR}=.") + target_compile_definitions(rime-static PRIVATE BOOST_DISABLE_CURRENT_LOCATION) - set_target_properties(rime-static PROPERTIES OUTPUT_NAME "rime" PREFIX "lib") - install(TARGETS rime-static DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) - endif() + set_target_properties(rime-static PROPERTIES + OUTPUT_NAME "rime" PREFIX "lib" + ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) -- 2.43.0 @@ -40,11 +40,11 @@ diff --git a/src/rime/engine.cc b/src/rime/engine.cc index 64c0fb68..549a8112 100644 --- a/src/rime/engine.cc +++ b/src/rime/engine.cc -@@ -54,7 +54,6 @@ class ConcreteEngine : public Engine { +@@ -52,7 +52,6 @@ class ConcreteEngine : public Engine { + vector> filters_; + vector> formatters_; vector> post_processors_; - // To make sure dumping user.yaml when processors_.clear(), - // switcher is owned by processors_[0] -- weak switcher_; +- an switcher_; }; // implementations @@ -64,7 +64,7 @@ index 2e1c8b81..47c39544 100644 void set_active_engine(Engine* engine = nullptr) { active_engine_ = engine; } RIME_API static Engine* Create(); -+ weak switcher_; ++ an switcher_; protected: Engine(); @@ -106,7 +106,7 @@ index 678169c0..1085fe5c 100644 return; ctx->set_option(option, !!value); + auto engine = session->engine_.get(); -+ auto switcher = engine->switcher_.lock(); ++ auto switcher = engine->switcher_; + if (switcher->IsAutoSave(option)) { + if (Config* user_config = switcher->user_config()) { + user_config->SetBool("var/option/" + std::string(option), value); diff --git a/src/Rules/GLog.hs b/src/Rules/GLog.hs index cc46d0ec..dba92d61 100644 --- a/src/Rules/GLog.hs +++ b/src/Rules/GLog.hs @@ -20,7 +20,9 @@ glogRule = do useCMake $ (cmakeBuilder "glog") { cmakeFlags = const ["-DBUILD_SHARED_LIBS=OFF", "-DWITH_GFLAGS=OFF", "-DWITH_UNWIND=OFF", "-DBUILD_TESTING=OFF"], - -- remove absolute path by __FILE__ macro - preBuild = BuildAction $ \_ src -> cmd_ (Cwd src) Shell "sed -i '618s|\\(^add_library (glog.*\\)|target_compile_options\\(glogbase PRIVATE \"-ffile-prefix-map=${CMAKE_CURRENT_SOURCE_DIR}=.\"\\)\\n\\1|' CMakeLists.txt" + -- disable logging to cwd; remove absolute path by __FILE__ macro + preBuild = BuildAction $ \_ src -> do + cmd_ (Cwd src) "git checkout ." + cmd_ (Cwd src) "git apply ../patches/glog.patch" } "glog" ~> buildWithAndroidEnv buildGlog GLog diff --git a/src/Rules/LibRime.hs b/src/Rules/LibRime.hs index 4ea6d4d3..5723ab41 100644 --- a/src/Rules/LibRime.hs +++ b/src/Rules/LibRime.hs @@ -25,17 +25,23 @@ librimeRule = do -- canocialize for symlink librimeLuaSrc <- liftIO $ canonicalizePath "librime-lua" librimeOctagramSrc <- liftIO $ canonicalizePath "librime-octagram" + librimePredictSrc <- liftIO $ canonicalizePath "librime-predict" liftIO $ do removePathForcibly (src "plugins" "lua") createDirectoryLink librimeLuaSrc (src "plugins" "lua") removePathForcibly (src "plugins" "octagram") createDirectoryLink librimeOctagramSrc (src "plugins" "octagram") + removePathForcibly (src "plugins" "predict") + createDirectoryLink librimePredictSrc (src "plugins" "predict") -- find lua with find_package; remove absolute path by __FILE__ macro cmd_ (Cwd librimeLuaSrc) "git checkout ." cmd_ (Cwd librimeLuaSrc) "git apply ../patches/librime-lua.patch" -- disable tools; remove absolute path by __FILE__ macro cmd_ (Cwd librimeOctagramSrc) "git checkout ." cmd_ (Cwd librimeOctagramSrc) "git apply ../patches/librime-octagram.patch" + -- disable tools; remove absolute path by __FILE__ macro + cmd_ (Cwd librimePredictSrc) "git checkout ." + cmd_ (Cwd librimePredictSrc) "git apply ../patches/librime-predict.patch" -- remove absolute path by __FILE__ macro cmd_ (Cwd src) "git checkout ." cmd_ (Cwd src) "git apply ../patches/librime.patch", @@ -43,6 +49,7 @@ librimeRule = do [ "-DBUILD_SHARED_LIBS=OFF", "-DBUILD_STATIC=ON", "-DBUILD_TEST=OFF", + "-DALSO_LOG_TO_STDERR=ON", "-DCMAKE_FIND_ROOT_PATH=" <> intercalate ";"