summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-01-22 22:47:52 +0800
committerGitHub <[email protected]>2025-01-22 22:47:52 +0800
commit802c9bbde22865c771af25a249cfdf398a74eecd (patch)
tree082e7bff8b01986532b4e641df2bdfe8a5d7ff92
parentd60da40098164a7a46b21ccd3ad2cfc4fab2ffd9 (diff)
parent4cdbc3d94ddbb3f0bb7d7633a8b5f1d5b3c37a2a (diff)
Merge pull request #5635 from xmake-io/compdb
support verilator for compdb
-rw-r--r--xmake/plugins/project/clang/compile_commands.lua15
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