| workspace 'rive' |
| configurations {'debug', 'release'} |
| |
| require 'setup_compiler' |
| |
| filter {'options:with_rive_tools'} |
| do |
| defines {'WITH_RIVE_TOOLS'} |
| end |
| filter {'options:with_rive_text'} |
| do |
| defines {'WITH_RIVE_TEXT'} |
| end |
| filter {} |
| |
| dofile(path.join(path.getabsolute('../dependencies/'), 'premake5_harfbuzz.lua')) |
| dofile(path.join(path.getabsolute('../dependencies/'), 'premake5_sheenbidi.lua')) |
| |
| project 'rive' |
| do |
| kind 'StaticLib' |
| language 'C++' |
| cppdialect 'C++11' |
| targetdir '%{cfg.system}/bin/%{cfg.buildcfg}' |
| objdir '%{cfg.system}/obj/%{cfg.buildcfg}' |
| includedirs { |
| '../include', |
| harfbuzz .. '/src', |
| sheenbidi .. '/Headers' |
| } |
| |
| files {'../src/**.cpp'} |
| |
| buildoptions { |
| '-Wall', |
| '-fno-exceptions', |
| '-fno-rtti', |
| '-Werror=format', |
| '-Wimplicit-int-conversion', |
| '-Werror=vla' |
| } |
| |
| filter {'system:macosx'} |
| do |
| buildoptions { |
| -- this triggers too much on linux, so just enable here for now |
| '-Wimplicit-float-conversion' |
| } |
| end |
| filter {'system:macosx', 'configurations:release'} |
| do |
| buildoptions {'-flto=full'} |
| end |
| filter {'system:ios'} |
| do |
| buildoptions {'-flto=full'} |
| end |
| filter 'system:windows' |
| do |
| architecture 'x64' |
| defines {'_USE_MATH_DEFINES'} |
| flags {'FatalCompileWarnings'} |
| removebuildoptions { |
| '-fno-exceptions', |
| '-fno-rtti' |
| } |
| end |
| filter {'system:ios', 'options:variant=system'} |
| do |
| buildoptions { |
| '-mios-version-min=10.0 -fembed-bitcode -arch armv7 -arch arm64 -arch arm64e -isysroot ' .. |
| (os.getenv('IOS_SYSROOT') or '') |
| } |
| end |
| filter {'system:ios', 'options:variant=emulator'} |
| do |
| buildoptions { |
| '-mios-version-min=10.0 -arch arm64 -arch x86_64 -arch i386 -isysroot ' .. (os.getenv('IOS_SYSROOT') or '') |
| } |
| targetdir '%{cfg.system}_sim/bin/%{cfg.buildcfg}' |
| objdir '%{cfg.system}_sim/obj/%{cfg.buildcfg}' |
| end |
| |
| filter {'system:android', 'configurations:release'} |
| do |
| buildoptions {'-flto=full'} |
| end |
| |
| -- Is there a way to pass 'arch' as a variable here? |
| filter {'system:android', 'options:arch=x86'} |
| do |
| targetdir '%{cfg.system}/x86/bin/%{cfg.buildcfg}' |
| objdir '%{cfg.system}/x86/obj/%{cfg.buildcfg}' |
| end |
| |
| filter {'system:android', 'options:arch=x64'} |
| do |
| targetdir '%{cfg.system}/x64/bin/%{cfg.buildcfg}' |
| objdir '%{cfg.system}/x64/obj/%{cfg.buildcfg}' |
| end |
| filter {'system:android', 'options:arch=arm'} |
| do |
| targetdir '%{cfg.system}/arm/bin/%{cfg.buildcfg}' |
| objdir '%{cfg.system}/arm/obj/%{cfg.buildcfg}' |
| end |
| filter {'system:android', 'options:arch=arm64'} |
| do |
| targetdir '%{cfg.system}/arm64/bin/%{cfg.buildcfg}' |
| objdir '%{cfg.system}/arm64/obj/%{cfg.buildcfg}' |
| end |
| filter 'configurations:debug' |
| do |
| defines {'DEBUG'} |
| symbols 'On' |
| end |
| |
| filter 'configurations:release' |
| do |
| defines {'RELEASE'} |
| defines {'NDEBUG'} |
| optimize 'On' |
| end |
| end |
| |
| 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'} |
| }, |
| default = 'system' |
| } |
| |
| newoption { |
| trigger = 'with_rive_tools', |
| description = 'Enables tools usually not necessary for runtime.' |
| } |
| |
| newoption { |
| trigger = 'with_rive_text', |
| description = 'Compiles in text features.' |
| } |