|
|
|
@ -31,7 +31,7 @@ package("msvc") |
|
|
|
|
on_load(function (package) |
|
|
|
|
if not package:is_precompiled() then |
|
|
|
|
if is_host("windows") then |
|
|
|
|
package:add("deps", "portablebuildtools") |
|
|
|
|
package:add("deps", "portable_build_tools") |
|
|
|
|
elseif is_host("linux") then |
|
|
|
|
-- TODO use msvc-wine |
|
|
|
|
end |
|
|
|
@ -52,22 +52,35 @@ package("msvc") |
|
|
|
|
|
|
|
|
|
on_install("@windows", "@msys", function (package) |
|
|
|
|
import("core.base.semver") |
|
|
|
|
local argv = {"accept_license"} |
|
|
|
|
local sdkver = semver.new(package:config("sdkver") or "10.0.26100") |
|
|
|
|
if package:config("preview") then |
|
|
|
|
table.insert(argv, "preview") |
|
|
|
|
end |
|
|
|
|
table.insert(argv, "msvc=" .. package:version_str():replace("+", ".", {plain = true})) |
|
|
|
|
table.insert(argv, "sdk=" .. sdkver:patch()) |
|
|
|
|
table.insert(argv, "host=" .. os.arch()) |
|
|
|
|
table.insert(argv, "env=none") |
|
|
|
|
table.insert(argv, "path=" .. package:installdir()) |
|
|
|
|
table.insert(argv, "target=" .. (package:config("target") or os.arch())) |
|
|
|
|
|
|
|
|
|
-- @note It downloads the official binary source |
|
|
|
|
-- https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/ |
|
|
|
|
-- https://github.com/Data-Oriented-House/PortableBuildTools/blob/3a2cd42b1de75da63ad30a55982d8dff3c36aa45/source.c#L724 |
|
|
|
|
os.vrunv("PortableBuildTools.exe", argv) |
|
|
|
|
-- get confirm result |
|
|
|
|
local result = utils.confirm({description = function () |
|
|
|
|
cprint("${bright color.warning}note: ${clear}Do you accept the license agreement for installing msvc build toolchain?") |
|
|
|
|
cprint(" https://go.microsoft.com/fwlink/?LinkId=2179911") |
|
|
|
|
end, answer = function () |
|
|
|
|
cprint("please input: ${bright}y${clear} (y/n)") |
|
|
|
|
io.flush() |
|
|
|
|
return (io.read() or "n"):trim() |
|
|
|
|
end}) |
|
|
|
|
|
|
|
|
|
if result and result ~= "n" then |
|
|
|
|
local argv = {"accept_license"} |
|
|
|
|
local sdkver = semver.new(package:config("sdkver") or "10.0.26100") |
|
|
|
|
if package:config("preview") then |
|
|
|
|
table.insert(argv, "preview") |
|
|
|
|
end |
|
|
|
|
table.insert(argv, "msvc=" .. package:version_str():replace("+", ".", {plain = true})) |
|
|
|
|
table.insert(argv, "sdk=" .. sdkver:patch()) |
|
|
|
|
table.insert(argv, "host=" .. os.arch()) |
|
|
|
|
table.insert(argv, "env=none") |
|
|
|
|
table.insert(argv, "path=" .. package:installdir()) |
|
|
|
|
table.insert(argv, "target=" .. (package:config("target") or os.arch())) |
|
|
|
|
|
|
|
|
|
-- @note It downloads the official binary source |
|
|
|
|
-- https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/ |
|
|
|
|
-- https://github.com/Data-Oriented-House/PortableBuildTools/blob/3a2cd42b1de75da63ad30a55982d8dff3c36aa45/source.c#L724 |
|
|
|
|
os.vrunv("PortableBuildTools.exe", argv) |
|
|
|
|
end |
|
|
|
|
end) |
|
|
|
|
|
|
|
|
|
on_test(function (package) |
|
|
|
|