JD2022-TU1/main/build/sharpmake/Tools/TeaBox.cs

126 lines
5 KiB
C#

using System;
using Sharpmake;
namespace JustDance.Tools.Extern
{
public class TeaBoxProject : FrameworkProject
{
public const string TeaBoxRootPath = @"[project.SharpmakeCsProjectPath]\..\..\..\tools\extern\TeaBox\";
public const string TeaBoxOutputPath = TeaBoxRootPath + @"Binaries\";
public const string AvalonRoot = TeaBoxRootPath + @"Extern\Avalon\";
public const string AvalonBase = AvalonRoot + @"Xceed.Wpf.AvalonDock.dll";
public const string AvalonThemeVs2013 = AvalonRoot + @"Xceed.Wpf.AvalonDock.Themes.VS2013.dll";
public TeaBoxProject()
{
AdditionalContentCopyIfNewer.Add(@"Data\Layouts\*");
RootPath = TeaBoxRootPath;
OutputType = Configuration.OutputType.DotNetClassLibrary;
ResourcesPath = @"[project.SourceRootPath]\Resources";
ResourceFilesExtensions.Add(".png");
ResourceFilesExtensions.Add(".bmp");
ResourceFilesExtensions.Add(".gif");
ResourceFilesExtensions.Add(".jpg");
ResourceFilesExtensions.Add(".ico");
ResourceFilesExtensions.Add(".rtf");
}
[Configure]
public override void ConfigureAll(Configuration conf, Target target)
{
conf.Output = OutputType;
conf.SolutionFolder = string.Empty;
conf.SolutionFolder = @"framework/teabox";
conf.ProjectFileName = "[project.Name].[target.DevEnv]";
conf.IntermediatePath = TeaBoxRootPath + @"tmp\[project.Name]\[target.Platform]_[target.DevEnv]_[conf.Name]";
conf.TargetPath = TeaBoxOutputPath;
conf.ProjectPath = SourceRootPath;
conf.ReferencesByName.Add("System");
conf.ReferencesByName.Add("System.Core");
conf.ReferencesByName.Add("System.Xml.Linq");
conf.ReferencesByName.Add("System.Data.DataSetExtensions");
conf.ReferencesByName.Add("System.Data");
conf.ReferencesByName.Add("System.Xml");
conf.ReferencesByName.Add("System.ServiceProcess");
conf.ReferencesByNuGetPackage.Add(Externs.JetBrainsAnnotationsNuget);
}
public static void ConfigureResourceScheme(CSharpProject project)
{
project.AdditionalContentCopyIfNewer.Add(@"Data\Layouts\*");
}
public static ITarget[] GetDefaultTargets()
{
return new ITarget[] { new Target(
Platform.win64 | Platform.anycpu,
DevEnv.vs2015 | DevEnv.vs2017,
Optimization.Debug | Optimization.Release,
Sharpmake.OutputType.Dll,
framework: DotNetFramework.v4_7)
};
}
}
[Generate]
public class TeaBox_Application : TeaBoxProject
{
public TeaBox_Application()
{
RootNamespace = "TeaBox";
SourceRootPath = TeaBoxRootPath + @"Source\Application\Project\";
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency<JD_TeaBoxAddinSystem>(target);
conf.AddPublicDependency<JD_UserControls>(target);
conf.AddPublicDependency<JD_ColorForms>(target);
conf.AddPublicDependency<JD_Sequencers>(target);
conf.RegisterWpf();
conf.ReferencesByName.Add("System.ComponentModel.DataAnnotations");
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Web");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByName.Add("WindowsFormsIntegration");
conf.ReferencesByName.Add("Microsoft.CSharp");
conf.ReferencesByPath.Add(Externs.SandGrid);
conf.ReferencesByPath.Add(Externs.SandBar);
conf.ReferencesByPath.Add(AvalonBase);
conf.ReferencesByPath.Add(AvalonThemeVs2013);
}
}
[Generate]
public class TeaBox_Macros : TeaBoxProject
{
public TeaBox_Macros()
{
SourceRootPath = TeaBoxRootPath + @"Source\Macros\Project\";
AdditionalNone.Add(@"[project.SourceRootPath]\project.json");
}
public override void ConfigureAll(Configuration conf, Target target)
{
base.ConfigureAll(conf, target);
conf.AddPublicDependency<JD_TeaBoxAddinSystem>(target);
conf.AddPublicDependency<TeaBox_Application>(target);
conf.RegisterWpf();
conf.ReferencesByName.Add("Microsoft.CSharp");
conf.ReferencesByName.Add("System.Drawing");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByName.Add("System.Windows.Forms");
conf.ReferencesByName.Add("System.ComponentModel.DataAnnotations");
conf.ReferencesByPath.Add(Externs.SandGrid);
conf.ReferencesByNuGetPackage.Add(new NuGetDependency("Microsoft.CodeAnalysis", "1.3.2"));
}
}
}