From a88b4de1f6362cd44b0e8f1770e38f84d8f8c7f3 Mon Sep 17 00:00:00 2001 From: Florian Busse Date: Mon, 10 Jul 2023 06:46:50 +0000 Subject: [PATCH] Added an option to add additional environment varaibles to the global settings in fastbuild Added AdditionalGlobalEnvironmentVariables (key, value) and AdditionalGlobalEnvironmentVariablesForwarding (key) to FastBuildSettings --- Sharpmake.Generators/FastBuild/Bff.Template.cs | 2 ++ Sharpmake.Generators/FastBuild/MasterBff.cs | 7 +++++++ Sharpmake/FastBuildSettings.cs | 5 +++++ .../FastBuildSimpleExecutable.sharpmake.cs | 3 +++ ...stbuildsample_vs2019_win64_fastbuild-globalsettings.bff | 1 + ...stbuildsample_vs2022_win64_fastbuild-globalsettings.bff | 1 + 6 files changed, 19 insertions(+) diff --git a/Sharpmake.Generators/FastBuild/Bff.Template.cs b/Sharpmake.Generators/FastBuild/Bff.Template.cs index 93aa517a9..3291f80dc 100644 --- a/Sharpmake.Generators/FastBuild/Bff.Template.cs +++ b/Sharpmake.Generators/FastBuild/Bff.Template.cs @@ -69,6 +69,7 @@ public static class ConfigurationFile ""USERPROFILE=$USERPROFILE$"", ""SystemRoot=[fastBuildSystemRoot]"" ""PATH=[fastBuildPATH]"" +[envAdditionalVariables] } #endif[envRemoveGuards] "; @@ -80,6 +81,7 @@ public static class ConfigurationFile { ""TMPDIR=$TMPDIR$"", ""PATH=[fastBuildPATH]"" +[envAdditionalVariables] } #endif[envRemoveGuards] "; diff --git a/Sharpmake.Generators/FastBuild/MasterBff.cs b/Sharpmake.Generators/FastBuild/MasterBff.cs index 15c254bc4..04585e3c6 100644 --- a/Sharpmake.Generators/FastBuild/MasterBff.cs +++ b/Sharpmake.Generators/FastBuild/MasterBff.cs @@ -656,6 +656,12 @@ private static void WriteMasterSettingsSection(FileGenerator masterBffGenerator, fastBuildEnvironments += Bff.Template.ConfigurationFile.WinEnvironment; } + string envAdditionalVariables = FileGeneratorUtilities.RemoveLineTag; + if (FastBuildSettings.AdditionalGlobalEnvironmentVariables.Any()) + { + envAdditionalVariables = string.Join(Environment.NewLine, FastBuildSettings.AdditionalGlobalEnvironmentVariables.Select(keyValue => $" \"{keyValue.Key}={keyValue.Value}\"")); + } + using (masterBffGenerator.Declare("fastBuildProjectName", "Master")) using (masterBffGenerator.Declare("CachePath", cachePath)) using (masterBffGenerator.Declare("CachePluginDLL", cachePluginDLL)) @@ -666,6 +672,7 @@ private static void WriteMasterSettingsSection(FileGenerator masterBffGenerator, using (masterBffGenerator.Declare("AdditionalGlobalSettings", additionalGlobalSettings)) using (masterBffGenerator.Declare("fastBuildEnvironments", fastBuildEnvironments)) using (masterBffGenerator.Declare("envRemoveGuards", envRemoveGuards)) + using (masterBffGenerator.Declare("envAdditionalVariables", envAdditionalVariables)) { masterBffGenerator.Write(Bff.Template.ConfigurationFile.HeaderFile); masterBffGenerator.Write(Bff.Template.ConfigurationFile.GlobalSettings); diff --git a/Sharpmake/FastBuildSettings.cs b/Sharpmake/FastBuildSettings.cs index 06c98238e..e1afa5e47 100644 --- a/Sharpmake/FastBuildSettings.cs +++ b/Sharpmake/FastBuildSettings.cs @@ -58,6 +58,11 @@ public static class FastBuildSettings /// public static readonly IList AdditionalGlobalSettings = new List(); + /// + /// Additional environment variables to add to the global environment settings node (key, value) + /// + public static readonly IDictionary AdditionalGlobalEnvironmentVariables = new Dictionary(); + /// /// Path to the fastbuild plugin dll if any. This typically will be the path to the Ubisoft asset store plugin DLL but could be any other compatible implementation. /// CachePath must also be set to an appropriate url. diff --git a/samples/FastBuildSimpleExecutable/FastBuildSimpleExecutable.sharpmake.cs b/samples/FastBuildSimpleExecutable/FastBuildSimpleExecutable.sharpmake.cs index 8e8656c2f..e6a227636 100644 --- a/samples/FastBuildSimpleExecutable/FastBuildSimpleExecutable.sharpmake.cs +++ b/samples/FastBuildSimpleExecutable/FastBuildSimpleExecutable.sharpmake.cs @@ -122,6 +122,9 @@ public static void SharpmakeMain(Sharpmake.Arguments arguments) // This is necessary since there is no rc.exe in the same directory than link.exe FastBuildSettings.SetPathToResourceCompilerInEnvironment = true; + // Add an additional environment variable for fastbuild for testing + FastBuildSettings.AdditionalGlobalEnvironmentVariables.Add("KEY", "VALUE"); + KitsRootPaths.SetUseKitsRootForDevEnv(DevEnv.vs2019, KitsRootEnum.KitsRoot10, Options.Vc.General.WindowsTargetPlatformVersion.v10_0_19041_0); KitsRootPaths.SetUseKitsRootForDevEnv(DevEnv.vs2022, KitsRootEnum.KitsRoot10, Options.Vc.General.WindowsTargetPlatformVersion.v10_0_19041_0); diff --git a/samples/FastBuildSimpleExecutable/reference/fastbuildsample_vs2019_win64_fastbuild-globalsettings.bff b/samples/FastBuildSimpleExecutable/reference/fastbuildsample_vs2019_win64_fastbuild-globalsettings.bff index 18ac54a2e..45412de0e 100644 --- a/samples/FastBuildSimpleExecutable/reference/fastbuildsample_vs2019_win64_fastbuild-globalsettings.bff +++ b/samples/FastBuildSimpleExecutable/reference/fastbuildsample_vs2019_win64_fastbuild-globalsettings.bff @@ -20,6 +20,7 @@ Settings "USERPROFILE=$USERPROFILE$", "SystemRoot=C:\WINDOWS" "PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64" + "KEY=VALUE" } } diff --git a/samples/FastBuildSimpleExecutable/reference/fastbuildsample_vs2022_win64_fastbuild-globalsettings.bff b/samples/FastBuildSimpleExecutable/reference/fastbuildsample_vs2022_win64_fastbuild-globalsettings.bff index d5cb6cee0..6d9f94f31 100644 --- a/samples/FastBuildSimpleExecutable/reference/fastbuildsample_vs2022_win64_fastbuild-globalsettings.bff +++ b/samples/FastBuildSimpleExecutable/reference/fastbuildsample_vs2022_win64_fastbuild-globalsettings.bff @@ -20,6 +20,7 @@ Settings "USERPROFILE=$USERPROFILE$", "SystemRoot=C:\WINDOWS" "PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64" + "KEY=VALUE" } }