/// <summary>
        /// Write C++ toolchain information to JSON writer
        /// </summary>
        /// <param name="Target"></param>
        /// <param name="Writer"></param>
        private static void ExportEnvironmentToJson(UEBuildTarget Target, JsonWriter Writer)
        {
            CppCompileEnvironment GlobalCompileEnvironment = Target.CreateCompileEnvironmentForProjectFiles();

            Writer.WriteArrayStart("EnvironmentIncludePaths");
            foreach (DirectoryReference Path in GlobalCompileEnvironment.UserIncludePaths)
            {
                Writer.WriteValue(Path.FullName);
            }
            foreach (DirectoryReference Path in GlobalCompileEnvironment.SystemIncludePaths)
            {
                Writer.WriteValue(Path.FullName);
            }

            // TODO: get corresponding includes for specific platforms
            if (UEBuildPlatform.IsPlatformInGroup(Target.Platform, UnrealPlatformGroup.Windows))
            {
                foreach (DirectoryReference Path in Target.Rules.WindowsPlatform.Environment.IncludePaths)
                {
                    Writer.WriteValue(Path.FullName);
                }
            }
            Writer.WriteArrayEnd();

            Writer.WriteArrayStart("EnvironmentDefinitions");
            foreach (string Definition in GlobalCompileEnvironment.Definitions)
            {
                Writer.WriteValue(Definition);
            }
            Writer.WriteArrayEnd();
        }
        public override void SetUpEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            CompileEnvironment.Definitions.Add("PLATFORM_DESKTOP=0");
            CompileEnvironment.Definitions.Add("PLATFORM_CAN_SUPPORT_EDITORONLY_DATA=0");

            CompileEnvironment.Definitions.Add("WITH_OGGVORBIS=1");

            CompileEnvironment.Definitions.Add("UNICODE");
            CompileEnvironment.Definitions.Add("_UNICODE");

            CompileEnvironment.Definitions.Add("PLATFORM_ANDROID=1");
            CompileEnvironment.Definitions.Add("ANDROID=1");

            CompileEnvironment.Definitions.Add("WITH_EDITOR=0");
            CompileEnvironment.Definitions.Add("USE_NULL_RHI=0");

            SetUpSpecificEnvironment(Target, CompileEnvironment, LinkEnvironment);

//			LinkEnvironment.AdditionalLibraries.Add("libc++_shared");
            LinkEnvironment.AdditionalLibraries.Add("c");
            LinkEnvironment.AdditionalLibraries.Add("dl");
            LinkEnvironment.AdditionalLibraries.Add("log");
            LinkEnvironment.AdditionalLibraries.Add("m");
//			LinkEnvironment.AdditionalLibraries.Add("stdc++");
            LinkEnvironment.AdditionalLibraries.Add("z");
            LinkEnvironment.AdditionalLibraries.Add("atomic");
        }
示例#3
0
        public override void SetUpEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            CompileEnvironment.Definitions.Add("PLATFORM_DESKTOP=0");
            CompileEnvironment.Definitions.Add("PLATFORM_CAN_SUPPORT_EDITORONLY_DATA=0");

            CompileEnvironment.Definitions.Add("WITH_OGGVORBIS=1");

            CompileEnvironment.Definitions.Add("UNICODE");
            CompileEnvironment.Definitions.Add("_UNICODE");

            CompileEnvironment.Definitions.Add("PLATFORM_ANDROID=1");
            CompileEnvironment.Definitions.Add("ANDROID=1");

            CompileEnvironment.Definitions.Add("WITH_DATABASE_SUPPORT=0");
            CompileEnvironment.Definitions.Add("WITH_EDITOR=0");
            CompileEnvironment.Definitions.Add("USE_NULL_RHI=0");
            CompileEnvironment.Definitions.Add("REQUIRES_ALIGNED_INT_ACCESS");

            SetUpSpecificEnvironment(Target, CompileEnvironment, LinkEnvironment);

            LinkEnvironment.AdditionalLibraries.Add("gnustl_shared");
            LinkEnvironment.AdditionalLibraries.Add("gcc");
            LinkEnvironment.AdditionalLibraries.Add("z");
            LinkEnvironment.AdditionalLibraries.Add("c");
            LinkEnvironment.AdditionalLibraries.Add("m");
            LinkEnvironment.AdditionalLibraries.Add("log");
            LinkEnvironment.AdditionalLibraries.Add("dl");
        }
