GtkSharp/build.cake

162 lines
4 KiB
Plaintext
Raw Normal View History

2017-10-22 23:25:13 +00:00
#load CakeScripts\GAssembly.cs
#load CakeScripts\Settings.cs
2017-10-22 23:25:13 +00:00
#addin "Cake.FileHelpers"
#addin "Cake.Incubator"
2017-10-22 23:25:13 +00:00
// VARS
Settings.Cake = Context;
Settings.BuildTarget = Argument("BuildTarget", "Default");
Settings.Assembly = Argument("Assembly", "");
2017-10-22 23:25:13 +00:00
var msbuildsettings = new DotNetCoreMSBuildSettings();
var list = new List<GAssembly>();
2017-10-22 23:25:13 +00:00
var glist = new List<GAssembly>()
{
new GAssembly("GLibSharp")
{
NativeDeps = new[] {
"libglib-2.0.so.0", "libglib-2.0-0",
"libgobject-2.0.so.0", "libgobject-2.0-0",
"libgthread-2.0.so.0", "libgthread-2.0-0"
}
},
2017-10-22 23:25:13 +00:00
new GAssembly("GioSharp")
{
Deps = new[] { "GLibSharp" },
NativeDeps = new[] { "libgio-2.0.so.0", "libgio-2.0-0" }
2017-10-22 23:25:13 +00:00
},
new GAssembly("AtkSharp")
{
Deps = new[] { "GLibSharp" },
NativeDeps = new[] { "libatk-1.0.so.0", "libatk-1.0-0" },
2017-10-22 23:25:13 +00:00
ExtraArgs = "--abi-cs-usings=Atk,GLib"
},
2017-10-28 22:52:28 +00:00
new GAssembly("CairoSharp")
{
NativeDeps = new[] { "libcairo.so.2", "libcairo-2" }
},
2017-10-22 23:25:13 +00:00
new GAssembly("PangoSharp")
{
2017-10-28 22:52:28 +00:00
Deps = new[] { "GLibSharp", "CairoSharp" },
NativeDeps = new[] { "libpango-1.0.so.0", "libpango-1.0-0" }
2017-10-22 23:25:13 +00:00
},
new GAssembly("GdkSharp")
{
2017-10-28 22:52:28 +00:00
Deps = new[] { "GLibSharp", "GioSharp", "CairoSharp", "PangoSharp" },
NativeDeps = new[] {
"libgdk-3.so.0", "libgdk-3-0",
"libgdk_pixbuf-2.0.so.0", "libgdk_pixbuf-2.0-0"
}
2017-10-22 23:25:13 +00:00
},
new GAssembly("GtkSharp")
{
2017-10-28 22:52:28 +00:00
Deps = new[] { "GLibSharp", "GioSharp", "AtkSharp", "CairoSharp", "PangoSharp", "GdkSharp" },
NativeDeps = new[] { "libgtk-3.so.0", "libgtk-3-0" },
2017-10-22 23:25:13 +00:00
ExtraArgs = "--abi-cs-usings=Gtk,GLib"
}
};
// TASKS
Task("Init")
.Does(() =>
{
// Assign version
msbuildsettings = msbuildsettings.WithProperty("Version", "3.0.0.0");
msbuildsettings = msbuildsettings.WithProperty("Authors", "'GLibSharp Team'");
// Add stuff to list
foreach(var gassembly in glist)
if(string.IsNullOrEmpty(Settings.Assembly) || Settings.Assembly == gassembly.Name)
list.Add(gassembly);
});
2017-10-22 23:25:13 +00:00
Task("Prepare")
.IsDependentOn("Clean")
2017-10-22 23:25:13 +00:00
.Does(() =>
{
// Build tools
DotNetCoreRestore("Source/Tools/Tools.sln");
MSBuild("Source/Tools/Tools.sln", new MSBuildSettings {
2017-10-22 23:25:13 +00:00
Verbosity = Verbosity.Minimal,
Configuration = "Release",
});
// Generate code and prepare libs projects
foreach(var gassembly in list)
2017-10-22 23:25:13 +00:00
gassembly.Prepare();
2017-10-28 22:52:28 +00:00
DotNetCoreRestore("Source/Libs/GtkSharp.sln");
});
Task("GenerateLinuxStubs")
.IsDependentOn("Init")
.Does(() =>
{
CreateDirectory("BuildOutput/LinuxStubs");
FileWriteText("BuildOutput/LinuxStubs/empty.c", "");
foreach(var gassembly in list)
gassembly.GenerateLinuxStubs();
DeleteDirectory("BuildOutput/LinuxStubs", new DeleteDirectorySettings { Recursive = true, Force = true });
2017-10-22 23:25:13 +00:00
});
Task("Clean")
.IsDependentOn("Init")
2017-10-22 23:25:13 +00:00
.Does(() =>
{
foreach(var gassembly in list)
2017-10-22 23:25:13 +00:00
gassembly.Clean();
});
Task("FullClean")
.IsDependentOn("Clean")
.Does(() =>
{
DeleteDirectory("BuildOutput", true);
});
2017-10-22 23:25:13 +00:00
Task("Build")
.IsDependentOn("Prepare")
.Does(() =>
{
var settings = new DotNetCoreBuildSettings
2017-10-22 23:25:13 +00:00
{
Configuration = "Release",
MSBuildSettings = msbuildsettings
};
if (list.Count == glist.Count)
2017-10-28 22:52:28 +00:00
DotNetCoreBuild("Source/Libs/GtkSharp.sln", settings);
else
{
foreach(var gassembly in list)
DotNetCoreBuild(gassembly.Csproj, settings);
}
});
Task("PackageNuGet")
.IsDependentOn("Build")
.Does(() =>
{
var settings = new DotNetCorePackSettings
{
MSBuildSettings = msbuildsettings,
Configuration = "Release",
OutputDirectory = "BuildOutput/NugetPackages",
NoBuild = true,
};
foreach(var gassembly in list)
DotNetCorePack(gassembly.Csproj, settings);
2017-10-22 23:25:13 +00:00
});
// TASK TARGETS
Task("Default")
.IsDependentOn("Build");
// EXECUTION
RunTarget(Settings.BuildTarget);