diff options
| author | ruki <[email protected]> | 2025-01-22 22:47:52 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-01-22 22:47:52 +0800 |
| commit | 802c9bbde22865c771af25a249cfdf398a74eecd (patch) | |
| tree | 082e7bff8b01986532b4e641df2bdfe8a5d7ff92 | |
| parent | d60da40098164a7a46b21ccd3ad2cfc4fab2ffd9 (diff) | |
| parent | 4cdbc3d94ddbb3f0bb7d7633a8b5f1d5b3c37a2a (diff) | |
Merge pull request #5635 from xmake-io/compdb
support verilator for compdb
| -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 |
