summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-01-05 23:44:21 +0800
committerruki <[email protected]>2024-01-05 23:44:21 +0800
commitf5a802f8d035c19068e4f52eecea638f10a06a4a (patch)
treeabe92fc1b0c639c5bd738dc33454ca71ff9a41a9
parent8a9f894ca802957b9032042183f902293ee38481 (diff)
add frameworks for dlang
-rw-r--r--xmake/languages/dlang/load.lua6
-rw-r--r--xmake/languages/dlang/xmake.lua18
-rw-r--r--xmake/modules/core/tools/dmd.lua14
3 files changed, 38 insertions, 0 deletions
diff --git a/xmake/languages/dlang/load.lua b/xmake/languages/dlang/load.lua
index f11fd8005..a4b299f85 100644
--- a/xmake/languages/dlang/load.lua
+++ b/xmake/languages/dlang/load.lua
@@ -28,6 +28,7 @@ function _get_apis()
, "target.add_ldflags"
, "target.add_arflags"
, "target.add_shflags"
+ , "target.add_frameworks"
, "target.add_rpathdirs" -- @note do not translate path, it's usually an absolute path or contains $ORIGIN/@loader_path
-- option.add_xxx
, "option.add_links"
@@ -36,6 +37,7 @@ function _get_apis()
, "option.add_ldflags"
, "option.add_arflags"
, "option.add_shflags"
+ , "option.add_frameworks"
, "option.add_rpathdirs"
-- package.add_xxx
, "package.add_links"
@@ -44,10 +46,12 @@ function _get_apis()
, "package.add_ldflags"
, "package.add_arflags"
, "package.add_shflags"
+ , "package.add_frameworks"
, "package.add_rpathdirs"
, "package.add_linkdirs"
, "package.add_includedirs"
, "package.add_sysincludedirs"
+ , "package.add_frameworkdirs"
-- toolchain.add_xxx
, "toolchain.add_links"
, "toolchain.add_syslinks"
@@ -55,10 +59,12 @@ function _get_apis()
, "toolchain.add_ldflags"
, "toolchain.add_arflags"
, "toolchain.add_shflags"
+ , "toolchain.add_frameworks"
, "toolchain.add_rpathdirs"
, "toolchain.add_linkdirs"
, "toolchain.add_includedirs"
, "toolchain.add_sysincludedirs"
+ , "toolchain.add_frameworkdirs"
}
apis.groups = {
-- target.add_xxx
diff --git a/xmake/languages/dlang/xmake.lua b/xmake/languages/dlang/xmake.lua
index d6b4be932..4464028f4 100644
--- a/xmake/languages/dlang/xmake.lua
+++ b/xmake/languages/dlang/xmake.lua
@@ -33,41 +33,59 @@ language("dlang")
set_nameflags {
object = {
"config.includedirs"
+ , "config.frameworkdirs"
+ , "config.frameworks"
, "target.symbols"
, "target.warnings"
, "target.optimize:check"
, "target.vectorexts:check"
, "target.includedirs"
+ , "target.frameworkdirs"
+ , "target.frameworks"
, "toolchain.includedirs"
, "target.sysincludedirs"
, "toolchain.sysincludedirs"
+ , "toolchain.frameworkdirs"
+ , "toolchain.frameworks"
}
, binary = {
"config.linkdirs"
+ , "config.frameworkdirs"
, "target.linkdirs"
+ , "target.frameworkdirs"
, "target.rpathdirs"
, "target.strip"
, "target.symbols"
, "toolchain.linkdirs"
, "toolchain.rpathdirs"
+ , "toolchain.frameworkdirs"
, "config.links"
, "target.links"
, "target.linkgroups"
, "toolchain.links"
+ , "config.frameworks"
+ , "target.frameworks"
+ , "toolchain.frameworks"
, "config.syslinks"
, "target.syslinks"
, "toolchain.syslinks"
}
, shared = {
"config.linkdirs"
+ , "config.frameworkdirs"
, "target.linkdirs"
+ , "target.frameworkdirs"
, "target.strip"
, "target.symbols"
, "toolchain.linkdirs"
+ , "toolchain.frameworkdirs"
, "config.links"
, "target.links"
, "target.linkgroups"
, "toolchain.links"
+ , "config.frameworks"
+ , "target.frameworks"
+ , "toolchain.frameworks"
, "config.syslinks"
, "target.syslinks"
, "toolchain.syslinks"
diff --git a/xmake/modules/core/tools/dmd.lua b/xmake/modules/core/tools/dmd.lua
index 8be22bf97..182c2ce04 100644
--- a/xmake/modules/core/tools/dmd.lua
+++ b/xmake/modules/core/tools/dmd.lua
@@ -143,6 +143,20 @@ function nf_linkdir(self, dir)
end
end
+-- make the framework flag
+function nf_framework(self, framework)
+ if self:is_plat("macosx") then
+ return {"-L-framework", "-L" .. framework}
+ end
+end
+
+-- make the frameworkdir flag
+function nf_frameworkdir(self, frameworkdir)
+ if self:is_plat("macosx") then
+ return {"-L-F" .. path.translate(frameworkdir)}
+ end
+end
+
-- make the rpathdir flag
function nf_rpathdir(self, dir)
if not self:is_plat("windows") then