Build: Add deferred compilation shader option

This commit is contained in:
SirLynix 2022-05-05 20:17:16 +02:00
parent 2a3646135a
commit 23e869d4d6
2 changed files with 51 additions and 14 deletions

View File

@ -118,6 +118,18 @@ NazaraModules = modules
includes("xmake/**.lua")
option("compile-shaders")
set_default(true)
set_showmenu(true)
set_description("Compile nzsl shaders into an includable binary version")
option_end()
option("embed-resources")
set_default(true)
set_showmenu(true)
set_description("Turn builtin resources into includable headers")
option_end()
option("usepch")
set_default(false)
set_showmenu(true)
@ -238,24 +250,28 @@ for name, module in pairs(modules) do
add_files("src/Nazara/" .. name .. "/**.cpp")
add_includedirs("src")
local embedResourceRule = false
for _, filepath in pairs(os.files("src/Nazara/" .. name .. "/Resources/**|**.h|**.nzsl|**.nzslb")) do
if not embedResourceRule then
add_rules("embed_resources")
embedResourceRule = true
end
if has_config("embed-resources") then
local embedResourceRule = false
for _, filepath in pairs(os.files("src/Nazara/" .. name .. "/Resources/**|**.h|**.nzsl|**.nzslb")) do
if not embedResourceRule then
add_rules("embed_resources")
embedResourceRule = true
end
add_files(filepath, {rule = "embed_resources"})
add_files(filepath, {rule = "embed_resources"})
end
end
local compileShaderRule = false
for _, filepath in pairs(os.files("src/Nazara/" .. name .. "/Resources/**.nzsl")) do
if not compileShaderRule then
add_rules("compile_shaders")
compileShaderRule = true
end
if has_config("compile-shaders") then
local compileShaderRule = false
for _, filepath in pairs(os.files("src/Nazara/" .. name .. "/Resources/**.nzsl")) do
if not compileShaderRule then
add_rules("compile_shaders")
compileShaderRule = true
end
add_files(filepath, {rule = "compile_shaders"})
add_files(filepath, {rule = "compile_shaders"})
end
end
-- Remove platform-specific files

View File

@ -0,0 +1,21 @@
task("compile-shaders")
set_menu({
-- Settings menu usage
usage = "xmake compile-shaders [options]",
description = "Compile engine shaders"
})
on_run(function ()
import("core.project.task")
print("Compiling NZSLC...")
task.run("build", {target = "NazaraShaderCompiler"})
print("Compiling shaders...")
for _, filepath in pairs(os.files("src/Nazara/*/Resources/**.nzsl")) do
print(" - Compiling " .. filepath)
local argv = {"--compile", "--partial", "--header-file", path.join("..", "..", filepath) }
task.run("run", {target = "NazaraShaderCompiler", arguments = argv})
end
end)