示例#4
0
        public override void SetUpSpecificEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            CompileEnvironment.Definitions.Add("PLATFORM_LUMIN=1");
            CompileEnvironment.Definitions.Add("USE_ANDROID_JNI=0");
            CompileEnvironment.Definitions.Add("USE_ANDROID_AUDIO=0");
            CompileEnvironment.Definitions.Add("USE_ANDROID_FILE=0");
            CompileEnvironment.Definitions.Add("USE_ANDROID_INPUT=0");
            CompileEnvironment.Definitions.Add("USE_ANDROID_LAUNCH=0");
            CompileEnvironment.Definitions.Add("USE_ANDROID_EVENTS=0");
            CompileEnvironment.Definitions.Add("USE_ANDROID_OPENGL=0");
            CompileEnvironment.Definitions.Add("WITH_OGGVORBIS=1");

            DirectoryReference MLSDKDir = new DirectoryReference(Environment.GetEnvironmentVariable("MLSDK"));

            CompileEnvironment.SystemIncludePaths.Add(DirectoryReference.Combine(MLSDKDir, "lumin/stl/gnu-libstdc++/include"));
            CompileEnvironment.SystemIncludePaths.Add(DirectoryReference.Combine(MLSDKDir, "lumin/stl/gnu-libstdc++/include/aarch64-linux-android"));
            CompileEnvironment.SystemIncludePaths.Add(DirectoryReference.Combine(MLSDKDir, "include"));

            LinkEnvironment.LibraryPaths.Add(DirectoryReference.Combine(MLSDKDir, "lib/lumin"));
            LinkEnvironment.LibraryPaths.Add(DirectoryReference.Combine(MLSDKDir, "lumin/stl/gnu-libstdc++/lib"));

            LinkEnvironment.AdditionalLibraries.Add("GLESv2");
            LinkEnvironment.AdditionalLibraries.Add("EGL");

            LinkEnvironment.AdditionalLibraries.Add("ml_lifecycle");
            LinkEnvironment.AdditionalLibraries.Add("ml_ext_logging");
            LinkEnvironment.AdditionalLibraries.Add("ml_dispatch");
        }
示例#5
0
        /// <summary>
        /// Setup the target environment for building
        /// </summary>
        /// <param name="Target">Settings for the target being compiled</param>
        /// <param name="CompileEnvironment">The compile environment for this target</param>
        /// <param name="LinkEnvironment">The link environment for this target</param>
        public override void SetUpEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            if (Target.Architecture == "-win32")
            {
                LinkEnvironment.ExcludedLibraries.Add("LIBCMT");
            }

            CompileEnvironment.Definitions.Add("PLATFORM_HTML5=1");
            if (CompileEnvironment.Architecture == "-win32")
            {
                CompileEnvironment.Definitions.Add("PLATFORM_HTML5_WIN32=1");
                LinkEnvironment.AdditionalLibraries.Add("delayimp.lib");
            }
            else
            {
                CompileEnvironment.Definitions.Add("PLATFORM_HTML5_BROWSER=1");
            }

            // @todo needed?
            CompileEnvironment.Definitions.Add("UNICODE");
            CompileEnvironment.Definitions.Add("_UNICODE");
            CompileEnvironment.Definitions.Add("WITH_AUTOMATION_WORKER=0");
            CompileEnvironment.Definitions.Add("REQUIRES_ALIGNED_INT_ACCESS");
            CompileEnvironment.Definitions.Add("WITH_OGGVORBIS=1");
            CompileEnvironment.Definitions.Add("USE_SCENE_LOCK=0");
        }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="Module">The module with a valid shared PCH</param>
 /// <param name="BaseCompileEnvironment">The compile environment to use</param>
 /// <param name="HeaderFile">The header file to generate a PCH from</param>
 /// <param name="OutputDir">Output directory for instances of this PCH</param>
 public PrecompiledHeaderTemplate(UEBuildModuleCPP Module, CppCompileEnvironment BaseCompileEnvironment, FileItem HeaderFile, DirectoryReference OutputDir)
 {
     this.Module = Module;
     this.BaseCompileEnvironment = BaseCompileEnvironment;
     this.HeaderFile             = HeaderFile;
     this.OutputDir = OutputDir;
 }
示例#7
0
        public override void SetUpEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            CompileEnvironment.Definitions.Add("PLATFORM_DESKTOP=0");
            CompileEnvironment.Definitions.Add("PLATFORM_CAN_SUPPORT_EDITORONLY_DATA=0");

            CompileEnvironment.Definitions.Add("WITH_OGGVORBIS=1");

            CompileEnvironment.Definitions.Add("UNICODE");
            CompileEnvironment.Definitions.Add("_UNICODE");

            CompileEnvironment.Definitions.Add("PLATFORM_ANDROID=1");
            CompileEnvironment.Definitions.Add("ANDROID=1");

            CompileEnvironment.Definitions.Add("WITH_EDITOR=0");
            CompileEnvironment.Definitions.Add("USE_NULL_RHI=0");

            SetUpSpecificEnvironment(Target, CompileEnvironment, LinkEnvironment);

            // deliberately not linking stl or stdc++ here (c++_shared is default)
            LinkEnvironment.SystemLibraries.Add("c");
            LinkEnvironment.SystemLibraries.Add("dl");
            LinkEnvironment.SystemLibraries.Add("log");
            LinkEnvironment.SystemLibraries.Add("m");
            LinkEnvironment.SystemLibraries.Add("z");
            LinkEnvironment.SystemLibraries.Add("atomic");
        }
