blob: 465a0a40c0c09270157b5ce9f11c3a671858f876 [file]
dofile('rive_tools_project.lua')
newoption({
trigger = 'no_tools_shader_hotloading',
description = 'do not compile in support for shader hotloading',
})
if not _OPTIONS['for_unreal'] then
rive_tools_project(
'bench',
_OPTIONS['os'] == 'ios' and 'StaticLib'
or _OPTIONS['all_tools_as_static'] and 'StaticLib'
or 'ConsoleApp'
)
do
files({ 'bench/*.cpp' })
end
end
rive_tools_project('gms', 'RiveTool')
do
files({ 'gm/*.cpp' })
-- Deferred-rendering 2D record/replay (SerializingFactory + the replay that
-- drives a real Factory/Renderer) so GMs can verify 2D replay against PLS.
files({
'../utils/serializing_factory.cpp',
'../utils/serialized_replay.cpp',
})
-- serializing_factory.cpp decodes images (decoders header).
includedirs({ '../decoders/include' })
-- Ore GM tests need Obj-C++ on Apple (ore headers include <Metal/Metal.h>).
-- .mm wrappers #include the .cpp files so every Apple generator compiles
-- them as Obj-C++ without needing compileas or buildoptions hacks.
-- On non-Apple, ore GMs are excluded from the gm/*.cpp glob but re-added
-- per-platform as the corresponding Ore backend lands.
removefiles({ 'gm/ore_*.cpp' })
-- render_canvas GMs use RenderContext::makeRenderCanvas which is gated
-- behind RIVE_CANVAS; only compile them when with_rive_canvas is on.
filter({ 'options:not with_rive_canvas' })
do
removefiles({ 'gm/render_canvas*.cpp' })
end
filter('system:macosx or ios')
do
files({ 'gm/*.mm' })
buildoptions({ '-fobjc-arc' })
end
-- D3D11 Ore backend: include ore GMs on Windows when with_rive_canvas is on.
filter({ 'system:windows', 'options:with_rive_canvas' })
do
files({ 'gm/ore_*.cpp' })
end
-- GL Ore backend: include ore GMs on Android/Emscripten/Linux.
filter({ 'system:android or emscripten or linux', 'options:with_rive_canvas' })
do
files({ 'gm/ore_*.cpp' })
end
-- Console builds: include ore GMs to exercise ORE_BACKEND_VK paths.
filter({ 'options:_console_only_ore_vk', 'options:with_rive_canvas' })
do
files({ 'gm/ore_*.cpp' })
end
filter({})
filter({ 'options:not no_tools_shader_hotloading' })
do
files({ RIVE_PLS_DIR .. '/shader_hotload/**.cpp' })
end
filter({ 'options:for_unreal' })
do
defines({ 'RIVE_UNREAL' })
end
filter('system:emscripten')
do
files({ 'gm/gms.html' })
end
end
rive_tools_project('goldens', 'RiveTool')
do
exceptionhandling('On')
files({ 'goldens/goldens.cpp', 'goldens/goldens_bench.cpp' })
-- The deferred recording factory (deferred_render_factory.hpp) decodes image
-- dimensions at record time so the artboard's layout sees real sizes; needs
-- the decoder header + RIVE_DECODERS (the lib is already linked).
includedirs({ '../decoders/include' })
defines({ 'RIVE_DECODERS' })
filter({ 'options:not no_tools_shader_hotloading' })
do
files({ RIVE_PLS_DIR .. '/shader_hotload/**.cpp' })
end
filter({ 'options:for_unreal' })
do
defines({ 'RIVE_UNREAL' })
end
filter('system:emscripten')
do
files({ 'goldens/goldens.html' })
end
end
rive_tools_project('player', 'RiveTool')
do
files({ 'player/player.cpp' })
filter('system:emscripten')
do
files({ 'player/player.html' })
end
filter({ 'options:not no_tools_shader_hotloading' })
do
files({ RIVE_PLS_DIR .. '/shader_hotload/**.cpp' })
end
end