diff options
| -rw-r--r-- | tests/projects/dlang/shared_library/src/interfaces.d | 13 | ||||
| -rw-r--r-- | 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 |
