blob: ab4066722bb11220ab3a769d3007bb5338a09ced [file] [log] [blame]
workspace 'rive'
configurations {'debug', 'release'}
SKIA_DIR = os.getenv('SKIA_DIR')
dependencies = os.getenv('DEPENDENCIES')
if SKIA_DIR == nil and dependencies ~= nil then
print('------> 1')
SKIA_DIR = dependencies .. '/skia'
else
print('------> 2')
if SKIA_DIR == nil then
print('------> 3')
SKIA_DIR = 'skia'
end
SKIA_DIR = '../../dependencies/' .. SKIA_DIR
end
print('------> IT IS ' .. SKIA_DIR)
project 'rive_skia_renderer'
do
kind 'StaticLib'
language 'C++'
cppdialect 'C++17'
toolset 'clang'
targetdir '%{cfg.system}/bin/%{cfg.buildcfg}'
objdir '%{cfg.system}/obj/%{cfg.buildcfg}'
includedirs {
dependencies .. '/harfbuzz/src',
'../include',
'../../../include'
}
if os.host() == 'macosx' then
links {'Cocoa.framework', 'rive', 'skia'}
elseif os.host() == 'windows' then
architecture 'x64'
links {
'rive',
'skia.lib',
'opengl32.lib'
}
defines {'_USE_MATH_DEFINES'}
staticruntime 'on' -- Match Skia's /MT flag for link compatibility
runtime 'Release' -- Use /MT even in debug (/MTd is incompatible with Skia)
else
links {'rive', 'skia'}
end
libdirs {'../../../build/%{cfg.system}/bin/%{cfg.buildcfg}'}
files {
'../src/**.cpp'
}
buildoptions {'-Wall', '-fno-exceptions', '-fno-rtti', '-Werror=format'}
filter {'system:macosx'}
do
includedirs {SKIA_DIR}
libdirs {SKIA_DIR .. '/out/static'}
end
filter {'system:linux or windows'}
do
includedirs {SKIA_DIR}
libdirs {SKIA_DIR .. '/out/static'}
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=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 x86_64 -arch arm64 -arch i386 -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
buildoptions {'-g'}
defines {'DEBUG'}
symbols 'On'
end
filter 'configurations:release'
do
defines {'RELEASE', 'NDEBUG'}
optimize 'On'
end
filter {'options:with-text'}
do
defines {'RIVE_TEXT'}
end
end
newoption {
trigger = 'with-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'}
},
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'}
}
}