示例#8
0
        /// <summary>
        /// Setup the target environment for building
        /// </summary>
        /// <param name="Target">Settings for the target being compiled</param>
        /// <param name="CompileEnvironment">The compile environment for this target</param>
        /// <param name="LinkEnvironment">The link environment for this target</param>
        public override void SetUpEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            CompileEnvironment.Definitions.Add("PLATFORM_IOS=1");
            CompileEnvironment.Definitions.Add("PLATFORM_APPLE=1");

            CompileEnvironment.Definitions.Add("WITH_TTS=0");
            CompileEnvironment.Definitions.Add("WITH_SPEECH_RECOGNITION=0");
            CompileEnvironment.Definitions.Add("WITH_DATABASE_SUPPORT=0");
            CompileEnvironment.Definitions.Add("WITH_EDITOR=0");
            CompileEnvironment.Definitions.Add("USE_NULL_RHI=0");
            CompileEnvironment.Definitions.Add("REQUIRES_ALIGNED_INT_ACCESS");

            IOSProjectSettings ProjectSettings = ((IOSPlatform)UEBuildPlatform.GetBuildPlatform(UnrealTargetPlatform.IOS)).ReadProjectSettings(Target.ProjectFile);

            if (ProjectSettings.bNotificationsEnabled)
            {
                CompileEnvironment.Definitions.Add("NOTIFICATIONS_ENABLED=1");
            }
            else
            {
                CompileEnvironment.Definitions.Add("NOTIFICATIONS_ENABLED=0");
            }

            if (Target.Architecture == "-simulator")
            {
                CompileEnvironment.Definitions.Add("WITH_SIMULATOR=1");
            }
            else
            {
                CompileEnvironment.Definitions.Add("WITH_SIMULATOR=0");
            }

            LinkEnvironment.AdditionalFrameworks.Add(new UEBuildFramework("GameKit"));
            LinkEnvironment.AdditionalFrameworks.Add(new UEBuildFramework("StoreKit"));
        }
示例#9
0
        private void ExportModuleCpp(UEBuildModuleCPP ModuleCPP, CppCompileEnvironment ModuleCompileEnvironment, JsonWriter Writer)
        {
            Writer.WriteValue("GeneratedCodeDirectory", ModuleCPP.GeneratedCodeDirectory != null ? ModuleCPP.GeneratedCodeDirectory.FullName  : string.Empty);

            ToolchainInfo ModuleToolchainInfo = GenerateToolchainInfo(ModuleCompileEnvironment);

            if (!ModuleToolchainInfo.Equals(RootToolchainInfo))
            {
                Writer.WriteObjectStart("ToolchainInfo");
                foreach (Tuple <string, object> Field in ModuleToolchainInfo.GetDiff(RootToolchainInfo))
                {
                    WriteField(ModuleCPP.Name, Writer, Field);
                }
                Writer.WriteObjectEnd();
            }

            if (ModuleCompileEnvironment.PrecompiledHeaderIncludeFilename != null)
            {
                string CorrectFilePathPch;
                if (ExtractWrappedIncludeFile(ModuleCompileEnvironment.PrecompiledHeaderIncludeFilename, out CorrectFilePathPch))
                {
                    Writer.WriteValue("SharedPCHFilePath", CorrectFilePathPch);
                }
            }
        }
示例#10
0
        /// <summary>
        /// Setup the target environment for building
        /// </summary>
        /// <param name="Target">Settings for the target being compiled</param>
        /// <param name="CompileEnvironment">The compile environment for this target</param>
        /// <param name="LinkEnvironment">The link environment for this target</param>
        public override void SetUpEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            CompileEnvironment.Definitions.Add("WITH_DATABASE_SUPPORT=0");                      //@todo linux: valid?

            // During the native builds, check the system includes as well (check toolchain when cross-compiling?)
            string BaseLinuxPath = SDK.GetBaseLinuxPathForArchitecture(Target.Architecture);

            if (BuildHostPlatform.Current.Platform == UnrealTargetPlatform.Linux && String.IsNullOrEmpty(BaseLinuxPath))
            {
                CompileEnvironment.IncludePaths.SystemIncludePaths.Add(new DirectoryReference("/usr/include"));
            }

            if (CompileEnvironment.bAllowLTCG != LinkEnvironment.bAllowLTCG)
            {
                Log.TraceWarning("Inconsistency between LTCG settings in Compile and Link environments: link one takes priority");
                CompileEnvironment.bAllowLTCG = LinkEnvironment.bAllowLTCG;
            }

            // disable to LTO for modular builds
            if (CompileEnvironment.bAllowLTCG && Target.LinkType != TargetLinkType.Monolithic)
            {
                Log.TraceWarning("LTO (LTCG) for modular builds is not supported, disabling it");
                CompileEnvironment.bAllowLTCG = false;
                LinkEnvironment.bAllowLTCG    = false;
            }

            // link with Linux libraries.
            LinkEnvironment.AdditionalLibraries.Add("pthread");

            // let this class or a sub class do settings specific to that class
            SetUpSpecificEnvironment(CompileEnvironment, LinkEnvironment);
        }
        /// <summary>
        /// Setup the target environment for building
        /// </summary>
        /// <param name="Target">Settings for the target being compiled</param>
        /// <param name="CompileEnvironment">The compile environment for this target</param>
        /// <param name="LinkEnvironment">The link environment for this target</param>
        public override void SetUpEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            base.SetUpEnvironment(Target, CompileEnvironment, LinkEnvironment);
            CompileEnvironment.Definitions.Add("PLATFORM_TVOS=1");

            // TVOS uses only IOS header files, so use it's platform headers
            CompileEnvironment.Definitions.Add("OVERRIDE_PLATFORM_HEADER_NAME=IOS");
        }
        /// <summary>
        /// Setup the target environment for building
        /// </summary>
        /// <param name="Target">Settings for the target being compiled</param>
        /// <param name="CompileEnvironment">The compile environment for this target</param>
        /// <param name="LinkEnvironment">The link environment for this target</param>
        public override void SetUpEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            CompileEnvironment.Definitions.Add("PLATFORM_MAC=1");
            CompileEnvironment.Definitions.Add("PLATFORM_APPLE=1");

            CompileEnvironment.Definitions.Add("WITH_TTS=0");
            CompileEnvironment.Definitions.Add("WITH_SPEECH_RECOGNITION=0");
        }
