| 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' } }, | |
| }) |