mirror of https://github.com/mono/CppSharp.git
c-sharpdotnetmonobindingsbridgecclangcpluspluscppsharpglueinteropparserparsingpinvokeswigsyntax-treevisitorsxamarinxamarin-bindings
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
2.6 KiB
117 lines
2.6 KiB
require "Utils" |
|
|
|
function download_ninja() |
|
local system = ""; |
|
if os.ishost("windows") then |
|
system = "win" |
|
elseif os.ishost("macosx") then |
|
system = "mac" |
|
elseif os.ishost("linux") then |
|
system = "linux" |
|
else |
|
error("Error downloading Ninja for unknown system") |
|
end |
|
|
|
local url = "https://github.com/ninja-build/ninja/releases/download/v1.6.0/ninja-" .. system .. ".zip" |
|
local file = "ninja.zip" |
|
|
|
if not os.isfile(file) then |
|
download(url, file) |
|
end |
|
|
|
if os.isfile(file) then |
|
print("Extracting file " .. file) |
|
zip.extract(file, "ninja") |
|
end |
|
end |
|
|
|
function download_cmake() |
|
local system = ""; |
|
if os.ishost("windows") then |
|
system = "win32-x86.zip" |
|
elseif os.ishost("macosx") then |
|
system = "Darwin-x86_64.dmg" |
|
elseif os.ishost("linux") then |
|
system = "Linux-x86_64.sh" |
|
else |
|
error("Error downloading CMake for unknown system") |
|
end |
|
|
|
local base = "cmake-3.8.2-" |
|
local file = base .. system |
|
|
|
local url = "https://cmake.org/files/v3.8/" .. file |
|
|
|
if not os.isfile(file) then |
|
download(url, file) |
|
end |
|
|
|
return file |
|
end |
|
|
|
function download_nuget() |
|
if not os.isfile("nuget.exe") then |
|
download("https://nuget.org/nuget.exe", "nuget.exe") |
|
end |
|
end |
|
|
|
function restore_nuget_packages() |
|
local nugetexe = os.ishost("windows") and "NuGet.exe" or "mono ./NuGet.exe" |
|
execute(nugetexe .. " restore packages.config -PackagesDirectory " .. depsdir) |
|
end |
|
|
|
local compile_llvm = is_vagrant() |
|
|
|
function provision_linux() |
|
-- Add Repos |
|
sudo("apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF") |
|
sudo("echo \"deb http://download.mono-project.com/repo/ubuntu xenial main\" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list") |
|
|
|
sudo("apt-get update") |
|
|
|
-- Build tools |
|
sudo("apt-get install -y git build-essential clang") |
|
|
|
-- Mono |
|
sudo("apt-get install -y mono-devel") |
|
|
|
-- LLVM/Clang build tools |
|
if compile_llvm then |
|
sudo("apt-get install -y ninja-build") |
|
local file = download_cmake() |
|
sudo("mkdir -p /opt/cmake") |
|
sudo("bash " .. file .. " --prefix=/opt/cmake --skip-license") |
|
sudo("ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake") |
|
end |
|
end |
|
|
|
function brew_install(pkg) |
|
-- check if package is already installed |
|
local res = outputof("brew ls --versions " .. pkg) |
|
if string.is_empty(res) then |
|
execute("brew install " .. pkg) |
|
end |
|
end |
|
|
|
function provision_osx() |
|
if compile_llvm then |
|
execute("brew cask install virtualbox vagrant") |
|
end |
|
download_cmake() |
|
end |
|
|
|
if _ACTION == "cmake" then |
|
download_cmake() |
|
os.exit() |
|
end |
|
|
|
if _ACTION == "provision" then |
|
if os.ishost("linux") then |
|
provision_linux() |
|
elseif os.ishost("macosx") then |
|
provision_osx() |
|
end |
|
os.exit() |
|
end |
|
|
|
|
|
|