示例#13
0
        public CppCompileEnvironment CreateBinaryCompileEnvironment(CppCompileEnvironment GlobalCompileEnvironment)
        {
            CppCompileEnvironment BinaryCompileEnvironment = new CppCompileEnvironment(GlobalCompileEnvironment);

            BinaryCompileEnvironment.bIsBuildingDLL     = IsBuildingDll(Type);
            BinaryCompileEnvironment.bIsBuildingLibrary = IsBuildingLibrary(Type);
            return(BinaryCompileEnvironment);
        }
示例#14
0
        /// <summary>
        /// Setup the target environment for building
        /// </summary>
        /// <param name="Target">Settings for the target being compiled</param>
        /// <param name="CompileEnvironment">The compile environment for this target</param>
        /// <param name="LinkEnvironment">The link environment for this target</param>
        public override void SetUpEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            CompileEnvironment.Definitions.Add("PLATFORM_IOS=1");
            CompileEnvironment.Definitions.Add("PLATFORM_APPLE=1");
            CompileEnvironment.Definitions.Add("GLES_SILENCE_DEPRECATION=1");              // suppress GLES "deprecated" warnings until a proper solution is implemented (see UE-65643)

            CompileEnvironment.Definitions.Add("WITH_TTS=0");
            CompileEnvironment.Definitions.Add("WITH_SPEECH_RECOGNITION=0");
            CompileEnvironment.Definitions.Add("WITH_DATABASE_SUPPORT=0");
            CompileEnvironment.Definitions.Add("WITH_EDITOR=0");
            CompileEnvironment.Definitions.Add("USE_NULL_RHI=0");

            IOSProjectSettings ProjectSettings = ((IOSPlatform)UEBuildPlatform.GetBuildPlatform(Target.Platform)).ReadProjectSettings(Target.ProjectFile);

            if (ProjectSettings.bNotificationsEnabled)
            {
                CompileEnvironment.Definitions.Add("NOTIFICATIONS_ENABLED=1");
            }
            else
            {
                CompileEnvironment.Definitions.Add("NOTIFICATIONS_ENABLED=0");
            }
            if (ProjectSettings.bBackgroundFetchEnabled)
            {
                CompileEnvironment.Definitions.Add("BACKGROUNDFETCH_ENABLED=1");
            }
            else
            {
                CompileEnvironment.Definitions.Add("BACKGROUNDFETCH_ENABLED=0");
            }

            CompileEnvironment.Definitions.Add("UE_DISABLE_FORCE_INLINE=" + (ProjectSettings.bDisableForceInline ? "1" : "0"));

            if (Target.Architecture == "-simulator")
            {
                CompileEnvironment.Definitions.Add("WITH_SIMULATOR=1");
            }
            else
            {
                CompileEnvironment.Definitions.Add("WITH_SIMULATOR=0");
            }

            // if the project has an Oodle compression Dll, enable the decompressor on IOS
            if (Target.ProjectFile != null)
            {
                DirectoryReference ProjectDir   = DirectoryReference.GetParentDirectory(Target.ProjectFile);
                string             OodleDllPath = DirectoryReference.Combine(ProjectDir, "Binaries/ThirdParty/Oodle/Mac/libUnrealPakPlugin.dylib").FullName;
                if (File.Exists(OodleDllPath))
                {
                    Log.TraceVerbose("        Registering custom oodle compressor for {0}", UnrealTargetPlatform.IOS.ToString());
                    CompileEnvironment.Definitions.Add("REGISTER_OODLE_CUSTOM_COMPRESSOR=1");
                }
            }

            LinkEnvironment.AdditionalFrameworks.Add(new UEBuildFramework("GameKit"));
            LinkEnvironment.AdditionalFrameworks.Add(new UEBuildFramework("StoreKit"));
            LinkEnvironment.AdditionalFrameworks.Add(new UEBuildFramework("DeviceCheck"));
        }
