From 2b0964deaf94355eea91dff12d017525b49c3737 Mon Sep 17 00:00:00 2001 From: ruki Date: Fri, 20 Mar 2026 22:33:30 +0800 Subject: remove native_aot --- tests/projects/csharp/native_aot/src/app/main.cpp | 12 ---------- .../csharp/native_aot/src/cslib/MathLib.cs | 9 ------- tests/projects/csharp/native_aot/test.lua | 13 ---------- tests/projects/csharp/native_aot/xmake.lua | 11 --------- xmake/modules/core/tools/dotnet.lua | 12 +--------- xmake/rules/csharp/config.lua | 10 -------- xmake/rules/csharp/generator/properties.lua | 28 +--------------------- xmake/rules/csharp/xmake.lua | 8 ++----- 8 files changed, 4 insertions(+), 99 deletions(-) delete mode 100644 tests/projects/csharp/native_aot/src/app/main.cpp delete mode 100644 tests/projects/csharp/native_aot/src/cslib/MathLib.cs delete mode 100644 tests/projects/csharp/native_aot/test.lua delete mode 100644 tests/projects/csharp/native_aot/xmake.lua diff --git a/tests/projects/csharp/native_aot/src/app/main.cpp b/tests/projects/csharp/native_aot/src/app/main.cpp deleted file mode 100644 index 070ad7de6..000000000 --- a/tests/projects/csharp/native_aot/src/app/main.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include - -extern "C" { - int cs_add(int a, int b); - int cs_multiply(int a, int b); -} - -int main() { - printf("cs_add(3,4)=%d\n", cs_add(3, 4)); - printf("cs_multiply(5,6)=%d\n", cs_multiply(5, 6)); - return 0; -} diff --git a/tests/projects/csharp/native_aot/src/cslib/MathLib.cs b/tests/projects/csharp/native_aot/src/cslib/MathLib.cs deleted file mode 100644 index 83255a4b3..000000000 --- a/tests/projects/csharp/native_aot/src/cslib/MathLib.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Runtime.InteropServices; - -public static class MathLib { - [UnmanagedCallersOnly(EntryPoint = "cs_add")] - public static int Add(int a, int b) => a + b; - - [UnmanagedCallersOnly(EntryPoint = "cs_multiply")] - public static int Multiply(int a, int b) => a * b; -} diff --git a/tests/projects/csharp/native_aot/test.lua b/tests/projects/csharp/native_aot/test.lua deleted file mode 100644 index d909316b7..000000000 --- a/tests/projects/csharp/native_aot/test.lua +++ /dev/null @@ -1,13 +0,0 @@ -import("detect.sdks.find_dotnet") - -function test_build(t) - if is_subhost("msys") then - return t:skip("csharp not supported on msys") - end - local dotnet = find_dotnet() - if dotnet and dotnet.sdkver then - t:build() - else - return t:skip("dotnet sdk not found") - end -end diff --git a/tests/projects/csharp/native_aot/xmake.lua b/tests/projects/csharp/native_aot/xmake.lua deleted file mode 100644 index 92f264095..000000000 --- a/tests/projects/csharp/native_aot/xmake.lua +++ /dev/null @@ -1,11 +0,0 @@ -add_rules("mode.debug", "mode.release") - -target("cslib") - set_kind("shared") - add_files("src/cslib/*.cs") - set_values("csharp.publish_aot", "true") - -target("app") - set_kind("binary") - add_deps("cslib") - add_files("src/app/*.cpp") diff --git a/xmake/modules/core/tools/dotnet.lua b/xmake/modules/core/tools/dotnet.lua index 90d585b87..9a502b616 100644 --- a/xmake/modules/core/tools/dotnet.lua +++ b/xmake/modules/core/tools/dotnet.lua @@ -97,10 +97,7 @@ end -- make the build arguments list function buildargv(self, sourcefiles, targetkind, targetfile, flags, opt) - -- use `dotnet publish` for NativeAOT, otherwise `dotnet build` - local target = opt and opt.target - local publish_aot = target and target:values("csharp.publish_aot") - local argv = {publish_aot and "publish" or "build"} + local argv = {"build"} -- add .csproj file local csprojfile = _get_csprojfile(opt) @@ -126,11 +123,4 @@ function build(self, sourcefiles, targetkind, targetfile, flags, opt) os.mkdir(path.directory(targetfile)) local program, argv = buildargv(self, sourcefiles, targetkind, targetfile, flags, opt) os.runv(program, argv, {envs = self:runenvs()}) - - -- fix install_name for NativeAOT shared library on macOS - local target = opt and opt.target - local publish_aot = target and target:values("csharp.publish_aot") - if publish_aot and targetkind == "shared" and self:is_plat("macosx", "iphoneos", "watchos") then - os.runv("install_name_tool", {"-id", "@rpath/" .. path.filename(targetfile), targetfile}) - end end diff --git a/xmake/rules/csharp/config.lua b/xmake/rules/csharp/config.lua index 452e0e39c..e9dbc71e0 100644 --- a/xmake/rules/csharp/config.lua +++ b/xmake/rules/csharp/config.lua @@ -45,16 +45,6 @@ function main(target) target:data_set("csharp.csproj", csprojfile) - -- for NativeAOT shared library, export targetfile directly for C/C++ consumers - -- dotnet outputs without lib prefix, so we use ldflags with full path - local publish_aot = target:values("csharp.publish_aot") - if publish_aot and target:is_shared() then - target:data_set("inherit.links.deplink", false) - -- on Windows, MSVC linker needs import library (.lib), not .dll - local linkfile = target:artifactfile("implib") or target:targetfile() - target:add("ldflags", linkfile, {interface = true, force = true}) - end - -- add native shared library search paths for P/Invoke for _, dep in ipairs(target:orderdeps()) do if dep:is_shared() and not dep:rule("csharp.build") then diff --git a/xmake/rules/csharp/generator/properties.lua b/xmake/rules/csharp/generator/properties.lua index 844c6c0d3..a931b1db3 100644 --- a/xmake/rules/csharp/generator/properties.lua +++ b/xmake/rules/csharp/generator/properties.lua @@ -69,25 +69,6 @@ end -- resolve runtime identifier from user config or auto-detect from target plat/arch -- e.g. "osx-x64", "osx-arm64", "linux-x64", "win-x64" -function _resolve_runtime_identifier(context) - local rid = _get_target_value(context.target, "csharp.runtime_identifier") - if rid then - return rid - end - -- auto-detect RID when publish_aot is enabled - local publish_aot = _get_target_value(context.target, "csharp.publish_aot") - if not publish_aot then - return nil - end - local target = context.target - local plat = target:plat() - local arch = target:arch() - local rid_arch = ({x86_64 = "x64", i386 = "x86", x64 = "x64", x86 = "x86", - arm64 = "arm64", ["arm64-v8a"] = "arm64", armv7 = "arm"})[arch] or arch - local rid_os = ({macosx = "osx", linux = "linux", windows = "win", mingw = "win"})[plat] or plat - return rid_os .. "-" .. rid_arch -end - -- register a single-value csharp.* property entry function _register_property(register, suffix, xml, default, extra) local entry = table.join({ @@ -149,7 +130,7 @@ function main() _register_property(register, "generate_documentation_file", "GenerateDocumentationFile") _register_property(register, "documentation_file", "DocumentationFile") - register({kind = "property", xml = "RuntimeIdentifier", resolve = _resolve_runtime_identifier}) + _register_property(register, "runtime_identifier", "RuntimeIdentifier") _register_list_property(register, "runtime_identifiers", "RuntimeIdentifiers") _register_property(register, "self_contained", "SelfContained") _register_property(register, "use_app_host", "UseAppHost") @@ -162,13 +143,6 @@ function main() _register_property(register, "include_native_libraries_for_self_extract", "IncludeNativeLibrariesForSelfExtract") _register_property(register, "enable_compression_in_single_file", "EnableCompressionInSingleFile") _register_property(register, "publish_aot", "PublishAot") - -- auto-set NativeLib=Shared when PublishAot is enabled for shared library - register({kind = "property", xml = "NativeLib", resolve = function (context) - local publish_aot = _get_target_value(context.target, "csharp.publish_aot") - if publish_aot and context.target:is_shared() then - return "Shared" - end - end}) _register_property(register, "strip_symbols", "StripSymbols") _register_property(register, "enable_trim_analyzer", "EnableTrimAnalyzer") _register_property(register, "json_serializer_is_reflection_enabled_by_default", "JsonSerializerIsReflectionEnabledByDefault") diff --git a/xmake/rules/csharp/xmake.lua b/xmake/rules/csharp/xmake.lua index 603af08c3..9a0a6e43b 100644 --- a/xmake/rules/csharp/xmake.lua +++ b/xmake/rules/csharp/xmake.lua @@ -115,14 +115,10 @@ rule("csharp.build") set_sourcekinds("cs") on_load(function (target) + -- dotnet always outputs .dll for libraries, and no prefix if target:is_shared() or target:is_static() then - -- dotnet always outputs without lib prefix target:set("prefixname", "") - -- managed libraries use .dll, NativeAOT uses native format (.dylib/.so/.dll) - local publish_aot = target:values("csharp.publish_aot") - if not publish_aot then - target:set("extension", ".dll") - end + target:set("extension", ".dll") end end) on_config("config") -- cgit v1.3.1