JD2022-TU1/main/build/sharpmake/Engine/UnitTests.cs

638 lines
29 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Sharpmake;
namespace JustDance.Engine
{
#region UnitTests project base class
internal abstract class UnitTests_Project : EngineProject
{
protected UnitTests_Project()
{
Name = GetType().Name.Replace("_", ".");
}
public override void ConfigureAll(Project.Configuration conf, BaseCppTarget target)
{
base.ConfigureAll(conf, target);
// UnitTests projects use gmock
conf.IncludePaths.Add(ExternPath + @"gmock\googlemock\include");
conf.IncludePaths.Add(ExternPath + @"gmock\googletest\include");
conf.IncludePaths.Add(ExternPath + "rapidjson/include");
if (conf.Platform == Platform.nx || conf.Platform == Platform.orbis)
{
// Suppress warning "binding dereferenced null pointer to reference has undefined behavior"
// Due to function template <typename T> inline T Invalid();
// in extern\gmock\include\gmock\internal\gmock-internal-utils.h
conf.AdditionalCompilerOptions.Add("-Wno-null-dereference");
}
// 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);
}
}
if (conf.Platform == Platform.orbis)
{
conf.AdditionalCompilerOptions.Add("-std=c++14");
}
}
}
#endregion
#region UAF
#region UAF Adapters Test
[Generate]
internal class UAF_Adapters_Test : UnitTests_Project
{
public UAF_Adapters_Test()
{
RootPath = UnitTestsPath + "adapters";
PrecompileHeader = "precompiled_unittests_adapters";
}
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
{
base.ConfigureAll(conf, target);
conf.Options.Add(Options.Vc.Linker.UseLibraryDependencyInputs.Enable);
conf.Options.Add(Options.Vc.Linker.LinkLibraryDependencies.Enable);
conf.SolutionFolder = "/UAF";
conf.IncludePaths.Add(ExternPath + @"GLEW");
conf.IncludePaths.Add(ExternPath + @"Raki/Source");
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.IncludePaths.Add(ExternPath + @"UbiServices/custom/client-sdk/public",
ExternPath + @"UbiServices/custom/external/harbourcommon/libraries/harboureal/api/sources");
//Misc
conf.If(Platform.orbis).IncludePaths.Add("$(IISU_SDK_DIR)/include/iisu");
}
}
#endregion
#region UAF Core Test
[Generate]
internal class UAF_Core_Test : UnitTests_Project
{
public UAF_Core_Test()
{
RootPath = UnitTestsPath + "core";
PrecompileHeader = "precompiled_unittests_core";
}
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = "/UAF";
conf.Options.Add(Options.Vc.Linker.UseLibraryDependencyInputs.Enable);
conf.Options.Add(Options.Vc.Linker.LinkLibraryDependencies.Enable);
}
}
#endregion
#region UAF Editor Test
[Generate]
internal class UAF_Editor_Test : UnitTests_Project
{
public UAF_Editor_Test()
{
RootPath = UnitTestsPath + "editor";
PrecompileHeader = "precompiled_unittests_editor";
}
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = "/UAF";
}
}
#endregion
#region UAF Engine Test
[Generate]
internal class UAF_Engine_Test : UnitTests_Project
{
public UAF_Engine_Test()
{
RootPath = UnitTestsPath + "engine";
PrecompileHeader = "precompiled_unittests_engine";
}
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = "/UAF";
conf.Options.Add(Options.Vc.Linker.UseLibraryDependencyInputs.Enable);
conf.Options.Add(Options.Vc.Linker.LinkLibraryDependencies.Enable);
conf.AddPublicDependency<Raki>(target);
conf.IncludePaths.Add(ExternPath + "UbiServices/custom/client-sdk/public",
ExternPath + "UbiServices/custom/external/harbourcommon/libraries/harboureal/api/sources");
}
}
#endregion
#region UAF EngineWrapper Test
[Generate]
internal class UAF_EngineWrapper_Test : UnitTests_Project
{
public UAF_EngineWrapper_Test()
{
RootPath = UnitTestsPath + "engineWrapper";
PrecompileHeader = "precompiled_unittests_engineWrapper";
}
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = "/UAF";
conf.IfNot(Platform.win32 | Platform.win64).SourceFilesBuildExcludeRegex.Add(".cpp");
conf.Options.Add(Options.Vc.Linker.UseLibraryDependencyInputs.Enable);
conf.Options.Add(Options.Vc.Linker.LinkLibraryDependencies.Enable);
}
}
#endregion
#region UAF Gameplay Test
[Generate]
internal class UAF_Gameplay_Test : UnitTests_Project
{
public UAF_Gameplay_Test()
{
RootPath = UnitTestsPath + "gameplay";
PrecompileHeader = "precompiled_unittests_gameplay";
}
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = "/UAF";
conf.Options.Add(Options.Vc.Linker.UseLibraryDependencyInputs.Enable);
conf.Options.Add(Options.Vc.Linker.LinkLibraryDependencies.Enable);
}
}
#endregion
#region UAF InitFactory Test
[Generate]
internal class UAF_InitFactory_Test : UnitTests_Project
{
public UAF_InitFactory_Test()
{
RootPath = UnitTestsPath + "initFactory";
PrecompileHeader = "precompiled_unittests_initFactory";
}
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = "/UAF";
conf.Options.Add(Options.Vc.Linker.UseLibraryDependencyInputs.Enable);
conf.Options.Add(Options.Vc.Linker.LinkLibraryDependencies.Enable);
}
}
#endregion
#endregion
#region JD
#region JD Editor Test
[Generate]
internal class JD_Editor_Test : UnitTests_Project
{
public JD_Editor_Test()
{
RootPath = UnitTestsPath + "JD/editor";
PrecompileHeader = "JD_precompiled_unittests_editor";
}
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = "/JD";
}
}
#endregion
#region JD Gameplay Test
[Generate]
internal class JD_Gameplay_Test : UnitTests_Project
{
public JD_Gameplay_Test()
{
RootPath = UnitTestsPath + "JD/gameplay";
PrecompileHeader = "JD_precompiled_unittests_gameplay";
}
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
{
base.ConfigureAll(conf, target);
conf.SolutionFolder = "/JD";
conf.IncludePaths.Add(ExternPath + "UbiServices/custom/client-sdk/public",
ExternPath + "UbiServices/custom/external/harbourcommon/libraries/harboureal/api/sources");
conf.Options.Add(Options.Vc.Linker.UseLibraryDependencyInputs.Enable);
conf.Options.Add(Options.Vc.Linker.LinkLibraryDependencies.Enable);
}
}
#endregion
#endregion
#region UA_unittests
[Generate]
internal class UA_Unittests : UnitTests_Project
{
public UA_Unittests()
{
RootPath = UnitTestsPath + "ua_unittests";
OutputType = Configuration.OutputType.Exe;
Name = "ua_unittests";
DeployProject = true;
}
public override void ConfigureAll(Configuration conf, BaseCppTarget target)
{
base.ConfigureAll(conf, target);
conf.If(target.Platform.IsWindows()).TargetFileName = Name + (target.Platform == Platform.win32 ? "32" : "");
conf.Options.Add(Options.Vc.Linker.SubSystem.Console);
conf.Options.Add(Options.Vc.Linker.UseLibraryDependencyInputs.Enable);
conf.Options.Add(Options.Vc.Linker.LinkLibraryDependencies.Enable);
conf.AddPublicDependency<UAF_Adapters_Test>(target);
conf.AddPublicDependency<UAF_Core_Test>(target);
conf.AddPublicDependency<UAF_Engine_Test>(target);
conf.If(Platform.win32 | Platform.win64).AddPublicDependency<UAF_EngineWrapper_Test>(target);
conf.IfNot(Platform.win32 | Platform.win64).AddPublicDependency<UAF_EngineWrapper_Test>(target, DependencySetting.DefaultWithoutLinking);
conf.AddPublicDependency<UAF_Gameplay_Test>(target);
conf.AddPublicDependency<UAF_InitFactory_Test>(target);
conf.AddPublicDependency<JD_Gameplay_Test>(target);
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.AddExternDependency<LuaLib>(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<GoTop>(target, DependencySetting.DefaultWithoutLinking);
conf.IfNot(Optimization.Retail).AddPublicDependency<Plugins>(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);
ConfigureGmock(conf, target);
switch (conf.Platform)
{
case Platform.win32:
case Platform.win64: ConfigurePC(conf, target);
break;
case Platform.orbis: ConfigureOrbis(conf, target);
break;
case Platform.durango: ConfigureDurango(conf, target);
break;
case Platform.nx: ConfigureNX(conf, target);
break;
// case Ggp.SharpmakePlatform: ConfigureGGP(conf, target);
// break;
// case Prospero.SharpmakePlatform: ConfigureProspero(conf, target);
// break;
}
}
private static void ConfigureGmock(Configuration conf, BaseCppTarget target)
{
conf.If(Platform.win32 | Platform.win64 | Platform.orbis | Platform.nx).AddExternDependency<gmock>(target);
}
private void ConfigurePC(Configuration conf, BaseCppTarget target)
{
Debug.Assert(conf.Platform == Platform.win32 || conf.Platform == Platform.win64);
conf.Defines.Add("_CONSOLE");
conf.IgnoreLibrary("LIBCMT.lib", "LIBCMTd.lib");
conf.If(Optimization.Debug).IgnoreLibrary("msvcrt.lib");
if (target.ApplicationType == ApplicationType.Editor)
{
conf.AddPrivateDependency<UAF_Editor_Test>(target);
conf.AddPrivateDependency<JD_Editor_Test>(target);
conf.AddPublicDependency<UAF_Editor>(target);
conf.AddPublicDependency<JD_Editor>(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 + "UbiServices/custom/external/dependencies/uplaypc/lib/",
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";
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.LibraryFiles.Add("mf.lib", "mfplat.lib", "mfreadwrite.lib", "mfuuid.lib", "shlwapi.lib", "wmcodecdspuuid.lib");
string kinectGestureArch = ((target.DevEnv == DevEnv.vs2015 || target.DevEnv == DevEnv.vs2017) && conf.Platform == Platform.win64) ? "x64" : "PC";
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");
// UbiServices
conf.LibraryFiles.Add("libcurl.lib", "openSSL.lib", "ubiservices.lib", "uszlib.lib", "uplay_r2_loader64.lib", "nghttp2.lib", "crypt32.lib");
conf.AddPostBuildCopy(Path.Combine(ExternPath + "UbiServices/custom/lib/SdkClient/" + ubiservicesArch + "_" + target.DevEnv.GetDevEnvString() + "/" + target.Optimization + "/" + "uplay_r2_loader64.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.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"));
if (conf.Platform.IsWindows())
{
if (target.ApplicationType == ApplicationType.Editor)
{
conf.AddPostBuildCopy(ResolveString(DeploymentFilesPath + "win32", conf));
}
if (target.ApplicationType == ApplicationType.Standalone)
{
conf.AddPostBuildCopy(ResolveString(DeploymentFilesPath + "pc", conf));
conf.LibraryFiles.Add(ExternPath + "UplaySDK/lib/" + "uplay_r1_loader.lib");
conf.LibraryFiles.Add(ExternPath + "SteamSDK/redistributable_bin/" + "steam_api.lib");
}
}
conf.AddPostBuildCopy(Path.Combine(BranchRoot, "tools/extern/AudioEncode/AdpcmEncode.exe"));
// execute ua_unittests.exe in the post-build : each time the project is compiled, it executes unit tests
if (!target.IsPcStandalone())
{
conf.If(Optimization.Debug | Optimization.Release).EventPostBuild.Add(@"$(OutputFile)");
conf.If(Optimization.Debug | Optimization.Release).EventPostBuild.Add(@"IF %ERRORLEVEL% NEQ 0 ECHO Unit Tests didn't finish successfully && EXIT 1");
}
}
private void ConfigureOrbis(Configuration conf, BaseCppTarget target)
{
string vsVersion = (target.DevEnv == DevEnv.vs2012 ? "vs11" : (target.DevEnv == DevEnv.vs2015 ? "vs14" : "vs15"));
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(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(ResolveString(DeploymentFilesPath + "orbis", conf));
}
private void ConfigureDurango(Configuration conf, BaseCppTarget target)
{
string vsVersion = (target.DevEnv == DevEnv.vs2012 ? "vs11" : (target.DevEnv == DevEnv.vs2015 ? "vs14" : "vs15"));
conf.IgnoreLibrary("winmm.lib", "%(IgnoreSpecificDefaultLibraries)");
conf.If(Optimization.Debug).IgnoreLibrary("libcmtd.lib");
conf.If(Optimization.Release | Optimization.Retail).IgnoreLibrary("libcmt.lib");
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");
conf.If(Optimization.Debug).LibraryFiles.Add("d3dcompiler.lib", "d3d11_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", "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", "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");
// UbiServices
conf.LibraryFiles.Add("ubiservices.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
List<string> files = Directory.GetFiles(ResolveString(SourcePath + "/appFramework"), "*.appxManifest", SearchOption.AllDirectories).ToList();
if (files.Count > 0)
{
conf.AppxManifestFilePath = files.First();
}
conf.ConsumeWinRTExtensions.Add("Live");
conf.AddPostBuildCopy(ResolveString(DeploymentFilesPath + "durango", conf));
}
private void ConfigureNX(Configuration conf, BaseCppTarget target)
{
conf.If(Optimization.Debug | Optimization.Release).LibraryFiles.Add("libnn_profiler.a");
// 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");
// 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.LibraryFiles.Add("openSSL"); // in NX SDK, not Ubiservices
conf.LibraryFiles.Add("curl"); // 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";
}
private void ConfigureGGP(Configuration conf, BaseCppTarget target)
{
}
private void ConfigureProspero(Configuration conf, BaseCppTarget target)
{
}
}
#endregion
}