示例#15
0
 /// <summary>
 /// Copy constructor.
 /// </summary>
 /// <param name="Other">Environment to copy settings from</param>
 public CppCompileEnvironment(CppCompileEnvironment Other)
 {
     Platform      = Other.Platform;
     Configuration = Other.Configuration;
     Architecture  = Other.Architecture;
     MetadataCache = Other.MetadataCache;
     SharedPCHs    = Other.SharedPCHs;
     PrecompiledHeaderIncludeFilename = Other.PrecompiledHeaderIncludeFilename;
     PrecompiledHeaderAction          = Other.PrecompiledHeaderAction;
     bUseSharedBuildEnvironment       = Other.bUseSharedBuildEnvironment;
     bUseRTTI     = Other.bUseRTTI;
     bUseInlining = Other.bUseInlining;
     bCompileISPC = Other.bCompileISPC;
     bUseAVX      = Other.bUseAVX;
     bUseUnity    = Other.bUseUnity;
     MinSourceFilesForUnityBuildOverride    = Other.MinSourceFilesForUnityBuildOverride;
     MinFilesUsingPrecompiledHeaderOverride = Other.MinFilesUsingPrecompiledHeaderOverride;
     bBuildLocallyWithSNDBS               = Other.bBuildLocallyWithSNDBS;
     bEnableExceptions                    = Other.bEnableExceptions;
     bEnableObjCExceptions                = Other.bEnableObjCExceptions;
     ShadowVariableWarningLevel           = Other.ShadowVariableWarningLevel;
     UnsafeTypeCastWarningLevel           = Other.UnsafeTypeCastWarningLevel;
     bUndefinedIdentifierWarningsAsErrors = Other.bUndefinedIdentifierWarningsAsErrors;
     bEnableUndefinedIdentifierWarnings   = Other.bEnableUndefinedIdentifierWarnings;
     bOptimizeCode           = Other.bOptimizeCode;
     bOptimizeForSize        = Other.bOptimizeForSize;
     bCreateDebugInfo        = Other.bCreateDebugInfo;
     bIsBuildingLibrary      = Other.bIsBuildingLibrary;
     bIsBuildingDLL          = Other.bIsBuildingDLL;
     bUseStaticCRT           = Other.bUseStaticCRT;
     bUseDebugCRT            = Other.bUseDebugCRT;
     bOmitFramePointers      = Other.bOmitFramePointers;
     bEnableOSX109Support    = Other.bEnableOSX109Support;
     bUsePDBFiles            = Other.bUsePDBFiles;
     bPreprocessOnly         = Other.bPreprocessOnly;
     bSupportEditAndContinue = Other.bSupportEditAndContinue;
     bUseIncrementalLinking  = Other.bUseIncrementalLinking;
     bAllowLTCG                         = Other.bAllowLTCG;
     bPGOOptimize                       = Other.bPGOOptimize;
     bPGOProfile                        = Other.bPGOProfile;
     PGOFilenamePrefix                  = Other.PGOFilenamePrefix;
     PGODirectory                       = Other.PGODirectory;
     bPrintTimingInfo                   = Other.bPrintTimingInfo;
     bGenerateDependenciesFile          = Other.bGenerateDependenciesFile;
     bAllowRemotelyCompiledPCHs         = Other.bAllowRemotelyCompiledPCHs;
     UserIncludePaths                   = new HashSet <DirectoryReference>(Other.UserIncludePaths);
     SystemIncludePaths                 = new HashSet <DirectoryReference>(Other.SystemIncludePaths);
     bCheckSystemHeadersForModification = Other.bCheckSystemHeadersForModification;
     ForceIncludeFiles.AddRange(Other.ForceIncludeFiles);
     AdditionalPrerequisites.AddRange(Other.AdditionalPrerequisites);
     Definitions.AddRange(Other.Definitions);
     AdditionalArguments = Other.AdditionalArguments;
     AdditionalFrameworks.AddRange(Other.AdditionalFrameworks);
     PrecompiledHeaderFile = Other.PrecompiledHeaderFile;
     bHackHeaderGenerator  = Other.bHackHeaderGenerator;
     bHideSymbolsByDefault = Other.bHideSymbolsByDefault;
     CppStandard           = Other.CppStandard;
 }
示例#16
0
        string GetCLArguments_Global(CppCompileEnvironment CompileEnvironment)
        {
            string Result = GetSharedArguments_Global(CompileEnvironment.Configuration, CompileEnvironment.bOptimizeForSize, CompileEnvironment.Architecture, CompileEnvironment.bEnableShadowVariableWarnings, CompileEnvironment.bShadowVariableWarningsAsErrors, CompileEnvironment.bEnableUndefinedIdentifierWarnings, CompileEnvironment.bUndefinedIdentifierWarningsAsErrors, CompileEnvironment.bUseInlining);

// no longer needed as of UE4.18
//			Result += " -Wno-reorder"; // we disable constructor order warnings.

            return(Result);
        }
        /// <summary>
        /// Write a Target to a JSON writer. Is array is empty, don't write anything
        /// </summary>
        /// <param name="Target"></param>
        /// <param name="Writer">Writer for the array data</param>
        private static void ExportTarget(UEBuildTarget Target, JsonWriter Writer)
        {
            Writer.WriteObjectStart();

            Writer.WriteValue("Name", Target.TargetName);
            Writer.WriteValue("Configuration", Target.Configuration.ToString());
            Writer.WriteValue("Platform", Target.Platform.ToString());
            Writer.WriteValue("TargetFile", Target.TargetRulesFile.FullName);
            if (Target.ProjectFile != null)
            {
                Writer.WriteValue("ProjectFile", Target.ProjectFile.FullName);
            }

            ExportEnvironmentToJson(Target, Writer);

            if (Target.Binaries.Any())
            {
                Writer.WriteArrayStart("Binaries");
                foreach (UEBuildBinary Binary in Target.Binaries)
                {
                    Writer.WriteObjectStart();
                    ExportBinary(Binary, Writer);
                    Writer.WriteObjectEnd();
                }
                Writer.WriteArrayEnd();
            }

            CppCompileEnvironment GlobalCompileEnvironment = Target.CreateCompileEnvironmentForProjectFiles();
            HashSet <string>      ModuleNames = new HashSet <string>();

            Writer.WriteObjectStart("Modules");
            foreach (UEBuildBinary Binary in Target.Binaries)
            {
                CppCompileEnvironment BinaryCompileEnvironment = Binary.CreateBinaryCompileEnvironment(GlobalCompileEnvironment);
                foreach (UEBuildModule Module in Binary.Modules)
                {
                    if (ModuleNames.Add(Module.Name))
                    {
                        Writer.WriteObjectStart(Module.Name);
                        ExportModule(Module, Binary.OutputDir, Target.GetExecutableDir(), Writer);
                        UEBuildModuleCPP ModuleCpp = Module as UEBuildModuleCPP;
                        if (ModuleCpp != null)
                        {
                            CppCompileEnvironment ModuleCompileEnvironment = ModuleCpp.CreateCompileEnvironmentForIntellisense(Target.Rules, BinaryCompileEnvironment);
                            ExportModuleCpp(ModuleCpp, ModuleCompileEnvironment, Writer);
                        }
                        Writer.WriteObjectEnd();
                    }
                }
            }
            Writer.WriteObjectEnd();

            ExportPluginsFromTarget(Target, Writer);

            Writer.WriteObjectEnd();
        }
        public virtual void SetUpSpecificEnvironment(CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            CompileEnvironment.Definitions.Add("PLATFORM_LINUX=1");
            CompileEnvironment.Definitions.Add("PLATFORM_UNIX=1");

            CompileEnvironment.Definitions.Add("LINUX=1");             // For libOGG

            // this define does not set jemalloc as default, just indicates its support
            CompileEnvironment.Definitions.Add("PLATFORM_SUPPORTS_JEMALLOC=1");
        }
