From 09da263427882170e3ee2914c8a09264850079d5 Mon Sep 17 00:00:00 2001 From: fxliang Date: Mon, 18 Mar 2024 02:25:08 +0800 Subject: [PATCH] build: add English resource info for mingw/clang build. (#847) --- cmake/AddRCInfo.cmake | 24 ++++++++++++++++++++++++ src/CMakeLists.txt | 2 +- src/rime.rc | 12 ++++++++---- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/cmake/AddRCInfo.cmake b/cmake/AddRCInfo.cmake index 449a6167e..5c6db8b98 100644 --- a/cmake/AddRCInfo.cmake +++ b/cmake/AddRCInfo.cmake @@ -30,6 +30,13 @@ if ("${git_branch}" STREQUAL "master") else() set(build_release ON) endif() +set(original_filename "rime.dll") +if(MSVC) + set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -DLOCALIZE_VERSION_INFO") +elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") # mingw + set(original_filename "librime.dll") +endif() + # generate tag_suffix for nightly and release if(build_release) set(tag_suffix ".0") @@ -40,9 +47,26 @@ else(build_release) elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) set(arch_suffix "Win32") endif() + + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") # clang + set(arch_suffix "${arch_suffix} clang") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") # mingw + set(arch_suffix "${arch_suffix} mingw") + endif() # set tag_suffix set(tag_suffix "-${git_commit} Nightly build ${arch_suffix}") endif(build_release) + +# if mingw env add -c 65001 to CMAKE_RC_FLAGS +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -c 65001") +endif() +# if clang build, use llvm-rc to compile resource file +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + set(CMAKE_RC_COMPILER "llvm-rc") + set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -finput-charset=UTF-8") +endif() + # set resource file set(rime_resource_file "${CMAKE_CURRENT_SOURCE_DIR}/rime.rc") # convert rime_version to comma separated format diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 15dea86a4..f75940893 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -15,7 +15,7 @@ set(rime_core_module_src ${rime_config_src}) # add rc info for windows MSVC build -if(MSVC) +if(WIN32) include(${CMAKE_SOURCE_DIR}/cmake/AddRCInfo.cmake) endif() diff --git a/src/rime.rc b/src/rime.rc index de64c45e5..dbe507ccd 100644 --- a/src/rime.rc +++ b/src/rime.rc @@ -1,5 +1,5 @@ #include "winver.h" -#ifdef MSVC +#ifdef LOCALIZE_VERSION_INFO #pragma code_page (65001) #endif @@ -18,13 +18,14 @@ VS_VERSION_INFO VERSIONINFO BEGIN BLOCK "StringFileInfo" BEGIN +#ifdef LOCALIZE_VERSION_INFO BLOCK "080404b0" BEGIN VALUE "CompanyName", "式恕堂" VALUE "FileDescription", "中州韵输入法引擎" VALUE "InternalName", "librime" VALUE "LegalCopyright", "式恕堂 版权所无" - VALUE "OriginalFilename", "rime.dll" + VALUE "OriginalFilename", "@original_filename@" VALUE "ProductName", "中州韵输入法引擎" VALUE "ProductVersion", "@rime_version@@tag_suffix@" END @@ -34,25 +35,28 @@ BEGIN VALUE "FileDescription", "中州韻輸入法引擎" VALUE "InternalName", "librime" VALUE "LegalCopyright", "式恕堂 版權所無" - VALUE "OriginalFilename", "rime.dll" + VALUE "OriginalFilename", "@original_filename@" VALUE "ProductName", "中州韻輸入法引擎" VALUE "ProductVersion", "@rime_version@@tag_suffix@" END +#endif BLOCK "040904E4" BEGIN VALUE "CompanyName", "Rime Developers" VALUE "FileDescription", "Rime Input Method Engine" VALUE "InternalName", "librime" VALUE "LegalCopyright", "Copyleft Rime Developers" - VALUE "OriginalFilename", "rime.dll" + VALUE "OriginalFilename", "@original_filename@" VALUE "ProductName", "Rime Input Method Engine" VALUE "ProductVersion", "@rime_version@@tag_suffix@" END END BLOCK "VarFileInfo" BEGIN +#ifdef LOCALIZE_VERSION_INFO VALUE "Translation", 0x804, 1200 VALUE "Translation", 0x409, 1200 +#endif VALUE "Translation", 0x409, 1252 END END