| dofile('rive_build_config.lua') |
| |
| RIVE_RUNTIME_DIR = path.getabsolute('..') |
| RIVE_PLS_DIR = path.getabsolute('../renderer') |
| |
| dofile(RIVE_RUNTIME_DIR .. '/premake5_v2.lua') |
| dofile(RIVE_RUNTIME_DIR .. '/cg_renderer/premake5.lua') |
| dofile(RIVE_RUNTIME_DIR .. '/dependencies/premake5_libpng_v2.lua') |
| dofile(RIVE_RUNTIME_DIR .. '/decoders/premake5_v2.lua') |
| dofile(RIVE_PLS_DIR .. '/premake5_pls_renderer.lua') |
| |
| newoption({ trigger = 'with-skia', description = 'use skia' }) |
| if _OPTIONS['with-skia'] then |
| dofile(RIVE_RUNTIME_DIR .. '/skia/renderer/build/premake5.lua') |
| end |
| |
| function rive_tools_project(name, project_kind) |
| project(name) |
| cppdialect('C++17') |
| if project_kind == 'RiveTool' then |
| kind( |
| _OPTIONS['for_unreal'] and 'StaticLib' |
| or _OPTIONS['os'] == 'android' and 'SharedLib' |
| or _OPTIONS['os'] == 'ios' and 'StaticLib' |
| or 'ConsoleApp' |
| ) |
| |
| dependson({ |
| 'tools_common', |
| 'rive_pls_renderer', |
| 'rive_cg_renderer', |
| 'rive_decoders', |
| 'rive', |
| 'libpng', |
| 'zlib', |
| 'libjpeg', |
| 'libwebp', |
| 'rive_yoga', |
| 'rive_harfbuzz', |
| 'rive_sheenbidi', |
| }) |
| else |
| kind(project_kind) |
| end |
| |
| flags({ 'FatalCompileWarnings' }) |
| |
| defines({ |
| 'SK_GL', |
| 'GL_SILENCE_DEPRECATION', -- For glReadPixels() |
| 'YOGA_EXPORT=', |
| }) |
| |
| includedirs({ |
| '.', |
| RIVE_PLS_DIR .. '/include', |
| RIVE_PLS_DIR .. '/path_fiddle', |
| RIVE_PLS_DIR .. '/src', |
| RIVE_RUNTIME_DIR .. '/include', |
| RIVE_RUNTIME_DIR .. '/cg_renderer/include', |
| 'unit_tests', |
| }) |
| |
| includedirs({ |
| '.', |
| RIVE_PLS_DIR .. '/include', |
| RIVE_PLS_DIR .. '/path_fiddle', |
| RIVE_PLS_DIR .. '/src', |
| RIVE_RUNTIME_DIR .. '/include', |
| RIVE_RUNTIME_DIR .. '/cg_renderer/include', |
| }) |
| externalincludedirs({ |
| 'include', |
| RIVE_PLS_DIR .. '/glad', |
| RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw/include', |
| yoga, |
| libpng, |
| zlib, |
| }) |
| |
| if ndk then |
| externalincludedirs({ ndk .. '/sources' }) |
| links({ 'log', 'android' }) |
| end |
| |
| if _OPTIONS['with_vulkan'] then |
| dofile(RIVE_PLS_DIR .. '/rive_vk_bootstrap/bootstrap_project.lua') |
| end |
| |
| filter('options:with-skia') |
| do |
| includedirs({ |
| RIVE_RUNTIME_DIR .. '/skia/renderer/include', |
| RIVE_RUNTIME_DIR .. '/skia/dependencies', |
| RIVE_RUNTIME_DIR .. '/skia/dependencies/skia', |
| }) |
| defines({ 'RIVE_SKIA' }) |
| libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/skia/out/static' }) |
| links({ 'skia', 'rive_skia_renderer' }) |
| end |
| |
| filter({ 'toolset:not msc' }) |
| do |
| buildoptions({ '-Wshorten-64-to-32' }) |
| end |
| |
| filter({ 'system:windows' }) |
| do |
| architecture('x64') |
| defines({ |
| '_USE_MATH_DEFINES', |
| '_CRT_SECURE_NO_WARNINGS', |
| '_CRT_NONSTDC_NO_DEPRECATE', |
| '_WINSOCK_DEPRECATED_NO_WARNINGS', |
| 'UNICODE', |
| }) |
| end |
| |
| filter('system:android') |
| do |
| defines({ 'RIVE_TOOLS_NO_GLFW' }) |
| end |
| |
| filter('system:ios') |
| do |
| defines({ 'RIVE_TOOLS_NO_GLFW', 'RIVE_TOOLS_NO_GL' }) |
| end |
| |
| -- Match PLS math options for testing simd. |
| filter('system:not windows') |
| do |
| buildoptions({ |
| '-ffp-contract=on', |
| '-fassociative-math', |
| -- Don't warn about simd vectors larger than 128 bits when AVX is not enabled. |
| '-Wno-psabi', |
| }) |
| end |
| |
| filter({ 'system:windows', 'options:toolset=msc' }) |
| do |
| -- MSVC doesn't allow designated initializers on C++17. |
| cppdialect('c++latest') |
| defines({ |
| '_SILENCE_CXX20_IS_POD_DEPRECATION_WARNING', |
| '_SILENCE_ALL_CXX20_DEPRECATION_WARNINGS', |
| }) |
| buildoptions({ |
| -- "warning C4577: 'noexcept' used with no exception handling mode specified; |
| -- termination on exception is not guaranteed. Specify /EHsc" |
| '/EHsc', |
| }) |
| end |
| |
| filter('options:with-dawn') |
| do |
| includedirs({ |
| RIVE_PLS_DIR .. '/dependencies/dawn/include', |
| RIVE_PLS_DIR .. '/dependencies/dawn/out/release/gen/include', |
| }) |
| end |
| |
| filter({ 'kind:ConsoleApp or SharedLib or WindowedApp' }) |
| do |
| libdirs({ RIVE_RUNTIME_DIR .. '/build/%{cfg.system}/bin/' .. RIVE_BUILD_CONFIG }) |
| |
| links({ |
| 'tools_common', |
| 'rive_pls_renderer', |
| 'rive_cg_renderer', |
| 'rive_decoders', |
| 'rive', |
| 'libpng', |
| 'zlib', |
| 'libjpeg', |
| 'libwebp', |
| 'rive_yoga', |
| 'rive_harfbuzz', |
| 'rive_sheenbidi', |
| }) |
| |
| if ndk then |
| relative_ndk = ndk |
| if string.sub(ndk, 1, 1) == '/' then |
| -- An absolute file path wasn't working with premake. |
| local current_path = string.gmatch(path.getabsolute('.'), '([^\\/]+)') |
| for dir in current_path do |
| relative_ndk = '../' .. relative_ndk |
| end |
| end |
| files({ |
| relative_ndk .. '/sources/android/native_app_glue/android_native_app_glue.c', |
| }) |
| end |
| |
| filter({ 'kind:ConsoleApp or SharedLib or WindowedApp', 'system:windows' }) |
| do |
| libdirs({ |
| RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src/Release', |
| }) |
| links({ 'glfw3', 'opengl32', 'd3d11', 'dxgi', 'd3dcompiler', 'ws2_32' }) |
| end |
| |
| filter({ 'kind:ConsoleApp or SharedLib or WindowedApp', 'system:macosx' }) |
| do |
| libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src' }) |
| links({ |
| 'glfw3', |
| 'Metal.framework', |
| 'QuartzCore.framework', |
| 'Cocoa.framework', |
| 'CoreGraphics.framework', |
| 'CoreFoundation.framework', |
| 'CoreMedia.framework', |
| 'CoreServices.framework', |
| 'IOKit.framework', |
| 'Security.framework', |
| 'OpenGL.framework', |
| 'bz2', |
| 'iconv', |
| 'lzma', |
| 'z', -- lib av format |
| }) |
| end |
| |
| filter({ 'kind:ConsoleApp or SharedLib or WindowedApp', 'system:linux' }) |
| do |
| libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src' }) |
| links({ 'glfw3', 'm', 'z', 'dl', 'pthread', 'GL' }) |
| end |
| |
| filter({ 'kind:ConsoleApp or SharedLib or WindowedApp', 'system:android' }) |
| do |
| links({ 'EGL', 'GLESv3', 'log' }) |
| end |
| |
| filter({ 'kind:ConsoleApp or SharedLib or WindowedApp', 'options:with-dawn' }) |
| do |
| links({ |
| 'dawn_native_static', |
| 'webgpu_dawn', |
| 'dawn_platform_static', |
| 'dawn_proc_static', |
| }) |
| end |
| |
| filter({ |
| 'kind:ConsoleApp or SharedLib or WindowedApp', |
| 'options:with-dawn', |
| 'system:windows', |
| }) |
| do |
| links({ 'dxguid' }) |
| end |
| |
| filter({ |
| 'kind:ConsoleApp or SharedLib or WindowedApp', |
| 'options:with-dawn', |
| 'system:macosx', |
| }) |
| do |
| links({ 'IOSurface.framework' }) |
| end |
| end |
| |
| filter({}) |
| end |
| |
| rive_tools_project('tools_common', 'StaticLib') |
| do |
| files({ |
| 'common/*.cpp', |
| 'unit_tests/assets/*.cpp', |
| RIVE_PLS_DIR .. '/path_fiddle/fiddle_context_gl.cpp', |
| RIVE_PLS_DIR .. '/path_fiddle/fiddle_context_d3d.cpp', |
| RIVE_PLS_DIR .. '/path_fiddle/fiddle_context_vulkan.cpp', |
| RIVE_PLS_DIR .. '/path_fiddle/fiddle_context_dawn.cpp', |
| }) |
| |
| filter({ 'options:for_unreal' }) |
| do |
| defines({ 'RIVE_UNREAL', 'RIVE_TOOLS_NO_GLFW', 'RIVE_TOOLS_NO_GL' }) |
| cppdialect('C++20') |
| end |
| |
| filter({ 'toolset:not msc' }) |
| do |
| buildoptions({ '-Wshorten-64-to-32' }) |
| end |
| |
| filter('system:macosx or ios') |
| do |
| files({ 'common/*.mm' }) |
| end |
| |
| filter('system:macosx') |
| do |
| files({ |
| RIVE_PLS_DIR .. '/path_fiddle/fiddle_context_metal.mm', |
| RIVE_PLS_DIR .. '/path_fiddle/fiddle_context_dawn_helper.mm', |
| }) |
| end |
| |
| filter({}) |
| end |