blob: cac71d03ad26dec33dfc8ddb6add480b8af706fb [file] [log] [blame]
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