Added the shader compiler to the fastbuild pipeline.

This commit is contained in:
2026-01-09 14:07:36 -05:00
parent 71a78863b7
commit bd45cacc6c
16 changed files with 398 additions and 233 deletions

View File

@@ -0,0 +1,100 @@
.ProjectName = 'JulietShaderCompiler'
.ProjectPath = 'JulietShaderCompiler'
// 1. Define the configurations and a container for the VS Project
.ShaderCompilerConfigs = { .X64ClangDebugConfig, .X64ClangReleaseConfig }
.ProjectConfigsShader = {}
.DXCSourcePath = '$ProjectPath$/DXShaderCompiler'
ForEach( .BuildConfig in .ShaderCompilerConfigs )
{
Using( .BuildConfig )
.OutputBase + '\$Platform$-$BuildConfigName$'
// 2. Define the Build Targets for this specific configuration
ObjectList( '$ProjectName$-Obs-$Platform$-$BuildConfigName$' )
{
.CompilerInputPath = '$ProjectPath$/'
.CompilerOutputPath = '$OutputBase$/$ProjectPath$/'
.CompilerOptions + ' "-IJuliet/include"'
+ ' "-IJulietShaderCompiler"'
#if __WINDOWS__
.CompilerOptions + ' -DJULIET_WIN32'
#endif
}
#if __WINDOWS__
Copy( '$ProjectName$-CopyDeps-$Platform$-$BuildConfigName$' )
{
.Source = {
'$DXCSourcePath$/dxcompiler.dll',
'$DXCSourcePath$/dxil.dll'
}
.Dest = '$BinPath$/$Platform$-$BuildConfigName$/'
}
#endif
Executable( '$ProjectName$-Exe-$Platform$-$BuildConfigName$' )
{
.Libraries = {
'Juliet-Lib-$Platform$-$BuildConfigName$',
'$ProjectName$-Obs-$Platform$-$BuildConfigName$'
}
.LinkerOutput = '$BinPath$/$Platform$-$BuildConfigName$/$ProjectName$$ExeExtension$'
#if __WINDOWS__
.CRTLibs = .CRTLibs_Dynamic
If ( .BuildConfigName == 'Debug' )
{
^CRTLibs = .CRTLibs_DynamicDebug
}
.LinkerOptions + .CRTLibs
.LinkerOptions + .CommonWinLibs + ' dxcompiler.lib'
#endif
#if __WINDOWS__
.PreBuildDependencies = { '$ProjectName$-CopyDeps-$Platform$-$BuildConfigName$' }
#endif
}
Alias( '$ProjectName$-$Platform$-$BuildConfigName$' ) { .Targets = '$ProjectName$-Exe-$Platform$-$BuildConfigName$' }
^'Targets_$Platform$_$BuildConfigName$' + { '$ProjectName$-$Platform$-$BuildConfigName$' }
#if __WINDOWS__
.ConfigInfo =
[
Using( .'Project_$Platform$_$BuildConfigName$' )
.LocalDebuggerCommandArguments = '..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil'
.Target = '$ProjectName$-$Config$'
]
^ProjectConfigsShader + .ConfigInfo
#endif
}
// 4. Create the Project and Solution using the generated list
VCXProject( '$ProjectName$-Proj' )
{
.ProjectOutput = '$ProjectPath$/$ProjectName$.vcxproj'
.ProjectBasePath = '$ProjectPath$/'
.ProjectInputPaths = { .ProjectBasePath }
.ProjectConfigs = .ProjectConfigsShader
}
VSSolution( 'ShaderCompiler-Solution' )
{
.SolutionOutput = 'JulietShaderCompiler.sln'
.SolutionProjects = { '$ProjectName$-Proj' , 'Juliet' }
.SolutionConfigs = .ProjectConfigsShader
.SolutionBuildProject = '$ProjectName$-Proj'
}
// 5. Global Aliases
Alias( 'gen-shader' ) { .Targets = 'ShaderCompiler-Solution' }
Alias( 'shader' ) { .Targets = { '$ProjectName$-x64Clang-Release' } }
Alias( 'shader-debug' ) { .Targets = { '$ProjectName$-x64Clang-Debug', } }