示例#19
0
        public override CPPOutput CompileRCFiles(CppCompileEnvironment CompileEnvironment, List <FileItem> RCFiles, ActionGraph ActionGraph)
        {
            CPPOutput Result = new CPPOutput();

            if (CompileEnvironment.Architecture == "-win32")             // simulator
            {
                return(base.CompileRCFiles(CompileEnvironment, RCFiles, ActionGraph));
            }

            return(Result);
        }
示例#20
0
        static string GetCLArguments_CPP(CppCompileEnvironment CompileEnvironment)
        {
            string Result = "";

            if (CompileEnvironment.Architecture != "-win32")             // ! simulator
            {
                Result = " -std=c++14";
            }

            return(Result);
        }
示例#21
0
        string GetCLArguments_Global(CppCompileEnvironment CompileEnvironment)
        {
            string Result = GetSharedArguments_Global(CompileEnvironment.Configuration, CompileEnvironment.bOptimizeForSize, CompileEnvironment.Architecture, CompileEnvironment.bEnableShadowVariableWarnings, CompileEnvironment.bShadowVariableWarningsAsErrors, CompileEnvironment.bEnableUndefinedIdentifierWarnings, CompileEnvironment.bUndefinedIdentifierWarningsAsErrors);

            if (CompileEnvironment.Architecture != "-win32") // ! simulator
            {
                Result += " -Wno-reorder";                   // we disable constructor order warnings.
            }

            return(Result);
        }
示例#22
0
        /// <summary>
        /// Setup the target environment for building
        /// </summary>
        /// <param name="Target">Settings for the target being compiled</param>
        /// <param name="CompileEnvironment">The compile environment for this target</param>
        /// <param name="LinkEnvironment">The link environment for this target</param>
        public override void SetUpEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            CompileEnvironment.Definitions.Add("PLATFORM_HTML5=1");

            // @todo needed?
            CompileEnvironment.Definitions.Add("UNICODE");
            CompileEnvironment.Definitions.Add("_UNICODE");
            CompileEnvironment.Definitions.Add("WITH_AUTOMATION_WORKER=0");
            CompileEnvironment.Definitions.Add("WITH_OGGVORBIS=1");
            CompileEnvironment.Definitions.Add("USE_SCENE_LOCK=0");
        }
示例#23
0
        static string GetCLArguments_Global(CppCompileEnvironment CompileEnvironment)
        {
            string Result = GetSharedArguments_Global(CompileEnvironment.Configuration, CompileEnvironment.Architecture, CompileEnvironment.bEnableShadowVariableWarnings, CompileEnvironment.bShadowVariableWarningsAsErrors, CompileEnvironment.bEnableUndefinedIdentifierWarnings, CompileEnvironment.bUndefinedIdentifierWarningsAsErrors);

            if (CompileEnvironment.Architecture != "-win32")              // ! simulator
            {
                // do we want debug info?
//				if (CompileEnvironment.bCreateDebugInfo)
//				{
//					Result += " -g";
//
//					// dump headers: http://stackoverflow.com/questions/42308/tool-to-track-include-dependencies
//					Result += " -H";
//				}

//				Result += " -Wno-warn-absolute-paths "; // as of emscripten 1.35.0 complains that this is unknown
                Result += " -Wno-reorder";                 // we disable constructor order warnings.

                if (CompileEnvironment.Configuration == CppConfiguration.Debug || CompileEnvironment.Configuration == CppConfiguration.Development)
                {
                    Result += " -s GL_ASSERTIONS=1";
                }

                if (!CompileEnvironment.bOptimizeCode)
                {
                    Result += " -O0";
                }
                else                 // development & shipiing
                {
                    Result += " -s ASM_JS=1";

                    if (CompileEnvironment.bOptimizeForSize)
                    {
                        Result += " -Oz -s OUTLINING_LIMIT=40000";
                    }
                    else
                    {
                        Result += " -s OUTLINING_LIMIT=110000";

                        if (CompileEnvironment.Configuration == CppConfiguration.Development)
                        {
                            Result += " -O2";
                        }
                        if (CompileEnvironment.Configuration == CppConfiguration.Shipping)
                        {
                            Result += " -O3";
                        }
                    }
                }
            }

            return(Result);
        }
 /// <summary>
 /// Checks whether this template is valid for the given compile environment
 /// </summary>
 /// <param name="CompileEnvironment">Compile environment to check with</param>
 /// <returns>True if the template is compatible with the given compile environment</returns>
 public bool IsValidFor(CppCompileEnvironment CompileEnvironment)
 {
     if (CompileEnvironment.bIsBuildingDLL != BaseCompileEnvironment.bIsBuildingDLL)
     {
         return(false);
     }
     if (CompileEnvironment.bIsBuildingLibrary != BaseCompileEnvironment.bIsBuildingLibrary)
     {
         return(false);
     }
     return(true);
 }
