mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-10-10 08:46:40 +00:00
124 lines
2.9 KiB
Lua
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
|