| workspace 'rive' |
| configurations { |
| 'debug', |
| 'release' |
| } |
| |
| dependencies = os.getenv('DEPENDENCIES') |
| |
| rive = '../../' |
| rive_thirdparty = '../../../../third_party' |
| rive_tess = '../../tess' |
| rive_skia = '../../skia' |
| skia = dependencies .. '/skia' |
| libpng = dependencies .. '/libpng' |
| |
| if _OPTIONS.renderer == 'tess' then |
| dofile('premake5_libpng.lua') |
| end |
| |
| project 'rive_viewer' |
| do |
| if _OPTIONS.renderer == 'tess' then |
| dependson 'libpng' |
| end |
| kind 'ConsoleApp' |
| language 'C++' |
| cppdialect 'C++17' |
| toolset 'clang' |
| targetdir('%{cfg.system}/bin/%{cfg.buildcfg}/' .. _OPTIONS.renderer .. '/' .. _OPTIONS.graphics) |
| objdir('%{cfg.system}/obj/%{cfg.buildcfg}/' .. _OPTIONS.renderer .. '/' .. _OPTIONS.graphics) |
| |
| defines { "RIVE_TEXT" } |
| |
| includedirs { |
| '../include', |
| rive .. '/include', |
| rive .. '/skia/renderer/include', -- for renderfont backends |
| rive_thirdparty .. '/externals/harfbuzz/src', |
| dependencies, |
| dependencies .. '/sokol', |
| dependencies .. '/imgui' |
| } |
| |
| links { |
| 'rive', |
| 'rive_harfbuzz', |
| } |
| |
| libdirs { |
| rive .. '/build/%{cfg.system}/bin/%{cfg.buildcfg}', |
| rive_thirdparty .. '/harfbuzz/build/%{cfg.buildcfg}/bin', |
| } |
| |
| files { |
| '../src/**.cpp', |
| '../../utils/rive_utf.cpp', |
| rive .. '/skia/renderer/src/renderfont_coretext.cpp', |
| rive .. '/skia/renderer/src/renderfont_hb.cpp', |
| rive .. '/utils/rive_utf.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' |
| } |
| 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', |
| libpng |
| } |
| defines { |
| 'RIVE_RENDERER_TESS' |
| } |
| links { |
| 'rive_tess_renderer', |
| '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}', |
| rive_thirdparty .. '/harfbuzz/build/%{cfg.buildcfg}/bin' |
| } |
| links { |
| 'skia', |
| 'rive_skia_renderer', |
| } |
| end |
| |
| filter 'configurations:debug' |
| do |
| buildoptions { |
| '-g' |
| } |
| defines { |
| 'DEBUG' |
| } |
| symbols 'On' |
| end |
| |
| filter 'configurations:release' |
| do |
| buildoptions { |
| '-flto=full' |
| } |
| defines { |
| 'RELEASE' |
| } |
| defines { |
| 'NDEBUG' |
| } |
| optimize 'On' |
| 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 |