| 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 |