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(target); conf.AddPublicDependency(target); conf.AddPublicDependency(target); conf.AddPublicDependency(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(target); conf.AddPublicDependency(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")); } } }