diff options
| -rw-r--r-- | xmake/plugins/project/clang/compile_commands.lua | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/xmake/plugins/project/clang/compile_commands.lua b/xmake/plugins/project/clang/compile_commands.lua index ad21cff51..e0e92f17e 100644 --- a/xmake/plugins/project/clang/compile_commands.lua +++ b/xmake/plugins/project/clang/compile_commands.lua @@ -20,6 +20,7 @@ -- imports import("core.base.option") +import("core.base.hashset") import("core.tool.compiler") import("core.project.rule") import("core.project.project") @@ -46,6 +47,16 @@ function _sourcebatch_is_built(sourcebatch) end end +-- Is there other supported source file, which come from custom rules? +function _is_other_sourcefile(sourcefile) + local extensions = _g._other_supported_exts + if extensions == nil then + extensions = hashset.from({".v", ".sv"}) + _g._other_supported_exts = extensions + end + return extensions:has(path.extension(sourcefile)) +end + -- get LSP, clangd, ccls, ... function _get_lsp() local lsp = option.get("lsp") @@ -154,6 +165,10 @@ function _make_arguments(jsonfile, arguments, opt) local sourcekind = try {function () return language.sourcekind_of(path.filename(arg)) end} if sourcekind and os.isfile(arg) then sourcefile = tostring(arg) + elseif _is_other_sourcefile(arg) and os.isfile(arg) then + sourcefile = tostring(arg) + end + if sourcefile then break end end |
