blob: 685ba8e2207640c343d7884b9d397c1282f18c96 [file] [log] [blame]
workspace "rive"
configurations {"debug", "release"}
filter {"options:with_rive_tools" }
defines {"WITH_RIVE_TOOLS"}
WINDOWS_CLANG_CL_SUPPRESSED_WARNINGS = {
"-Wno-c++98-compat",
"-Wno-c++98-compat-pedantic",
"-Wno-deprecated-copy-with-user-provided-dtor",
"-Wno-documentation",
"-Wno-documentation-pedantic",
"-Wno-documentation-unknown-command",
"-Wno-double-promotion",
"-Wno-exit-time-destructors",
"-Wno-float-equal",
"-Wno-global-constructors",
"-Wno-implicit-float-conversion",
"-Wno-newline-eof",
"-Wno-old-style-cast",
"-Wno-reserved-identifier",
"-Wno-shadow",
"-Wno-sign-compare",
"-Wno-sign-conversion",
"-Wno-unused-macros",
"-Wno-unused-parameter",
}
project "rive"
kind "StaticLib"
language "C++"
cppdialect "C++17"
toolset "clang"
targetdir "%{cfg.system}/bin/%{cfg.buildcfg}"
objdir "%{cfg.system}/obj/%{cfg.buildcfg}"
includedirs {"../include"}
files {"../src/**.cpp"}
buildoptions {
"-Wall", "-fno-exceptions",
"-fno-rtti",
"-Werror=format",
"-Wimplicit-int-conversion",
"-Werror=vla",
}
filter {"system:macosx" }
buildoptions {
-- this triggers too much on linux, so just enable here for now
"-Wimplicit-float-conversion",
}
filter { "system:macosx", "configurations:release" }
buildoptions {"-flto=full"}
filter {"system:ios" }
buildoptions {"-flto=full"}
filter "system:windows"
architecture "x64"
defines {"_USE_MATH_DEFINES"}
flags { "FatalCompileWarnings" }
buildoptions {WINDOWS_CLANG_CL_SUPPRESSED_WARNINGS}
staticruntime "on" -- Match Skia's /MT flag for link compatibility
runtime "Release" -- Use /MT even in debug (/MTd is incompatible with Skia)
removebuildoptions {
"-fno-exceptions",
"-fno-rtti",
}
filter {"system:ios", "options:variant=system" }
buildoptions {"-mios-version-min=10.0 -fembed-bitcode -arch armv7 -arch arm64 -arch arm64e -isysroot " .. (os.getenv("IOS_SYSROOT") or "")}
filter {"system:ios", "options:variant=emulator" }
buildoptions {"-mios-version-min=10.0 -arch arm64 -arch x86_64 -arch i386 -isysroot " .. (os.getenv("IOS_SYSROOT") or "")}
targetdir "%{cfg.system}_sim/bin/%{cfg.buildcfg}"
objdir "%{cfg.system}_sim/obj/%{cfg.buildcfg}"
filter { "system:android", "configurations:release" }
buildoptions {"-flto=full"}
-- Is there a way to pass 'arch' as a variable here?
filter { "system:android", "options:arch=x86" }
targetdir "%{cfg.system}/x86/bin/%{cfg.buildcfg}"
objdir "%{cfg.system}/x86/obj/%{cfg.buildcfg}"
filter { "system:android", "options:arch=x64" }
targetdir "%{cfg.system}/x64/bin/%{cfg.buildcfg}"
objdir "%{cfg.system}/x64/obj/%{cfg.buildcfg}"
filter { "system:android", "options:arch=arm" }
targetdir "%{cfg.system}/arm/bin/%{cfg.buildcfg}"
objdir "%{cfg.system}/arm/obj/%{cfg.buildcfg}"
filter { "system:android", "options:arch=arm64" }
targetdir "%{cfg.system}/arm64/bin/%{cfg.buildcfg}"
objdir "%{cfg.system}/arm64/obj/%{cfg.buildcfg}"
filter "configurations:debug"
defines {"DEBUG"}
symbols "On"
filter "configurations:release"
defines {"RELEASE"}
defines {"NDEBUG"}
optimize "On"
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" }
}
}
newoption {
trigger = "with_rive_tools",
description = "Enables tools usually not necessary for runtime."
}