| dofile('rive_build_config.lua') |
| |
| dofile('premake5_pls_renderer.lua') |
| dofile(RIVE_RUNTIME_DIR .. '/premake5_v2.lua') |
| dofile(RIVE_RUNTIME_DIR .. '/decoders/premake5_v2.lua') |
| |
| newoption({ trigger = 'with-skia', description = 'use skia' }) |
| if _OPTIONS['with-skia'] then |
| dofile(RIVE_RUNTIME_DIR .. '/skia/renderer/build/premake5.lua') |
| end |
| |
| if not _OPTIONS['with-webgpu'] then |
| project('path_fiddle') |
| do |
| dependson('rive') |
| kind('ConsoleApp') |
| includedirs({ |
| 'include', |
| RIVE_RUNTIME_DIR .. '/include', |
| 'include', |
| RIVE_RUNTIME_DIR .. '/renderer/src', |
| }) |
| externalincludedirs({ |
| 'glad', |
| RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw/include', |
| yoga, |
| }) |
| |
| flags({ 'FatalCompileWarnings' }) |
| |
| defines({ 'YOGA_EXPORT=' }) |
| |
| files({ 'path_fiddle/**.cpp' }) |
| |
| links({ |
| 'rive', |
| 'rive_pls_renderer', |
| 'rive_decoders', |
| 'libwebp', |
| 'rive_harfbuzz', |
| 'rive_sheenbidi', |
| 'rive_yoga', |
| }) |
| filter({ 'options:not no_rive_png' }) |
| do |
| links({ 'zlib', 'libpng' }) |
| end |
| filter({ 'options:not no_rive_jpeg' }) |
| do |
| links({ 'libjpeg' }) |
| end |
| filter({}) |
| |
| if _OPTIONS['with_vulkan'] then |
| dofile('rive_vk_bootstrap/bootstrap_project.lua') |
| end |
| |
| filter('action:xcode4') |
| do |
| -- xcode doesnt like angle brackets except for -isystem |
| -- should use externalincludedirs but GitHub runners dont have latest premake5 binaries |
| buildoptions({ '-isystem' .. yoga }) |
| end |
| |
| filter({ 'toolset:not msc' }) |
| do |
| buildoptions({ '-Wshorten-64-to-32' }) |
| 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', 'SK_GL' }) |
| libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/skia/out/static' }) |
| links({ 'skia', 'rive_skia_renderer' }) |
| end |
| |
| filter('system:windows') |
| do |
| architecture('x64') |
| defines({ 'RIVE_WINDOWS', '_CRT_SECURE_NO_WARNINGS' }) |
| libdirs({ |
| RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src/Release', |
| }) |
| links({ 'glfw3', 'opengl32', 'd3d11', 'dxgi', 'd3dcompiler' }) |
| end |
| |
| filter('system:macosx') |
| do |
| files({ 'path_fiddle/**.mm' }) |
| buildoptions({ '-fobjc-arc' }) |
| links({ |
| 'glfw3', |
| 'Cocoa.framework', |
| 'Metal.framework', |
| 'QuartzCore.framework', |
| 'IOKit.framework', |
| }) |
| libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src' }) |
| end |
| |
| filter('system:linux') |
| do |
| links({ 'glfw3' }) |
| libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src' }) |
| end |
| |
| filter('options:with-dawn') |
| do |
| includedirs({ |
| 'dependencies/dawn/include', |
| 'dependencies/dawn/out/release/gen/include', |
| }) |
| libdirs({ |
| 'dependencies/dawn/out/release/obj/src/dawn', |
| 'dependencies/dawn/out/release/obj/src/dawn/native', |
| 'dependencies/dawn/out/release/obj/src/dawn/platform', |
| 'dependencies/dawn/out/release/obj/src/dawn/platform', |
| }) |
| links({ |
| 'dawn_native_static', |
| 'webgpu_dawn', |
| 'dawn_platform_static', |
| 'dawn_proc_static', |
| }) |
| end |
| |
| filter({ 'options:with-dawn', 'system:windows' }) |
| do |
| links({ 'dxguid' }) |
| end |
| |
| filter({ 'options:with-dawn', 'system:macosx' }) |
| do |
| links({ 'IOSurface.framework' }) |
| end |
| |
| filter('system:emscripten') |
| do |
| targetname('path_fiddle.js') |
| linkoptions({ |
| '-sUSE_GLFW=3', |
| '-sMIN_WEBGL_VERSION=2', |
| '-sMAX_WEBGL_VERSION=2', |
| '--preload-file ' .. path.getabsolute('../../../gold') .. '/rivs@/', |
| }) |
| files({ 'path_fiddle/index.html' }) |
| end |
| |
| filter({ 'options:with_rive_layout' }) |
| do |
| defines({ 'YOGA_EXPORT=' }) |
| includedirs({ yoga }) |
| links({ |
| 'rive_yoga', |
| }) |
| end |
| |
| filter('files:**.html') |
| do |
| buildmessage('Copying %{file.relpath} to %{cfg.targetdir}') |
| buildcommands({ 'cp %{file.relpath} %{cfg.targetdir}/%{file.name}' }) |
| buildoutputs({ '%{cfg.targetdir}/%{file.name}' }) |
| end |
| end |
| end |
| |
| if _OPTIONS['with-webgpu'] or _OPTIONS['with-dawn'] then |
| project('webgpu_player') |
| do |
| kind('ConsoleApp') |
| includedirs({ |
| 'include', |
| RIVE_RUNTIME_DIR .. '/include', |
| 'glad', |
| 'include', |
| RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw/include', |
| }) |
| flags({ 'FatalCompileWarnings' }) |
| |
| defines({ 'YOGA_EXPORT=' }) |
| |
| files({ |
| 'webgpu_player/webgpu_player.cpp', |
| 'webgpu_player/index.html', |
| 'webgpu_player/icons.html', |
| 'webgpu_player/rive.js', |
| 'webgpu_player/rivs/Santa_Claus.riv', |
| 'webgpu_player/rivs/Coffee_Cup.riv', |
| 'webgpu_player/rivs/skull_404.riv', |
| 'webgpu_player/rivs/octopus_loop.riv', |
| 'webgpu_player/rivs/planets.riv', |
| 'webgpu_player/rivs/Timer.riv', |
| 'webgpu_player/rivs/adventuretime_marceline-pb.riv', |
| 'webgpu_player/rivs/towersDemo.riv', |
| 'webgpu_player/rivs/skills_demov1.riv', |
| 'webgpu_player/rivs/car_demo.riv', |
| 'webgpu_player/rivs/cloud_icon.riv', |
| 'webgpu_player/rivs/coffee_loader.riv', |
| 'webgpu_player/rivs/documentation.riv', |
| 'webgpu_player/rivs/fire_button.riv', |
| 'webgpu_player/rivs/lumberjackfinal.riv', |
| 'webgpu_player/rivs/mail_box.riv', |
| 'webgpu_player/rivs/new_file.riv', |
| 'webgpu_player/rivs/poison_loader.riv', |
| 'webgpu_player/rivs/popsicle_loader.riv', |
| 'webgpu_player/rivs/radio_button_example.riv', |
| 'webgpu_player/rivs/avatar_demo.riv', |
| 'webgpu_player/rivs/stopwatch.riv', |
| 'webgpu_player/rivs/volume_bars.riv', |
| 'webgpu_player/rivs/travel_icons.riv', |
| }) |
| |
| links({ |
| 'rive', |
| 'rive_pls_renderer', |
| 'rive_decoders', |
| 'libpng', |
| 'zlib', |
| 'libjpeg', |
| 'libwebp', |
| 'rive_harfbuzz', |
| 'rive_sheenbidi', |
| 'rive_yoga', |
| }) |
| |
| filter('system:windows') |
| do |
| architecture('x64') |
| defines({ 'RIVE_WINDOWS', '_CRT_SECURE_NO_WARNINGS' }) |
| libdirs({ |
| RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src/Release', |
| }) |
| links({ 'glfw3', 'opengl32', 'd3d11', 'dxgi', 'd3dcompiler' }) |
| end |
| |
| filter('system:macosx') |
| do |
| files({ 'path_fiddle/fiddle_context_dawn_helper.mm' }) |
| buildoptions({ '-fobjc-arc' }) |
| links({ |
| 'glfw3', |
| 'Cocoa.framework', |
| 'Metal.framework', |
| 'QuartzCore.framework', |
| 'IOKit.framework', |
| }) |
| libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src' }) |
| end |
| |
| filter('options:with-dawn') |
| do |
| includedirs({ |
| 'dependencies/dawn/include', |
| 'dependencies/dawn/out/release/gen/include', |
| }) |
| libdirs({ |
| 'dependencies/dawn/out/release/obj/src/dawn', |
| 'dependencies/dawn/out/release/obj/src/dawn/native', |
| 'dependencies/dawn/out/release/obj/src/dawn/platform', |
| 'dependencies/dawn/out/release/obj/src/dawn/platform', |
| }) |
| links({ |
| 'dawn_native_static', |
| 'webgpu_dawn', |
| 'dawn_platform_static', |
| 'dawn_proc_static', |
| }) |
| end |
| |
| filter({ 'options:with-dawn', 'system:windows' }) |
| do |
| links({ 'dxguid' }) |
| end |
| |
| filter({ 'options:with-dawn', 'system:macosx' }) |
| do |
| links({ 'IOSurface.framework' }) |
| end |
| |
| filter('system:emscripten') |
| do |
| targetname('webgpu_player.js') |
| linkoptions({ |
| '-sEXPORTED_FUNCTIONS=_RiveInitialize,_RiveBeginRendering,_RiveFlushRendering,_RiveLoadFile,_File_artboardNamed,_File_artboardDefault,_File_destroy,_ArtboardInstance_width,_ArtboardInstance_height,_ArtboardInstance_stateMachineNamed,_ArtboardInstance_animationNamed,_ArtboardInstance_defaultStateMachine,_ArtboardInstance_align,_ArtboardInstance_destroy,_StateMachineInstance_setBool,_StateMachineInstance_setNumber,_StateMachineInstance_fireTrigger,_StateMachineInstance_pointerDown,_StateMachineInstance_pointerMove,_StateMachineInstance_pointerUp,_StateMachineInstance_advanceAndApply,_StateMachineInstance_draw,_StateMachineInstance_destroy,_LinearAnimationInstance_advanceAndApply,_LinearAnimationInstance_draw,_LinearAnimationInstance_destroy,_Renderer_save,_Renderer_restore,_Renderer_translate,_Renderer_transform,_malloc,_free', |
| '-sEXPORTED_RUNTIME_METHODS=ccall,cwrap', |
| '-sSINGLE_FILE', |
| '-sUSE_WEBGPU', |
| '-sENVIRONMENT=web,shell', |
| }) |
| end |
| |
| filter({ 'options:with_rive_layout' }) |
| do |
| defines({ 'YOGA_EXPORT=' }) |
| includedirs({ yoga }) |
| links({ |
| 'rive_yoga', |
| }) |
| end |
| |
| filter('files:**.html or **.riv or **.js') |
| do |
| buildmessage('Copying %{file.relpath} to %{cfg.targetdir}') |
| buildcommands({ 'cp %{file.relpath} %{cfg.targetdir}/%{file.name}' }) |
| buildoutputs({ '%{cfg.targetdir}/%{file.name}' }) |
| end |
| end |
| end |