From dd6492a195823e9dba8115932f4da177b5dd6b1a Mon Sep 17 00:00:00 2001 From: Rocka Date: Tue, 17 Dec 2024 01:26:31 +0800 Subject: [PATCH 01/16] Install prebuilt assets with cmake --- .github/workflows/pull_request.yml | 6 --- .gitignore | 13 +---- README.md | 40 +------------- app/build.gradle.kts | 2 + .../usr/share/fcitx5/pinyin/chaizi.dict | 1 - .../assets/usr/share/fcitx5/pinyin/symbols | 1 - .../main/assets/usr/share/fcitx5/pinyinhelper | 1 - app/src/main/assets/usr/share/fcitx5/spell | 1 - app/src/main/assets/usr/share/fcitx5/table | 1 - app/src/main/assets/usr/share/libime | 1 - app/src/main/assets/usr/share/opencc | 1 - app/src/main/cpp/CMakeLists.txt | 39 +++++++++----- build-logic/convention/build.gradle.kts | 4 ++ .../src/main/kotlin/FcitxComponentPlugin.kt | 3 -- .../src/main/kotlin/FcitxDevelFilesPlugin.kt | 53 +++++++++++++++++++ .../convention/src/main/kotlin/Versions.kt | 2 +- lib/fcitx5/build.gradle.kts | 6 +++ lib/fcitx5/src/main/cpp/CMakeLists.txt | 2 + .../Fcitx5Utils/Fcitx5CompilerSettings.cmake | 1 - .../cmake/Fcitx5Utils/Fcitx5Download.cmake.in | 1 - .../cpp/cmake/Fcitx5Utils/Fcitx5Macros.cmake | 1 - .../Fcitx5Utils/Fcitx5ModuleTemplate.cmake.in | 1 - .../src/main/cpp/cmake/FindFcitx5Utils.cmake | 4 +- plugin/anthy/build.gradle.kts | 3 +- .../src/main/assets/usr/share/anthy/anthy.dic | 1 - plugin/anthy/src/main/cpp/CMakeLists.txt | 8 +++ plugin/anthy/src/main/cpp/anthy-unicode.conf | 4 ++ 27 files changed, 113 insertions(+), 88 deletions(-) delete mode 120000 app/src/main/assets/usr/share/fcitx5/pinyin/chaizi.dict delete mode 120000 app/src/main/assets/usr/share/fcitx5/pinyin/symbols delete mode 120000 app/src/main/assets/usr/share/fcitx5/pinyinhelper delete mode 120000 app/src/main/assets/usr/share/fcitx5/spell delete mode 120000 app/src/main/assets/usr/share/fcitx5/table delete mode 120000 app/src/main/assets/usr/share/libime delete mode 120000 app/src/main/assets/usr/share/opencc create mode 100644 build-logic/convention/src/main/kotlin/FcitxDevelFilesPlugin.kt delete mode 120000 lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5CompilerSettings.cmake delete mode 120000 lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5Download.cmake.in delete mode 120000 lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5Macros.cmake delete mode 120000 lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5ModuleTemplate.cmake.in delete mode 120000 plugin/anthy/src/main/assets/usr/share/anthy/anthy.dic create mode 100644 plugin/anthy/src/main/cpp/anthy-unicode.conf diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 18e68d0cb..fb5246f61 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -26,12 +26,6 @@ jobs: fetch-depth: 0 submodules: recursive - - name: Regenerate symlinks pointing to submodule (Windows) - if: ${{ matrix.os == 'windows-2022' }} - run: | - Remove-Item -Recurse app/src/main/assets/usr/share, plugin/hangul/src/main/assets/usr/share/libhangul, plugin/chewing/src/main/assets/usr/share/libchewing, plugin/jyutping/src/main/assets/usr/share/libime - git checkout -- . - - name: Setup Java uses: actions/setup-java@v4 with: diff --git a/.gitignore b/.gitignore index b19b889f6..0bd6d8615 100644 --- a/.gitignore +++ b/.gitignore @@ -1,21 +1,12 @@ # Module :app # Installed data -/app/src/main/assets/usr/share/fcitx5/addon -/app/src/main/assets/usr/share/fcitx5/chttrans -/app/src/main/assets/usr/share/fcitx5/data -/app/src/main/assets/usr/share/fcitx5/default -/app/src/main/assets/usr/share/fcitx5/inputmethod -/app/src/main/assets/usr/share/fcitx5/lua -/app/src/main/assets/usr/share/fcitx5/punctuation -/app/src/main/assets/usr/share/fcitx5/unicode -/app/src/main/assets/usr/share/locale +/app/src/main/assets/usr/ # Generated asset descriptor /app/src/main/assets/descriptor.json # Plugins # Installed data -/plugin/*/src/main/assets/usr/share/fcitx5 -/plugin/*/src/main/assets/usr/share/locale +/plugin/*/src/main/assets/usr/ # Generated asset descriptor /plugin/*/src/main/assets/descriptor.json diff --git a/README.md b/README.md index 53b6fc35b..062ea63b7 100644 --- a/README.md +++ b/README.md @@ -69,26 +69,13 @@ Discuss on Telegram: [@fcitx5_android_group](https://t.me/fcitx5_android_group) ### Dependencies -- Android SDK Platform & Build-Tools 34. -- Android NDK (Side by side) 25 & CMake 3.22.1, they can be installed using SDK Manager in Android Studio or `sdkmanager` command line. +- Android SDK Platform & Build-Tools 35. +- Android NDK (Side by side) 25 & CMake 3.31.1, they can be installed using SDK Manager in Android Studio or `sdkmanager` command line. - [KDE/extra-cmake-modules](https://github.com/KDE/extra-cmake-modules) - GNU Gettext >= 0.20 (for `msgfmt` binary; or install `appstream` if you really have to use gettext <= 0.19.) ### How to set up development environment -
-Prerequisites for Windows - -- Enable [Developer Mode](https://learn.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development) so that symlinks can be created without administrator privilege. - -- Enable symlink support for `git`: - - ```shell - git config --global core.symlinks true - ``` - -
- First, clone this repository and fetch all submodules: ```shell @@ -96,29 +83,6 @@ git clone git@github.com:fcitx5-android/fcitx5-android.git git submodule update --init --recursive ``` -
-On Windows, you may need to regenerate symlinks to submodules. - -Run in PowerShell: - -```powershell -Remove-Item -Recurse app/src/main/assets/usr/share, plugin/hangul/src/main/assets/usr/share/libhangul, plugin/chewing/src/main/assets/usr/share/libchewing, plugin/jyutping/src/main/assets/usr/share/libime -``` - -Or Command Prompt: - -```bat -RD /S /Q app\src\main\assets\usr\share plugin\hangul\src\main\assets\usr\share\libhangul plugin\chewing\src\main\assets\usr\share\libchewing plugin\jyutping\src\main\assets\usr\share\libime -``` - -Then let `git` regenerate symlinks: - -```shell -git checkout -- . -``` - -
- Install `extra-cmake-modules` and `gettext` with your system package manager: ```shell diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c7d31f28c..882c7b70c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -24,6 +24,8 @@ android { "native-lib", // copy fcitx5 built-in addon libraries "copy-fcitx5-modules", + // install prebuilt assets files + "prebuilt-assets", // android specific modules "androidfrontend", "androidkeyboard", diff --git a/app/src/main/assets/usr/share/fcitx5/pinyin/chaizi.dict b/app/src/main/assets/usr/share/fcitx5/pinyin/chaizi.dict deleted file mode 120000 index 802e190d2..000000000 --- a/app/src/main/assets/usr/share/fcitx5/pinyin/chaizi.dict +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../lib/fcitx5/src/main/cpp/prebuilt/chinese-addons-data/pinyin/chaizi.dict \ No newline at end of file diff --git a/app/src/main/assets/usr/share/fcitx5/pinyin/symbols b/app/src/main/assets/usr/share/fcitx5/pinyin/symbols deleted file mode 120000 index c8d160c3e..000000000 --- a/app/src/main/assets/usr/share/fcitx5/pinyin/symbols +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../lib/fcitx5-chinese-addons/src/main/cpp/fcitx5-chinese-addons/im/pinyin/symbols \ No newline at end of file diff --git a/app/src/main/assets/usr/share/fcitx5/pinyinhelper b/app/src/main/assets/usr/share/fcitx5/pinyinhelper deleted file mode 120000 index ff38cad3f..000000000 --- a/app/src/main/assets/usr/share/fcitx5/pinyinhelper +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../lib/fcitx5/src/main/cpp/prebuilt/chinese-addons-data/pinyinhelper \ No newline at end of file diff --git a/app/src/main/assets/usr/share/fcitx5/spell b/app/src/main/assets/usr/share/fcitx5/spell deleted file mode 120000 index b29f79c51..000000000 --- a/app/src/main/assets/usr/share/fcitx5/spell +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../lib/fcitx5/src/main/cpp/prebuilt/spell-dict \ No newline at end of file diff --git a/app/src/main/assets/usr/share/fcitx5/table b/app/src/main/assets/usr/share/fcitx5/table deleted file mode 120000 index cf7158e9a..000000000 --- a/app/src/main/assets/usr/share/fcitx5/table +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../lib/fcitx5/src/main/cpp/prebuilt/libime/table \ No newline at end of file diff --git a/app/src/main/assets/usr/share/libime b/app/src/main/assets/usr/share/libime deleted file mode 120000 index 8b39600e1..000000000 --- a/app/src/main/assets/usr/share/libime +++ /dev/null @@ -1 +0,0 @@ -../../../../../../lib/fcitx5/src/main/cpp/prebuilt/libime/data \ No newline at end of file diff --git a/app/src/main/assets/usr/share/opencc b/app/src/main/assets/usr/share/opencc deleted file mode 120000 index 24bf7f559..000000000 --- a/app/src/main/assets/usr/share/opencc +++ /dev/null @@ -1 +0,0 @@ -../../../../../../lib/fcitx5/src/main/cpp/prebuilt/opencc/data \ No newline at end of file diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt index f6d6b92d7..4f99d2d6b 100644 --- a/app/src/main/cpp/CMakeLists.txt +++ b/app/src/main/cpp/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.18) +cmake_minimum_required(VERSION 3.31) project(fcitx5-android VERSION ${VERSION_NAME}) @@ -67,20 +67,31 @@ target_link_libraries(native-lib add_custom_target(copy-fcitx5-modules # fcitx5 - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} # fcitx5-lua - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} # fcitx5-chinese-addons - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} COMMENT "Copying fcitx5 module libraries to :app" ) + +set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") +add_custom_target(prebuilt-assets + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PREBUILT_DIR}/spell-dict/en_dict.fscd" "${ASSETS_DIR}/usr/share/fcitx5/spell/en_dict.fscd" + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PREBUILT_DIR}/chinese-addons-data/pinyin/chaizi.dict" "${ASSETS_DIR}/usr/share/fcitx5/pinyin/chaizi.dict" + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/chinese-addons-data/pinyinhelper" "${ASSETS_DIR}/usr/share/fcitx5/pinyinhelper" + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/libime/table" "${ASSETS_DIR}/usr/share/fcitx5/table" + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/libime/data" "${ASSETS_DIR}/usr/share/libime" + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/opencc/data" "${ASSETS_DIR}/usr/share/opencc" + COMMENT "Copying prebuilt assets to :app" +) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index d27cfdbf5..7b3c25225 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -53,6 +53,10 @@ gradlePlugin { id = "org.fcitx.fcitx5.android.fcitx-component" implementationClass = "FcitxComponentPlugin" } + register("fcitxDevelFiles") { + id = "org.fcitx.fcitx5.android.fcitx-devel-files" + implementationClass = "FcitxDevelFilesPlugin" + } register("fcitxHeaders") { id = "org.fcitx.fcitx5.android.fcitx-headers" implementationClass = "FcitxHeadersPlugin" diff --git a/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt b/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt index 731a79f93..76675d601 100644 --- a/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt +++ b/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt @@ -12,9 +12,6 @@ import org.gradle.kotlin.dsl.task import java.io.File import kotlin.io.path.isSymbolicLink -/** - * Add task installFcitxConfig and installFcitxTranslation, using a random variant's cxx dir - */ class FcitxComponentPlugin : Plugin { abstract class FcitxComponentExtension { diff --git a/build-logic/convention/src/main/kotlin/FcitxDevelFilesPlugin.kt b/build-logic/convention/src/main/kotlin/FcitxDevelFilesPlugin.kt new file mode 100644 index 000000000..c92d880bc --- /dev/null +++ b/build-logic/convention/src/main/kotlin/FcitxDevelFilesPlugin.kt @@ -0,0 +1,53 @@ +/* + * SPDX-License-Identifier: LGPL-2.1-or-later + * SPDX-FileCopyrightText: Copyright 2024 Fcitx5 for Android Contributors + */ +import com.android.build.gradle.tasks.PrefabPackageConfigurationTask +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.tasks.Delete +import org.gradle.kotlin.dsl.task +import org.gradle.kotlin.dsl.withType + +class FcitxDevelFilesPlugin : Plugin { + + companion object { + const val INSTALL_TASK = "installFcitxDevelFiles" + const val CLEAN_TASK = "cleanFcitxDevelFiles" + } + + private val Project.headersInstallDir + get() = file("build/devel") + + override fun apply(target: Project) { + registerInstallTask(target) + registerCleanTask(target) + } + + private fun registerInstallTask(project: Project) { + val installDevelFilesTask = project.task(INSTALL_TASK) { + runAfterNativeConfigure(project) { abiModel -> + val cmake = abiModel.variant.module.cmake!!.cmakeExe!! + project.exec { + workingDir = abiModel.cxxBuildFolder + environment("DESTDIR", project.headersInstallDir.absolutePath) + commandLine(cmake, "--install", ".", "--component", "Devel") + } + } + } + + // Make sure devel files have been installed before configuring prefab package + project.tasks.withType().all { + dependsOn(installDevelFilesTask) + } + } + + private fun registerCleanTask(project: Project) { + project.task(CLEAN_TASK) { + delete(project.headersInstallDir) + }.also { + project.cleanTask.dependsOn(it) + } + } + +} diff --git a/build-logic/convention/src/main/kotlin/Versions.kt b/build-logic/convention/src/main/kotlin/Versions.kt index 713e56307..23af341f0 100644 --- a/build-logic/convention/src/main/kotlin/Versions.kt +++ b/build-logic/convention/src/main/kotlin/Versions.kt @@ -12,7 +12,7 @@ object Versions { const val minSdk = 23 const val targetSdk = 35 - const val defaultCMake = "3.22.1" + const val defaultCMake = "3.31.1" const val defaultNDK = "25.2.9519653" const val defaultBuildTools = "35.0.0" diff --git a/lib/fcitx5/build.gradle.kts b/lib/fcitx5/build.gradle.kts index 41d62d7cf..f7af69202 100644 --- a/lib/fcitx5/build.gradle.kts +++ b/lib/fcitx5/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("org.fcitx.fcitx5.android.lib-convention") id("org.fcitx.fcitx5.android.native-lib-convention") + id("org.fcitx.fcitx5.android.fcitx-devel-files") id("org.fcitx.fcitx5.android.fcitx-headers") } @@ -14,6 +15,7 @@ android { targets( // dummy "cmake" target "cmake", + "devel", // fcitx5 "Fcitx5Core", "Fcitx5Config", @@ -35,6 +37,10 @@ android { headerOnly = true headers = "src/main/cpp/cmake" } + create("devel") { + headerOnly = true + headers = "build/devel/usr/lib/cmake" + } val headersPrefix = "build/headers/usr/include/Fcitx5" create("Fcitx5Core") { libraryName = "libFcitx5Core" diff --git a/lib/fcitx5/src/main/cpp/CMakeLists.txt b/lib/fcitx5/src/main/cpp/CMakeLists.txt index c83a46944..8087f32fd 100644 --- a/lib/fcitx5/src/main/cpp/CMakeLists.txt +++ b/lib/fcitx5/src/main/cpp/CMakeLists.txt @@ -7,6 +7,8 @@ add_link_options("LINKER:--hash-style=gnu,--build-id=none") # dummy target to export src/main/cpp/cmake add_custom_target(cmake) +# dummy target to export build/devel/usr/lib/cmake +add_custom_target(devel) # dummy target to export "notifications_public.h" add_custom_target(notifications) diff --git a/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5CompilerSettings.cmake b/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5CompilerSettings.cmake deleted file mode 120000 index 1421520cc..000000000 --- a/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5CompilerSettings.cmake +++ /dev/null @@ -1 +0,0 @@ -../../../cpp/fcitx5/cmake/Fcitx5CompilerSettings.cmake \ No newline at end of file diff --git a/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5Download.cmake.in b/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5Download.cmake.in deleted file mode 120000 index 6e3e6156a..000000000 --- a/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5Download.cmake.in +++ /dev/null @@ -1 +0,0 @@ -../../../cpp/fcitx5/src/lib/fcitx-utils/Fcitx5Download.cmake.in \ No newline at end of file diff --git a/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5Macros.cmake b/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5Macros.cmake deleted file mode 120000 index 63fded4d3..000000000 --- a/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5Macros.cmake +++ /dev/null @@ -1 +0,0 @@ -../../../cpp/fcitx5/src/lib/fcitx-utils/Fcitx5Macros.cmake \ No newline at end of file diff --git a/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5ModuleTemplate.cmake.in b/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5ModuleTemplate.cmake.in deleted file mode 120000 index 541543833..000000000 --- a/lib/fcitx5/src/main/cpp/cmake/Fcitx5Utils/Fcitx5ModuleTemplate.cmake.in +++ /dev/null @@ -1 +0,0 @@ -../../../cpp/fcitx5/src/lib/fcitx-utils/Fcitx5ModuleTemplate.cmake.in \ No newline at end of file diff --git a/lib/fcitx5/src/main/cpp/cmake/FindFcitx5Utils.cmake b/lib/fcitx5/src/main/cpp/cmake/FindFcitx5Utils.cmake index e1131eab5..75df627f8 100644 --- a/lib/fcitx5/src/main/cpp/cmake/FindFcitx5Utils.cmake +++ b/lib/fcitx5/src/main/cpp/cmake/FindFcitx5Utils.cmake @@ -14,11 +14,11 @@ find_package(Gettext REQUIRED) # dependent projects usually use # "${FCITX_INSTALL_CMAKECONFIG_DIR}/Fcitx5Utils/Fcitx5CompilerSettings.cmake" # to locate Fcitx5CompilerSettings -set(FCITX_INSTALL_CMAKECONFIG_DIR "${CMAKE_CURRENT_LIST_DIR}") +set(FCITX_INSTALL_CMAKECONFIG_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../../build/devel/usr/lib/cmake") # mimic fcitx5/src/lib/fcitx-utils/Fcitx5UtilsConfig.cmake.in +include("${FCITX_INSTALL_CMAKECONFIG_DIR}/Fcitx5Utils/Fcitx5Macros.cmake") include("${CMAKE_CURRENT_LIST_DIR}/Fcitx5AndroidInstallDirs.cmake") -include("${CMAKE_CURRENT_LIST_DIR}/Fcitx5Utils/Fcitx5Macros.cmake") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Fcitx5Utils diff --git a/plugin/anthy/build.gradle.kts b/plugin/anthy/build.gradle.kts index 3b924f028..9c15f883e 100644 --- a/plugin/anthy/build.gradle.kts +++ b/plugin/anthy/build.gradle.kts @@ -17,7 +17,8 @@ android { externalNativeBuild { cmake { targets( - "anthy" + "anthy", + "prebuilt-assets" ) } } diff --git a/plugin/anthy/src/main/assets/usr/share/anthy/anthy.dic b/plugin/anthy/src/main/assets/usr/share/anthy/anthy.dic deleted file mode 120000 index 1fa6b226d..000000000 --- a/plugin/anthy/src/main/assets/usr/share/anthy/anthy.dic +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../lib/fcitx5/src/main/cpp/prebuilt/anthy-dict/anthy.dic \ No newline at end of file diff --git a/plugin/anthy/src/main/cpp/CMakeLists.txt b/plugin/anthy/src/main/cpp/CMakeLists.txt index fe4361c3d..cde6480a1 100644 --- a/plugin/anthy/src/main/cpp/CMakeLists.txt +++ b/plugin/anthy/src/main/cpp/CMakeLists.txt @@ -23,3 +23,11 @@ unset(BUILD_SHARED_LIBS) set(ANTHY_TARGET anthy-unicode) add_subdirectory(fcitx5-anthy) + + +set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") +add_custom_target(prebuilt-assets + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_LIST_DIR}/anthy-unicode.conf" "${ASSETS_DIR}/usr/share/anthy/anthy-unicode.conf" + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PREBUILT_DIR}/anthy-dict/anthy.dic" "${ASSETS_DIR}/usr/share/anthy/anthy.dic" + COMMENT "Copying prebuilt assets to :app" +) diff --git a/plugin/anthy/src/main/cpp/anthy-unicode.conf b/plugin/anthy/src/main/cpp/anthy-unicode.conf new file mode 100644 index 000000000..78fa60684 --- /dev/null +++ b/plugin/anthy/src/main/cpp/anthy-unicode.conf @@ -0,0 +1,4 @@ +# leave empty intentionally, to be overridden on runtime +#prefix /data/data//usr/share/anthy +#ANTHYDIR ${prefix}/ +#DIC_FILE ${prefix}/anthy.dic \ No newline at end of file From abbae08fa1fc665749920d9f190d374137ef2f61 Mon Sep 17 00:00:00 2001 From: Rocka Date: Tue, 17 Dec 2024 01:27:56 +0800 Subject: [PATCH 02/16] fix cmake version everywhere --- .github/workflows/publish.yml | 2 +- .github/workflows/pull_request.yml | 2 +- app/org.fcitx.fcitx5.android.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index bb9b3ce50..b09fc9df8 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -32,7 +32,7 @@ jobs: - name: Setup Android environment uses: android-actions/setup-android@v3 with: - packages: cmake;3.22.1 + packages: cmake;3.31.1 - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index fb5246f61..df01065b9 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -37,7 +37,7 @@ jobs: - name: Install Android NDK run: | - sdkmanager --install "cmake;3.22.1" + sdkmanager --install "cmake;3.31.1" - name: Install system dependencies (Ubuntu) if: ${{ startsWith(matrix.os, 'ubuntu') }} diff --git a/app/org.fcitx.fcitx5.android.yml b/app/org.fcitx.fcitx5.android.yml index 6c1dd0953..69cf306c0 100644 --- a/app/org.fcitx.fcitx5.android.yml +++ b/app/org.fcitx.fcitx5.android.yml @@ -32,7 +32,7 @@ Builds: rm: - lib/fcitx5/src/main/cpp/prebuilt prebuild: - - sdkmanager 'cmake;3.22.1' + - sdkmanager 'cmake;3.31.1' - sed -i -e '/ImportQualifiedPost/d' $$fcitx5-android-prebuilder$$/src/Main.hs - sed -i -e 's/import \(.*\) qualified as/import qualified \1 as/g' $$fcitx5-android-prebuilder$$/src/*.hs - sed -i -e 's|https://maven.pkg.github.com|https://jitpack.io|g' ../build-logic/convention/build.gradle.kts From fa131941925c16cb15f47e363d388b49efc9285c Mon Sep 17 00:00:00 2001 From: Rocka Date: Tue, 17 Dec 2024 01:44:52 +0800 Subject: [PATCH 03/16] fixup plugins --- plugin/anthy/src/main/cpp/CMakeLists.txt | 1 - plugin/chewing/build.gradle.kts | 3 ++- plugin/chewing/src/main/assets/usr/share/libchewing | 1 - plugin/chewing/src/main/cpp/CMakeLists.txt | 6 ++++++ plugin/hangul/build.gradle.kts | 3 ++- plugin/hangul/src/main/assets/usr/share/libhangul | 1 - plugin/hangul/src/main/cpp/CMakeLists.txt | 6 ++++++ plugin/jyutping/build.gradle.kts | 3 ++- plugin/jyutping/src/main/assets/usr/share/libime | 1 - plugin/jyutping/src/main/cpp/CMakeLists.txt | 6 ++++++ plugin/rime/src/main/cpp/CMakeLists.txt | 4 +--- 11 files changed, 25 insertions(+), 10 deletions(-) delete mode 120000 plugin/chewing/src/main/assets/usr/share/libchewing delete mode 120000 plugin/hangul/src/main/assets/usr/share/libhangul delete mode 120000 plugin/jyutping/src/main/assets/usr/share/libime diff --git a/plugin/anthy/src/main/cpp/CMakeLists.txt b/plugin/anthy/src/main/cpp/CMakeLists.txt index cde6480a1..a1aaf168f 100644 --- a/plugin/anthy/src/main/cpp/CMakeLists.txt +++ b/plugin/anthy/src/main/cpp/CMakeLists.txt @@ -24,7 +24,6 @@ unset(BUILD_SHARED_LIBS) set(ANTHY_TARGET anthy-unicode) add_subdirectory(fcitx5-anthy) - set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") add_custom_target(prebuilt-assets COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_LIST_DIR}/anthy-unicode.conf" "${ASSETS_DIR}/usr/share/anthy/anthy-unicode.conf" diff --git a/plugin/chewing/build.gradle.kts b/plugin/chewing/build.gradle.kts index 7320a1c5d..83093c4ac 100644 --- a/plugin/chewing/build.gradle.kts +++ b/plugin/chewing/build.gradle.kts @@ -17,7 +17,8 @@ android { externalNativeBuild { cmake { targets( - "chewing" + "chewing", + "prebuilt-assets" ) } } diff --git a/plugin/chewing/src/main/assets/usr/share/libchewing b/plugin/chewing/src/main/assets/usr/share/libchewing deleted file mode 120000 index 2be7566cb..000000000 --- a/plugin/chewing/src/main/assets/usr/share/libchewing +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../lib/fcitx5/src/main/cpp/prebuilt/chewing-dict \ No newline at end of file diff --git a/plugin/chewing/src/main/cpp/CMakeLists.txt b/plugin/chewing/src/main/cpp/CMakeLists.txt index df92b7b9b..f145d9ae0 100644 --- a/plugin/chewing/src/main/cpp/CMakeLists.txt +++ b/plugin/chewing/src/main/cpp/CMakeLists.txt @@ -23,3 +23,9 @@ set_target_properties(Chewing_static PROPERTIES set(CHEWING_TARGET Chewing_static) option(ENABLE_TEST "" OFF) add_subdirectory(fcitx5-chewing) + +set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") +add_custom_target(prebuilt-assets + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${CMAKE_CURRENT_LIST_DIR}/chewing-data" "${ASSETS_DIR}/usr/share/libchewing" + COMMENT "Copying prebuilt assets to :app" +) diff --git a/plugin/hangul/build.gradle.kts b/plugin/hangul/build.gradle.kts index fc78b5842..07ea8938a 100644 --- a/plugin/hangul/build.gradle.kts +++ b/plugin/hangul/build.gradle.kts @@ -17,7 +17,8 @@ android { externalNativeBuild { cmake { targets( - "hangul" + "hangul", + "prebuilt-assets" ) } } diff --git a/plugin/hangul/src/main/assets/usr/share/libhangul b/plugin/hangul/src/main/assets/usr/share/libhangul deleted file mode 120000 index c365d0cff..000000000 --- a/plugin/hangul/src/main/assets/usr/share/libhangul +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../lib/fcitx5/src/main/cpp/prebuilt/libhangul/data/libhangul \ No newline at end of file diff --git a/plugin/hangul/src/main/cpp/CMakeLists.txt b/plugin/hangul/src/main/cpp/CMakeLists.txt index cabab5213..1271a8ef0 100644 --- a/plugin/hangul/src/main/cpp/CMakeLists.txt +++ b/plugin/hangul/src/main/cpp/CMakeLists.txt @@ -23,3 +23,9 @@ set_target_properties(Hangul_static PROPERTIES set(HANGUL_TARGET Hangul_static) option(ENABLE_TEST "" OFF) add_subdirectory(fcitx5-hangul) + +set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") +add_custom_target(prebuilt-assets + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${CMAKE_CURRENT_LIST_DIR}/libhangul/data" "${ASSETS_DIR}/usr/share/libhangul" + COMMENT "Copying prebuilt assets to :app" +) diff --git a/plugin/jyutping/build.gradle.kts b/plugin/jyutping/build.gradle.kts index 845e40d2f..5080e64ef 100644 --- a/plugin/jyutping/build.gradle.kts +++ b/plugin/jyutping/build.gradle.kts @@ -18,7 +18,8 @@ android { cmake { targets( "jyutping", - "libime_jyutpingdict" + "libime_jyutpingdict", + "prebuilt-assets" ) } } diff --git a/plugin/jyutping/src/main/assets/usr/share/libime b/plugin/jyutping/src/main/assets/usr/share/libime deleted file mode 120000 index f99edb1b6..000000000 --- a/plugin/jyutping/src/main/assets/usr/share/libime +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../lib/fcitx5/src/main/cpp/prebuilt/libime-jyutping \ No newline at end of file diff --git a/plugin/jyutping/src/main/cpp/CMakeLists.txt b/plugin/jyutping/src/main/cpp/CMakeLists.txt index 46f09ca3a..3bff918aa 100644 --- a/plugin/jyutping/src/main/cpp/CMakeLists.txt +++ b/plugin/jyutping/src/main/cpp/CMakeLists.txt @@ -43,3 +43,9 @@ option(ENABLE_TEST "" OFF) add_subdirectory(libime-jyutping) # rename to include executable in apk set_target_properties(libime_jyutpingdict PROPERTIES OUTPUT_NAME libime_jyutpingdict.so) + +set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") +add_custom_target(prebuilt-assets + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${CMAKE_CURRENT_LIST_DIR}/libime-jyutping" "${ASSETS_DIR}/usr/share/libime" + COMMENT "Copying prebuilt assets to :app" +) diff --git a/plugin/rime/src/main/cpp/CMakeLists.txt b/plugin/rime/src/main/cpp/CMakeLists.txt index 70e0a1213..070793442 100644 --- a/plugin/rime/src/main/cpp/CMakeLists.txt +++ b/plugin/rime/src/main/cpp/CMakeLists.txt @@ -34,8 +34,6 @@ set_target_properties(Rime_static PROPERTIES # https://github.com/rime/librime/blob/1.9.0/src/rime_api.h#L663 # https://stackoverflow.com/questions/805555/ld-linker-question-the-whole-archive-option -# use $ when cmake updated to 3.24+ -# https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html#link-features -set(RIME_TARGET "-Wl,--whole-archive" Rime_static "-Wl,--no-whole-archive") +set(RIME_TARGET $) set(RIME_DATA_DIR "${CMAKE_INSTALL_DATADIR}/rime-data") add_subdirectory(fcitx5-rime) From 0ccfd81d2bb4f953ab7dbc62ead815f51daf7a8b Mon Sep 17 00:00:00 2001 From: Rocka Date: Tue, 17 Dec 2024 02:40:58 +0800 Subject: [PATCH 04/16] fixup --- plugin/chewing/src/main/cpp/CMakeLists.txt | 2 +- plugin/hangul/src/main/cpp/CMakeLists.txt | 2 +- plugin/jyutping/src/main/cpp/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin/chewing/src/main/cpp/CMakeLists.txt b/plugin/chewing/src/main/cpp/CMakeLists.txt index f145d9ae0..627ecdcf6 100644 --- a/plugin/chewing/src/main/cpp/CMakeLists.txt +++ b/plugin/chewing/src/main/cpp/CMakeLists.txt @@ -26,6 +26,6 @@ add_subdirectory(fcitx5-chewing) set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") add_custom_target(prebuilt-assets - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${CMAKE_CURRENT_LIST_DIR}/chewing-data" "${ASSETS_DIR}/usr/share/libchewing" + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/chewing-dict" "${ASSETS_DIR}/usr/share/libchewing" COMMENT "Copying prebuilt assets to :app" ) diff --git a/plugin/hangul/src/main/cpp/CMakeLists.txt b/plugin/hangul/src/main/cpp/CMakeLists.txt index 1271a8ef0..9b8029c37 100644 --- a/plugin/hangul/src/main/cpp/CMakeLists.txt +++ b/plugin/hangul/src/main/cpp/CMakeLists.txt @@ -26,6 +26,6 @@ add_subdirectory(fcitx5-hangul) set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") add_custom_target(prebuilt-assets - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${CMAKE_CURRENT_LIST_DIR}/libhangul/data" "${ASSETS_DIR}/usr/share/libhangul" + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/libhangul/data/libhangul" "${ASSETS_DIR}/usr/share/libhangul" COMMENT "Copying prebuilt assets to :app" ) diff --git a/plugin/jyutping/src/main/cpp/CMakeLists.txt b/plugin/jyutping/src/main/cpp/CMakeLists.txt index 3bff918aa..98cde5770 100644 --- a/plugin/jyutping/src/main/cpp/CMakeLists.txt +++ b/plugin/jyutping/src/main/cpp/CMakeLists.txt @@ -46,6 +46,6 @@ set_target_properties(libime_jyutpingdict PROPERTIES OUTPUT_NAME libime_jyutping set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") add_custom_target(prebuilt-assets - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${CMAKE_CURRENT_LIST_DIR}/libime-jyutping" "${ASSETS_DIR}/usr/share/libime" + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/libime-jyutping" "${ASSETS_DIR}/usr/share/libime" COMMENT "Copying prebuilt assets to :app" ) From 2b12f491d4c247d0f9751331a68c90544bf03c5e Mon Sep 17 00:00:00 2001 From: Rocka Date: Wed, 18 Dec 2024 00:57:27 +0800 Subject: [PATCH 05/16] Refactor installing prebuilt assets --- app/build.gradle.kts | 8 ++- app/src/main/cpp/CMakeLists.txt | 49 +++++++++-------- build-logic/convention/build.gradle.kts | 4 -- .../src/main/kotlin/FcitxComponentPlugin.kt | 43 +++++++++++---- .../src/main/kotlin/FcitxDevelFilesPlugin.kt | 53 ------------------- .../src/main/kotlin/FcitxHeadersPlugin.kt | 50 +++++++++++------ lib/fcitx5/build.gradle.kts | 5 +- .../src/main/cpp/cmake/FindFcitx5Utils.cmake | 4 +- lib/fcitx5/src/main/cpp/fcitx5 | 2 +- plugin/anthy/build.gradle.kts | 7 ++- plugin/anthy/src/main/cpp/CMakeLists.txt | 12 ++--- plugin/chewing/build.gradle.kts | 7 ++- plugin/chewing/src/main/cpp/CMakeLists.txt | 6 +-- plugin/clipboard-filter/build.gradle.kts | 7 +++ .../src/main/assets/data.min.json | 1 - plugin/hangul/build.gradle.kts | 7 ++- plugin/hangul/src/main/cpp/CMakeLists.txt | 6 +-- plugin/jyutping/build.gradle.kts | 7 ++- plugin/jyutping/src/main/cpp/CMakeLists.txt | 6 +-- 19 files changed, 140 insertions(+), 144 deletions(-) delete mode 100644 build-logic/convention/src/main/kotlin/FcitxDevelFilesPlugin.kt delete mode 120000 plugin/clipboard-filter/src/main/assets/data.min.json diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 882c7b70c..760f5d011 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -22,10 +22,6 @@ android { targets( // jni "native-lib", - // copy fcitx5 built-in addon libraries - "copy-fcitx5-modules", - // install prebuilt assets files - "prebuilt-assets", // android specific modules "androidfrontend", "androidkeyboard", @@ -74,7 +70,7 @@ aboutLibraries { } fcitxComponent { - installLibraries = listOf( + includeLibs = listOf( "fcitx5", "fcitx5-lua", "libime", @@ -84,6 +80,8 @@ fcitxComponent { excludeFiles = listOf("cangjie", "erbi", "qxm", "wanfeng").map { "usr/share/fcitx5/inputmethod/$it.conf" } + installModulesComponent = true + installPrebuiltAssets = true } ksp { diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt index 4f99d2d6b..87fe2670c 100644 --- a/app/src/main/cpp/CMakeLists.txt +++ b/app/src/main/cpp/CMakeLists.txt @@ -65,33 +65,32 @@ target_link_libraries(native-lib pinyin-customphrase ) -add_custom_target(copy-fcitx5-modules +# copy module libraries from dependency lib +install(FILES # fcitx5 - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + $ + $ + $ + $ + $ # fcitx5-lua - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + $ # fcitx5-chinese-addons - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMMENT "Copying fcitx5 module libraries to :app" + $ + $ + $ + $ + $ + $ + $ + DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMPONENT modules ) -set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") -add_custom_target(prebuilt-assets - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PREBUILT_DIR}/spell-dict/en_dict.fscd" "${ASSETS_DIR}/usr/share/fcitx5/spell/en_dict.fscd" - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PREBUILT_DIR}/chinese-addons-data/pinyin/chaizi.dict" "${ASSETS_DIR}/usr/share/fcitx5/pinyin/chaizi.dict" - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/chinese-addons-data/pinyinhelper" "${ASSETS_DIR}/usr/share/fcitx5/pinyinhelper" - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/libime/table" "${ASSETS_DIR}/usr/share/fcitx5/table" - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/libime/data" "${ASSETS_DIR}/usr/share/libime" - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/opencc/data" "${ASSETS_DIR}/usr/share/opencc" - COMMENT "Copying prebuilt assets to :app" -) +# install prebuilt assets +install(FILES "${PREBUILT_DIR}/spell-dict/en_dict.fscd" DESTINATION "${FCITX_INSTALL_PKGDATADIR}/spell" COMPONENT prebuilt-assets) +install(FILES "${PREBUILT_DIR}/chinese-addons-data/pinyin/chaizi.dict" DESTINATION "${FCITX_INSTALL_PKGDATADIR}/pinyin" COMPONENT prebuilt-assets) +install(DIRECTORY "${PREBUILT_DIR}/chinese-addons-data/pinyinhelper" DESTINATION "${FCITX_INSTALL_PKGDATADIR}" COMPONENT prebuilt-assets) +install(DIRECTORY "${PREBUILT_DIR}/libime/table" DESTINATION "${FCITX_INSTALL_PKGDATADIR}" COMPONENT prebuilt-assets) +install(DIRECTORY "${PREBUILT_DIR}/libime/data/" DESTINATION "${FCITX_INSTALL_DATADIR}/libime" COMPONENT prebuilt-assets) +install(DIRECTORY "${PREBUILT_DIR}/opencc/data/" DESTINATION "${FCITX_INSTALL_DATADIR}/opencc" COMPONENT prebuilt-assets) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index 7b3c25225..d27cfdbf5 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -53,10 +53,6 @@ gradlePlugin { id = "org.fcitx.fcitx5.android.fcitx-component" implementationClass = "FcitxComponentPlugin" } - register("fcitxDevelFiles") { - id = "org.fcitx.fcitx5.android.fcitx-devel-files" - implementationClass = "FcitxDevelFilesPlugin" - } register("fcitxHeaders") { id = "org.fcitx.fcitx5.android.fcitx-headers" implementationClass = "FcitxHeadersPlugin" diff --git a/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt b/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt index 76675d601..4ca23e09f 100644 --- a/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt +++ b/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt @@ -15,15 +15,18 @@ import kotlin.io.path.isSymbolicLink class FcitxComponentPlugin : Plugin { abstract class FcitxComponentExtension { - var installLibraries: List = emptyList() + var includeLibs: List = emptyList() var excludeFiles: List = emptyList() var modifyFiles: Map Unit> = emptyMap() + var installModulesComponent: Boolean = false + var installPrebuiltAssets: Boolean = false } companion object { const val INSTALL_TASK = "installFcitxComponent" const val DELETE_TASK = "deleteFcitxComponentExcludeFiles" const val CLEAN_TASK = "cleanFcitxComponents" + const val EXTENSION = "fcitxComponent" val DEPENDENT_TASKS = arrayOf(INSTALL_TASK, DELETE_TASK) } @@ -34,10 +37,10 @@ class FcitxComponentPlugin : Plugin { registerCMakeTask(target, "generate-desktop-file", "config") registerCMakeTask(target, "translation-file", "translation") registerCleanTask(target) - target.extensions.create("fcitxComponent") + target.extensions.create(EXTENSION) target.afterEvaluate { - val ext = extensions.getByName("fcitxComponent") - ext.installLibraries.forEach { + val ext = extensions.getByName(EXTENSION) + ext.includeLibs.forEach { val project = rootProject.project(":lib:$it") registerCMakeTask(target, "generate-desktop-file", "config", project) registerCMakeTask(target, "translation-file", "translation", project) @@ -52,6 +55,12 @@ class FcitxComponentPlugin : Plugin { } } } + if (ext.installModulesComponent) { + registerInstallModulesTask(target) + } + if (ext.installPrebuiltAssets) { + registerCMakeTask(target, "", "prebuilt-assets") + } } } @@ -64,17 +73,20 @@ class FcitxComponentPlugin : Plugin { component: String, sourceProject: Project = project ) { + val componentName = component.split('-').joinToString("") { it.capitalized() } val taskName = if (project === sourceProject) { - "installProject${component.capitalized()}" + "installProject$componentName" } else { - "installLibrary${component.capitalized()}[${sourceProject.name}]" + "installLibrary$componentName[${sourceProject.name}]" } val task = project.task(taskName) { runAfterNativeConfigure(sourceProject) { abiModel -> val cmake = abiModel.variant.module.cmake!!.cmakeExe!! - sourceProject.exec { - workingDir = abiModel.cxxBuildFolder - commandLine(cmake, "--build", ".", "--target", target) + if (target.isNotEmpty()) { + sourceProject.exec { + workingDir = abiModel.cxxBuildFolder + commandLine(cmake, "--build", ".", "--target", target) + } } sourceProject.exec { workingDir = abiModel.cxxBuildFolder @@ -93,6 +105,19 @@ class FcitxComponentPlugin : Plugin { project.tasks.getByName(INSTALL_TASK).dependsOn(task) } + private fun registerInstallModulesTask(project: Project) { + val task = project.task("installModuleLibraries") { + runAfterNativeConfigure(project) { + val cmake = it.variant.module.cmake!!.cmakeExe!! + project.exec { + workingDir = it.cxxBuildFolder + commandLine(cmake, "--install", ".", "--component", "modules") + } + } + } + project.tasks.getByName(INSTALL_TASK).dependsOn(task) + } + private fun registerCleanTask(project: Project) { project.task(CLEAN_TASK) { delete(project.assetsDir.resolve("usr/share/locale")) diff --git a/build-logic/convention/src/main/kotlin/FcitxDevelFilesPlugin.kt b/build-logic/convention/src/main/kotlin/FcitxDevelFilesPlugin.kt deleted file mode 100644 index c92d880bc..000000000 --- a/build-logic/convention/src/main/kotlin/FcitxDevelFilesPlugin.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * SPDX-FileCopyrightText: Copyright 2024 Fcitx5 for Android Contributors - */ -import com.android.build.gradle.tasks.PrefabPackageConfigurationTask -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.tasks.Delete -import org.gradle.kotlin.dsl.task -import org.gradle.kotlin.dsl.withType - -class FcitxDevelFilesPlugin : Plugin { - - companion object { - const val INSTALL_TASK = "installFcitxDevelFiles" - const val CLEAN_TASK = "cleanFcitxDevelFiles" - } - - private val Project.headersInstallDir - get() = file("build/devel") - - override fun apply(target: Project) { - registerInstallTask(target) - registerCleanTask(target) - } - - private fun registerInstallTask(project: Project) { - val installDevelFilesTask = project.task(INSTALL_TASK) { - runAfterNativeConfigure(project) { abiModel -> - val cmake = abiModel.variant.module.cmake!!.cmakeExe!! - project.exec { - workingDir = abiModel.cxxBuildFolder - environment("DESTDIR", project.headersInstallDir.absolutePath) - commandLine(cmake, "--install", ".", "--component", "Devel") - } - } - } - - // Make sure devel files have been installed before configuring prefab package - project.tasks.withType().all { - dependsOn(installDevelFilesTask) - } - } - - private fun registerCleanTask(project: Project) { - project.task(CLEAN_TASK) { - delete(project.headersInstallDir) - }.also { - project.cleanTask.dependsOn(it) - } - } - -} diff --git a/build-logic/convention/src/main/kotlin/FcitxHeadersPlugin.kt b/build-logic/convention/src/main/kotlin/FcitxHeadersPlugin.kt index 81ecd4aa5..33245b8e2 100644 --- a/build-logic/convention/src/main/kotlin/FcitxHeadersPlugin.kt +++ b/build-logic/convention/src/main/kotlin/FcitxHeadersPlugin.kt @@ -8,32 +8,60 @@ import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.tasks.Delete import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.create +import org.gradle.kotlin.dsl.getByName import org.gradle.kotlin.dsl.task import org.gradle.kotlin.dsl.withType +import java.io.File class FcitxHeadersPlugin : Plugin { + abstract class FcitxHeadersExtension { + var installDevelComponent: Boolean = false + } + companion object { - const val INSTALL_TASK = "installFcitxHeaders" + const val HEADERS_TASK = "installFcitxHeaders" + const val DEVEL_TASK = "installFcitxDevelComponent" const val CLEAN_TASK = "cleanFcitxHeaders" + const val EXTENSION = "fcitxHeaders" } private val Project.headersInstallDir get() = file("build/headers") + private val Project.develComponentInstallDir + get() = file("build/devel") + override fun apply(target: Project) { - registerInstallTask(target) + // mkdir for all prefab library headers + target.extensions.configure { + finalizeDsl { + @Suppress("UnstableApiUsage") + it.prefab.forEach { library -> + library.headers?.let { path -> target.file(path).mkdirs() } + } + } + } + registerInstallTask(target, HEADERS_TASK, "header", target.headersInstallDir) registerCleanTask(target) + target.extensions.create(EXTENSION) + target.afterEvaluate { + val ext = extensions.getByName(EXTENSION) + if (ext.installDevelComponent) { + registerInstallTask(target, DEVEL_TASK, "Devel", target.develComponentInstallDir) + } + } } - private fun registerInstallTask(project: Project) { - val installHeadersTask = project.task(INSTALL_TASK) { + private fun registerInstallTask(project: Project, name: String, component: String, dest: File) { + val installHeadersTask = project.task(name) { runAfterNativeConfigure(project) { abiModel -> val cmake = abiModel.variant.module.cmake!!.cmakeExe!! project.exec { workingDir = abiModel.cxxBuildFolder - environment("DESTDIR", project.headersInstallDir.absolutePath) - commandLine(cmake, "--install", ".", "--component", "header") + environment("DESTDIR", dest.absolutePath) + commandLine(cmake, "--install", ".", "--component", component) } } } @@ -42,20 +70,12 @@ class FcitxHeadersPlugin : Plugin { project.tasks.withType().all { dependsOn(installHeadersTask) } - - project.extensions.configure { - finalizeDsl { - @Suppress("UnstableApiUsage") - it.prefab.forEach { library -> - library.headers?.let { path -> project.file(path).mkdirs() } - } - } - } } private fun registerCleanTask(project: Project) { project.task(CLEAN_TASK) { delete(project.headersInstallDir) + delete(project.develComponentInstallDir) }.also { project.cleanTask.dependsOn(it) } diff --git a/lib/fcitx5/build.gradle.kts b/lib/fcitx5/build.gradle.kts index f7af69202..474a01698 100644 --- a/lib/fcitx5/build.gradle.kts +++ b/lib/fcitx5/build.gradle.kts @@ -1,10 +1,13 @@ plugins { id("org.fcitx.fcitx5.android.lib-convention") id("org.fcitx.fcitx5.android.native-lib-convention") - id("org.fcitx.fcitx5.android.fcitx-devel-files") id("org.fcitx.fcitx5.android.fcitx-headers") } +fcitxHeaders { + installDevelComponent = true +} + android { namespace = "org.fcitx.fcitx5.android.lib.fcitx5" diff --git a/lib/fcitx5/src/main/cpp/cmake/FindFcitx5Utils.cmake b/lib/fcitx5/src/main/cpp/cmake/FindFcitx5Utils.cmake index 75df627f8..b25039907 100644 --- a/lib/fcitx5/src/main/cpp/cmake/FindFcitx5Utils.cmake +++ b/lib/fcitx5/src/main/cpp/cmake/FindFcitx5Utils.cmake @@ -2,6 +2,8 @@ set(Fcitx5Utils_FOUND TRUE) # find prefab dependency find_package(fcitx5 REQUIRED CONFIG) +# dummy target for fcitx5 cmake config files +get_target_property(FCITX5_DEVEL_FILES fcitx5::devel INTERFACE_INCLUDE_DIRECTORIES) if (NOT TARGET Fcitx5::Utils) # fix target name @@ -14,7 +16,7 @@ find_package(Gettext REQUIRED) # dependent projects usually use # "${FCITX_INSTALL_CMAKECONFIG_DIR}/Fcitx5Utils/Fcitx5CompilerSettings.cmake" # to locate Fcitx5CompilerSettings -set(FCITX_INSTALL_CMAKECONFIG_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../../build/devel/usr/lib/cmake") +set(FCITX_INSTALL_CMAKECONFIG_DIR "${FCITX5_DEVEL_FILES}") # mimic fcitx5/src/lib/fcitx-utils/Fcitx5UtilsConfig.cmake.in include("${FCITX_INSTALL_CMAKECONFIG_DIR}/Fcitx5Utils/Fcitx5Macros.cmake") diff --git a/lib/fcitx5/src/main/cpp/fcitx5 b/lib/fcitx5/src/main/cpp/fcitx5 index 10f481a41..22593601a 160000 --- a/lib/fcitx5/src/main/cpp/fcitx5 +++ b/lib/fcitx5/src/main/cpp/fcitx5 @@ -1 +1 @@ -Subproject commit 10f481a41c2a52e8199d4a31a8460e907c734068 +Subproject commit 22593601ad9877b84cbb1cc68f85879d75bc0f78 diff --git a/plugin/anthy/build.gradle.kts b/plugin/anthy/build.gradle.kts index 9c15f883e..1a207af41 100644 --- a/plugin/anthy/build.gradle.kts +++ b/plugin/anthy/build.gradle.kts @@ -7,6 +7,10 @@ plugins { id("org.fcitx.fcitx5.android.fcitx-component") } +fcitxComponent { + installPrebuiltAssets = true +} + android { namespace = "org.fcitx.fcitx5.android.plugin.anthy" @@ -17,8 +21,7 @@ android { externalNativeBuild { cmake { targets( - "anthy", - "prebuilt-assets" + "anthy" ) } } diff --git a/plugin/anthy/src/main/cpp/CMakeLists.txt b/plugin/anthy/src/main/cpp/CMakeLists.txt index a1aaf168f..71bf3d32b 100644 --- a/plugin/anthy/src/main/cpp/CMakeLists.txt +++ b/plugin/anthy/src/main/cpp/CMakeLists.txt @@ -24,9 +24,9 @@ unset(BUILD_SHARED_LIBS) set(ANTHY_TARGET anthy-unicode) add_subdirectory(fcitx5-anthy) -set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") -add_custom_target(prebuilt-assets - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_LIST_DIR}/anthy-unicode.conf" "${ASSETS_DIR}/usr/share/anthy/anthy-unicode.conf" - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PREBUILT_DIR}/anthy-dict/anthy.dic" "${ASSETS_DIR}/usr/share/anthy/anthy.dic" - COMMENT "Copying prebuilt assets to :app" -) +install(FILES + "${PREBUILT_DIR}/anthy-dict/anthy.dic" + "${CMAKE_CURRENT_LIST_DIR}/anthy-unicode.conf" + DESTINATION "${FCITX_INSTALL_DATADIR}/anthy" + COMPONENT prebuilt-assets + ) diff --git a/plugin/chewing/build.gradle.kts b/plugin/chewing/build.gradle.kts index 83093c4ac..62a72d285 100644 --- a/plugin/chewing/build.gradle.kts +++ b/plugin/chewing/build.gradle.kts @@ -7,6 +7,10 @@ plugins { id("org.fcitx.fcitx5.android.fcitx-component") } +fcitxComponent { + installPrebuiltAssets = true +} + android { namespace = "org.fcitx.fcitx5.android.plugin.chewing" @@ -17,8 +21,7 @@ android { externalNativeBuild { cmake { targets( - "chewing", - "prebuilt-assets" + "chewing" ) } } diff --git a/plugin/chewing/src/main/cpp/CMakeLists.txt b/plugin/chewing/src/main/cpp/CMakeLists.txt index 627ecdcf6..09ba1afe9 100644 --- a/plugin/chewing/src/main/cpp/CMakeLists.txt +++ b/plugin/chewing/src/main/cpp/CMakeLists.txt @@ -24,8 +24,4 @@ set(CHEWING_TARGET Chewing_static) option(ENABLE_TEST "" OFF) add_subdirectory(fcitx5-chewing) -set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") -add_custom_target(prebuilt-assets - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/chewing-dict" "${ASSETS_DIR}/usr/share/libchewing" - COMMENT "Copying prebuilt assets to :app" -) +install(DIRECTORY "${PREBUILT_DIR}/chewing-dict/" DESTINATION "${FCITX_INSTALL_DATADIR}/libchewing" COMPONENT prebuilt-assets) diff --git a/plugin/clipboard-filter/build.gradle.kts b/plugin/clipboard-filter/build.gradle.kts index 893bd9cd4..b5339a45b 100644 --- a/plugin/clipboard-filter/build.gradle.kts +++ b/plugin/clipboard-filter/build.gradle.kts @@ -13,6 +13,13 @@ android { applicationId = "org.fcitx.fcitx5.android.plugin.clipboard_filter" } + sourceSets { + getByName("main") { + // TODO: only include data.min.json + assets.setSrcDirs(listOf("src/main/assets", "ClearURLsRules")) + } + } + buildTypes { release { resValue("string", "app_name", "@string/app_name_release") diff --git a/plugin/clipboard-filter/src/main/assets/data.min.json b/plugin/clipboard-filter/src/main/assets/data.min.json deleted file mode 120000 index f7c3853c3..000000000 --- a/plugin/clipboard-filter/src/main/assets/data.min.json +++ /dev/null @@ -1 +0,0 @@ -../../../ClearURLsRules/data.min.json \ No newline at end of file diff --git a/plugin/hangul/build.gradle.kts b/plugin/hangul/build.gradle.kts index 07ea8938a..7e07e8172 100644 --- a/plugin/hangul/build.gradle.kts +++ b/plugin/hangul/build.gradle.kts @@ -7,6 +7,10 @@ plugins { id("org.fcitx.fcitx5.android.fcitx-component") } +fcitxComponent { + installPrebuiltAssets = true +} + android { namespace = "org.fcitx.fcitx5.android.plugin.hangul" @@ -17,8 +21,7 @@ android { externalNativeBuild { cmake { targets( - "hangul", - "prebuilt-assets" + "hangul" ) } } diff --git a/plugin/hangul/src/main/cpp/CMakeLists.txt b/plugin/hangul/src/main/cpp/CMakeLists.txt index 9b8029c37..789070d62 100644 --- a/plugin/hangul/src/main/cpp/CMakeLists.txt +++ b/plugin/hangul/src/main/cpp/CMakeLists.txt @@ -24,8 +24,4 @@ set(HANGUL_TARGET Hangul_static) option(ENABLE_TEST "" OFF) add_subdirectory(fcitx5-hangul) -set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") -add_custom_target(prebuilt-assets - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/libhangul/data/libhangul" "${ASSETS_DIR}/usr/share/libhangul" - COMMENT "Copying prebuilt assets to :app" -) +install(DIRECTORY "${PREBUILT_DIR}/libhangul/data/libhangul" DESTINATION "${FCITX_INSTALL_DATADIR}" COMPONENT prebuilt-assets) diff --git a/plugin/jyutping/build.gradle.kts b/plugin/jyutping/build.gradle.kts index 5080e64ef..8fadd5731 100644 --- a/plugin/jyutping/build.gradle.kts +++ b/plugin/jyutping/build.gradle.kts @@ -7,6 +7,10 @@ plugins { id("org.fcitx.fcitx5.android.fcitx-component") } +fcitxComponent { + installPrebuiltAssets = true +} + android { namespace = "org.fcitx.fcitx5.android.plugin.jyutping" @@ -18,8 +22,7 @@ android { cmake { targets( "jyutping", - "libime_jyutpingdict", - "prebuilt-assets" + "libime_jyutpingdict" ) } } diff --git a/plugin/jyutping/src/main/cpp/CMakeLists.txt b/plugin/jyutping/src/main/cpp/CMakeLists.txt index 98cde5770..37d41016e 100644 --- a/plugin/jyutping/src/main/cpp/CMakeLists.txt +++ b/plugin/jyutping/src/main/cpp/CMakeLists.txt @@ -44,8 +44,4 @@ add_subdirectory(libime-jyutping) # rename to include executable in apk set_target_properties(libime_jyutpingdict PROPERTIES OUTPUT_NAME libime_jyutpingdict.so) -set(ASSETS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../main/assets") -add_custom_target(prebuilt-assets - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${PREBUILT_DIR}/libime-jyutping" "${ASSETS_DIR}/usr/share/libime" - COMMENT "Copying prebuilt assets to :app" -) +install(DIRECTORY "${PREBUILT_DIR}/libime-jyutping/" DESTINATION "${FCITX_INSTALL_DATADIR}/libime" COMPONENT prebuilt-assets) From 21cf1d35c5613d1136ddcbb960acb3316e47cd14 Mon Sep 17 00:00:00 2001 From: Rocka Date: Wed, 18 Dec 2024 01:31:04 +0800 Subject: [PATCH 06/16] Copy ClearURLsRules/data.min.json in gradle way --- plugin/clipboard-filter/build.gradle.kts | 27 ++++++++++++++---------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/plugin/clipboard-filter/build.gradle.kts b/plugin/clipboard-filter/build.gradle.kts index b5339a45b..33b558467 100644 --- a/plugin/clipboard-filter/build.gradle.kts +++ b/plugin/clipboard-filter/build.gradle.kts @@ -1,3 +1,5 @@ +import com.android.build.gradle.tasks.MergeSourceSetFolders + plugins { id("org.fcitx.fcitx5.android.app-convention") id("org.fcitx.fcitx5.android.plugin-app-convention") @@ -13,13 +15,6 @@ android { applicationId = "org.fcitx.fcitx5.android.plugin.clipboard_filter" } - sourceSets { - getByName("main") { - // TODO: only include data.min.json - assets.setSrcDirs(listOf("src/main/assets", "ClearURLsRules")) - } - } - buildTypes { release { resValue("string", "app_name", "@string/app_name_release") @@ -30,12 +25,22 @@ android { } } -aboutLibraries { - configPath = "plugin/clipboard-filter/licenses" +// copy ClearURLsRules/data.min.json to apk assets +tasks.withType().all { + // mergeDebugAssets or mergeReleaseAssets + if (name.endsWith("Assets")) { + tasks.register("${name}Pre") { + with(copySpec { + from("ClearURLsRules") + include("data.min.json") + }) + into(this@all.outputs.files.files.first()) + }.let { this@all.dependsOn(it) } + } } -generateDataDescriptor{ - excludes.add("data.min.json") +aboutLibraries { + configPath = "plugin/clipboard-filter/licenses" } dependencies { From 504ee817961f852804e7a5c9fd66feec0f03d5ec Mon Sep 17 00:00:00 2001 From: Rocka Date: Wed, 18 Dec 2024 01:39:18 +0800 Subject: [PATCH 07/16] Use cmake 3.30.5 --- .github/workflows/publish.yml | 2 +- .github/workflows/pull_request.yml | 2 +- README.md | 2 +- app/org.fcitx.fcitx5.android.yml | 2 +- build-logic/convention/src/main/kotlin/Versions.kt | 2 +- flake.nix | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b09fc9df8..87079b74b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -32,7 +32,7 @@ jobs: - name: Setup Android environment uses: android-actions/setup-android@v3 with: - packages: cmake;3.31.1 + packages: cmake;3.30.5 - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index df01065b9..b1517b46a 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -37,7 +37,7 @@ jobs: - name: Install Android NDK run: | - sdkmanager --install "cmake;3.31.1" + sdkmanager --install "cmake;3.30.5" - name: Install system dependencies (Ubuntu) if: ${{ startsWith(matrix.os, 'ubuntu') }} diff --git a/README.md b/README.md index 062ea63b7..06343676b 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Discuss on Telegram: [@fcitx5_android_group](https://t.me/fcitx5_android_group) ### Dependencies - Android SDK Platform & Build-Tools 35. -- Android NDK (Side by side) 25 & CMake 3.31.1, they can be installed using SDK Manager in Android Studio or `sdkmanager` command line. +- Android NDK (Side by side) 25 & CMake 3.30.5, they can be installed using SDK Manager in Android Studio or `sdkmanager` command line. - [KDE/extra-cmake-modules](https://github.com/KDE/extra-cmake-modules) - GNU Gettext >= 0.20 (for `msgfmt` binary; or install `appstream` if you really have to use gettext <= 0.19.) diff --git a/app/org.fcitx.fcitx5.android.yml b/app/org.fcitx.fcitx5.android.yml index 69cf306c0..766d5142d 100644 --- a/app/org.fcitx.fcitx5.android.yml +++ b/app/org.fcitx.fcitx5.android.yml @@ -32,7 +32,7 @@ Builds: rm: - lib/fcitx5/src/main/cpp/prebuilt prebuild: - - sdkmanager 'cmake;3.31.1' + - sdkmanager 'cmake;3.30.5' - sed -i -e '/ImportQualifiedPost/d' $$fcitx5-android-prebuilder$$/src/Main.hs - sed -i -e 's/import \(.*\) qualified as/import qualified \1 as/g' $$fcitx5-android-prebuilder$$/src/*.hs - sed -i -e 's|https://maven.pkg.github.com|https://jitpack.io|g' ../build-logic/convention/build.gradle.kts diff --git a/build-logic/convention/src/main/kotlin/Versions.kt b/build-logic/convention/src/main/kotlin/Versions.kt index 23af341f0..fc00484e1 100644 --- a/build-logic/convention/src/main/kotlin/Versions.kt +++ b/build-logic/convention/src/main/kotlin/Versions.kt @@ -12,7 +12,7 @@ object Versions { const val minSdk = 23 const val targetSdk = 35 - const val defaultCMake = "3.31.1" + const val defaultCMake = "3.30.5" const val defaultNDK = "25.2.9519653" const val defaultBuildTools = "35.0.0" diff --git a/flake.nix b/flake.nix index f94cac598..8524f5f5d 100644 --- a/flake.nix +++ b/flake.nix @@ -30,7 +30,7 @@ # Update versions here # This should match to build-logic/convention/src/main/kotlin/Versions.kt - cmakeVersion = "3.22.1"; + cmakeVersion = "3.30.5"; buildToolsVersion = "35.0.0"; platformToolsVersion = "35.0.2"; platformVersion = "35"; From 5afbf87f18d28204c021799b31aaef82c8ae95d2 Mon Sep 17 00:00:00 2001 From: Rocka Date: Wed, 18 Dec 2024 02:13:07 +0800 Subject: [PATCH 08/16] fixup --- app/src/main/cpp/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt index 87fe2670c..eb1222279 100644 --- a/app/src/main/cpp/CMakeLists.txt +++ b/app/src/main/cpp/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.31) +cmake_minimum_required(VERSION 3.18) project(fcitx5-android VERSION ${VERSION_NAME}) From 0fc835a4c72273f3e2f10040944d5caa3211db4f Mon Sep 17 00:00:00 2001 From: Rocka Date: Wed, 18 Dec 2024 22:18:58 +0800 Subject: [PATCH 09/16] fixup --- .github/workflows/publish.yml | 2 +- .github/workflows/pull_request.yml | 2 +- README.md | 15 ++++++++++++++- app/org.fcitx.fcitx5.android.yml | 2 +- .../src/main/kotlin/FcitxComponentPlugin.kt | 2 ++ .../convention/src/main/kotlin/Versions.kt | 2 +- flake.nix | 2 +- lib/fcitx5/src/main/cpp/fcitx5 | 2 +- 8 files changed, 22 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 87079b74b..b09fc9df8 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -32,7 +32,7 @@ jobs: - name: Setup Android environment uses: android-actions/setup-android@v3 with: - packages: cmake;3.30.5 + packages: cmake;3.31.1 - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index b1517b46a..df01065b9 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -37,7 +37,7 @@ jobs: - name: Install Android NDK run: | - sdkmanager --install "cmake;3.30.5" + sdkmanager --install "cmake;3.31.1" - name: Install system dependencies (Ubuntu) if: ${{ startsWith(matrix.os, 'ubuntu') }} diff --git a/README.md b/README.md index 06343676b..4d0648220 100644 --- a/README.md +++ b/README.md @@ -70,12 +70,25 @@ Discuss on Telegram: [@fcitx5_android_group](https://t.me/fcitx5_android_group) ### Dependencies - Android SDK Platform & Build-Tools 35. -- Android NDK (Side by side) 25 & CMake 3.30.5, they can be installed using SDK Manager in Android Studio or `sdkmanager` command line. +- Android NDK (Side by side) 25 & CMake 3.31.1, they can be installed using SDK Manager in Android Studio or `sdkmanager` command line. - [KDE/extra-cmake-modules](https://github.com/KDE/extra-cmake-modules) - GNU Gettext >= 0.20 (for `msgfmt` binary; or install `appstream` if you really have to use gettext <= 0.19.) ### How to set up development environment +
+Prerequisites for Windows + +- Enable [Developer Mode](https://learn.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development) so that symlinks can be created without administrator privilege. + +- Enable symlink support for `git`: + + ```shell + git config --global core.symlinks true + ``` + +
+ First, clone this repository and fetch all submodules: ```shell diff --git a/app/org.fcitx.fcitx5.android.yml b/app/org.fcitx.fcitx5.android.yml index 766d5142d..02a63ac4d 100644 --- a/app/org.fcitx.fcitx5.android.yml +++ b/app/org.fcitx.fcitx5.android.yml @@ -32,7 +32,7 @@ Builds: rm: - lib/fcitx5/src/main/cpp/prebuilt prebuild: - - sdkmanager 'cmake;3.30.5' + - sdkmanager 'cmake;3.22.1' 'cmake;3.31.1' - sed -i -e '/ImportQualifiedPost/d' $$fcitx5-android-prebuilder$$/src/Main.hs - sed -i -e 's/import \(.*\) qualified as/import qualified \1 as/g' $$fcitx5-android-prebuilder$$/src/*.hs - sed -i -e 's|https://maven.pkg.github.com|https://jitpack.io|g' ../build-logic/convention/build.gradle.kts diff --git a/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt b/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt index 4ca23e09f..caf340b4d 100644 --- a/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt +++ b/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt @@ -114,6 +114,8 @@ class FcitxComponentPlugin : Plugin { commandLine(cmake, "--install", ".", "--component", "modules") } } + // otherwise module libraries won't be included in apk + runAfterNativeBuild(project) } project.tasks.getByName(INSTALL_TASK).dependsOn(task) } diff --git a/build-logic/convention/src/main/kotlin/Versions.kt b/build-logic/convention/src/main/kotlin/Versions.kt index fc00484e1..23af341f0 100644 --- a/build-logic/convention/src/main/kotlin/Versions.kt +++ b/build-logic/convention/src/main/kotlin/Versions.kt @@ -12,7 +12,7 @@ object Versions { const val minSdk = 23 const val targetSdk = 35 - const val defaultCMake = "3.30.5" + const val defaultCMake = "3.31.1" const val defaultNDK = "25.2.9519653" const val defaultBuildTools = "35.0.0" diff --git a/flake.nix b/flake.nix index 8524f5f5d..2cd020e3f 100644 --- a/flake.nix +++ b/flake.nix @@ -30,7 +30,7 @@ # Update versions here # This should match to build-logic/convention/src/main/kotlin/Versions.kt - cmakeVersion = "3.30.5"; + cmakeVersion = "3.31.1"; buildToolsVersion = "35.0.0"; platformToolsVersion = "35.0.2"; platformVersion = "35"; diff --git a/lib/fcitx5/src/main/cpp/fcitx5 b/lib/fcitx5/src/main/cpp/fcitx5 index 22593601a..10f481a41 160000 --- a/lib/fcitx5/src/main/cpp/fcitx5 +++ b/lib/fcitx5/src/main/cpp/fcitx5 @@ -1 +1 @@ -Subproject commit 22593601ad9877b84cbb1cc68f85879d75bc0f78 +Subproject commit 10f481a41c2a52e8199d4a31a8460e907c734068 From fb9b3597e6c2a422c0803b3a0bba8bbd34bdbc08 Mon Sep 17 00:00:00 2001 From: Rocka Date: Wed, 18 Dec 2024 22:33:05 +0800 Subject: [PATCH 10/16] fixup clipboard-filter assets --- plugin/clipboard-filter/build.gradle.kts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/plugin/clipboard-filter/build.gradle.kts b/plugin/clipboard-filter/build.gradle.kts index 33b558467..ffbc02459 100644 --- a/plugin/clipboard-filter/build.gradle.kts +++ b/plugin/clipboard-filter/build.gradle.kts @@ -29,13 +29,10 @@ android { tasks.withType().all { // mergeDebugAssets or mergeReleaseAssets if (name.endsWith("Assets")) { - tasks.register("${name}Pre") { - with(copySpec { - from("ClearURLsRules") - include("data.min.json") - }) - into(this@all.outputs.files.files.first()) - }.let { this@all.dependsOn(it) } + val outDir = outputDir.asFile.get() + doLast { + file("ClearURLsRules/data.min.json").copyTo(outDir.resolve("data.min.json")) + } } } From e69756d8a31cc3f965f031abe8ba4a6143d86292 Mon Sep 17 00:00:00 2001 From: Rocka Date: Wed, 18 Dec 2024 22:56:21 +0800 Subject: [PATCH 11/16] fixup --- plugin/clipboard-filter/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/clipboard-filter/build.gradle.kts b/plugin/clipboard-filter/build.gradle.kts index ffbc02459..41ce63578 100644 --- a/plugin/clipboard-filter/build.gradle.kts +++ b/plugin/clipboard-filter/build.gradle.kts @@ -29,8 +29,8 @@ android { tasks.withType().all { // mergeDebugAssets or mergeReleaseAssets if (name.endsWith("Assets")) { - val outDir = outputDir.asFile.get() doLast { + val outDir = outputDir.asFile.get() file("ClearURLsRules/data.min.json").copyTo(outDir.resolve("data.min.json")) } } From 5038bae4636bdf3046e9465a30e2b6744ff6159a Mon Sep 17 00:00:00 2001 From: Rocka Date: Wed, 18 Dec 2024 23:45:31 +0800 Subject: [PATCH 12/16] fix copying fcitx5 module libraries --- app/build.gradle.kts | 3 ++- app/src/main/cpp/CMakeLists.txt | 10 ++++------ .../src/main/kotlin/FcitxComponentPlugin.kt | 19 ------------------- 3 files changed, 6 insertions(+), 26 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 760f5d011..8ce568794 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -22,6 +22,8 @@ android { targets( // jni "native-lib", + // copy fcitx5 built-in addon libraries + "copy-fcitx5-modules", // android specific modules "androidfrontend", "androidkeyboard", @@ -80,7 +82,6 @@ fcitxComponent { excludeFiles = listOf("cangjie", "erbi", "qxm", "wanfeng").map { "usr/share/fcitx5/inputmethod/$it.conf" } - installModulesComponent = true installPrebuiltAssets = true } diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt index eb1222279..7e5e85908 100644 --- a/app/src/main/cpp/CMakeLists.txt +++ b/app/src/main/cpp/CMakeLists.txt @@ -66,16 +66,14 @@ target_link_libraries(native-lib ) # copy module libraries from dependency lib -install(FILES - # fcitx5 +add_custom_target(copy-fcitx5-modules + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ $ $ $ - # fcitx5-lua $ - # fcitx5-chinese-addons $ $ $ @@ -83,8 +81,8 @@ install(FILES $ $ $ - DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} - COMPONENT modules + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + COMMENT "Copying fcitx5 module libraries to :app" ) # install prebuilt assets diff --git a/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt b/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt index caf340b4d..5f2c76210 100644 --- a/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt +++ b/build-logic/convention/src/main/kotlin/FcitxComponentPlugin.kt @@ -18,7 +18,6 @@ class FcitxComponentPlugin : Plugin { var includeLibs: List = emptyList() var excludeFiles: List = emptyList() var modifyFiles: Map Unit> = emptyMap() - var installModulesComponent: Boolean = false var installPrebuiltAssets: Boolean = false } @@ -55,9 +54,6 @@ class FcitxComponentPlugin : Plugin { } } } - if (ext.installModulesComponent) { - registerInstallModulesTask(target) - } if (ext.installPrebuiltAssets) { registerCMakeTask(target, "", "prebuilt-assets") } @@ -105,21 +101,6 @@ class FcitxComponentPlugin : Plugin { project.tasks.getByName(INSTALL_TASK).dependsOn(task) } - private fun registerInstallModulesTask(project: Project) { - val task = project.task("installModuleLibraries") { - runAfterNativeConfigure(project) { - val cmake = it.variant.module.cmake!!.cmakeExe!! - project.exec { - workingDir = it.cxxBuildFolder - commandLine(cmake, "--install", ".", "--component", "modules") - } - } - // otherwise module libraries won't be included in apk - runAfterNativeBuild(project) - } - project.tasks.getByName(INSTALL_TASK).dependsOn(task) - } - private fun registerCleanTask(project: Project) { project.task(CLEAN_TASK) { delete(project.assetsDir.resolve("usr/share/locale")) From 98f2b861459dc529a3e08af10cf5a837d41f33de Mon Sep 17 00:00:00 2001 From: Rocka Date: Thu, 19 Dec 2024 00:42:33 +0800 Subject: [PATCH 13/16] copy rime-data by gradle --- .../assets/usr/share/anthy/anthy-unicode.conf | 4 ---- plugin/rime/build.gradle.kts | 24 +++++++++++++++++++ .../assets/usr/share/rime-data/default.yaml | 1 - .../main/assets/usr/share/rime-data/essay.txt | 1 - .../usr/share/rime-data/key_bindings.yaml | 1 - .../usr/share/rime-data/luna_pinyin.dict.yaml | 1 - .../share/rime-data/luna_pinyin.schema.yaml | 1 - .../rime-data/luna_pinyin_fluency.schema.yaml | 1 - .../rime-data/luna_pinyin_simp.schema.yaml | 1 - .../rime-data/luna_pinyin_tw.schema.yaml | 1 - .../share/rime-data/luna_quanpin.schema.yaml | 1 - .../assets/usr/share/rime-data/pinyin.yaml | 1 - .../usr/share/rime-data/punctuation.yaml | 1 - .../usr/share/rime-data/stroke.dict.yaml | 1 - .../usr/share/rime-data/stroke.schema.yaml | 1 - .../assets/usr/share/rime-data/symbols.yaml | 1 - 16 files changed, 24 insertions(+), 18 deletions(-) delete mode 100644 plugin/anthy/src/main/assets/usr/share/anthy/anthy-unicode.conf delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/default.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/essay.txt delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/key_bindings.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin.dict.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin.schema.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_fluency.schema.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_simp.schema.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_tw.schema.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/luna_quanpin.schema.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/pinyin.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/punctuation.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/stroke.dict.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/stroke.schema.yaml delete mode 120000 plugin/rime/src/main/assets/usr/share/rime-data/symbols.yaml diff --git a/plugin/anthy/src/main/assets/usr/share/anthy/anthy-unicode.conf b/plugin/anthy/src/main/assets/usr/share/anthy/anthy-unicode.conf deleted file mode 100644 index 78fa60684..000000000 --- a/plugin/anthy/src/main/assets/usr/share/anthy/anthy-unicode.conf +++ /dev/null @@ -1,4 +0,0 @@ -# leave empty intentionally, to be overridden on runtime -#prefix /data/data//usr/share/anthy -#ANTHYDIR ${prefix}/ -#DIC_FILE ${prefix}/anthy.dic \ No newline at end of file diff --git a/plugin/rime/build.gradle.kts b/plugin/rime/build.gradle.kts index a9f6d003a..fad33a096 100644 --- a/plugin/rime/build.gradle.kts +++ b/plugin/rime/build.gradle.kts @@ -42,6 +42,30 @@ android { } } +val copyRimeSharedData = tasks.register("copyRimeSharedData") { + from(listOf( + "default.yaml", + "rime-essay/essay.txt", + "rime-prelude/key_bindings.yaml", + "rime-prelude/punctuation.yaml", + "rime-prelude/symbols.yaml", + "rime-luna-pinyin/luna_pinyin_fluency.schema.yaml", + "rime-luna-pinyin/luna_pinyin_simp.schema.yaml", + "rime-luna-pinyin/luna_pinyin_tw.schema.yaml", + "rime-luna-pinyin/luna_pinyin.dict.yaml", + "rime-luna-pinyin/luna_pinyin.schema.yaml", + "rime-luna-pinyin/luna_quanpin.schema.yaml", + "rime-luna-pinyin/pinyin.yaml", + "rime-stroke/stroke.dict.yaml", + "rime-stroke/stroke.schema.yaml", + ).map { "src/main/cpp/$it" }) + into(layout.projectDirectory.dir("src/main/assets/usr/share/rime-data/")) +} + +tasks.withType().all { + dependsOn(copyRimeSharedData) +} + generateDataDescriptor { symlinks.put("usr/share/rime-data/opencc", "usr/share/opencc") } diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/default.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/default.yaml deleted file mode 120000 index 8da0b4f20..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/default.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/default.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/essay.txt b/plugin/rime/src/main/assets/usr/share/rime-data/essay.txt deleted file mode 120000 index 66bb52008..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/essay.txt +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-essay/essay.txt \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/key_bindings.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/key_bindings.yaml deleted file mode 120000 index 5da2132a0..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/key_bindings.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-prelude/key_bindings.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin.dict.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin.dict.yaml deleted file mode 120000 index e1de1d90a..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin.dict.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-luna-pinyin/luna_pinyin.dict.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin.schema.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin.schema.yaml deleted file mode 120000 index 53c284a62..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin.schema.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-luna-pinyin/luna_pinyin.schema.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_fluency.schema.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_fluency.schema.yaml deleted file mode 120000 index da7388c9f..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_fluency.schema.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-luna-pinyin/luna_pinyin_fluency.schema.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_simp.schema.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_simp.schema.yaml deleted file mode 120000 index 5255c282e..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_simp.schema.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-luna-pinyin/luna_pinyin_simp.schema.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_tw.schema.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_tw.schema.yaml deleted file mode 120000 index fd4d43b4c..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/luna_pinyin_tw.schema.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-luna-pinyin/luna_pinyin_tw.schema.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/luna_quanpin.schema.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/luna_quanpin.schema.yaml deleted file mode 120000 index 348536a82..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/luna_quanpin.schema.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-luna-pinyin/luna_quanpin.schema.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/pinyin.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/pinyin.yaml deleted file mode 120000 index b5e39c03e..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/pinyin.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-luna-pinyin/pinyin.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/punctuation.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/punctuation.yaml deleted file mode 120000 index 62fd6b63d..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/punctuation.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-prelude/punctuation.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/stroke.dict.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/stroke.dict.yaml deleted file mode 120000 index ea7fadd53..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/stroke.dict.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-stroke/stroke.dict.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/stroke.schema.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/stroke.schema.yaml deleted file mode 120000 index b2a8ad3eb..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/stroke.schema.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-stroke/stroke.schema.yaml \ No newline at end of file diff --git a/plugin/rime/src/main/assets/usr/share/rime-data/symbols.yaml b/plugin/rime/src/main/assets/usr/share/rime-data/symbols.yaml deleted file mode 120000 index 02eb06d51..000000000 --- a/plugin/rime/src/main/assets/usr/share/rime-data/symbols.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../cpp/rime-prelude/symbols.yaml \ No newline at end of file From ed01991426b0b411a605e748540a9f7cde7cbc0a Mon Sep 17 00:00:00 2001 From: Rocka Date: Thu, 19 Dec 2024 01:28:54 +0800 Subject: [PATCH 14/16] guess what? let's copy rime-data in cmake instead --- plugin/rime/build.gradle.kts | 28 ++++--------------------- plugin/rime/src/main/cpp/CMakeLists.txt | 19 +++++++++++++++++ 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/plugin/rime/build.gradle.kts b/plugin/rime/build.gradle.kts index fad33a096..89370ae04 100644 --- a/plugin/rime/build.gradle.kts +++ b/plugin/rime/build.gradle.kts @@ -7,6 +7,10 @@ plugins { id("org.fcitx.fcitx5.android.fcitx-component") } +fcitxComponent { + installPrebuiltAssets = true +} + android { namespace = "org.fcitx.fcitx5.android.plugin.rime" @@ -42,30 +46,6 @@ android { } } -val copyRimeSharedData = tasks.register("copyRimeSharedData") { - from(listOf( - "default.yaml", - "rime-essay/essay.txt", - "rime-prelude/key_bindings.yaml", - "rime-prelude/punctuation.yaml", - "rime-prelude/symbols.yaml", - "rime-luna-pinyin/luna_pinyin_fluency.schema.yaml", - "rime-luna-pinyin/luna_pinyin_simp.schema.yaml", - "rime-luna-pinyin/luna_pinyin_tw.schema.yaml", - "rime-luna-pinyin/luna_pinyin.dict.yaml", - "rime-luna-pinyin/luna_pinyin.schema.yaml", - "rime-luna-pinyin/luna_quanpin.schema.yaml", - "rime-luna-pinyin/pinyin.yaml", - "rime-stroke/stroke.dict.yaml", - "rime-stroke/stroke.schema.yaml", - ).map { "src/main/cpp/$it" }) - into(layout.projectDirectory.dir("src/main/assets/usr/share/rime-data/")) -} - -tasks.withType().all { - dependsOn(copyRimeSharedData) -} - generateDataDescriptor { symlinks.put("usr/share/rime-data/opencc", "usr/share/opencc") } diff --git a/plugin/rime/src/main/cpp/CMakeLists.txt b/plugin/rime/src/main/cpp/CMakeLists.txt index 070793442..fec3ee28f 100644 --- a/plugin/rime/src/main/cpp/CMakeLists.txt +++ b/plugin/rime/src/main/cpp/CMakeLists.txt @@ -37,3 +37,22 @@ set_target_properties(Rime_static PROPERTIES set(RIME_TARGET $) set(RIME_DATA_DIR "${CMAKE_INSTALL_DATADIR}/rime-data") add_subdirectory(fcitx5-rime) + +install(FILES + "default.yaml" + "rime-essay/essay.txt" + "rime-prelude/key_bindings.yaml" + "rime-prelude/punctuation.yaml" + "rime-prelude/symbols.yaml" + "rime-luna-pinyin/luna_pinyin_fluency.schema.yaml" + "rime-luna-pinyin/luna_pinyin_simp.schema.yaml" + "rime-luna-pinyin/luna_pinyin_tw.schema.yaml" + "rime-luna-pinyin/luna_pinyin.dict.yaml" + "rime-luna-pinyin/luna_pinyin.schema.yaml" + "rime-luna-pinyin/luna_quanpin.schema.yaml" + "rime-luna-pinyin/pinyin.yaml" + "rime-stroke/stroke.dict.yaml" + "rime-stroke/stroke.schema.yaml" + DESTINATION "${FCITX_INSTALL_DATADIR}/rime-data" + COMPONENT prebuilt-assets + ) From b439c9cd5b90a93e676e86e19a7ffddcbac24625 Mon Sep 17 00:00:00 2001 From: Rocka Date: Thu, 19 Dec 2024 22:09:15 +0800 Subject: [PATCH 15/16] revert cmake update --- .github/workflows/publish.yml | 2 +- .github/workflows/pull_request.yml | 2 +- README.md | 2 +- app/org.fcitx.fcitx5.android.yml | 2 +- build-logic/convention/src/main/kotlin/Versions.kt | 2 +- flake.nix | 2 +- plugin/rime/src/main/cpp/CMakeLists.txt | 4 +++- 7 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b09fc9df8..bb9b3ce50 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -32,7 +32,7 @@ jobs: - name: Setup Android environment uses: android-actions/setup-android@v3 with: - packages: cmake;3.31.1 + packages: cmake;3.22.1 - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index df01065b9..fb5246f61 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -37,7 +37,7 @@ jobs: - name: Install Android NDK run: | - sdkmanager --install "cmake;3.31.1" + sdkmanager --install "cmake;3.22.1" - name: Install system dependencies (Ubuntu) if: ${{ startsWith(matrix.os, 'ubuntu') }} diff --git a/README.md b/README.md index 4d0648220..7943e9d50 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Discuss on Telegram: [@fcitx5_android_group](https://t.me/fcitx5_android_group) ### Dependencies - Android SDK Platform & Build-Tools 35. -- Android NDK (Side by side) 25 & CMake 3.31.1, they can be installed using SDK Manager in Android Studio or `sdkmanager` command line. +- Android NDK (Side by side) 25 & CMake 3.22.1, they can be installed using SDK Manager in Android Studio or `sdkmanager` command line. - [KDE/extra-cmake-modules](https://github.com/KDE/extra-cmake-modules) - GNU Gettext >= 0.20 (for `msgfmt` binary; or install `appstream` if you really have to use gettext <= 0.19.) diff --git a/app/org.fcitx.fcitx5.android.yml b/app/org.fcitx.fcitx5.android.yml index 02a63ac4d..6c1dd0953 100644 --- a/app/org.fcitx.fcitx5.android.yml +++ b/app/org.fcitx.fcitx5.android.yml @@ -32,7 +32,7 @@ Builds: rm: - lib/fcitx5/src/main/cpp/prebuilt prebuild: - - sdkmanager 'cmake;3.22.1' 'cmake;3.31.1' + - sdkmanager 'cmake;3.22.1' - sed -i -e '/ImportQualifiedPost/d' $$fcitx5-android-prebuilder$$/src/Main.hs - sed -i -e 's/import \(.*\) qualified as/import qualified \1 as/g' $$fcitx5-android-prebuilder$$/src/*.hs - sed -i -e 's|https://maven.pkg.github.com|https://jitpack.io|g' ../build-logic/convention/build.gradle.kts diff --git a/build-logic/convention/src/main/kotlin/Versions.kt b/build-logic/convention/src/main/kotlin/Versions.kt index 23af341f0..713e56307 100644 --- a/build-logic/convention/src/main/kotlin/Versions.kt +++ b/build-logic/convention/src/main/kotlin/Versions.kt @@ -12,7 +12,7 @@ object Versions { const val minSdk = 23 const val targetSdk = 35 - const val defaultCMake = "3.31.1" + const val defaultCMake = "3.22.1" const val defaultNDK = "25.2.9519653" const val defaultBuildTools = "35.0.0" diff --git a/flake.nix b/flake.nix index 2cd020e3f..f94cac598 100644 --- a/flake.nix +++ b/flake.nix @@ -30,7 +30,7 @@ # Update versions here # This should match to build-logic/convention/src/main/kotlin/Versions.kt - cmakeVersion = "3.31.1"; + cmakeVersion = "3.22.1"; buildToolsVersion = "35.0.0"; platformToolsVersion = "35.0.2"; platformVersion = "35"; diff --git a/plugin/rime/src/main/cpp/CMakeLists.txt b/plugin/rime/src/main/cpp/CMakeLists.txt index fec3ee28f..62fa626ff 100644 --- a/plugin/rime/src/main/cpp/CMakeLists.txt +++ b/plugin/rime/src/main/cpp/CMakeLists.txt @@ -34,7 +34,9 @@ set_target_properties(Rime_static PROPERTIES # https://github.com/rime/librime/blob/1.9.0/src/rime_api.h#L663 # https://stackoverflow.com/questions/805555/ld-linker-question-the-whole-archive-option -set(RIME_TARGET $) +# use $ when cmake updated to 3.24+ +# https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html#link-features +set(RIME_TARGET "-Wl,--whole-archive" Rime_static "-Wl,--no-whole-archive") set(RIME_DATA_DIR "${CMAKE_INSTALL_DATADIR}/rime-data") add_subdirectory(fcitx5-rime) From 8796964ba104d8ea0e2862baf0f59755429bec48 Mon Sep 17 00:00:00 2001 From: Rocka Date: Fri, 20 Dec 2024 01:20:13 +0800 Subject: [PATCH 16/16] set aboutLibraries configPath in AndroidAppConventionPlugin --- app/build.gradle.kts | 4 ---- .../src/main/kotlin/AndroidAppConventionPlugin.kt | 1 + plugin/anthy/build.gradle.kts | 8 ++------ plugin/chewing/build.gradle.kts | 8 ++------ plugin/clipboard-filter/build.gradle.kts | 11 +++++------ plugin/hangul/build.gradle.kts | 8 ++------ plugin/jyutping/build.gradle.kts | 9 +-------- plugin/rime/build.gradle.kts | 12 ++++-------- plugin/sayura/build.gradle.kts | 4 ---- plugin/thai/build.gradle.kts | 4 ---- plugin/unikey/build.gradle.kts | 4 ---- 11 files changed, 17 insertions(+), 56 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8ce568794..a549cba47 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -67,10 +67,6 @@ kotlin { } } -aboutLibraries { - configPath = "app/licenses" -} - fcitxComponent { includeLibs = listOf( "fcitx5", diff --git a/build-logic/convention/src/main/kotlin/AndroidAppConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidAppConventionPlugin.kt index b64c737b1..e47719bab 100644 --- a/build-logic/convention/src/main/kotlin/AndroidAppConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidAppConventionPlugin.kt @@ -141,6 +141,7 @@ class AndroidAppConventionPlugin : AndroidBaseConventionPlugin() { target.pluginManager.apply(target.libs.plugins.aboutlibraries.get().pluginId) target.configure { + configPath = target.rootProject.relativePath(target.file("licenses")) excludeFields = arrayOf( "generated", "developers", "organization", "scm", "funding", "content" ) diff --git a/plugin/anthy/build.gradle.kts b/plugin/anthy/build.gradle.kts index 1a207af41..75f24a079 100644 --- a/plugin/anthy/build.gradle.kts +++ b/plugin/anthy/build.gradle.kts @@ -7,10 +7,6 @@ plugins { id("org.fcitx.fcitx5.android.fcitx-component") } -fcitxComponent { - installPrebuiltAssets = true -} - android { namespace = "org.fcitx.fcitx5.android.plugin.anthy" @@ -46,8 +42,8 @@ android { } } -aboutLibraries { - configPath = "plugin/anthy/licenses" +fcitxComponent { + installPrebuiltAssets = true } dependencies { diff --git a/plugin/chewing/build.gradle.kts b/plugin/chewing/build.gradle.kts index 62a72d285..66184d3b6 100644 --- a/plugin/chewing/build.gradle.kts +++ b/plugin/chewing/build.gradle.kts @@ -7,10 +7,6 @@ plugins { id("org.fcitx.fcitx5.android.fcitx-component") } -fcitxComponent { - installPrebuiltAssets = true -} - android { namespace = "org.fcitx.fcitx5.android.plugin.chewing" @@ -46,8 +42,8 @@ android { } } -aboutLibraries { - configPath = "plugin/chewing/licenses" +fcitxComponent { + installPrebuiltAssets = true } dependencies { diff --git a/plugin/clipboard-filter/build.gradle.kts b/plugin/clipboard-filter/build.gradle.kts index 41ce63578..23eca8593 100644 --- a/plugin/clipboard-filter/build.gradle.kts +++ b/plugin/clipboard-filter/build.gradle.kts @@ -1,4 +1,5 @@ import com.android.build.gradle.tasks.MergeSourceSetFolders +import kotlinx.serialization.json.Json plugins { id("org.fcitx.fcitx5.android.app-convention") @@ -30,16 +31,14 @@ tasks.withType().all { // mergeDebugAssets or mergeReleaseAssets if (name.endsWith("Assets")) { doLast { - val outDir = outputDir.asFile.get() - file("ClearURLsRules/data.min.json").copyTo(outDir.resolve("data.min.json")) + val inFile = file("ClearURLsRules/data.min.json") + val outFile = outputDir.asFile.get().resolve("data.min.json") + // minify json + outFile.writeText(Json.parseToJsonElement(inFile.readText()).toString()) } } } -aboutLibraries { - configPath = "plugin/clipboard-filter/licenses" -} - dependencies { implementation(project(":lib:plugin-base")) implementation(libs.kotlinx.serialization.json) diff --git a/plugin/hangul/build.gradle.kts b/plugin/hangul/build.gradle.kts index 7e07e8172..60445ce95 100644 --- a/plugin/hangul/build.gradle.kts +++ b/plugin/hangul/build.gradle.kts @@ -7,10 +7,6 @@ plugins { id("org.fcitx.fcitx5.android.fcitx-component") } -fcitxComponent { - installPrebuiltAssets = true -} - android { namespace = "org.fcitx.fcitx5.android.plugin.hangul" @@ -46,8 +42,8 @@ android { } } -aboutLibraries { - configPath = "plugin/hangul/licenses" +fcitxComponent { + installPrebuiltAssets = true } dependencies { diff --git a/plugin/jyutping/build.gradle.kts b/plugin/jyutping/build.gradle.kts index 8fadd5731..2cc9551cc 100644 --- a/plugin/jyutping/build.gradle.kts +++ b/plugin/jyutping/build.gradle.kts @@ -7,10 +7,6 @@ plugins { id("org.fcitx.fcitx5.android.fcitx-component") } -fcitxComponent { - installPrebuiltAssets = true -} - android { namespace = "org.fcitx.fcitx5.android.plugin.jyutping" @@ -60,10 +56,7 @@ fcitxComponent { ) } ) -} - -aboutLibraries { - configPath = "plugin/jyutping/licenses" + installPrebuiltAssets = true } dependencies { diff --git a/plugin/rime/build.gradle.kts b/plugin/rime/build.gradle.kts index 89370ae04..4d6b92c5a 100644 --- a/plugin/rime/build.gradle.kts +++ b/plugin/rime/build.gradle.kts @@ -7,10 +7,6 @@ plugins { id("org.fcitx.fcitx5.android.fcitx-component") } -fcitxComponent { - installPrebuiltAssets = true -} - android { namespace = "org.fcitx.fcitx5.android.plugin.rime" @@ -46,12 +42,12 @@ android { } } -generateDataDescriptor { - symlinks.put("usr/share/rime-data/opencc", "usr/share/opencc") +fcitxComponent { + installPrebuiltAssets = true } -aboutLibraries { - configPath = "plugin/rime/licenses" +generateDataDescriptor { + symlinks.put("usr/share/rime-data/opencc", "usr/share/opencc") } dependencies { diff --git a/plugin/sayura/build.gradle.kts b/plugin/sayura/build.gradle.kts index eab6e8299..72a3a2c31 100644 --- a/plugin/sayura/build.gradle.kts +++ b/plugin/sayura/build.gradle.kts @@ -42,10 +42,6 @@ android { } } -aboutLibraries { - configPath = "plugin/sayura/licenses" -} - dependencies { implementation(project(":lib:fcitx5")) implementation(project(":lib:plugin-base")) diff --git a/plugin/thai/build.gradle.kts b/plugin/thai/build.gradle.kts index 62b07b001..5e858e428 100644 --- a/plugin/thai/build.gradle.kts +++ b/plugin/thai/build.gradle.kts @@ -42,10 +42,6 @@ android { } } -aboutLibraries { - configPath = "plugin/thai/licenses" -} - dependencies { implementation(project(":lib:fcitx5")) implementation(project(":lib:plugin-base")) diff --git a/plugin/unikey/build.gradle.kts b/plugin/unikey/build.gradle.kts index 3af17784f..e0b972439 100644 --- a/plugin/unikey/build.gradle.kts +++ b/plugin/unikey/build.gradle.kts @@ -42,10 +42,6 @@ android { } } -aboutLibraries { - configPath = "plugin/unikey/licenses" -} - dependencies { implementation(project(":lib:fcitx5")) implementation(project(":lib:plugin-base")) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy