1068 lines
54 KiB
C#
1068 lines
54 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using Sharpmake;
|
|
|
|
namespace JustDance.Engine
|
|
{
|
|
#region Engine Base Classes
|
|
|
|
[Generate]
|
|
internal abstract class EngineProject : BaseCppProject
|
|
{
|
|
protected EngineProject()
|
|
{
|
|
Name = GetType().Name.ReplaceFirst("_", ".");
|
|
RootPath = SourcePath;
|
|
SourceRootPath = @"[project.RootPath]";
|
|
SourceFilesExtensions.Remove(".c");
|
|
}
|
|
|
|
protected override void ConfigureIncludes(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureIncludes(conf, target);
|
|
conf.IncludePaths.Add(SourcePath);
|
|
conf.IncludePaths.Add(ExternPath);
|
|
}
|
|
}
|
|
|
|
[Generate]
|
|
public class EngineSolution : BaseCppSolution
|
|
{
|
|
public EngineSolution()
|
|
{
|
|
Name = "Engine";
|
|
}
|
|
|
|
private bool IncludeEngineProject(BaseCppTarget target, Type type)
|
|
{
|
|
if (type == typeof(UAF_CSharpGenerator) || type == typeof(UAF_EngineWrapper) || type == typeof(UAF_EngineWrapper_Test))
|
|
{
|
|
return target.Platform.IsWindows() && target.Optimization != Optimization.Retail;
|
|
}
|
|
if (typeof(UnitTests_Project).IsAssignableFrom(type))
|
|
{
|
|
return target.Optimization != Optimization.Retail &&
|
|
(target.Platform.IsWindows()
|
|
|| target.Platform == Platform.nx
|
|
|| target.Platform == Platform.orbis
|
|
);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.RegisterProjectsOfType<EngineProject>(target, type => IncludeEngineProject(target, type));
|
|
if (target.Platform.IsWindows())
|
|
{
|
|
conf.AddProject<PleoExt>(target);
|
|
conf.AddProject<PleoNet>(target);
|
|
}
|
|
conf.AddProject<Soundwich>(target);
|
|
|
|
// gmock is only available on PC, Orbis, and NX in Debug & Release only
|
|
if ( (target.Platform == Platform.win32 || target.Platform == Platform.win64 ||
|
|
target.Platform == Platform.orbis || target.Platform == Platform.nx)
|
|
&& (target.Optimization == Optimization.Debug || target.Optimization == Optimization.Release) )
|
|
{
|
|
conf.AddProject<gmock>(target);
|
|
}
|
|
|
|
|
|
Utilities.CreateShortcut(conf.SolutionFileName + ".sln", ResolveString(RootPath), ResolveString(conf.SolutionPath + "/"+conf.SolutionFileName + ".sln", conf, target));
|
|
}
|
|
}
|
|
|
|
public static class EngineExtensions
|
|
{
|
|
public static void AddExternDependency<T>(this Project.Configuration configuration, ITarget target) where T: EngineExternProject
|
|
{
|
|
configuration.AddPrivateDependency<T>(target);
|
|
}
|
|
|
|
public static void IgnoreLibrary(this Project.Configuration configuration, params string[] libraries)
|
|
{
|
|
configuration.Options.Add(new Options.Vc.Linker.IgnoreSpecificLibraryNames(libraries));
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Core
|
|
|
|
[Generate]
|
|
internal class UAF_Core : EngineProject
|
|
{
|
|
public UAF_Core()
|
|
{
|
|
RootPath = SourcePath + "core";
|
|
PrecompileHeader = "precompiled_core";
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.SolutionFolder = "UAF";
|
|
|
|
conf.AddExternDependency<LuaLib>(target);
|
|
conf.AddExternDependency<PugiXml>(target);
|
|
conf.AddExternDependency<Mongoose>(target);
|
|
|
|
conf.IncludePaths.Add(ExternPath + "/gear4");
|
|
conf.IncludePaths.Add(ExternPath + "/gear4/eal/sources");
|
|
conf.IncludePaths.Add(ExternPath + "/rapidjson/include");
|
|
|
|
conf.If(!conf.Platform.IsUsingClang()).Options.Add(Options.Vc.Compiler.DefineCPlusPlus.Default);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Engine
|
|
|
|
[Generate]
|
|
internal class UAF_Engine : EngineProject
|
|
{
|
|
public UAF_Engine()
|
|
{
|
|
RootPath = SourcePath + "engine";
|
|
PrecompileHeader = "precompiled_engine";
|
|
SourceFilesBlobExcludeRegex.Add("FriezeBuilder_InArchi.cpp", "FriezeBuilder_InArchiSimple.cpp", "FriezeBuilder_InPipe.cpp", "FriezeBuilder_InPipePatchSimple.cpp", "FriezeBuilder_InFrame.cpp", "Animation3D.cpp", "Animation3DInfo.cpp", "Animation3Dlist.cpp", "actor.cpp", "animLightComponent.cpp", "mesh3DComponent.cpp");
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.SolutionFolder = "UAF";
|
|
|
|
conf.AddPublicDependency<Raki>(target);
|
|
conf.AddPublicDependency<Soundwich>(target);
|
|
conf.AddPublicDependency<Pleo>(target);
|
|
conf.AddPublicDependency<LibOgg>(target);
|
|
conf.AddPublicDependency<LibVorbis>(target);
|
|
conf.If(Platform.win32 | Platform.win64).AddExternDependency<Bloomberg>(target);
|
|
conf.AddExternDependency<CaptureJpeg>(target);
|
|
|
|
conf.If(Platform.win32 | Platform.win64).AddPublicDependency<GoTop>(target);
|
|
|
|
conf.IncludePaths.Add( ExternPath + "EDGE/edge_1_2_0/cell/host-common/include",
|
|
ExternPath + "EDGE/edge_1_2_0/cell/target/common/include",
|
|
ExternPath + "EDGE/edge_1_2_0/cell/target/ppu/include",
|
|
ExternPath + "EDGE/edge_1_2_0/cell/target/spu/include",
|
|
ExternPath + "UbiServices/custom/client-sdk/public",
|
|
ExternPath + "UbiServices/custom/external/harbourcommon/libraries/harboureal/api/sources");
|
|
|
|
if (target.Platform == Platform.durango)
|
|
{
|
|
conf.AdditionalLinkerOptions.Add("/ignore:4264,4221");
|
|
conf.Options.Add(Options.Vc.Compiler.CompileAsWinRT.Enable);
|
|
}
|
|
|
|
conf.IncludePaths.Add(ExternPath + "/gear4");
|
|
conf.IncludePaths.Add(ExternPath + "/gear4/eal/sources");
|
|
|
|
conf.If(!conf.Platform.IsUsingClang()).Options.Add(Options.Vc.Compiler.DefineCPlusPlus.Default);
|
|
}
|
|
|
|
protected override void ConfigurePlatformFilters(Configuration conf, BaseCppTarget target)
|
|
{
|
|
if (conf.Platform.IsWindows())
|
|
{
|
|
base.ConfigurePlatformFilters(conf, target);
|
|
//Special case because /x360/ZPadX360_common.cpp needs to be include on pc
|
|
conf.SourceFilesBuildExcludeRegex.Remove(@"\\X360\\");
|
|
}
|
|
else
|
|
{
|
|
base.ConfigurePlatformFilters(conf, target);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Editor
|
|
|
|
[Generate]
|
|
internal class UAF_Editor : EngineProject
|
|
{
|
|
public UAF_Editor()
|
|
{
|
|
RootPath = SourcePath + "editor";
|
|
PrecompileHeader = "precompiled_editor";
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.SolutionFolder = "UAF";
|
|
conf.AddPrivateDependency<Raki>(target);
|
|
|
|
conf.IncludePaths.Add(ExternPath + "EDGE/edge_1_2_0/cell/host-common/include",
|
|
ExternPath + "EDGE/edge_1_2_0/cell/target/common/include",
|
|
ExternPath + "EDGE/edge_1_2_0/cell/target/ppu/include",
|
|
ExternPath + "EDGE/edge_1_2_0/cell/target/spu/include");
|
|
|
|
conf.If(Platform.win32 | Platform.win64).IgnoreLibrary("LIBCMTD.lib");
|
|
|
|
conf.IfNot(Platform.win32 | Platform.win64).SourceFilesBuildExcludeRegex.Add(".cpp");
|
|
conf.If(Optimization.Retail).SourceFilesBuildExcludeRegex.Add(".cpp");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Gameplay
|
|
|
|
[Generate]
|
|
internal class UAF_Gameplay : EngineProject
|
|
{
|
|
public UAF_Gameplay()
|
|
{
|
|
RootPath = SourcePath + "gameplay";
|
|
PrecompileHeader = "precompiled_gameplay";
|
|
SourceFilesBlobExcludeRegex.Add("GameInterface.cpp", "GameInterface_RegisterEngine.cpp", "GameInterface_RegisterEvent.cpp", "GameInterface_RegisterGameplay.cpp", "GameInterface_RegisterIA.cpp", "GameInterface_RegisterMisc.cpp", "GameInterface_RegisterTree.cpp");
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.SolutionFolder = "UAF";
|
|
|
|
conf.If(Platform.durango).Options.Add(Options.Vc.Compiler.CompileAsWinRT.Enable);
|
|
|
|
conf.IncludePaths.Add(ExternPath + "EDGE/edge_1_2_0/cell/host-common/include",
|
|
ExternPath + "EDGE/edge_1_2_0/cell/target/common/include",
|
|
ExternPath + "EDGE/edge_1_2_0/cell/target/ppu/include",
|
|
ExternPath + "EDGE/edge_1_2_0/cell/target/spu/include",
|
|
ExternPath + "UbiServices/custom/client-sdk/public",
|
|
ExternPath + "UbiServices/custom/external/harbourcommon/libraries/harboureal/api/sources",
|
|
ExternPath + "rapidjson/include");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region InitFactory
|
|
|
|
[Generate]
|
|
internal class UAF_InitFactory : EngineProject
|
|
{
|
|
public UAF_InitFactory()
|
|
{
|
|
RootPath = SourcePath + "initfactory";
|
|
PrecompileHeader = "precompiled_initfactory";
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.SolutionFolder = "UAF";
|
|
conf.If(Platform.durango).Options.Add(Options.Vc.Compiler.CompileAsWinRT.Enable);
|
|
|
|
conf.IncludePaths.Add(ExternPath + "UbiServices/custom/client-sdk/public",
|
|
ExternPath + "UbiServices/custom/external/harbourcommon/libraries/harboureal/api/sources");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Test
|
|
|
|
[Generate]
|
|
internal class UAF_Test : EngineProject
|
|
{
|
|
public UAF_Test()
|
|
{
|
|
RootPath = SourcePath + "test";
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.SolutionFolder = "UAF";
|
|
conf.AddPrivateDependency<Raki>(target);
|
|
conf.If(Optimization.Retail, Platform.win32 | Platform.win64).IgnoreLibrary("win32_UAF_Editor_f.lib");
|
|
|
|
if (conf.Platform == Platform.orbis)
|
|
{
|
|
if (target.Optimization == Optimization.Debug || target.Optimization == Optimization.Release)
|
|
{
|
|
conf.LibraryFiles.Add("SceMat_stub_weak", 10);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Jobs
|
|
|
|
internal abstract class UAF_Job : EngineProject
|
|
{
|
|
protected Configuration.OutputType JobType { get; set; }
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
OutputType = Configuration.OutputType.Lib;
|
|
base.ConfigureAll(conf, target);
|
|
conf.SolutionFolder = "UAF/Jobs";
|
|
}
|
|
}
|
|
|
|
[Generate]
|
|
internal class Job_EdgeAnim : UAF_Job
|
|
{
|
|
public Job_EdgeAnim()
|
|
{
|
|
JobType = Configuration.OutputType.Exe;
|
|
RootPath = SourcePath + "Jobs/EdgeAnim";
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.IncludePaths.Add( ExternPath + "EDGE/edge_1_2_0/cell/host-common/include",
|
|
ExternPath + "EDGE/edge_1_2_0/cell/target/common/include",
|
|
ExternPath + "EDGE/edge_1_2_0/cell/target/spu/include");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Adapters
|
|
|
|
[Generate]
|
|
internal class UAF_Adapters : EngineProject
|
|
{
|
|
public UAF_Adapters()
|
|
{
|
|
RootPath = SourcePath + "adapters";
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.SolutionFolder = "UAF";
|
|
|
|
conf.AddPrivateDependency<Raki>(target);
|
|
conf.If(conf.Platform.IsMicrosoft()).Options.Add(new Options.Vc.Compiler.DisableSpecificWarnings(new[] { "4005" }));
|
|
|
|
conf.IncludePaths.Add(ExternPath + "UbiServices/custom/client-sdk/public",
|
|
ExternPath + "UbiServices/custom/external/harbourcommon/libraries/harboureal/api/sources",
|
|
ExternPath + "rapidjson/include");
|
|
|
|
if (conf.Platform == Platform.nx)
|
|
{
|
|
// not Using ubiservices openssl anymore, starting from NX SDK 11.2.0
|
|
}
|
|
else if (conf.Platform == Platform.durango)
|
|
{
|
|
conf.IncludePaths.Add(ExternPath + "openssl_x1/custom/include");
|
|
}
|
|
else if (conf.Platform == Platform.orbis)
|
|
{
|
|
conf.IncludePaths.Add(ExternPath + "UbiServices/custom/external/harbourcommon/libraries/openssl_deprecated/include");
|
|
}
|
|
else
|
|
{
|
|
conf.IncludePaths.Add(ExternPath + "UbiServices/custom/external/harbourcommon/libraries/openssl/include");
|
|
}
|
|
|
|
conf.IncludePaths.Add(SourcePath, ExternPath + "GLEW");
|
|
|
|
//GFX
|
|
conf.SourceFilesBuildExcludeRegex.Add("GFXAdapter_Vk");
|
|
conf.IfNot(Platform.win32 | Platform.win64).SourceFilesBuildExcludeRegex.Add("GFXAdapter_Cooker");
|
|
conf.IfNot(Platform.win32 | Platform.win64 | Platform.orbis | Platform.durango).SourceFilesBuildExcludeRegex.Add("GFXAdapter_DirectX11");
|
|
conf.IfNot(Platform.durango).SourceFilesBuildExcludeRegex.Add("GFXAdapter_DirectX12");
|
|
conf.SourceFilesBuildExcludeRegex.Add("GFXAdapter_Prospero");
|
|
|
|
//SoundAdapter
|
|
conf.If(!conf.Platform.IsMicrosoft()).SourceFilesBuildExcludeRegex.Add("SoundAdapter_XAudio");
|
|
|
|
//Gesture
|
|
conf.IfNot(Platform.durango | Platform.orbis | Platform.win32 | Platform.win64).SourceFilesBuildExcludeRegex.Add("Adapter_Gesture_KinectGesture");
|
|
conf.If(Platform.durango | Platform.orbis | Platform.win32 | Platform.win64).SourceFilesBuildExcludeRegex.Add("Adapter_Kinect_fake");
|
|
|
|
//Misc
|
|
conf.IfNot(Platform.win32 | Platform.win64).SourceFilesBuildExcludeRegex.Add("InputAdapter_DirectInput", "SystemAdapter_w32Directx");
|
|
conf.If(Platform.durango | Platform.orbis | Platform.nx).SourceFilesBuildExcludeRegex.Add("Adapter_Speech_Recognition_fake");
|
|
conf.IfNot(Platform.win32 | Platform.win64).SourceFilesBuildExcludeRegex.Add("Adapter_SourceControl_Perforce");
|
|
|
|
// We will exclude CryptoAdapter_Fake, but we will keep it around for future platforms without OpenSSL support.
|
|
conf.SourceFilesBuildExcludeRegex.Add("CryptoAdapter_Fake");
|
|
|
|
conf.If(Platform.win32 | Platform.win64).AdditionalLinkerOptions.Add("/ignore:4006");
|
|
conf.If(Platform.durango).Options.Add(Options.Vc.Compiler.CompileAsWinRT.Enable);
|
|
|
|
//uplay
|
|
conf.IfNot(Platform.win32 | Platform.win64).SourceFilesBuildExcludeRegex.Add("UplayAdapter_WinCafe");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region EngineWrapper
|
|
|
|
[Generate]
|
|
internal class UAF_EngineWrapper : EngineProject
|
|
{
|
|
public static string DllPath = OutputPath + @"lib\EngineWrapper.dll";
|
|
|
|
public UAF_EngineWrapper()
|
|
{
|
|
OutputType = Configuration.OutputType.DotNetClassLibrary;
|
|
RootPath = SourcePath + "engineWrapper";
|
|
SourceFilesBuildExcludeRegex.Add("utils.cpp");
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.SolutionFolder = "UAF";
|
|
|
|
conf.TargetPath = OutputPath + @"\lib\";
|
|
conf.TargetFileName = "EngineWrapper" + (target.Platform == Platform.win32 ? "32" : "");
|
|
|
|
conf.AddPublicDependency<UAF_Adapters>(target);
|
|
conf.AddPublicDependency<UAF_Core>(target);
|
|
conf.AddPublicDependency<UAF_Engine>(target);
|
|
conf.AddPublicDependency<UAF_Gameplay>(target);
|
|
conf.AddPublicDependency<UAF_InitFactory>(target);
|
|
conf.AddPublicDependency<UAF_Test>(target);
|
|
conf.AddPublicDependency<JD_Test>(target);
|
|
conf.AddExternDependency<ZLib>(target);
|
|
conf.If(Platform.win32 | Platform.win64).AddExternDependency<Bloomberg>(target);
|
|
conf.AddExternDependency<CaptureJpeg>(target);
|
|
conf.AddExternDependency<LibOgg>(target);
|
|
conf.AddExternDependency<LibVorbis>(target);
|
|
conf.AddExternDependency<LibVpx>(target);
|
|
conf.AddExternDependency<LibWebm>(target);
|
|
conf.AddExternDependency<LibPng>(target);
|
|
conf.AddPublicDependency<PluginGateway>(target);
|
|
conf.AddPublicDependency<JD_Gameplay>(target);
|
|
conf.AddPublicDependency<Plugins>(target);
|
|
conf.AddPublicDependency<UAF_Editor>(target);
|
|
conf.AddPublicDependency<JD_Editor>(target);
|
|
conf.AddExternDependency<FreeImage>(target);
|
|
conf.AddExternDependency<WiiYourself>(target);
|
|
conf.AddPublicDependency<Job_EdgeAnim>(target);
|
|
conf.AddExternDependency<MoveSpace>(target);
|
|
conf.AddExternDependency<Squish>(target);
|
|
conf.AddExternDependency<Scry>(target);
|
|
|
|
// For DTEST
|
|
if (target.Optimization == Optimization.Debug || target.Optimization == Optimization.Release)
|
|
{
|
|
if ((conf.Platform == Platform.win64 && target.ApplicationType == ApplicationType.Editor)
|
|
|| conf.Platform == Platform.durango
|
|
|| conf.Platform == Platform.nx
|
|
|| conf.Platform == Platform.orbis)
|
|
{
|
|
conf.AddPublicDependency<JD_DTest>(target);
|
|
}
|
|
}
|
|
|
|
string vsVersion = (target.DevEnv == DevEnv.vs2012 ? "vs11" : (target.DevEnv == DevEnv.vs2015 ? "vs14" : "vs15"));
|
|
string procArch = (target.DevEnv == DevEnv.vs2015 || target.DevEnv == DevEnv.vs2017) ? (conf.Platform == Platform.win32 ? "x86/" : "x64/") : "";
|
|
string plainArch = conf.Platform == Platform.win64 ? "64" : "32";
|
|
string winArch = "win" + plainArch;
|
|
string P4Arch = procArch;
|
|
string ubiservicesArch = winArch;
|
|
string edgeArch = conf.Platform == Platform.win64 ? "x64" : "Win32";
|
|
string kinectArch = conf.Platform == Platform.win64 ? "amd64" : "x86";
|
|
string wiiYourselfArch = conf.Platform == Platform.win64 ? "/x64" : "";
|
|
|
|
conf.If(Optimization.Debug | Optimization.Release).LibraryPaths.Add(ExternPath + "p4/lib/" + vsVersion + "/" + P4Arch + target.Optimization);
|
|
conf.LibraryPaths.Add( /*ExternPath + "UbiServices/custom/lib/SdkClient/win64_2015/" + target.Optimization,*/
|
|
ExternPath + "UbiServices/custom/lib/SdkClient/" + ubiservicesArch + "_" + target.DevEnv.GetDevEnvString() + "/" + target.Optimization,
|
|
ExternPath + "WiiYourself_1.15/miniDDK/lib" + wiiYourselfArch,
|
|
ExternPath + "EDGE/edge_1_2_0/lib/" + edgeArch +"/VS" + target.DevEnv.GetDevEnvString(),
|
|
ExternPath + "KinectPC_Sdk/v1.8/Lib/" + kinectArch,
|
|
ExternPath + "KinectGesture/Lib");
|
|
|
|
if (conf.Platform == Platform.durango)
|
|
{
|
|
conf.LibraryPaths.Add(ExternPath + "openssl_x1/custom/libs");
|
|
}
|
|
|
|
string libNvttArch = target.DevEnv == DevEnv.vs2012 ? "32" :
|
|
target.DevEnv == DevEnv.vs2015 ? plainArch :
|
|
target.DevEnv == DevEnv.vs2017 ? plainArch :
|
|
"32";
|
|
|
|
string libNvttSuffix = target.DevEnv == DevEnv.vs2012 ? "_vs12" :
|
|
target.DevEnv == DevEnv.vs2015 ? "_vs15" :
|
|
target.DevEnv == DevEnv.vs2017 ? "_vs17" :
|
|
"";
|
|
|
|
string libNvttName = "nvtt" + libNvttArch + libNvttSuffix + ".lib";
|
|
|
|
string kinectGestureArch = ((target.DevEnv == DevEnv.vs2015 || target.DevEnv == DevEnv.vs2017) && conf.Platform == Platform.win64) ? "x64" : "PC";
|
|
|
|
conf.LibraryFiles.Add("edgeanim_" + winArch + "_r.lib");
|
|
conf.If(Optimization.Debug).LibraryFiles.Add("Version.lib", "xapobased.lib", "nvcore.lib", "nvimage.lib", "nvmath.lib", libNvttName, "dxguid.lib", "xaudio2_8.lib", "d3d9.lib", "winmm.lib", "d3d11.lib", "dxgi.lib", "dinput8.lib", "XInput.lib", "winmm.lib", "IpHlpApi.lib", "Wininet.lib", "ws2_32.lib", "dsound.lib");
|
|
conf.If(Optimization.Release).LibraryFiles.Add("xapobase.lib");
|
|
conf.If(Optimization.Debug | Optimization.Release).LibraryFiles.Add("libclient.lib", "libsupp.lib", "librpc.lib", "libp4api.lib", "libp4script.lib", "libp4script_c.lib", "libp4script_curl.lib", "libp4script_sqlite.lib");
|
|
conf.If(Optimization.Release | Optimization.Retail).LibraryFiles.Add("Version.lib", "nvcore.lib", "nvimage.lib", "nvmath.lib", libNvttName, "dxguid.lib", "xaudio2_8.lib", "d3d9.lib", "winmm.lib", "dinput8.lib", "XInput.lib", "winmm.lib", "d3d11.lib", "dxgi.lib", "IpHlpApi.lib", "Wininet.lib", "ws2_32.lib", "dsound.lib");
|
|
conf.AdditionalLinkerOptions.Add("/ignore:4204");
|
|
conf.LibraryFiles.Add("psapi.lib");
|
|
conf.If(Optimization.Debug).LibraryFiles.Add("KinectGesture_" + vsVersion + "_" + kinectGestureArch + "d.lib");
|
|
conf.If(Optimization.Release | Optimization.Retail).LibraryFiles.Add("KinectGesture_" + vsVersion + "_" + kinectGestureArch + "r.lib");
|
|
conf.LibraryFiles.Add("Kinect10.lib");
|
|
conf.If(Optimization.Debug).IgnoreLibrary("LIBCMTD.lib");
|
|
conf.IgnoreLibrary("LIBCMT.lib");
|
|
|
|
// UbiServices
|
|
conf.LibraryFiles.Add("libcurl.lib", "ubiservices.lib", "uszlib.lib", "nghttp2.lib", "crypt32.lib");
|
|
|
|
if (conf.Platform == Platform.durango)
|
|
{
|
|
// For Durango, these are from extern/openssl_x1/custom
|
|
// For Scarlett, these are from the Ubiservices libs directory
|
|
conf.LibraryFiles.Add("libcrypto.lib", "libssl.lib");
|
|
}
|
|
else
|
|
{
|
|
// This is the one from Ubiservices, for all other platforms.
|
|
conf.LibraryFiles.Add("openSSL.lib");
|
|
}
|
|
|
|
//Media Foundation
|
|
if (conf.Platform.IsWindows())
|
|
{
|
|
conf.LibraryFiles.Add("mf.lib", "mfplat.lib", "mfreadwrite.lib", "mfuuid.lib", "shlwapi.lib", "wmcodecdspuuid.lib");
|
|
}
|
|
|
|
conf.Options.Add(Options.Vc.Linker.IgnoreImportLibrary.Enable);
|
|
|
|
conf.ReferencesByName.Add("System");
|
|
conf.ReferencesByName.Add("System.Core");
|
|
conf.ReferencesByName.Add("System.Data");
|
|
conf.ReferencesByName.Add("System.Windows.Forms");
|
|
conf.ReferencesByName.Add("System.Xml");
|
|
}
|
|
|
|
protected override void ConfigureCompilerOptions(Project.Configuration conf, BaseCppTarget target)
|
|
{
|
|
conf.Options.Add(Options.Vc.General.CommonLanguageRuntimeSupport.ClrSupport);
|
|
conf.Options.Add(Options.Vc.General.CharacterSet.Unicode);
|
|
conf.Options.Add(Options.Vc.Compiler.RTTI.Disable);
|
|
conf.Options.Add(Options.Vc.Compiler.Exceptions.EnableWithSEH);
|
|
conf.Options.Add(Options.Vc.Compiler.RuntimeChecks.Default);
|
|
conf.Options.Add(Options.Vc.Compiler.FloatingPointModel.Precise);
|
|
conf.Options.Add(Options.Vc.Compiler.MinimalRebuild.Disable);
|
|
conf.Options.Add(Options.Vc.General.WarningLevel.Level3);
|
|
conf.Options.Add(Options.Vc.General.TreatWarningsAsErrors.Disable);
|
|
conf.Options.Add(Options.Vc.General.WholeProgramOptimization.Disable);
|
|
|
|
if (target.Optimization == Optimization.Debug)
|
|
conf.Options.Add(Options.Vc.Compiler.Optimization.Disable);
|
|
else if (target.Optimization == Optimization.Release)
|
|
conf.Options.Add(Options.Vc.Compiler.Optimization.MaximizeSpeed);
|
|
conf.Options.Add(Options.Vc.Compiler.Inline.Default);
|
|
conf.Options.Add(Options.Vc.Compiler.Intrinsic.Disable);
|
|
conf.Options.Add(Options.Vc.Compiler.FavorSizeOrSpeed.Neither);
|
|
conf.Options.Add(Options.Vc.Compiler.OmitFramePointers.Disable);
|
|
conf.Options.Add(Options.Vc.Compiler.FiberSafe.Disable);
|
|
|
|
conf.If(Optimization.Debug).Options.Add(Options.Vc.Compiler.RuntimeLibrary.MultiThreadedDebugDLL);
|
|
conf.IfNot(Optimization.Debug).Options.Add(Options.Vc.Compiler.RuntimeLibrary.MultiThreadedDLL);
|
|
}
|
|
|
|
protected override void ConfigureDefines(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureDefines(conf, target);
|
|
conf.Defines.Add("WRAPPER_C");
|
|
conf.If(Optimization.Debug).Defines.Add("_DEBUG");
|
|
conf.IfNot(Optimization.Debug).Defines.Add("NDEBUG", "_SECURE_SCL=0");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region UA_Engine
|
|
|
|
[Generate]
|
|
internal class UA_Engine : EngineProject
|
|
{
|
|
public UA_Engine()
|
|
{
|
|
RootPath = SourcePath + "appFramework";
|
|
OutputType = Configuration.OutputType.Exe;
|
|
Name = "ua_engine";
|
|
PrecompileHeader = "precompiled_techno";
|
|
DeployProject = true;
|
|
|
|
Util.DirectoryGetFiles(ResolveString(DeploymentFilesPath + "/durango"), "*.png").ToList().ForEach(f => ResourceFiles.Add(f));
|
|
Util.DirectoryGetFiles(ResolveString(SourcePath + "/appFramework/Durango"), "*.txt").ToList().ForEach(f => ResourceFiles.Add(f));
|
|
ResourceFiles.Add(SourcePath + "/appFramework/Win32/itf_main_win32.rc");
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.If(target.Platform.IsWindows()).TargetFileName = Name + (target.Platform == Platform.win32 ? "32" : "");
|
|
if (target.IsPcStandalone())
|
|
{
|
|
conf.TargetFileName = Globals.CurrentProjectName;
|
|
}
|
|
|
|
conf.Options.Add(Options.Vc.Linker.SubSystem.Application);
|
|
|
|
conf.If(!conf.Platform.IsUsingClang()).Options.Add(Options.Vc.Compiler.DefineCPlusPlus.Default);
|
|
|
|
conf.AddPublicDependency<UAF_Adapters>(target);
|
|
conf.AddPublicDependency<UAF_Core>(target);
|
|
conf.AddPublicDependency<UAF_Engine>(target);
|
|
conf.AddPublicDependency<UAF_Gameplay>(target);
|
|
conf.AddPublicDependency<UAF_InitFactory>(target);
|
|
conf.AddPublicDependency<UAF_Test>(target);
|
|
conf.AddPublicDependency<JD_Test>(target);
|
|
conf.AddExternDependency<ZLib>(target);
|
|
conf.If(Platform.win32 | Platform.win64).AddExternDependency<Bloomberg>(target);
|
|
conf.AddExternDependency<CaptureJpeg>(target);
|
|
conf.AddExternDependency<LibOgg>(target);
|
|
conf.AddExternDependency<LibVorbis>(target);
|
|
conf.AddExternDependency<LibVpx>(target);
|
|
conf.AddExternDependency<LibWebm>(target);
|
|
conf.AddExternDependency<LibPng>(target);
|
|
conf.AddPublicDependency<PluginGateway>(target);
|
|
conf.AddPublicDependency<JD_Gameplay>(target);
|
|
conf.If(Platform.win32 | Platform.win64).AddPublicDependency<GoTop>(target);
|
|
|
|
// For DTEST
|
|
if (target.Optimization == Optimization.Debug || target.Optimization == Optimization.Release)
|
|
{
|
|
if ((conf.Platform == Platform.win64 && target.ApplicationType == ApplicationType.Editor)
|
|
|| conf.Platform == Platform.durango
|
|
|| conf.Platform == Platform.nx
|
|
|| conf.Platform == Platform.orbis)
|
|
{
|
|
conf.AddPublicDependency<JD_DTest>(target);
|
|
}
|
|
}
|
|
|
|
conf.IfNot(Optimization.Retail).AddPublicDependency<Plugins>(target);
|
|
if (target.ApplicationType == ApplicationType.Editor)
|
|
{
|
|
conf.AddPublicDependency<UAF_Editor>(target);
|
|
conf.AddPublicDependency<JD_Editor>(target);
|
|
conf.AddExternDependency<FreeImage>(target);
|
|
conf.AddExternDependency<WiiYourself>(target);
|
|
}
|
|
conf.AddPublicDependency<Job_EdgeAnim>(target);
|
|
conf.If(Platform.win32 | Platform.win64 | Platform.orbis | Platform.durango | Platform.nx).AddExternDependency<MoveSpace>(target);
|
|
conf.If(Platform.win32 | Platform.win64 | Platform.orbis | Platform.durango | Platform.nx).AddExternDependency<Squish>(target);
|
|
conf.IfNot(Optimization.Retail)
|
|
.If(Platform.win32 | Platform.win64 | Platform.orbis | Platform.durango | Platform.nx).AddExternDependency<Scry>(target);
|
|
|
|
conf.IfNot(Platform.win32 | Platform.win64).SourceFilesBuildExclude.Add(SourcePath + "/appFramework/Win32/itf_main_win32.rc");
|
|
conf.If(Platform.durango).IgnoreLibrary("winmm.lib", "%(IgnoreSpecificDefaultLibraries)");
|
|
conf.If(Optimization.Debug, Platform.durango).IgnoreLibrary("libcmtd.lib");
|
|
conf.If(Optimization.Release | Optimization.Retail, Platform.durango).IgnoreLibrary("libcmt.lib");
|
|
|
|
string vsVersion = (target.DevEnv == DevEnv.vs2012 ? "vs11" : (target.DevEnv == DevEnv.vs2015 ? "vs14" : "vs15"));
|
|
|
|
if (conf.Platform.IsWindows())
|
|
{
|
|
string procArch = (target.DevEnv == DevEnv.vs2015 || target.DevEnv == DevEnv.vs2017) ? (conf.Platform == Platform.win32 ? "x86/" : "x64/") : "";
|
|
string plainArch = conf.Platform == Platform.win64 ? "64" : "32";
|
|
string winArch = "win" + plainArch;
|
|
string P4Arch = procArch;
|
|
string ubiservicesArch = winArch;
|
|
string edgeArch = conf.Platform == Platform.win64 ? "x64" : "Win32";
|
|
string kinectArch = conf.Platform == Platform.win64 ? "amd64" : "x86";
|
|
string wiiYourselfArch = conf.Platform == Platform.win64 ? "/x64" : "";
|
|
|
|
conf.Defines.Add("_CONSOLE");
|
|
|
|
conf.IgnoreLibrary("LIBCMT.lib", "LIBCMTd.lib");
|
|
conf.If(Optimization.Debug).IgnoreLibrary("msvcrt.lib");
|
|
conf.If(Optimization.Retail).IgnoreLibrary(winArch + "_UAF_Editor_f.lib");
|
|
|
|
conf.If(Optimization.Debug | Optimization.Release).LibraryPaths.Add(ExternPath + "p4/lib/" + vsVersion + "/" + P4Arch + target.Optimization);
|
|
conf.LibraryPaths.Add( /*ExternPath + "UbiServices/custom/lib/SdkClient/win64_2015/" + target.Optimization,*/
|
|
ExternPath + "UbiServices/custom/lib/SdkClient/" + ubiservicesArch + "_" + target.DevEnv.GetDevEnvString() + "/" + target.Optimization,
|
|
ExternPath + "WiiYourself_1.15/miniDDK/lib" + wiiYourselfArch,
|
|
ExternPath + "EDGE/edge_1_2_0/lib/" + edgeArch + "/VS" + target.DevEnv.GetDevEnvString(),
|
|
ExternPath + "KinectPC_Sdk/v1.8/Lib/" + kinectArch,
|
|
ExternPath + "KinectGesture/Lib");
|
|
|
|
string libNvttArch = target.DevEnv == DevEnv.vs2012 ? "32" :
|
|
target.DevEnv == DevEnv.vs2015 ? plainArch :
|
|
target.DevEnv == DevEnv.vs2017 ? plainArch :
|
|
"32";
|
|
|
|
string libNvttSuffix = target.DevEnv == DevEnv.vs2012 ? "_vs12" :
|
|
target.DevEnv == DevEnv.vs2015 ? "_vs15" :
|
|
target.DevEnv == DevEnv.vs2017 ? "_vs17" :
|
|
"";
|
|
|
|
string libNvttName = "nvtt" + libNvttArch + libNvttSuffix + ".lib";
|
|
|
|
string kinectGestureArch = ((target.DevEnv == DevEnv.vs2015 || target.DevEnv == DevEnv.vs2017) && conf.Platform == Platform.win64) ? "x64" : "PC";
|
|
|
|
conf.LibraryFiles.Add("edgeanim_" + winArch + "_r.lib");
|
|
conf.If(Optimization.Debug).LibraryFiles.Add("Version.lib", "xapobased.lib", "nvcore.lib", "nvimage.lib", "nvmath.lib", libNvttName, "dxguid.lib", "xaudio2_8.lib", "d3d9.lib", "winmm.lib", "d3d11.lib", "dxgi.lib", "dinput8.lib", "XInput.lib", "winmm.lib", "IpHlpApi.lib", "Wininet.lib", "ws2_32.lib", "dsound.lib");
|
|
conf.If(Optimization.Release).LibraryFiles.Add("xapobase.lib");
|
|
conf.If(Optimization.Release).LibraryFiles.Add("nvcore.lib", "nvimage.lib", "nvmath.lib", libNvttName);
|
|
conf.If(Optimization.Debug).LibraryFiles.Add("KinectGesture_" + vsVersion + "_" + kinectGestureArch + "d.lib");
|
|
conf.If(Optimization.Debug | Optimization.Release).LibraryFiles.Add("libclient.lib", "libsupp.lib", "librpc.lib", "libp4api.lib", "libp4script.lib", "libp4script_c.lib", "libp4script_curl.lib", "libp4script_sqlite.lib");
|
|
conf.If(Optimization.Release | Optimization.Retail).LibraryFiles.Add("KinectGesture_" + vsVersion + "_" + kinectGestureArch + "r.lib");
|
|
conf.LibraryFiles.Add("Kinect10.lib");
|
|
conf.If(Optimization.Release | Optimization.Retail).LibraryFiles.Add("Version.lib", "dxguid.lib", "xaudio2_8.lib", "d3d9.lib", "winmm.lib", "dinput8.lib", "XInput.lib", "winmm.lib", "d3d11.lib", "dxgi.lib", "IpHlpApi.lib", "Wininet.lib", "ws2_32.lib", "dsound.lib");
|
|
conf.LibraryFiles.Add("mf.lib", "mfplat.lib", "mfreadwrite.lib", "mfuuid.lib", "shlwapi.lib", "wmcodecdspuuid.lib", "Bcrypt.lib", "Rpcrt4.lib");
|
|
conf.AdditionalLinkerOptions.Add("/ignore:4204");
|
|
if (target.IsPcStandalone() && target.Optimization == Optimization.Retail)
|
|
{
|
|
conf.AdditionalLinkerOptions.Add("/FIXED:NO");
|
|
}
|
|
conf.LibraryFiles.Add("psapi.lib");
|
|
|
|
if (target.DevEnv == DevEnv.vs2015 || target.DevEnv == DevEnv.vs2017)
|
|
{
|
|
conf.If(Optimization.Release | Optimization.Debug).LibraryFiles.Add("legacy_stdio_definitions.lib");
|
|
}
|
|
|
|
if (target.Optimization == Optimization.Debug || target.Optimization == Optimization.Release)
|
|
{
|
|
// Recommended linker options for Recode builds
|
|
conf.Options.Add(Options.Vc.Linker.Incremental.Enable);
|
|
conf.Options.Add(Options.Vc.Linker.CreateHotPatchableImage.ItaniumImage);
|
|
conf.Options.Add(Options.Vc.Linker.EnableCOMDATFolding.DoNotRemoveRedundantCOMDATs); //Needed to enable Incremental linking on Release for Recode
|
|
conf.Options.Add(Options.Vc.Linker.Reference.KeepUnreferencedData);
|
|
}
|
|
|
|
// UbiServices
|
|
conf.LibraryFiles.Add("libcurl.lib", "openSSL.lib", "ubiservices.lib", "uszlib.lib", "nghttp2.lib", "crypt32.lib"); // crypt32.lib is not provided by Ubiservices but is needed to link against newer versions of OpenSSL
|
|
|
|
string cudartDllName = target.DevEnv == DevEnv.vs2012 ? "cudart32_65.dll" :
|
|
target.DevEnv == DevEnv.vs2015 ? "cudart" + plainArch + "_80.dll" :
|
|
target.DevEnv == DevEnv.vs2017 ? "cudart" + plainArch + "_101.dll" :
|
|
"cudart" + plainArch + "_50_35.dll";
|
|
|
|
|
|
conf.AddPostBuildCopy(Path.Combine(ExternPath, @"NVIDIA GPU Computing Toolkit/" + cudartDllName));
|
|
conf.EventPreBuild.Add(string.Format(@"IF EXIST $(TargetDir)\Kinect10.dll DEL $(TargetDir)\Kinect10.dll"));
|
|
conf.AddPostBuildCopy(Path.Combine(ExternPath, @"KinectPC_Sdk\v1.8\lib\" + kinectArch + @"\Kinect10.dll"));
|
|
|
|
var nvttFolder = target.DevEnv == DevEnv.vs2012 ? "Release2012" :
|
|
target.DevEnv == DevEnv.vs2015 ? "Release2015" :
|
|
target.DevEnv == DevEnv.vs2017 ? "Release2017" :
|
|
"Release2010";
|
|
if (conf.Platform == Platform.win64)
|
|
nvttFolder = nvttFolder + @"\" + "x64";
|
|
|
|
var nvttArch = target.DevEnv == DevEnv.vs2012 ? "32" :
|
|
target.DevEnv == DevEnv.vs2015 ? plainArch :
|
|
target.DevEnv == DevEnv.vs2017 ? plainArch :
|
|
"32";
|
|
|
|
var nvttSuffix = target.DevEnv == DevEnv.vs2012 ? "_vs12" :
|
|
target.DevEnv == DevEnv.vs2015 ? "_vs15" :
|
|
target.DevEnv == DevEnv.vs2017 ? "_vs17" :
|
|
"";
|
|
|
|
var nvtDllName = nvttFolder + @"\" + "nvtt" + nvttArch + nvttSuffix + ".dll";
|
|
|
|
conf.AddPostBuildCopy(Path.Combine(ExternPath, @"NVIDIA Texture Tools 2\lib", nvtDllName));
|
|
|
|
if (target.IsPcStandalone())
|
|
{
|
|
conf.AddPostBuildCopy(ResolveString(DeploymentFilesPath + "pc", conf));
|
|
}
|
|
else
|
|
{
|
|
conf.AddPostBuildCopy(ResolveString(DeploymentFilesPath + "win32", conf));
|
|
}
|
|
conf.AddPostBuildCopy(Path.Combine(BranchRoot, "tools/extern/AudioEncode/AdpcmEncode.exe"));
|
|
|
|
|
|
if (target.IsPcStandalone())
|
|
{
|
|
conf.AddPostBuildCopy(Path.Combine(BranchRoot, "extern/UplaySDK/lib/uplay_r1_loader.dll"));
|
|
conf.AddPostBuildCopy(Path.Combine(BranchRoot, "extern/SteamSDK/redistributable_bin/steam_api.dll"));
|
|
conf.IncludePaths.Add(ExternPath + "UplaySDK/include");
|
|
conf.IncludePaths.Add(ExternPath + "SteamSDK/public");
|
|
conf.LibraryFiles.Add(ExternPath + "UplaySDK/lib/" + "uplay_r1_loader.lib");
|
|
conf.LibraryFiles.Add(ExternPath + "SteamSDK/redistributable_bin/" + "steam_api.lib");
|
|
|
|
}
|
|
}
|
|
else if (conf.Platform == Platform.orbis)
|
|
{
|
|
conf.LibraryPaths.Add( ExternPath + "EDGE/edge_1_2_0/lib/Orbis/VS" + target.DevEnv.GetDevEnvString(),
|
|
ExternPath + "KinectGesture/Lib",
|
|
ExternPath + "UbiServices/custom/lib/SdkClient/ps4_" + target.DevEnv.GetDevEnvString() + "/" + target.Optimization);
|
|
|
|
conf.LibraryFiles.Add(
|
|
"SceJson2_stub_weak",
|
|
"SceSigninDialog_stub_weak",
|
|
"SceGameLiveStreaming_stub_weak",
|
|
"SceRandom_stub_weak",
|
|
"SceWebBrowserDialog_stub_weak",
|
|
"ScePlayGo_stub_weak",
|
|
"SceSaveDataDialog_stub_weak",
|
|
"SceSaveData_stub_weak",
|
|
"SceDepth_stub_03_weak",
|
|
"SceNpAuth_stub_weak",
|
|
"SceNpManager_stub_weak",
|
|
"SceAppContent_stub_weak",
|
|
"SceMove_stub_weak",
|
|
"SceSystemService_stub_weak",
|
|
"SceCommonDialog_stub_weak",
|
|
"ScePosix_stub_weak",
|
|
"SceMsgDialog_stub_weak",
|
|
"SceImeDialog_stub_weak",
|
|
"SceFios2_stub_weak",
|
|
"SceAudioOut_stub_weak",
|
|
"SceNgs2_stub_weak",
|
|
"ScePad_stub_weak",
|
|
"SceAudioIn_stub_weak",
|
|
"SceNet_stub_weak",
|
|
"SceNetCtl_stub_weak",
|
|
"SceGpuAddress",
|
|
"SceGnmDriver_stub_weak",
|
|
"SceShaderBinary",
|
|
"SceVideoOut_stub_weak",
|
|
"SceUlt_stub_weak",
|
|
"SceCes",
|
|
"SceHttp_stub_weak",
|
|
"SceSsl_stub_weak",
|
|
"SceNpCommon_stub_weak",
|
|
"SceRtc_stub_weak",
|
|
"SceUserService_stub_weak",
|
|
"SceCamera_stub_weak",
|
|
"SceSysmodule_stub_weak",
|
|
"SceNpMatching2_stub_weak",
|
|
"SceNpUtility_stub_weak",
|
|
"SceNpScore_stub_weak",
|
|
"SceNpTrophy_stub_weak",
|
|
"SceNpTus_stub_weak",
|
|
"SceNpWebApi_stub_weak",
|
|
"SceNpCommerce_stub_weak",
|
|
"SceInvitationDialog_stub_weak",
|
|
"SceNpProfileDialog_stub_weak",
|
|
"SceNpToolkit2_stub_weak",
|
|
"SceErrorDialog_stub_weak",
|
|
"SceScreenShot_stub_weak",
|
|
"SceVideoRecording_stub_weak",
|
|
"SceSecure",
|
|
ExternPath + "SK_iisu/PS4/Lib/libHumanTracking_stub_weak.a",
|
|
"SceSpeechRecognition");
|
|
|
|
conf.If(Optimization.Debug).LibraryFiles.Add(
|
|
"SceGnm_debug",
|
|
"SceGnmx_debug",
|
|
"edgeanim_orbis_d",
|
|
"KinectGesture_" + vsVersion + "_ORBISd.a");
|
|
|
|
conf.If(Optimization.Debug | Optimization.Release).LibraryFiles.Add("SceDbg_stub_weak", 10);
|
|
conf.If(Optimization.Debug | Optimization.Release).LibraryFiles.Add("SceDbgException_stub_weak", 10);
|
|
conf.If(Optimization.Debug | Optimization.Release).LibraryFiles.Add("SceRazorCpu_stub_weak", 10);
|
|
conf.If(Optimization.Debug | Optimization.Release).LibraryFiles.Add("SceMat_stub_weak", 10);
|
|
conf.If(Optimization.Debug | Optimization.Release).LibraryFiles.Add(ExternPath + "SK_iisu/Ps4/lib/libskv.a", 10);
|
|
|
|
conf.If(Optimization.Release | Optimization.Retail).LibraryFiles.Add(
|
|
"SceGnm",
|
|
"SceGnmx",
|
|
"edgeanim_orbis_r",
|
|
"KinectGesture_" + vsVersion + "_ORBISr.a");
|
|
|
|
//UbiServices
|
|
conf.LibraryFiles.Add(
|
|
"ubiservices",
|
|
"openSSL",
|
|
"uszlib");
|
|
|
|
conf.AddPostBuildCopy(new XCopyCommand(ResolveString(DeploymentFilesPath + "orbis", conf)));
|
|
|
|
}
|
|
else if (conf.Platform == Platform.durango)
|
|
{
|
|
conf.LibraryPaths.Add( ExternPath + "EDGE/edge_1_2_0/lib/Durango/VS" + target.DevEnv.GetDevEnvString(),
|
|
ExternPath + "UbiServices/custom/lib/SdkClient/xone_" + target.DevEnv.GetDevEnvString() + "/" + target.Optimization,
|
|
ExternPath + "KinectGesture/Lib",
|
|
ExternPath + "openssl_x1/custom/libs");
|
|
|
|
conf.If(Optimization.Debug).LibraryFiles.Add("d3dcompiler.lib", "d3d11_x.lib", "d3d12_x.lib", "combase.lib", "kernelx.lib", "dxguid.lib", "uuid.lib", "xaudio2.lib", "ws2_32.lib", "edgeanim_durango_d.lib", "KinectGesture_" + vsVersion + "_Durangod.lib", "acphal.lib", "xg_x.lib", "pixevt.lib", "Mmdevapi.lib", "EtwPlus.lib");
|
|
conf.If(Optimization.Release).LibraryFiles.Add("d3dcompiler.lib", "d3d11_x.lib", "d3d12_x.lib", "combase.lib", "kernelx.lib", "dxguid.lib", "uuid.lib", "xaudio2.lib", "ws2_32.lib", "edgeanim_durango_r.lib", "KinectGesture_" + vsVersion + "_Durangor.lib", "acphal.lib", "xg_x.lib", "pixevt.lib", "Mmdevapi.lib", "EtwPlus.lib");
|
|
conf.If(Optimization.Retail).LibraryFiles.Add("d3d11_x.lib", "d3d12_x.lib", "combase.lib", "kernelx.lib", "dxguid.lib", "uuid.lib", "xaudio2.lib", "ws2_32.lib", "edgeanim_durango_r.lib", "KinectGesture_" + vsVersion + "_Durangor.lib", "acphal.lib", "xg_x.lib", "Mmdevapi.lib", "EtwPlus.lib");
|
|
conf.LibraryFiles.Add("consoleid.lib", "bcrypt.lib", "libcrypto.lib", "libssl.lib"); // libcrypto.lib and libssl.lib are from extern/openssl_x1/custom
|
|
|
|
|
|
// UbiServices
|
|
conf.LibraryFiles.Add("ubiservices.lib", "uszlib.lib");
|
|
|
|
//Add winm search directory
|
|
conf.AdditionalCompilerOptions.Add("/AI\"$(Console_SdkWindowsMetadataPath)\" /AI\"$(VCInstallDir)vcpackages\"");
|
|
//Setup subsystem so we could use recommended from microsoft main signature
|
|
conf.Options.Add(Options.Vc.Linker.SubSystem.Console);
|
|
|
|
//Hack: clear AppxManifest.xml explicitly cause with our configs visual studio does not do it even when changing configurations
|
|
conf.EventPreBuild.Add("del \"$(FinalAppxManifestName)\"");
|
|
|
|
conf.Options.Add(Options.Vc.Compiler.CompileAsWinRT.Enable);
|
|
conf.Options.Add(Options.Vc.Linker.UseLibraryDependencyInputs.Enable);
|
|
|
|
//Package_durango.appxmanifest
|
|
conf.NeedsAppxManifestFile = true;
|
|
|
|
List<string> files = Util.DirectoryGetFiles(ResolveString(SourcePath + "/appFramework"), "*.appxManifest", SearchOption.AllDirectories).ToList();
|
|
if (files.Count > 0)
|
|
{
|
|
conf.AppxManifestFilePath = files.First();
|
|
}
|
|
conf.ConsumeWinRTExtensions.Add("Live");
|
|
|
|
conf.AddPostBuildCopy(new XCopyCommand(ResolveString(DeploymentFilesPath + "durango", conf)));
|
|
}
|
|
else if (conf.Platform == Platform.nx)
|
|
{
|
|
// forced to do this way, otherwise the $(NINTENDO_SDK_ROOT)\..\ path would remove the while $(NINTENDO_SDK_ROOT) path...
|
|
string sdkRoot = Environment.GetEnvironmentVariable("NINTENDO_SDK_ROOT");
|
|
conf.LibraryPaths.Add(ExternPath + "EDGE/edge_1_2_0/lib/NX64/VS" + target.DevEnv.GetDevEnvString(),
|
|
ExternPath + "UbiServices/custom/lib/SdkClient/switch_" + target.DevEnv.GetDevEnvString() + "/" + target.Optimization,
|
|
sdkRoot + @"\..\NvnGraphicsDebugger\target\nx-nvn-a64");
|
|
|
|
conf.If(Optimization.Debug | Optimization.Release).LibraryFiles.Add("libnn_profiler.a");
|
|
|
|
// Edge
|
|
conf.If(Optimization.Debug).LibraryFiles.Add("edgeanim_nx_d");
|
|
conf.If(Optimization.Release | Optimization.Retail).LibraryFiles.Add("edgeanim_nx_r");
|
|
// UbiServices
|
|
conf.LibraryFiles.Add("ubiservices", "uszlib");
|
|
|
|
conf.AddPostBuildCopy(new XCopyCommand(ResolveString(DeploymentFilesPath + "nx", conf)));
|
|
|
|
conf.LibraryFiles.Add("libopenssl.a"); // in NX SDK, not Ubiservices
|
|
conf.LibraryFiles.Add("libcurl.a"); // in NX SDK, not Ubiservices
|
|
conf.If(Optimization.Debug | Optimization.Release).AdditionalNSOFiles.Add("Nvidia_gfx_debugger.nso");
|
|
conf.AdditionalNSOFiles.Add("multimedia.nso"); // to use hardware video decoding chipset
|
|
// conf.MetadataSource = @"$(ProjectDir)..\..\..\gameroot\nx\JD.aarch64.lp64.meta";
|
|
}
|
|
/*
|
|
else if (conf.Platform == Ggp.SharpmakePlatform)
|
|
{
|
|
...
|
|
}
|
|
*/
|
|
}
|
|
|
|
protected override void ConfigureLinkerOptions(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureLinkerOptions(conf, target);
|
|
// conf.If(Optimization.Debug | Optimization.Release, Platform.orbis).Options.Add(Orbis.Options.Linker.Addressing.NonASLR);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CSharpGenerator
|
|
|
|
[Generate]
|
|
internal class UAF_CSharpGenerator : EngineProject
|
|
{
|
|
public UAF_CSharpGenerator()
|
|
{
|
|
OutputType = Configuration.OutputType.Exe;
|
|
RootPath = SourcePath + "csharpGenerator";
|
|
}
|
|
|
|
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureAll(conf, target);
|
|
conf.SolutionFolder = "UAF";
|
|
conf.TargetFileName = "CSharpGenerator";
|
|
|
|
conf.AddPublicDependency<UAF_Core>(target);
|
|
conf.AddPublicDependency<UAF_EngineWrapper>(target);
|
|
conf.TargetPath = Path.Combine(conf.TargetPath, "Tools", conf.TargetFileName);
|
|
var lockedEngineWrapperDllPath = UAF_EngineWrapper.DllPath + ".locked";
|
|
|
|
var plainArch = conf.Platform == Platform.win64 ? "64" : "32";
|
|
var kinectArch = conf.Platform == Platform.win64 ? "amd64" : "x86";
|
|
|
|
var engineWrapperDllName = @"""EngineWrapper" + (conf.Platform == Platform.win32 ? "32" : "") + @".dll""";
|
|
|
|
conf.EventPreBuild.Add(string.Format(@"IF EXIST {0} RENAME {0} {1}", lockedEngineWrapperDllPath, engineWrapperDllName));
|
|
conf.EventPreBuild.Add(string.Format(@"IF EXIST $(TargetDir)\Kinect10.dll DEL $(TargetDir)\Kinect10.dll"));
|
|
|
|
|
|
var nvttFolder = target.DevEnv == DevEnv.vs2012 ? "Release2012" :
|
|
target.DevEnv == DevEnv.vs2015 ? "Release2015" :
|
|
target.DevEnv == DevEnv.vs2017 ? "Release2017" :
|
|
"Release2010";
|
|
if (conf.Platform == Platform.win64)
|
|
nvttFolder = nvttFolder + @"\" + "x64";
|
|
|
|
var nvttArch = target.DevEnv == DevEnv.vs2012 ? "32" :
|
|
target.DevEnv == DevEnv.vs2015 ? plainArch :
|
|
target.DevEnv == DevEnv.vs2017 ? plainArch :
|
|
"32";
|
|
|
|
var nvttSuffix = target.DevEnv == DevEnv.vs2012 ? "_vs12" :
|
|
target.DevEnv == DevEnv.vs2015 ? "_vs15" :
|
|
target.DevEnv == DevEnv.vs2017 ? "_vs17" :
|
|
"";
|
|
|
|
var nvtDllName = nvttFolder + @"\" + "nvtt" + nvttArch + nvttSuffix + ".dll";
|
|
|
|
var cudartDllName = target.DevEnv == DevEnv.vs2012 ? "cudart32_65.dll" :
|
|
target.DevEnv == DevEnv.vs2015 ? "cudart" + plainArch + "_80.dll" :
|
|
target.DevEnv == DevEnv.vs2017 ? "cudart" + plainArch + "_101.dll" :
|
|
"cudart" + plainArch + "_50_35.dll";
|
|
|
|
|
|
conf.TargetCopyFiles.Add(Path.Combine(ExternPath, @"NVIDIA GPU Computing Toolkit/" + cudartDllName));
|
|
conf.TargetCopyFiles.Add(Path.Combine(ExternPath, @"NVIDIA Texture Tools 2\lib", nvtDllName));
|
|
conf.TargetCopyFiles.Add(Path.Combine(ExternPath, @"KinectPC_Sdk\v1.8\lib\" + kinectArch + @"\Kinect10.dll"));
|
|
conf.EventPostBuild.Add(string.Format(@"$(OutputFile) {0}", Path.Combine(BranchRoot, "tools", @"framework\JD.Serialization\uaf\")));
|
|
}
|
|
|
|
protected override void ConfigureCompilerOptions(Project.Configuration conf, BaseCppTarget target)
|
|
{
|
|
conf.Options.Add(Options.Vc.General.CommonLanguageRuntimeSupport.ClrSupport);
|
|
conf.Options.Add(Options.Vc.General.CharacterSet.Unicode);
|
|
conf.Options.Add(Options.Vc.Compiler.Exceptions.EnableWithSEH);
|
|
conf.Options.Add(Options.Vc.Compiler.RuntimeChecks.Default);
|
|
conf.Options.Add(Options.Vc.Compiler.FloatingPointModel.Precise);
|
|
conf.Options.Add(Options.Vc.Compiler.MinimalRebuild.Disable);
|
|
conf.Options.Add(Options.Vc.General.WarningLevel.Level3);
|
|
conf.Options.Add(Options.Vc.General.TreatWarningsAsErrors.Disable);
|
|
conf.Options.Add(Options.Vc.General.WholeProgramOptimization.Disable);
|
|
|
|
if (target.Optimization == Optimization.Debug)
|
|
conf.Options.Add(Options.Vc.Compiler.Optimization.Disable);
|
|
else if (target.Optimization == Optimization.Release)
|
|
conf.Options.Add(Options.Vc.Compiler.Optimization.MaximizeSpeed);
|
|
conf.Options.Add(Options.Vc.Compiler.Inline.Default);
|
|
conf.Options.Add(Options.Vc.Compiler.Intrinsic.Disable);
|
|
conf.Options.Add(Options.Vc.Compiler.FavorSizeOrSpeed.Neither);
|
|
conf.Options.Add(Options.Vc.Compiler.OmitFramePointers.Disable);
|
|
conf.Options.Add(Options.Vc.Compiler.FiberSafe.Disable);
|
|
|
|
conf.If(Optimization.Debug).Options.Add(Options.Vc.Compiler.RuntimeLibrary.MultiThreadedDebugDLL);
|
|
conf.IfNot(Optimization.Debug).Options.Add(Options.Vc.Compiler.RuntimeLibrary.MultiThreadedDLL);
|
|
|
|
conf.Options.Add(Options.Vc.Compiler.RTTI.Enable);
|
|
conf.Options.Add(Options.Vc.Compiler.FloatingPointExceptions.Disable);
|
|
}
|
|
|
|
protected override void ConfigureDefines(Configuration conf, BaseCppTarget target)
|
|
{
|
|
base.ConfigureDefines(conf, target);
|
|
conf.Defines.Add(")WRAPPER_C");
|
|
conf.If(Optimization.Debug).Defines.Add("_DEBUG");
|
|
conf.IfNot(Optimization.Debug).Defines.Add("NDEBUG", "_SECURE_SCL=0");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|