| dofile('rive_build_config.lua') | |
| SKIA_DIR = os.getenv('SKIA_DIR') | |
| dependencies = os.getenv('DEPENDENCIES') | |
| if SKIA_DIR == nil and dependencies ~= nil then | |
| SKIA_DIR = dependencies .. '/skia' | |
| else | |
| if SKIA_DIR == nil then | |
| SKIA_DIR = 'skia' | |
| end | |
| SKIA_DIR = '../../dependencies/' .. SKIA_DIR | |
| end | |
| project('rive_skia_renderer') | |
| do | |
| kind('StaticLib') | |
| language('C++') | |
| targetdir('%{cfg.system}/bin/%{cfg.buildcfg}') | |
| objdir('%{cfg.system}/obj/%{cfg.buildcfg}') | |
| includedirs({ | |
| '../include', | |
| '../../../cg_renderer/include', | |
| '../../../include', | |
| }) | |
| libdirs({ '../../../build/%{cfg.system}/bin/%{cfg.buildcfg}' }) | |
| files({ '../src/**.cpp' }) | |
| fatalwarnings { "All" } | |
| filter('system:windows') | |
| do | |
| architecture('x64') | |
| defines({ '_USE_MATH_DEFINES' }) | |
| end | |
| filter({ 'system:macosx' }) | |
| do | |
| includedirs({ SKIA_DIR }) | |
| libdirs({ SKIA_DIR .. '/out/static' }) | |
| links({ 'Cocoa.framework', 'rive', 'skia' }) | |
| end | |
| filter({ 'system:macosx', 'options:variant=runtime' }) | |
| do | |
| links({}) | |
| buildoptions({ | |
| '-fembed-bitcode -arch arm64 -arch x86_64 -isysroot ' | |
| .. (os.getenv('MACOS_SYSROOT') or ''), | |
| }) | |
| end | |
| filter({ 'system:linux or windows' }) | |
| do | |
| includedirs({ SKIA_DIR }) | |
| libdirs({ SKIA_DIR .. '/out/static' }) | |
| links({ 'rive', 'skia' }) | |
| end | |
| filter({ 'system:ios' }) | |
| do | |
| includedirs({ SKIA_DIR }) | |
| libdirs({ SKIA_DIR .. '/out/static' }) | |
| end | |
| filter({ 'system:ios', 'options:variant=system' }) | |
| do | |
| buildoptions({ | |
| '-mios-version-min=13.0 -fembed-bitcode -arch arm64 -isysroot ' | |
| .. (os.getenv('IOS_SYSROOT') or ''), | |
| }) | |
| end | |
| filter({ 'system:ios', 'options:variant=emulator' }) | |
| do | |
| buildoptions({ | |
| '--target=arm64-apple-ios13.0.0-simulator -mios-version-min=13.0 -arch x86_64 -arch arm64 -isysroot ' | |
| .. (os.getenv('IOS_SYSROOT') or ''), | |
| }) | |
| targetdir('%{cfg.system}_sim/bin/%{cfg.buildcfg}') | |
| objdir('%{cfg.system}_sim/obj/%{cfg.buildcfg}') | |
| end | |
| -- Is there a way to pass 'arch' as a variable here? | |
| filter({ 'system:android' }) | |
| do | |
| includedirs({ SKIA_DIR }) | |
| filter({ 'system:android', 'options:arch=x86' }) | |
| do | |
| targetdir('%{cfg.system}/x86/bin/%{cfg.buildcfg}') | |
| objdir('%{cfg.system}/x86/obj/%{cfg.buildcfg}') | |
| libdirs({ SKIA_DIR .. '/out/x86' }) | |
| end | |
| filter({ 'system:android', 'options:arch=x64' }) | |
| do | |
| targetdir('%{cfg.system}/x64/bin/%{cfg.buildcfg}') | |
| objdir('%{cfg.system}/x64/obj/%{cfg.buildcfg}') | |
| libdirs({ SKIA_DIR .. '/out/x64' }) | |
| end | |
| filter({ 'system:android', 'options:arch=arm' }) | |
| do | |
| targetdir('%{cfg.system}/arm/bin/%{cfg.buildcfg}') | |
| objdir('%{cfg.system}/arm/obj/%{cfg.buildcfg}') | |
| libdirs({ SKIA_DIR .. '/out/arm' }) | |
| end | |
| filter({ 'system:android', 'options:arch=arm64' }) | |
| do | |
| targetdir('%{cfg.system}/arm64/bin/%{cfg.buildcfg}') | |
| objdir('%{cfg.system}/arm64/obj/%{cfg.buildcfg}') | |
| libdirs({ SKIA_DIR .. '/out/arm64' }) | |
| end | |
| end | |
| filter({ 'configurations:release', 'system:macosx' }) | |
| do | |
| buildoptions({ '-flto=full' }) | |
| end | |
| filter({ 'configurations:release', 'system:android' }) | |
| do | |
| buildoptions({ '-flto=full' }) | |
| end | |
| filter({ 'configurations:release', 'system:ios' }) | |
| do | |
| buildoptions({ '-flto=full' }) | |
| end | |
| filter('configurations:debug') | |
| do | |
| defines({ 'DEBUG' }) | |
| symbols('On') | |
| end | |
| filter('configurations:release') | |
| do | |
| defines({ 'RELEASE', 'NDEBUG' }) | |
| optimize('On') | |
| end | |
| filter({ 'options:with_rive_text' }) | |
| do | |
| defines({ 'WITH_RIVE_TEXT' }) | |
| end | |
| filter({ 'options:with_rive_audio=system' }) | |
| do | |
| defines({ 'WITH_RIVE_AUDIO' }) | |
| end | |
| filter({ 'options:with_rive_audio=external' }) | |
| do | |
| defines({ | |
| 'WITH_RIVE_AUDIO', | |
| 'EXTERNAL_RIVE_AUDIO_ENGINE', | |
| 'MA_NO_DEVICE_IO', | |
| }) | |
| end | |
| end | |
| newoption({ trigger = 'with_rive_text', description = 'Enables text experiments' }) | |
| newoption({ | |
| trigger = 'with_rive_audio', | |
| value = 'disabled', | |
| description = 'The audio mode to use.', | |
| allowed = { { 'disabled' }, { 'system' }, { 'external' } }, | |
| }) | |
| newoption({ | |
| trigger = 'variant', | |
| value = 'type', | |
| description = 'Choose a particular variant to build', | |
| allowed = { | |
| { 'system', 'Builds the static library for the provided system' }, | |
| { 'emulator', 'Builds for an emulator/simulator for the provided system' }, | |
| { | |
| 'runtime', | |
| 'Build the static library specifically targeting our runtimes', | |
| }, | |
| }, | |
| default = 'system', | |
| }) | |
| newoption({ | |
| trigger = 'arch', | |
| value = 'ABI', | |
| description = 'The ABI with the right toolchain for this build, generally with Android', | |
| allowed = { { 'x86' }, { 'x64' }, { 'arm' }, { 'arm64' } }, | |
| }) |