no more submodule
This commit is contained in:
80
GtkSharp/CakeScripts/GAssembly.cake
Normal file
80
GtkSharp/CakeScripts/GAssembly.cake
Normal file
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using P = System.IO.Path;
|
||||
using F = System.IO.File;
|
||||
|
||||
public class GAssembly
|
||||
{
|
||||
private ICakeContext Cake;
|
||||
|
||||
public bool Init { get; private set; }
|
||||
public string Name { get; private set; }
|
||||
public string Dir { get; private set; }
|
||||
public string GDir { get; private set; }
|
||||
public string Csproj { get; private set; }
|
||||
public string RawApi { get; private set; }
|
||||
public string Metadata { get; private set; }
|
||||
|
||||
public string[] Deps { get; set; }
|
||||
public string ExtraArgs { get; set; }
|
||||
|
||||
public GAssembly(string name)
|
||||
{
|
||||
Cake = Settings.Cake;
|
||||
Deps = new string[0];
|
||||
|
||||
Name = name;
|
||||
Dir = P.Combine("Source", "Libs", name);
|
||||
GDir = P.Combine(Dir, "Generated");
|
||||
|
||||
var temppath = P.Combine(Dir, name);
|
||||
Csproj = temppath + ".csproj";
|
||||
RawApi = temppath + "-api.xml";
|
||||
Metadata = temppath + ".metadata";
|
||||
}
|
||||
|
||||
public void Prepare()
|
||||
{
|
||||
Cake.CreateDirectory(GDir);
|
||||
var tempapi = P.Combine(GDir, Name + "-api.xml");
|
||||
Cake.CopyFile(RawApi, tempapi);
|
||||
|
||||
// Metadata file found, time to generate some stuff!!!
|
||||
if (Cake.FileExists(Metadata))
|
||||
{
|
||||
// Fixup API file
|
||||
var symfile = P.Combine(Dir, Name + "-symbols.xml");
|
||||
Cake.DotNetExecute("BuildOutput/Tools/GapiFixup.dll",
|
||||
"--metadata=" + Metadata + " " + "--api=" + tempapi +
|
||||
(Cake.FileExists(symfile) ? " --symbols=" + symfile : string.Empty)
|
||||
);
|
||||
|
||||
var extraargs = ExtraArgs + " ";
|
||||
|
||||
// Locate APIs to include
|
||||
foreach(var dep in Deps)
|
||||
{
|
||||
var ipath = P.Combine("Source", "Libs", dep, "Generated", dep + "-api.xml");
|
||||
|
||||
if (Cake.FileExists(ipath))
|
||||
extraargs += " --include=" + ipath + " ";
|
||||
}
|
||||
|
||||
// Generate code
|
||||
Cake.DotNetExecute("BuildOutput/Tools/GapiCodegen.dll",
|
||||
"--outdir=" + GDir + " " +
|
||||
"--schema=Source/Libs/Shared/Gapi.xsd " +
|
||||
extraargs + " " +
|
||||
"--assembly-name=" + Name + " " +
|
||||
"--generate=" + tempapi
|
||||
);
|
||||
}
|
||||
|
||||
Init = true;
|
||||
}
|
||||
|
||||
public void Clean()
|
||||
{
|
||||
if (Cake.DirectoryExists(GDir))
|
||||
Cake.DeleteDirectory(GDir, new DeleteDirectorySettings { Recursive = true, Force = true });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user