From b72caacb3744de9a1e58bac8b4121ebec54ec035 Mon Sep 17 00:00:00 2001 From: star9029 Date: Sun, 3 Nov 2024 13:02:29 +0800 Subject: [PATCH] icu4c: improve ucrt (#5648) --- packages/i/icu4c/xmake.lua | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/packages/i/icu4c/xmake.lua b/packages/i/icu4c/xmake.lua index 47aa8fb8bf0..2785f81ed24 100644 --- a/packages/i/icu4c/xmake.lua +++ b/packages/i/icu4c/xmake.lua @@ -1,5 +1,4 @@ package("icu4c") - set_homepage("http://site.icu-project.org/") set_description("C/C++ libraries for Unicode and globalization.") @@ -23,6 +22,14 @@ package("icu4c") add_patches(">=69.1", path.join(os.scriptdir(), "patches", "72.1", "mingw.patch"), "9ddbe7f691224ccf69f8c0218f788f0a39ab8f1375cc9aad2cc92664ffcf46a5") end + if is_plat("mingw") and is_subhost("msys") then + add_extsources("pacman::icu") + elseif is_plat("linux") then + add_extsources("pacman::icu", "apt::libicu-dev") + elseif is_plat("macosx") then + add_extsources("brew::icu4c") + end + add_configs("tools", {description = "Build tools.", default = false, type = "boolean"}) if is_plat("windows") then add_configs("shared", {description = "Build shared library.", default = true, type = "boolean", readonly = true}) @@ -33,8 +40,15 @@ package("icu4c") end on_load(function (package) - if package:config("tools") and package:is_plat("windows") then - package:add("deps", "python 3.x", {kind = "binary"}) + if package:is_plat("windows") then + if package:config("tools") then + package:add("deps", "python 3.x", {kind = "binary"}) + end + + if package:has_runtime("MTd", "MDd") then + wprint("MTd/MDd runtime force to use debug package") + package:config_set("debug", true) + end end local libsuffix = package:is_debug() and package:is_plat("mingw", "windows") and "d" or "" @@ -67,10 +81,24 @@ package("icu4c") package:arch_set(arch_prev) end + if package:has_runtime("MT", "MTd") then + local files = { + "source/common/common.vcxproj", + "source/i18n/i18n.vcxproj", + "source/extra/uconv/uconv.vcxproj", + "source/io/io.vcxproj", + "source/stubdata/stubdata.vcxproj", + } + for _, vcxproj in ipairs(files) do + io.replace(vcxproj, "MultiThreadedDLL", "MultiThreaded", {plain = true}) + io.replace(vcxproj, "MultiThreadedDebugDLL", "MultiThreadedDebug", {plain = true}) + end + end + local configs = { sln, "/p:SkipUWP=True", - "/p:_IsNativeEnvironment=true" + "/p:_IsNativeEnvironment=true", } if not package:config("tools") then