mirror of
https://github.com/rive-app/rive-cpp.git
synced 2026-01-18 13:11:19 +01:00
* Initial commit * Update macros * Add GPU Markers * Fix builds without microprofile * minor updates * clang format * Update profiler.cpp * clang format * Name Main Thread * Update profiler_macros.h * Fix end flip * Update fiddle_context_gl.cpp * clang format * Update rive_build_config.lua * Update rive_build_config.lua * forked microprofile so I can use a tag * Update render_context_d3d_impl.cpp * clang Co-authored-by: John White <aliasbinman@gmail.com>
196 lines
4.6 KiB
Lua
196 lines
4.6 KiB
Lua
dofile('rive_build_config.lua')
|
|
|
|
filter({ 'options:with_rive_tools' })
|
|
do
|
|
defines({ 'WITH_RIVE_TOOLS' })
|
|
end
|
|
filter({ 'options:with_rive_text' })
|
|
do
|
|
defines({ 'WITH_RIVE_TEXT' })
|
|
end
|
|
filter({ 'options:with_rive_scripting' })
|
|
do
|
|
defines({ 'WITH_RIVE_SCRIPTING' })
|
|
end
|
|
filter({ 'options:with_rive_audio=system' })
|
|
do
|
|
defines({ 'WITH_RIVE_AUDIO', 'MA_NO_RESOURCE_MANAGER' })
|
|
end
|
|
|
|
filter({ 'options:with_rive_audio=external' })
|
|
do
|
|
defines({
|
|
'WITH_RIVE_AUDIO',
|
|
'EXTERNAL_RIVE_AUDIO_ENGINE',
|
|
'MA_NO_DEVICE_IO',
|
|
'MA_NO_RESOURCE_MANAGER',
|
|
})
|
|
end
|
|
filter({ 'options:with_rive_layout' })
|
|
do
|
|
defines({ 'WITH_RIVE_LAYOUT' })
|
|
end
|
|
filter({})
|
|
|
|
dependencies = path.getabsolute('dependencies/')
|
|
dofile(path.join(dependencies, 'premake5_harfbuzz_v2.lua'))
|
|
dofile(path.join(dependencies, 'premake5_sheenbidi_v2.lua'))
|
|
dofile(path.join(dependencies, 'premake5_miniaudio_v2.lua'))
|
|
dofile(path.join(dependencies, 'premake5_yoga_v2.lua'))
|
|
|
|
if _OPTIONS['with_optick'] then
|
|
dofile(path.join(dependencies, 'premake5_optick.lua'))
|
|
end
|
|
|
|
if _OPTIONS['with_microprofile'] then
|
|
dofile(path.join(dependencies, 'premake5_microprofile.lua'))
|
|
end
|
|
|
|
|
|
if _OPTIONS['with_rive_scripting'] then
|
|
local scripting = require(path.join(path.getabsolute('scripting/'), 'premake5'))
|
|
luau = scripting.luau
|
|
libhydrogen = scripting.libhydrogen
|
|
else
|
|
project('luau_vm')
|
|
do
|
|
kind('StaticLib')
|
|
files({ 'dummy.cpp' })
|
|
end
|
|
luau = ''
|
|
libhydrogen = ''
|
|
end
|
|
|
|
project('rive')
|
|
do
|
|
kind('StaticLib')
|
|
includedirs({
|
|
'include',
|
|
harfbuzz .. '/src',
|
|
sheenbidi .. '/Headers',
|
|
miniaudio,
|
|
yoga,
|
|
})
|
|
|
|
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({})
|
|
|
|
defines({ 'YOGA_EXPORT=', '_RIVE_INTERNAL_' })
|
|
|
|
files({ 'src/**.cpp', 'include/**.h', 'include/**.hpp' })
|
|
|
|
filter('options:not for_unreal')
|
|
do
|
|
cppdialect('C++11')
|
|
fatalwarnings({ 'All' })
|
|
end
|
|
|
|
filter({ 'options:for_unreal' })
|
|
do
|
|
cppdialect('C++17')
|
|
defines({ '_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR' })
|
|
end
|
|
|
|
filter({ 'options:with_rive_text', 'options:not no-harfbuzz-renames' })
|
|
do
|
|
includedirs({
|
|
dependencies,
|
|
})
|
|
forceincludes({ 'rive_harfbuzz_renames.h' })
|
|
end
|
|
|
|
filter({ 'options:not no-yoga-renames' })
|
|
do
|
|
includedirs({
|
|
dependencies,
|
|
})
|
|
forceincludes({ 'rive_yoga_renames.h' })
|
|
end
|
|
|
|
filter({ 'system:macosx', 'options:variant=runtime' })
|
|
do
|
|
buildoptions({
|
|
'-Wimplicit-float-conversion -fembed-bitcode -arch arm64 -arch x86_64 -isysroot '
|
|
.. (os.getenv('MACOS_SYSROOT') or ''),
|
|
})
|
|
end
|
|
|
|
filter('system:windows')
|
|
do
|
|
architecture('x64')
|
|
defines({ '_USE_MATH_DEFINES' })
|
|
end
|
|
|
|
if _OPTIONS['with_optick'] then
|
|
includedirs({ optick .. '/src' })
|
|
end
|
|
|
|
if _OPTIONS['with_microprofile'] then
|
|
includedirs({microprofile})
|
|
end
|
|
|
|
filter('system:macosx or system:ios')
|
|
do
|
|
files({ 'src/text/font_hb_apple.mm' })
|
|
end
|
|
|
|
if TESTING == true then
|
|
filter({ 'toolset:not msc' })
|
|
do
|
|
buildoptions({ '-Wshorten-64-to-32', '-fprofile-instr-generate', '-fcoverage-mapping' })
|
|
end
|
|
end
|
|
filter({ 'options:with_rive_scripting' })
|
|
do
|
|
includedirs({
|
|
luau .. '/VM/include',
|
|
libhydrogen,
|
|
})
|
|
files({
|
|
libhydrogen .. '/libhydrogen.c',
|
|
})
|
|
end
|
|
filter({ 'options:with_rive_scripting', 'options:not with_rive_tools' })
|
|
do
|
|
-- at runtime we only need signature verification
|
|
defines({ 'HYDRO_SIGN_VERIFY_ONLY' })
|
|
end
|
|
end
|
|
|
|
newoption({
|
|
trigger = 'with_rive_tools',
|
|
description = 'Enables tools usually not necessary for runtime.',
|
|
})
|
|
|
|
newoption({
|
|
trigger = 'with_rive_scripting',
|
|
description = 'Enables scripting for the runtime.',
|
|
})
|
|
|
|
newoption({
|
|
trigger = 'with_rive_text',
|
|
description = 'Compiles in text features.',
|
|
})
|
|
|
|
newoption({
|
|
trigger = 'with_rive_audio',
|
|
value = 'disabled',
|
|
description = 'The audio mode to use.',
|
|
allowed = { { 'disabled' }, { 'system' }, { 'external' } },
|
|
})
|
|
|
|
newoption({
|
|
trigger = 'with_rive_layout',
|
|
description = 'Compiles in layout features.',
|
|
})
|
|
|
|
newoption({
|
|
trigger = 'with_rive_docs',
|
|
description = 'Indicates building for use with the docs generator.',
|
|
})
|