summaryrefslogtreecommitdiff
path: root/xmake
diff options
context:
space:
mode:
authorruki <[email protected]>2023-12-12 14:22:23 +0800
committerGitHub <[email protected]>2023-12-12 14:22:23 +0800
commitba0ce32c4aa16fee4fb78e52ca172a1ade421c8e (patch)
tree367dcb937c9523f6bdfbc6481c2a7cae159ada9f /xmake
parent818bc24a309ea3559c2ffa4f5035d66f8af602b4 (diff)
parentb69f77d19a8eae5251968bad1703d21ea9b39f9b (diff)
Merge pull request #4484 from tokomine/swig_includedirs
add includedirs for swig
Diffstat (limited to 'xmake')
-rw-r--r--xmake/rules/swig/build_module_file.lua26
1 files changed, 23 insertions, 3 deletions
diff --git a/xmake/rules/swig/build_module_file.lua b/xmake/rules/swig/build_module_file.lua
index 42c9d9238..2599834ae 100644
--- a/xmake/rules/swig/build_module_file.lua
+++ b/xmake/rules/swig/build_module_file.lua
@@ -22,11 +22,11 @@
import("lib.detect.find_tool")
function main(target, batchcmds, sourcefile, opt)
-
-- get swig
opt = opt or {}
local swig = assert(find_tool("swig"), "swig not found!")
- local sourcefile_cx = path.join(target:autogendir(), "rules", "swig", path.basename(sourcefile) .. (opt.sourcekind == "cxx" and ".cpp" or ".c"))
+ local sourcefile_cx = path.join(target:autogendir(), "rules", "swig",
+ path.basename(sourcefile) .. (opt.sourcekind == "cxx" and ".cpp" or ".c"))
-- add objectfile
local objectfile = target:objectfile(sourcefile_cx)
@@ -34,7 +34,7 @@ function main(target, batchcmds, sourcefile, opt)
-- add commands
local moduletype = assert(target:data("swig.moduletype"), "swig.moduletype not found!")
- local argv = {"-" .. moduletype, "-o", sourcefile_cx}
+ local argv = { "-" .. moduletype, "-o", sourcefile_cx }
if opt.sourcekind == "cxx" then
table.insert(argv, "-c++")
end
@@ -42,6 +42,26 @@ function main(target, batchcmds, sourcefile, opt)
if fileconfig.swigflags then
table.join2(argv, fileconfig.swigflags)
end
+
+ -- add includedirs
+ local function _get_values_from_target(target, name)
+ local values = {}
+ for _, value in ipairs((target:get_from(name, "*"))) do
+ table.join2(values, value)
+ end
+ return table.unique(values)
+ end
+ local pathmaps = {
+ { "includedirs", "includedir" },
+ { "sysincludedirs", "includedir" },
+ { "frameworkdirs", "frameworkdir" }
+ }
+ for _, pathmap in ipairs(pathmaps) do
+ for _, item in ipairs(_get_values_from_target(target, pathmap[1])) do
+ table.join2(argv, "-I" .. item)
+ end
+ end
+
table.insert(argv, sourcefile)
batchcmds:show_progress(opt.progress, "${color.build.object}compiling.swig.%s %s", moduletype, sourcefile)
batchcmds:mkdir(path.directory(sourcefile_cx))