summaryrefslogtreecommitdiff
path: root/xmake/rules
diff options
context:
space:
mode:
authorruki <[email protected]>2025-04-07 22:29:36 +0800
committerGitHub <[email protected]>2025-04-07 22:29:36 +0800
commit27ddfdbacc8e4aa63b014586a8326f453541ebca (patch)
tree40a260c16c8d82fd0d988112499454f63f7db5ed /xmake/rules
parenta5cf700f8d01fea3b9e19523a024698cb35cb9d5 (diff)
parentc4d40d3641dc2d2219e41deb9d6482f87e082ffb (diff)
Merge pull request #6281 from TimeKeepper/verilator
feat(verilator): Support Verilator target build to shared library
Diffstat (limited to 'xmake/rules')
-rw-r--r--xmake/rules/verilator/xmake.lua26
1 files changed, 26 insertions, 0 deletions
diff --git a/xmake/rules/verilator/xmake.lua b/xmake/rules/verilator/xmake.lua
index 76d213096..4e6f49397 100644
--- a/xmake/rules/verilator/xmake.lua
+++ b/xmake/rules/verilator/xmake.lua
@@ -73,3 +73,29 @@ rule("verilator.static")
import("verilator").buildcmd_cppfiles(target, batchcmds, sourcebatch, opt)
end)
+rule("verilator.shared")
+ add_deps("c++")
+ set_extensions(".v", ".sv")
+ on_load(function (target)
+ target:set("kind", "shared")
+ end)
+
+ on_config(function (target)
+ import("verilator").config(target)
+ end)
+
+ before_build_files(function (target, sourcebatch)
+ -- Just to avoid before_buildcmd_files being executed at build time
+ end)
+
+ on_build_files(function (target, batchjobs, sourcebatch, opt)
+ import("verilator").build_cppfiles(target, batchjobs, sourcebatch, opt)
+ end, {batch = true, distcc = true})
+
+ before_buildcmd_files(function(target, batchcmds, sourcebatch, opt)
+ import("verilator").buildcmd_vfiles(target, batchcmds, sourcebatch, opt)
+ end)
+
+ on_buildcmd_files(function (target, batchcmds, sourcebatch, opt)
+ import("verilator").buildcmd_cppfiles(target, batchcmds, sourcebatch, opt)
+ end)