示例#25
0
        /// <summary>
        /// Setup the target environment for building
        /// </summary>
        /// <param name="Target">Settings for the target being compiled</param>
        /// <param name="CompileEnvironment">The compile environment for this target</param>
        /// <param name="LinkEnvironment">The link environment for this target</param>
        public override void SetUpEnvironment(ReadOnlyTargetRules Target, CppCompileEnvironment CompileEnvironment, LinkEnvironment LinkEnvironment)
        {
            CompileEnvironment.Definitions.Add("PLATFORM_MAC=1");
            CompileEnvironment.Definitions.Add("PLATFORM_APPLE=1");

            CompileEnvironment.Definitions.Add("WITH_TTS=0");
            CompileEnvironment.Definitions.Add("WITH_SPEECH_RECOGNITION=0");
            if (!CompileEnvironment.Definitions.Contains("WITH_DATABASE_SUPPORT=0") && !CompileEnvironment.Definitions.Contains("WITH_DATABASE_SUPPORT=1"))
            {
                CompileEnvironment.Definitions.Add("WITH_DATABASE_SUPPORT=0");
            }
        }
示例#26
0
        protected override string GetCLArguments_Global(CppCompileEnvironment CompileEnvironment, string Architecture)
        {
            string Params = base.GetCLArguments_Global(CompileEnvironment, Architecture);

            Params += " -Wno-undefined-var-template";
            Params += " -DPLATFORM_LUMINGL4=" + ((GPUArchitectures[0] == "-gl4") ? "1" : "0");

            // jf: added for seal, as XGE seems to not preserve case in includes properly
            Params += " -Wno-nonportable-include-path";                     // not all of these are real

            return(Params);
        }
 /// <summary>
 /// Copy constructor.
 /// </summary>
 /// <param name="Other">Environment to copy settings from</param>
 public CppCompileEnvironment(CppCompileEnvironment Other)
 {
     Platform                         = Other.Platform;
     Configuration                    = Other.Configuration;
     Architecture                     = Other.Architecture;
     OutputDirectory                  = Other.OutputDirectory;
     PCHOutputDirectory               = Other.PCHOutputDirectory;
     LocalShadowDirectory             = Other.LocalShadowDirectory;
     PrecompiledHeaderIncludeFilename = Other.PrecompiledHeaderIncludeFilename;
     PrecompiledHeaderAction          = Other.PrecompiledHeaderAction;
     bUseRTTI                         = Other.bUseRTTI;
     bUseInlining                     = Other.bUseInlining;
     bUseAVX             = Other.bUseAVX;
     bFasterWithoutUnity = Other.bFasterWithoutUnity;
     MinSourceFilesForUnityBuildOverride    = Other.MinSourceFilesForUnityBuildOverride;
     MinFilesUsingPrecompiledHeaderOverride = Other.MinFilesUsingPrecompiledHeaderOverride;
     bBuildLocallyWithSNDBS               = Other.bBuildLocallyWithSNDBS;
     bEnableExceptions                    = Other.bEnableExceptions;
     bEnableObjCExceptions                = Other.bEnableObjCExceptions;
     bShadowVariableWarningsAsErrors      = Other.bShadowVariableWarningsAsErrors;
     bEnableShadowVariableWarnings        = Other.bEnableShadowVariableWarnings;
     bUndefinedIdentifierWarningsAsErrors = Other.bUndefinedIdentifierWarningsAsErrors;
     bEnableUndefinedIdentifierWarnings   = Other.bEnableUndefinedIdentifierWarnings;
     bOptimizeCode           = Other.bOptimizeCode;
     bOptimizeForSize        = Other.bOptimizeForSize;
     bCreateDebugInfo        = Other.bCreateDebugInfo;
     bIsBuildingLibrary      = Other.bIsBuildingLibrary;
     bIsBuildingDLL          = Other.bIsBuildingDLL;
     bUseStaticCRT           = Other.bUseStaticCRT;
     bUseDebugCRT            = Other.bUseDebugCRT;
     bOmitFramePointers      = Other.bOmitFramePointers;
     bEnableOSX109Support    = Other.bEnableOSX109Support;
     bUsePDBFiles            = Other.bUsePDBFiles;
     bSupportEditAndContinue = Other.bSupportEditAndContinue;
     bUseIncrementalLinking  = Other.bUseIncrementalLinking;
     bAllowLTCG                 = Other.bAllowLTCG;
     bPGOOptimize               = Other.bPGOOptimize;
     bPGOProfile                = Other.bPGOProfile;
     PGOFilenamePrefix          = Other.PGOFilenamePrefix;
     PGODirectory               = Other.PGODirectory;
     bPrintTimingInfo           = Other.bPrintTimingInfo;
     bAllowRemotelyCompiledPCHs = Other.bAllowRemotelyCompiledPCHs;
     IncludePaths               = new CppIncludePaths(Other.IncludePaths);
     ForceIncludeFiles.AddRange(Other.ForceIncludeFiles);
     Definitions.AddRange(Other.Definitions);
     AdditionalArguments = Other.AdditionalArguments;
     AdditionalFrameworks.AddRange(Other.AdditionalFrameworks);
     PrecompiledHeaderFile = Other.PrecompiledHeaderFile;
     Headers = Other.Headers;
     bHackHeaderGenerator  = Other.bHackHeaderGenerator;
     bHideSymbolsByDefault = Other.bHideSymbolsByDefault;
 }
