diff options
| author | ruki <[email protected]> | 2023-12-12 14:22:23 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-12-12 14:22:23 +0800 |
| commit | ba0ce32c4aa16fee4fb78e52ca172a1ade421c8e (patch) | |
| tree | 367dcb937c9523f6bdfbc6481c2a7cae159ada9f /xmake | |
| parent | 818bc24a309ea3559c2ffa4f5035d66f8af602b4 (diff) | |
| parent | b69f77d19a8eae5251968bad1703d21ea9b39f9b (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.lua | 26 |
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)) |
