From f210bb148f933253f5dc1338d08382a19df6b245 Mon Sep 17 00:00:00 2001 From: ruki Date: Sat, 8 Oct 2022 00:36:00 +0800 Subject: improve dlang tests --- tests/projects/dlang/shared_library/src/interfaces.d | 13 +++++++++---- xmake/modules/core/tools/dmd.lua | 18 ++++++++++-------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/tests/projects/dlang/shared_library/src/interfaces.d b/tests/projects/dlang/shared_library/src/interfaces.d index 3386c9124..e9adfa8b0 100644 --- a/tests/projects/dlang/shared_library/src/interfaces.d +++ b/tests/projects/dlang/shared_library/src/interfaces.d @@ -1,9 +1,14 @@ -extern(C) int add(int a, int b) -{ +import core.sys.windows.windows; +import core.sys.windows.dll; + +version(Windows) +mixin SimpleDllMain; + +extern(C) int add(int a, int b) { return a + b; } -extern(C) int sub(int a, int b) -{ +extern(C) int sub(int a, int b) { return a - b; } + diff --git a/xmake/modules/core/tools/dmd.lua b/xmake/modules/core/tools/dmd.lua index c6b84ebc1..899fc2511 100644 --- a/xmake/modules/core/tools/dmd.lua +++ b/xmake/modules/core/tools/dmd.lua @@ -133,14 +133,16 @@ end -- make the rpathdir flag function nf_rpathdir(self, dir) - dir = path.translate(dir) - if self:has_flags("-L-rpath=" .. dir, "ldflags") then - return {"-L-rpath=" .. (dir:gsub("@[%w_]+", function (name) - local maps = {["@loader_path"] = "$ORIGIN", ["@executable_path"] = "$ORIGIN"} - return maps[name] - end))} - elseif self:has_flags("-L-rpath -L" .. dir, "ldflags") then - return {"-L-rpath", "-L" .. (dir:gsub("%$ORIGIN", "@loader_path"))} + if not self:is_plat("windows") then + dir = path.translate(dir) + if self:has_flags("-L-rpath=" .. dir, "ldflags") then + return {"-L-rpath=" .. (dir:gsub("@[%w_]+", function (name) + local maps = {["@loader_path"] = "$ORIGIN", ["@executable_path"] = "$ORIGIN"} + return maps[name] + end))} + elseif self:has_flags("-L-rpath -L" .. dir, "ldflags") then + return {"-L-rpath", "-L" .. (dir:gsub("%$ORIGIN", "@loader_path"))} + end end end -- cgit v1.3.1