diff options
| author | ruki <[email protected]> | 2024-01-05 23:44:21 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-01-05 23:44:21 +0800 |
| commit | f5a802f8d035c19068e4f52eecea638f10a06a4a (patch) | |
| tree | abe92fc1b0c639c5bd738dc33454ca71ff9a41a9 | |
| parent | 8a9f894ca802957b9032042183f902293ee38481 (diff) | |
add frameworks for dlang
| -rw-r--r-- | xmake/languages/dlang/load.lua | 6 | ||||
| -rw-r--r-- | xmake/languages/dlang/xmake.lua | 18 | ||||
| -rw-r--r-- | xmake/modules/core/tools/dmd.lua | 14 |
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 |
