| workspace 'rive' | |
| configurations {'debug', 'release'} | |
| require 'setup_compiler' | |
| 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++' | |
| cppdialect 'C++17' | |
| 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' | |
| } | |
| flags { | |
| 'FatalCompileWarnings', | |
| } | |
| 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 | |
| end | |
| newoption { | |
| trigger = 'with_rive_text', | |
| description = 'Enables text experiments' | |
| } | |
| 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'} | |
| } | |
| } |