summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xmake/plugins/project/ninja/build_ninja.lua23
1 files changed, 17 insertions, 6 deletions
diff --git a/xmake/plugins/project/ninja/build_ninja.lua b/xmake/plugins/project/ninja/build_ninja.lua
index 728c69d72..fd3280b43 100644
--- a/xmake/plugins/project/ninja/build_ninja.lua
+++ b/xmake/plugins/project/ninja/build_ninja.lua
@@ -74,14 +74,25 @@ end
-- translate compiler flags
function _translate_compflags(compflags, outputdir)
local flags = {}
+ local last_flag = nil;
for _, flag in ipairs(compflags) do
- for _, pattern in ipairs({"[%-](I)(.*)", "[%-](isystem)(.*)"}) do
- flag = flag:gsub(pattern, function (flag, dir)
- dir = _get_relative_unix_path(dir, outputdir)
- return "-" .. flag .. dir
- end)
+ if flag == "-I" or flag == "-isystem" then
+ last_flag = flag
+ else
+ if last_flag == "-I" or last_flag == "-isystem" then
+ table.insert(flags, last_flag)
+ flag = _get_relative_unix_path(flag, outputdir)
+ else
+ last_flag = flag
+ for _, pattern in ipairs({"[%-](I)(.*)", "[%-](isystem)(.*)"}) do
+ flag = flag:gsub(pattern, function (flag, dir)
+ dir = _get_relative_unix_path(dir, outputdir)
+ return "-" .. flag .. dir
+ end)
+ end
+ end
+ table.insert(flags, flag)
end
- table.insert(flags, flag)
end
return flags
end