|
|
|
@ -2,21 +2,22 @@ package("verilator") |
|
|
|
|
set_kind("toolchain") |
|
|
|
|
set_homepage("https://verilator.org") |
|
|
|
|
set_description("Verilator open-source SystemVerilog simulator and lint system") |
|
|
|
|
set_license("LGPL-3.0") |
|
|
|
|
|
|
|
|
|
add_urls("https://github.com/verilator/verilator/archive/refs/tags/$(version).tar.gz") |
|
|
|
|
add_urls("https://github.com/verilator/verilator.git") |
|
|
|
|
add_urls("https://github.com/verilator/verilator/archive/refs/tags/$(version).tar.gz", |
|
|
|
|
"https://github.com/verilator/verilator.git") |
|
|
|
|
|
|
|
|
|
add_versions("v5.016", "66fc36f65033e5ec904481dd3d0df56500e90c0bfca23b2ae21b4a8d39e05ef1") |
|
|
|
|
add_versions("v5.030", "b9e7e97257ca3825fcc75acbed792b03c3ec411d6808ad209d20917705407eac") |
|
|
|
|
|
|
|
|
|
add_deps("cmake") |
|
|
|
|
|
|
|
|
|
on_load(function (package) |
|
|
|
|
if not package:is_precompiled() then |
|
|
|
|
if package:is_plat("windows") then |
|
|
|
|
package:add("deps", "cmake") |
|
|
|
|
package:add("deps", "winflexbison", {kind = "library"}) |
|
|
|
|
else |
|
|
|
|
package:add("deps", "flex", {kind = "library"}) |
|
|
|
|
package:add("deps", "bison") |
|
|
|
|
package:add("deps", "autoconf", "automake", "libtool") |
|
|
|
|
end |
|
|
|
|
package:add("deps", "python 3.x", {kind = "binary"}) |
|
|
|
|
end |
|
|
|
@ -24,41 +25,34 @@ package("verilator") |
|
|
|
|
package:addenv("VERILATOR_ROOT", ".") |
|
|
|
|
end) |
|
|
|
|
|
|
|
|
|
on_install("windows", function (package) |
|
|
|
|
on_install(function (package) |
|
|
|
|
import("package.tools.cmake") |
|
|
|
|
local configs = {} |
|
|
|
|
local cxflags = {} |
|
|
|
|
local winflexbison = package:dep("winflexbison") |
|
|
|
|
local flex = winflexbison:fetch() |
|
|
|
|
if flex then |
|
|
|
|
local includedirs = flex.sysincludedirs or flex.includedirs |
|
|
|
|
for _, includedir in ipairs(includedirs) do |
|
|
|
|
table.insert(cxflags, "-I" .. includedir) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
io.replace("src/CMakeLists.txt", "MSVC_RUNTIME_LIBRARY MultiThreaded$<IF:$<CONFIG:Release>,,DebugDLL>", "", {plain = true}) |
|
|
|
|
|
|
|
|
|
local configs = {"-DOBJCACHE_ENABLED=OFF", "-DDEBUG_AND_RELEASE_AND_COVERAGE=OFF"} |
|
|
|
|
table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release")) |
|
|
|
|
table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF")) |
|
|
|
|
|
|
|
|
|
local opt = {} |
|
|
|
|
opt.envs = cmake.buildenvs(package) |
|
|
|
|
if package:is_plat("windows") then |
|
|
|
|
table.insert(configs, "-DCMAKE_COMPILE_PDB_OUTPUT_DIRECTORY=''") |
|
|
|
|
opt.envs.WIN_FLEX_BISON = package:dep("winflexbison"):installdir("include") |
|
|
|
|
end |
|
|
|
|
local envs = cmake.buildenvs(package) |
|
|
|
|
envs.VERILATOR_ROOT = nil |
|
|
|
|
envs.WIN_FLEX_BISON = winflexbison:installdir() |
|
|
|
|
io.replace("src/CMakeLists.txt", '${ASTGEN} -I"${srcdir}"', '${ASTGEN} -I "${srcdir}"', {plain = true}) |
|
|
|
|
cmake.install(package, configs, {envs = envs, cxflags = cxflags}) |
|
|
|
|
os.cp(path.join(package:installdir("bin"), "verilator_bin.exe"), path.join(package:installdir("bin"), "verilator.exe")) |
|
|
|
|
end) |
|
|
|
|
cmake.install(package, configs, opt) |
|
|
|
|
|
|
|
|
|
on_install("linux", "macosx", function (package) |
|
|
|
|
import("package.tools.autoconf") |
|
|
|
|
local configs = {} |
|
|
|
|
local cxflags = {} |
|
|
|
|
local flex = package:dep("flex"):fetch() |
|
|
|
|
if flex then |
|
|
|
|
local includedirs = flex.sysincludedirs or flex.includedirs |
|
|
|
|
for _, includedir in ipairs(includedirs) do |
|
|
|
|
table.insert(cxflags, "-I" .. includedir) |
|
|
|
|
local bindir = package:installdir("bin") |
|
|
|
|
local subfix = (is_host("windows") and ".exe" or "") |
|
|
|
|
local verilator = path.join(bindir, "verilator" .. subfix) |
|
|
|
|
if not os.isfile(verilator) then |
|
|
|
|
local verilator_bin = "verilator_bin" |
|
|
|
|
if package:is_debug() then |
|
|
|
|
verilator_bin = verilator_bin .. "_dbg" |
|
|
|
|
end |
|
|
|
|
verilator_bin = path.join(bindir, verilator_bin .. subfix) |
|
|
|
|
os.trycp(verilator_bin, verilator) |
|
|
|
|
end |
|
|
|
|
os.vrun("autoconf") |
|
|
|
|
local envs = autoconf.buildenvs(package, {cxflags = cxflags}) |
|
|
|
|
envs.VERILATOR_ROOT = nil |
|
|
|
|
autoconf.install(package, configs, {envs = envs}) |
|
|
|
|
end) |
|
|
|
|
|
|
|
|
|
on_test(function (package) |
|
|
|
|