blob: 9580b97ede2ae2099fa305637d619fd94b711240 [file]
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 {}
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.lua'))
dofile(path.join(path.getabsolute('../dependencies/'), 'premake5_sheenbidi.lua'))
dofile(path.join(path.getabsolute('../dependencies/'), 'premake5_miniaudio.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',
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:macosx', 'configurations:release'}
do
buildoptions {'-flto=full'}
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: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 arm64 -arch x86_64 -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}'
-- Ignore fatal warning for miniaudio on x86 devices.
filter {'files:../src/audio/audio_engine.cpp'}
do
buildoptions {'-Wno-atomic-alignment'}
end
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 'system:emscripten'
do
buildoptions {'-pthread'}
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'},
{'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'
}
}
}