Merge pull request #22 from mono/improved-build
Added support for the build running with the wrong VS version from GYP
This commit is contained in:
Коммит
4fa751314a
58
build.cake
58
build.cake
|
@ -1,6 +1,8 @@
|
||||||
#addin "Cake.Xamarin"
|
#addin "Cake.Xamarin"
|
||||||
#addin "Cake.XCode"
|
#addin "Cake.XCode"
|
||||||
|
#addin "Cake.FileHelpers"
|
||||||
|
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
@ -142,6 +144,19 @@ var RunMdocUpdate = new Action<FilePath, DirectoryPath> ((assembly, docsRoot) =>
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var ProcessSolutionProjects = new Action<FilePath, Action<string, FilePath>> ((solutionFilePath, process) => {
|
||||||
|
var solutionFile = MakeAbsolute (solutionFilePath).FullPath;
|
||||||
|
foreach (var line in FileReadLines (solutionFile)) {
|
||||||
|
var match = Regex.Match (line, @"Project\(""(?<type>.*)""\) = ""(?<name>.*)"", ""(?<path>.*)"", "".*""");
|
||||||
|
if (match.Success && match.Groups ["type"].Value == "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") {
|
||||||
|
var path = match.Groups["path"].Value;
|
||||||
|
var projectFilePath = MakeAbsolute (solutionFilePath.GetDirectory ().CombineWithFilePath (path));
|
||||||
|
Information ("Processing project file: " + projectFilePath);
|
||||||
|
process (match.Groups["name"].Value, projectFilePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// EXTERNALS - the native C and C++ libraries
|
// EXTERNALS - the native C and C++ libraries
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -208,7 +223,7 @@ Task ("externals-windows")
|
||||||
.Does (() =>
|
.Does (() =>
|
||||||
{
|
{
|
||||||
var fixup = new Action (() => {
|
var fixup = new Action (() => {
|
||||||
var props = SKIA_PATH.Combine ("out/gyp/libjpeg-turbo.props").FullPath;
|
var props = SKIA_PATH.CombineWithFilePath ("out/gyp/libjpeg-turbo.props").FullPath;
|
||||||
var xdoc = XDocument.Load (props);
|
var xdoc = XDocument.Load (props);
|
||||||
var ns = (XNamespace) "http://schemas.microsoft.com/developer/msbuild/2003";
|
var ns = (XNamespace) "http://schemas.microsoft.com/developer/msbuild/2003";
|
||||||
var temp = xdoc.Root
|
var temp = xdoc.Root
|
||||||
|
@ -222,36 +237,27 @@ Task ("externals-windows")
|
||||||
xdoc.Save (props);
|
xdoc.Save (props);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var buildArch = new Action<string, string, string> ((platform, skiaArch, dir) => {
|
||||||
|
SetEnvironmentVariable ("GYP_DEFINES", "skia_arch_type='" + skiaArch + "'");
|
||||||
|
RunGyp ();
|
||||||
|
fixup ();
|
||||||
|
DotNetBuild ("native-builds/libskia_windows/libskia_windows_" + dir + ".sln", c => {
|
||||||
|
c.Configuration = "Release";
|
||||||
|
c.Properties ["Platform"] = new [] { platform };
|
||||||
|
});
|
||||||
|
if (!DirectoryExists ("native-builds/lib/windows/" + dir)) CreateDirectory ("native-builds/lib/windows/" + dir);
|
||||||
|
CopyFileToDirectory ("native-builds/libskia_windows/Release/libskia_windows.lib", "native-builds/lib/windows/" + dir);
|
||||||
|
CopyFileToDirectory ("native-builds/libskia_windows/Release/libskia_windows.dll", "native-builds/lib/windows/" + dir);
|
||||||
|
CopyFileToDirectory ("native-builds/libskia_windows/Release/libskia_windows.pdb", "native-builds/lib/windows/" + dir);
|
||||||
|
});
|
||||||
|
|
||||||
// set up the gyp environment variables
|
// set up the gyp environment variables
|
||||||
AppendEnvironmentVariable ("PATH", DEPOT_PATH.FullPath);
|
AppendEnvironmentVariable ("PATH", DEPOT_PATH.FullPath);
|
||||||
SetEnvironmentVariable ("GYP_GENERATORS", "ninja,msvs");
|
SetEnvironmentVariable ("GYP_GENERATORS", "ninja,msvs");
|
||||||
|
|
||||||
// build the x86 vesion
|
buildArch ("Win32", "x86", "x86");
|
||||||
SetEnvironmentVariable ("GYP_DEFINES", "skia_arch_type='x86'");
|
buildArch ("x64", "x86_64", "x64");
|
||||||
RunGyp ();
|
|
||||||
fixup ();
|
|
||||||
DotNetBuild ("native-builds/libskia_windows/libskia_windows_x86.sln", c => {
|
|
||||||
c.Configuration = "Release";
|
|
||||||
c.Properties ["Platform"] = new [] { "Win32" };
|
|
||||||
});
|
|
||||||
if (!DirectoryExists ("native-builds/lib/windows/x86")) CreateDirectory ("native-builds/lib/windows/x86");
|
|
||||||
CopyFileToDirectory ("native-builds/libskia_windows/Release/libskia_windows.lib", "native-builds/lib/windows/x86");
|
|
||||||
CopyFileToDirectory ("native-builds/libskia_windows/Release/libskia_windows.dll", "native-builds/lib/windows/x86");
|
|
||||||
CopyFileToDirectory ("native-builds/libskia_windows/Release/libskia_windows.pdb", "native-builds/lib/windows/x86");
|
|
||||||
|
|
||||||
// build the x64 vesion
|
|
||||||
SetEnvironmentVariable ("GYP_DEFINES", "skia_arch_type='x86_64'");
|
|
||||||
RunGyp ();
|
|
||||||
fixup ();
|
|
||||||
DotNetBuild ("native-builds/libskia_windows/libskia_windows_x64.sln", c => {
|
|
||||||
c.Configuration = "Release";
|
|
||||||
c.Properties ["Platform"] = new [] { "x64" };
|
|
||||||
});
|
|
||||||
if (!DirectoryExists ("native-builds/lib/windows/x64")) CreateDirectory ("native-builds/lib/windows/x64");
|
|
||||||
CopyFileToDirectory ("native-builds/libskia_windows/Release/libskia_windows.lib", "native-builds/lib/windows/x64");
|
|
||||||
CopyFileToDirectory ("native-builds/libskia_windows/Release/libskia_windows.dll", "native-builds/lib/windows/x64");
|
|
||||||
CopyFileToDirectory ("native-builds/libskia_windows/Release/libskia_windows.pdb", "native-builds/lib/windows/x64");
|
|
||||||
});
|
});
|
||||||
// this builds the native C and C++ externals for Mac OS X
|
// this builds the native C and C++ externals for Mac OS X
|
||||||
Task ("externals-osx")
|
Task ("externals-osx")
|
||||||
|
|
Загрузка…
Ссылка в новой задаче