Add better win32 resource file injection to be done during linker call
This commit is contained in:
@@ -70,6 +70,7 @@ namespace Flax.Build
|
||||
|
||||
Modules.Add("Main");
|
||||
Modules.Add("Engine");
|
||||
Win32ResourceFile = Path.Combine(Globals.EngineRoot, "Source", "FlaxEngine.rc");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -194,6 +195,7 @@ namespace Flax.Build
|
||||
mainModuleOptions.SourcePaths.Add(mainModule.FolderPath);
|
||||
mainModule.Setup(mainModuleOptions);
|
||||
mainModuleOptions.MergeSourcePathsIntoSourceFiles();
|
||||
mainModuleOptions.CompileEnv.PrecompiledHeaderUsage = PrecompiledHeaderFileUsage.None;
|
||||
mainModuleOptions.CompileEnv.PreprocessorDefinitions.Add("FLAXENGINE_API=" + buildOptions.Toolchain.DllImport);
|
||||
Builder.BuildModuleInner(buildData, mainModule, mainModuleOptions, false);
|
||||
|
||||
|
||||
@@ -127,8 +127,7 @@ namespace Flax.Build.NativeCpp
|
||||
LinkAsConsoleProgram = LinkAsConsoleProgram,
|
||||
GenerateDocumentation = GenerateDocumentation
|
||||
};
|
||||
foreach (var e in InputFiles)
|
||||
clone.InputFiles.Add(e);
|
||||
clone.InputFiles.AddRange(InputFiles);
|
||||
clone.DocumentationFiles.AddRange(DocumentationFiles);
|
||||
clone.InputLibraries.AddRange(InputLibraries);
|
||||
clone.LibraryPaths.AddRange(LibraryPaths);
|
||||
|
||||
@@ -43,12 +43,12 @@ namespace Flax.Build.Platforms
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void PreBuild(TaskGraph graph, BuildOptions options)
|
||||
public override void LinkFiles(TaskGraph graph, BuildOptions options, string outputFilePath)
|
||||
{
|
||||
base.PreBuild(graph, options);
|
||||
|
||||
// Compile and include resource file if need to
|
||||
if (options.Target.Win32ResourceFile != null && !options.Target.IsPreBuilt && options.Target.OutputType == TargetOutputType.Executable)
|
||||
if (options.Target.Win32ResourceFile != null &&
|
||||
!options.Target.IsPreBuilt &&
|
||||
(options.LinkEnv.Output == LinkerOutput.Executable || options.LinkEnv.Output == LinkerOutput.SharedLibrary))
|
||||
{
|
||||
var task = graph.Add<CompileCppTask>();
|
||||
var args = new List<string>();
|
||||
@@ -62,24 +62,22 @@ namespace Flax.Build.Platforms
|
||||
|
||||
// Add preprocessor definitions
|
||||
foreach (var definition in options.CompileEnv.PreprocessorDefinitions)
|
||||
{
|
||||
args.Add(string.Format("/D \"{0}\"", definition));
|
||||
}
|
||||
args.Add(string.Format("/D \"ORIGINAL_FILENAME=\\\"{0}\\\"\"", Path.GetFileName(outputFilePath)));
|
||||
args.Add(string.Format("/D \"PRODUCT_NAME=\\\"{0}\\\"\"", options.Target.ProjectName + " " + options.Target.ConfigurationName));
|
||||
args.Add(string.Format("/D \"PRODUCT_NAME_INTERNAL=\\\"{0}\\\"\"", options.Target.Name));
|
||||
|
||||
// Add include paths
|
||||
foreach (var includePath in options.CompileEnv.IncludePaths)
|
||||
{
|
||||
AddIncludePath(args, includePath);
|
||||
}
|
||||
|
||||
// Add the resource file to the produced item list
|
||||
var outputFile = Path.Combine(options.IntermediateFolder, Path.GetFileNameWithoutExtension(sourceFile) + ".res");
|
||||
var outputFile = Path.Combine(options.IntermediateFolder, Path.GetFileName(outputFilePath) + ".res");
|
||||
args.Add(string.Format("/Fo\"{0}\"", outputFile));
|
||||
options.LinkEnv.InputFiles.Add(outputFile);
|
||||
|
||||
// Request included files to exist
|
||||
var includes = IncludesCache.FindAllIncludedFiles(sourceFile);
|
||||
task.PrerequisiteFiles.AddRange(includes);
|
||||
task.PrerequisiteFiles.AddRange(IncludesCache.FindAllIncludedFiles(sourceFile));
|
||||
|
||||
// Add the source file
|
||||
args.Add(string.Format("\"{0}\"", sourceFile));
|
||||
@@ -91,6 +89,8 @@ namespace Flax.Build.Platforms
|
||||
task.PrerequisiteFiles.Add(sourceFile);
|
||||
task.Cost = 1;
|
||||
}
|
||||
|
||||
base.LinkFiles(graph, options, outputFilePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user