| dofile('rive_build_config.lua') |
| |
| dependencies = os.getenv('DEPENDENCIES') |
| |
| rive = '../../' |
| rive_tess = '../../tess' |
| rive_skia = '../../skia' |
| skia = dependencies .. '/skia' |
| |
| if _OPTIONS.renderer == 'tess' then |
| dofile(rive .. '/decoders/build/premake5.lua') |
| dofile(path.join(path.getabsolute(rive_tess) .. '/build', 'premake5_tess.lua')) |
| else |
| -- tess renderer includes this |
| dofile(path.join(path.getabsolute(rive) .. '/build', 'premake5.lua')) |
| end |
| |
| dofile(path.join(path.getabsolute(rive) .. '/cg_renderer', 'premake5.lua')) |
| |
| project('rive_viewer') |
| do |
| if _OPTIONS.renderer == 'tess' then |
| dependson('rive_decoders') |
| end |
| kind('ConsoleApp') |
| |
| defines({ 'WITH_RIVE_TEXT', 'WITH_RIVE_AUDIO', 'WITH_RIVE_LAYOUT', 'YOGA_EXPORT=' }) |
| |
| includedirs({ |
| '../include', |
| rive .. '/include', |
| rive .. '/skia/renderer/include', -- for font backends |
| dependencies, |
| dependencies .. '/sokol', |
| dependencies .. '/imgui', |
| miniaudio, |
| yoga, |
| }) |
| |
| links({ 'rive', 'rive_harfbuzz', 'rive_sheenbidi', 'rive_yoga' }) |
| |
| libdirs({ rive .. '/build/%{cfg.system}/bin/%{cfg.buildcfg}' }) |
| |
| files({ |
| '../src/**.cpp', |
| rive .. '/utils/**.cpp', |
| dependencies .. '/imgui/imgui.cpp', |
| dependencies .. '/imgui/imgui_widgets.cpp', |
| dependencies .. '/imgui/imgui_tables.cpp', |
| dependencies .. '/imgui/imgui_draw.cpp', |
| }) |
| |
| buildoptions({ '-Wall', '-fno-exceptions', '-fno-rtti' }) |
| |
| filter({ 'system:macosx' }) |
| do |
| links({ |
| 'Cocoa.framework', |
| 'IOKit.framework', |
| 'CoreVideo.framework', |
| 'OpenGL.framework', |
| 'rive_cg_renderer', |
| }) |
| files({ '../src/**.m', '../src/**.mm' }) |
| end |
| |
| filter({ 'system:macosx', 'options:graphics=gl' }) |
| do |
| links({ 'OpenGL.framework' }) |
| end |
| |
| filter({ 'system:macosx', 'options:graphics=metal' }) |
| do |
| links({ 'Metal.framework', 'MetalKit.framework', 'QuartzCore.framework' }) |
| end |
| |
| -- Tess Renderer Configuration |
| filter({ 'options:renderer=tess' }) |
| do |
| includedirs({ rive_tess .. '/include', rive .. '/decoders/include' }) |
| defines({ 'RIVE_RENDERER_TESS' }) |
| links({ 'rive_tess_renderer', 'rive_decoders', 'libpng', 'zlib', 'libjpeg', 'libwebp' }) |
| libdirs({ rive_tess .. '/build/%{cfg.system}/bin/%{cfg.buildcfg}' }) |
| end |
| |
| filter({ 'options:renderer=tess', 'options:graphics=gl' }) |
| do |
| defines({ 'SOKOL_GLCORE33' }) |
| end |
| |
| filter({ 'options:renderer=tess', 'options:graphics=metal' }) |
| do |
| defines({ 'SOKOL_METAL' }) |
| end |
| |
| filter({ 'options:renderer=tess', 'options:graphics=d3d' }) |
| do |
| defines({ 'SOKOL_D3D11' }) |
| end |
| |
| filter({ 'options:renderer=skia', 'options:graphics=gl' }) |
| do |
| defines({ 'SK_GL', 'SOKOL_GLCORE33' }) |
| files({ '../src/skia/viewer_skia_gl.cpp' }) |
| libdirs({ skia .. '/out/gl/%{cfg.buildcfg}' }) |
| end |
| |
| filter({ 'options:renderer=skia', 'options:graphics=metal' }) |
| do |
| defines({ 'SK_METAL', 'SOKOL_METAL' }) |
| libdirs({ skia .. '/out/metal/%{cfg.buildcfg}' }) |
| end |
| |
| filter({ 'options:renderer=skia', 'options:graphics=d3d' }) |
| do |
| defines({ 'SK_DIRECT3D' }) |
| libdirs({ skia .. '/out/d3d/%{cfg.buildcfg}' }) |
| end |
| |
| filter({ 'options:renderer=skia' }) |
| do |
| includedirs({ |
| skia, |
| skia .. '/include/core', |
| skia .. '/include/effects', |
| skia .. '/include/gpu', |
| skia .. '/include/config', |
| }) |
| defines({ 'RIVE_RENDERER_SKIA' }) |
| libdirs({ |
| rive_skia .. '/renderer/build/%{cfg.system}/bin/%{cfg.buildcfg}', |
| }) |
| links({ 'skia', 'rive_skia_renderer' }) |
| end |
| |
| -- CLI config options |
| newoption({ |
| trigger = 'graphics', |
| value = 'gl', |
| description = 'The graphics api to use.', |
| allowed = { { 'gl' }, { 'metal' }, { 'd3d' } }, |
| }) |
| |
| newoption({ |
| trigger = 'renderer', |
| value = 'skia', |
| description = 'The renderer to use.', |
| allowed = { { 'skia' }, { 'tess' } }, |
| }) |
| end |