Build: Add deferred compilation shader option
This commit is contained in:
parent
2a3646135a
commit
23e869d4d6
44
xmake.lua
44
xmake.lua
|
|
@ -118,6 +118,18 @@ NazaraModules = modules
|
||||||
|
|
||||||
includes("xmake/**.lua")
|
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")
|
option("usepch")
|
||||||
set_default(false)
|
set_default(false)
|
||||||
set_showmenu(true)
|
set_showmenu(true)
|
||||||
|
|
@ -238,24 +250,28 @@ for name, module in pairs(modules) do
|
||||||
add_files("src/Nazara/" .. name .. "/**.cpp")
|
add_files("src/Nazara/" .. name .. "/**.cpp")
|
||||||
add_includedirs("src")
|
add_includedirs("src")
|
||||||
|
|
||||||
local embedResourceRule = false
|
if has_config("embed-resources") then
|
||||||
for _, filepath in pairs(os.files("src/Nazara/" .. name .. "/Resources/**|**.h|**.nzsl|**.nzslb")) do
|
local embedResourceRule = false
|
||||||
if not embedResourceRule then
|
for _, filepath in pairs(os.files("src/Nazara/" .. name .. "/Resources/**|**.h|**.nzsl|**.nzslb")) do
|
||||||
add_rules("embed_resources")
|
if not embedResourceRule then
|
||||||
embedResourceRule = true
|
add_rules("embed_resources")
|
||||||
end
|
embedResourceRule = true
|
||||||
|
end
|
||||||
|
|
||||||
add_files(filepath, {rule = "embed_resources"})
|
add_files(filepath, {rule = "embed_resources"})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local compileShaderRule = false
|
if has_config("compile-shaders") then
|
||||||
for _, filepath in pairs(os.files("src/Nazara/" .. name .. "/Resources/**.nzsl")) do
|
local compileShaderRule = false
|
||||||
if not compileShaderRule then
|
for _, filepath in pairs(os.files("src/Nazara/" .. name .. "/Resources/**.nzsl")) do
|
||||||
add_rules("compile_shaders")
|
if not compileShaderRule then
|
||||||
compileShaderRule = true
|
add_rules("compile_shaders")
|
||||||
end
|
compileShaderRule = true
|
||||||
|
end
|
||||||
|
|
||||||
add_files(filepath, {rule = "compile_shaders"})
|
add_files(filepath, {rule = "compile_shaders"})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Remove platform-specific files
|
-- Remove platform-specific files
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
Loading…
Reference in New Issue