2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-10-10 08:46:40 +00:00
Files
OpenAssetTools/thirdparty/webview.lua
2025-10-07 20:58:03 +01:00

124 lines
2.9 KiB
Lua

webview = {}
function webview:include(includes)
if includes:handle(self:name()) then
includedirs {
path.join(ThirdPartyFolder(), "webview/core/include"),
path.join(self:msWebviewDir(), "build/native/include")
}
end
end
function webview:link(links)
if os.host() == "windows" then
links:add("WebView2LoaderStatic")
filter "platforms:x86"
libdirs {
path.join(self:msWebviewDir(), "build/native/x86")
}
filter {}
filter "platforms:x64"
libdirs {
path.join(self:msWebviewDir(), "build/native/x64")
}
filter {}
end
links:add(self:name())
end
function webview:use()
end
function webview:name()
return "webview"
end
function webview:project()
local folder = ThirdPartyFolder()
local includes = Includes:create()
project(self:name())
targetdir(TargetDirectoryLib)
location "%{wks.location}/thirdparty/%{prj.name}"
kind "StaticLib"
language "C++"
files {
path.join(folder, "webview/core/include/**.h"),
path.join(folder, "webview/core/include/**.hh"),
path.join(folder, "webview/core/src/**.cc")
}
defines {
"WEBVIEW_STATIC"
}
if os.host() == "windows" then
self:installWebview2()
end
filter { "system:linux", "action:gmake" }
buildoptions { "`pkg-config --cflags gtk4 webkitgtk-6.0`" }
linkoptions { "`pkg-config --libs gtk4 webkitgtk-6.0`" }
filter {}
self:include(includes)
-- Disable warnings. They do not have any value to us since it is not our code.
warnings "off"
end
function webview:msWebviewDir()
return path.join(BuildFolder(), "thirdparty/ms-webview2")
end
function webview:installWebview2()
local version = "1.0.3485.44"
local webviewDir = self:msWebviewDir()
local versionFile = path.join(webviewDir, "ms-webview2.txt")
local nuspecFile = path.join(webviewDir, "Microsoft.Web.WebView2.nuspec")
local nupkgFile = path.join(webviewDir, "microsoft.web.webview2.nupkg.zip")
local url = "https://www.nuget.org/api/v2/package/Microsoft.Web.WebView2/" .. version
if not os.isdir(webviewDir) then
os.mkdir(webviewDir)
end
local installedVersion = io.readfile(versionFile)
if installedVersion == version and os.isfile(nuspecFile) then
return
end
function progress(total, current)
local ratio = current / total;
ratio = math.min(math.max(ratio, 0), 1);
local percent = math.floor(ratio * 100);
io.write("\rDownload progress (" .. percent .. "%/100%)")
end
print("Downloading Microsoft.Web.WebView2 " .. version .. "...")
local result_str, response_code = http.download(url, nupkgFile, {
progress = progress
})
io.write("\n")
if result_str ~= "OK" then
premake.error("Failed to download Microsoft.Web.WebView2")
end
-- local hash = string.sha1(io.readfile(nupkgFile))
-- print(hash)
print("Extracting Microsoft.Web.WebView2 " .. version .. "...")
zip.extract(nupkgFile, webviewDir)
os.remove(nupkgFile)
io.writefile(versionFile, version)
end