blob: f253bc933d28efc8b72dd1a7875fd4bb7c161aae [file]
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 {}
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
filter {}
dofile(path.join(path.getabsolute('dependencies/'), 'premake5_harfbuzz_v2.lua'))
dofile(path.join(path.getabsolute('dependencies/'), 'premake5_sheenbidi_v2.lua'))
dofile(path.join(path.getabsolute('dependencies/'), 'premake5_miniaudio_v2.lua'))
project 'rive'
do
kind 'StaticLib'
cppdialect 'C++11'
includedirs {
'include',
harfbuzz .. '/src',
sheenbidi .. '/Headers',
miniaudio
}
files {'src/**.cpp'}
flags {
'FatalCompileWarnings'
}
filter {'system:macosx'}
do
buildoptions {
-- this triggers too much on linux, so just enable here for now
'-Wimplicit-float-conversion'
}
end
-- filter {'toolset:not msc', 'files:src/audio/audio_engine.cpp'}
filter {'system:not windows', 'files:src/audio/audio_engine.cpp'}
do
buildoptions {
'-Wno-implicit-int-conversion'
}
end
filter {'system:windows', 'files:src/audio/audio_engine.cpp'}
do
-- Too many warnings from miniaudio.h
removeflags {'FatalCompileWarnings'}
end
-- filter 'files:src/audio/audio_engine.cpp'
-- do
-- buildoptions {
-- '-Wno-implicit-int-conversion'
-- }
-- 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:ios'}
do
buildoptions {'-flto=full', '-Wno-implicit-int-conversion'}
files {'src/audio/audio_engine.m'}
end
filter 'system:windows'
do
architecture 'x64'
defines {'_USE_MATH_DEFINES'}
end
filter 'system:emscripten'
do
buildoptions {'-pthread'}
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'},
{'runtime', 'Build the static library specifically targeting our runtimes'}
},
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.'
}
newoption {
trigger = 'with_rive_audio',
value = 'disabled',
description = 'The audio mode to use.',
allowed = {
{
'disabled'
},
{
'system'
},
{
'external'
}
}
}