aboutsummaryrefslogtreecommitdiff
path: root/Source/NVIDIAGfeSDK/NVIDIAGfeSDK.Build.cs
blob: 9a44a8c25c10cb73a706e082633385a3d5c31f6b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.

using System.IO;

namespace UnrealBuildTool.Rules
{
    public class NVIDIAGfeSDK : ModuleRules
    {
        private string ModulePath
        {
            get { return ModuleDirectory; }
        }

        private string ThirdPartyPath
        {
            get { return Path.GetFullPath(Path.Combine(ModulePath, "../../ThirdParty/")); }
        }

        private string BinariesPath
        {
            get { return Path.GetFullPath(Path.Combine(ThirdPartyPath, "NVIDIAGfeSDK", "redist")); }
        }

        private string LibraryPath
        {
            get { return Path.GetFullPath(Path.Combine(ThirdPartyPath, "NVIDIAGfeSDK", "lib")); }
        }

        public NVIDIAGfeSDK(ReadOnlyTargetRules Target) : base(Target)
        {
            PublicIncludePaths.AddRange(
                new string[] {
                ThirdPartyPath + "NVIDIAGfeSDK/Include",
                ThirdPartyPath + "NVIDIAGfeSDK/Include/gfesdk",
                    // ... add public include paths required here ...
                }
            );

            PrivateIncludePaths.AddRange(
                new string[] {
                ThirdPartyPath + "NVIDIAGfeSDK/Include",
                ThirdPartyPath + "NVIDIAGfeSDK/Include/gfesdk",
                    // ... add other private include paths required here ...
                }
            );

            PublicDependencyModuleNames.AddRange(
                new string[]
                {
                    "Engine",
                    "Core",
                    "Projects",
                    "CoreUObject"
                }
            );

            PrivateDependencyModuleNames.AddRange(
                new string[]
                {
                    // ... add private dependencies that you statically link with here ...
                }
            );

            DynamicallyLoadedModuleNames.AddRange(
                new string[]
                {
                    // ... add any modules that your module loads dynamically here ...
                }
            );

            LoadNVIDIAGfeSDKLib(Target);
        }

        public bool LoadNVIDIAGfeSDKLib(ReadOnlyTargetRules Target)
        {
            bool isLibrarySupported = false;

            if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Win32))
            {
                isLibrarySupported = true;

                string PlatformString = (Target.Platform == UnrealTargetPlatform.Win64) ? "Win64" : "Win32";

                string DllPath = Path.Combine(BinariesPath, PlatformString);                
                string LibFullPath = Path.Combine(LibraryPath, PlatformString);

                string DllName = Path.Combine(DllPath, "GfeSDK.dll");
                string LibFilePath = Path.Combine(LibFullPath, "GfeSDK.lib");

                PublicAdditionalLibraries.Add(LibFilePath);

                PublicDelayLoadDLLs.Add("GfeSDK.dll");
                RuntimeDependencies.Add(DllName);
            }

            return isLibrarySupported;
        }
    }
}