示例#28
0
        public void GatherDataForProjectFiles(ReadOnlyTargetRules Target, CppCompileEnvironment GlobalCompileEnvironment)
        {
            CppCompileEnvironment BinaryCompileEnvironment = CreateBinaryCompileEnvironment(GlobalCompileEnvironment);

            foreach (UEBuildModuleCPP Module in Modules.OfType <UEBuildModuleCPP>())
            {
                ProjectFile ProjectFileForIDE;
                if (ProjectFileGenerator.ModuleToProjectFileMap.TryGetValue(Module.Name, out ProjectFileForIDE))
                {
                    Module.GatherDataForProjectFile(Target, BinaryCompileEnvironment, ProjectFileForIDE);
                }
            }
        }
        private static void ExportModuleCpp(UEBuildModuleCPP ModuleCPP, CppCompileEnvironment ModuleCompileEnvironment, JsonWriter Writer)
        {
            Writer.WriteValue("GeneratedCodeDirectory", ModuleCPP.GeneratedCodeDirectory != null ? ModuleCPP.GeneratedCodeDirectory.FullName : string.Empty);

            if (ModuleCompileEnvironment.PrecompiledHeaderIncludeFilename != null)
            {
                string CorrectFilePathPch;
                if (ExtractWrappedIncludeFile(ModuleCompileEnvironment.PrecompiledHeaderIncludeFilename, out CorrectFilePathPch))
                {
                    Writer.WriteValue("SharedPCHFilePath", CorrectFilePathPch);
                }
            }
        }
示例#30
0
        /// <summary>
        /// Write C++ toolchain information to JSON writer
        /// </summary>
        /// <param name="Target"></param>
        /// <param name="Writer"></param>
        private void ExportEnvironmentToJson(UEBuildTarget Target, JsonWriter Writer)
        {
            CppCompileEnvironment GlobalCompileEnvironment = Target.CreateCompileEnvironmentForProjectFiles();

            RootToolchainInfo = GenerateToolchainInfo(GlobalCompileEnvironment);

            Writer.WriteObjectStart("ToolchainInfo");
            foreach (Tuple <string, object> Field in RootToolchainInfo.GetFields())
            {
                WriteField(Target.TargetName, Writer, Field);
            }
            Writer.WriteObjectEnd();

            Writer.WriteArrayStart("EnvironmentIncludePaths");
            foreach (DirectoryReference Path in GlobalCompileEnvironment.UserIncludePaths)
            {
                Writer.WriteValue(Path.FullName);
            }
            foreach (DirectoryReference Path in GlobalCompileEnvironment.SystemIncludePaths)
            {
                Writer.WriteValue(Path.FullName);
            }

            if (UEBuildPlatform.IsPlatformInGroup(Target.Platform, UnrealPlatformGroup.Windows))
            {
                foreach (DirectoryReference Path in Target.Rules.WindowsPlatform.Environment.IncludePaths)
                {
                    Writer.WriteValue(Path.FullName);
                }
            }
            else if (UEBuildPlatform.IsPlatformInGroup(Target.Platform, UnrealPlatformGroup.Apple) &&
                     UEBuildPlatform.IsPlatformInGroup(BuildHostPlatform.Current.Platform, UnrealPlatformGroup.Apple))
            {
                // Only generate Apple system include paths when host platform is Apple OS
                // TODO: Fix case when working with MacOS on Windows host platform
                foreach (string Path in AppleHelper.GetAppleSystemIncludePaths(GlobalCompileEnvironment.Architecture, Target.Platform))
                {
                    Writer.WriteValue(Path);
                }
            }
            // TODO: get corresponding includes for Linux

            Writer.WriteArrayEnd();

            Writer.WriteArrayStart("EnvironmentDefinitions");
            foreach (string Definition in GlobalCompileEnvironment.Definitions)
            {
                Writer.WriteValue(Definition);
            }
            Writer.WriteArrayEnd();
        }