forked from glib-sharp/gstreamer-sharp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.cake
executable file
·127 lines (103 loc) · 3.16 KB
/
build.cake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#load CakeScripts\GAssembly.cake
#load CakeScripts\Settings.cake
#addin "Cake.FileHelpers"
#addin "Cake.Incubator"
// VARS
Settings.Cake = Context;
Settings.Version = "1.13.0";
Settings.BuildTarget = Argument("BuildTarget", "Default");
Settings.Assembly = Argument("Assembly", "");
var configuration = Argument("Configuration", "Release");
var msbuildsettings = new DotNetCoreMSBuildSettings();
var list = new List<GAssembly>();
// TASKS
Task("Init")
.Does(() =>
{
// Assign some common properties
msbuildsettings = msbuildsettings.WithProperty("Version", Settings.Version);
msbuildsettings = msbuildsettings.WithProperty("Authors", "'GstSharp Contributors'");
msbuildsettings = msbuildsettings.WithProperty("PackageLicenseUrl", "'https://cgit.freedesktop.org/gstreamer/gstreamer-sharp/tree/COPYING'");
// Add stuff to list
Settings.Init();
foreach(var gassembly in Settings.AssemblyList)
if(string.IsNullOrEmpty(Settings.Assembly) || Settings.Assembly == gassembly.Name)
list.Add(gassembly);
});
Task("Clean")
.IsDependentOn("Init")
.Does(() =>
{
foreach(var gassembly in list)
gassembly.Clean();
});
Task("FullClean")
.IsDependentOn("Clean")
.Does(() =>
{
DeleteDirectory("BuildOutput", true);
});
Task("Prepare")
.IsDependentOn("Clean")
.Does(() =>
{
// Build tools
DotNetCoreRestore("Source/Tools/gapi/Gapi.sln");
DotNetCoreBuild("Source/Tools/gapi/Gapi.sln", new DotNetCoreBuildSettings {
Verbosity = DotNetCoreVerbosity.Minimal,
Configuration = configuration,
OutputDirectory = "BuildOutput/Tools"
});
// Generate code and prepare libs projects
foreach(var gassembly in list)
gassembly.Prepare();
DotNetCoreRestore("Source/Libs/GstSharp.sln");
});
Task("GenerateLinuxStubs")
.IsDependentOn("Init")
.Does(() =>
{
CreateDirectory("BuildOutput/LinuxStubs");
System.IO.Directory.SetCurrentDirectory("BuildOutput/LinuxStubs");
FileWriteText("empty.c", "");
foreach(var gassembly in list)
gassembly.GenerateLinuxStubs();
System.IO.Directory.SetCurrentDirectory("../..");
DeleteDirectory("BuildOutput/LinuxStubs", new DeleteDirectorySettings { Recursive = true, Force = true });
});
Task("Build")
.IsDependentOn("Prepare")
.Does(() =>
{
var settings = new DotNetCoreBuildSettings
{
Configuration = configuration,
MSBuildSettings = msbuildsettings
};
if (list.Count == Settings.AssemblyList.Count)
DotNetCoreBuild("Source/Libs/GstSharp.sln", settings);
else
{
foreach(var gassembly in list)
DotNetCoreBuild(gassembly.Csproj, settings);
}
});
Task("PackageNuGet")
.IsDependentOn("Build")
.Does(() =>
{
var settings = new DotNetCorePackSettings
{
MSBuildSettings = msbuildsettings,
Configuration = configuration,
OutputDirectory = "BuildOutput/NugetPackages",
NoBuild = true
};
foreach(var gassembly in list)
DotNetCorePack(gassembly.Csproj, settings);
});
// TASK TARGETS
Task("Default")
.IsDependentOn("Build");
// EXECUTION
RunTarget(Settings.BuildTarget);