diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json index c19388eea..497f2b89a 100644 --- a/.nuke/build.schema.json +++ b/.nuke/build.schema.json @@ -43,6 +43,10 @@ "VSCode" ] }, + "IsDocsBuild": { + "type": "boolean", + "description": "Whether we are building for documentation - emits generated files" + }, "NoLogo": { "type": "boolean", "description": "Disables displaying the NUKE logo" diff --git a/build/DalamudBuild.cs b/build/DalamudBuild.cs index c8c118c31..c16db3511 100644 --- a/build/DalamudBuild.cs +++ b/build/DalamudBuild.cs @@ -7,6 +7,7 @@ using Nuke.Common.IO; using Nuke.Common.ProjectModel; using Nuke.Common.Tools.DotNet; using Nuke.Common.Tools.MSBuild; +using Serilog; [UnsetVisualStudioEnvironmentVariables] public class DalamudBuild : NukeBuild @@ -22,6 +23,9 @@ public class DalamudBuild : NukeBuild [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")] readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release; + [Parameter("Whether we are building for documentation - emits generated files")] + readonly bool IsDocsBuild = false; + [Solution] Solution Solution; [GitRepository] GitRepository GitRepository; @@ -55,15 +59,30 @@ public class DalamudBuild : NukeBuild DotNetTasks.DotNetRestore(s => s .SetProjectFile(Solution)); }); - + Target CompileDalamud => _ => _ .DependsOn(Restore) .Executes(() => { - DotNetTasks.DotNetBuild(s => s - .SetProjectFile(DalamudProjectFile) - .SetConfiguration(Configuration) - .EnableNoRestore()); + DotNetTasks.DotNetBuild(s => + { + s = s + .SetProjectFile(DalamudProjectFile) + .SetConfiguration(Configuration) + .EnableNoRestore(); + + // We need to emit compiler generated files for the docs build, since docfx can't run generators directly + // TODO: This fails every build after this because of redefinitions... + if (IsDocsBuild) + { + Log.Warning("Building for documentation, emitting compiler generated files. This can cause issues on Windows due to path-length limitations"); + s = s + .SetProperty("EmitCompilerGeneratedFiles", "true") + .SetProperty("CompilerGeneratedFilesOutputPath", "Generated"); + } + + return s; + }); }); Target CompileDalamudBoot => _ => _