| 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' }) | |
| includedirs({ | |
| '../include', | |
| rive .. '/include', | |
| rive .. '/skia/renderer/include', -- for font backends | |
| dependencies, | |
| dependencies .. '/sokol', | |
| dependencies .. '/imgui', | |
| miniaudio, | |
| }) | |
| links({ 'rive', 'rive_harfbuzz', 'rive_sheenbidi' }) | |
| 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' }) | |
| 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 |