blob: 7e733608a573b376f3468c49b0c2de6ed60a6740 [file] [log] [blame]
-- require "lfs"
-- Clean Function --
newaction {
trigger = 'clean',
description = 'clean the build',
execute = function()
print('clean the build...')
os.rmdir('build')
os.remove('Makefile')
-- no wildcards in os.remove, so use shell
os.execute('rm *.make')
print('build cleaned')
end
}
workspace 'rive'
configurations {'debug'}
dofile(path.join(path.getabsolute('../../dependencies/'), 'premake5_harfbuzz.lua'))
dofile(path.join(path.getabsolute('../../dependencies/'), 'premake5_sheenbidi.lua'))
project('tests')
do
kind 'ConsoleApp'
language 'C++'
cppdialect 'C++11'
toolset (_OPTIONS["toolset"] or "clang")
targetdir 'build/bin/%{cfg.buildcfg}'
objdir 'build/obj/%{cfg.buildcfg}'
flags {'FatalWarnings'}
buildoptions {'-Wall', '-fno-exceptions', '-fno-rtti'}
includedirs {
'./include',
'../../include',
harfbuzz .. '/src',
sheenbidi .. '/Headers'
}
links {
'rive_harfbuzz',
'rive_sheenbidi'
}
files {
'../../src/**.cpp', -- the Rive runtime source
'../../test/**.cpp', -- the tests
'../../utils/**.cpp' -- no_op utils
}
defines {'TESTING', 'ENABLE_QUERY_FLAT_VERTICES', 'WITH_RIVE_TOOLS', 'WITH_RIVE_TEXT'}
filter 'configurations:debug'
do
defines {'DEBUG'}
symbols 'On'
end
filter 'system:windows'
do
removebuildoptions {
-- vs clang doesn't recognize these on windows
'-fno-exceptions',
'-fno-rtti'
}
architecture 'x64'
defines {
'_USE_MATH_DEFINES',
'_CRT_SECURE_NO_WARNINGS',
'_CRT_NONSTDC_NO_DEPRECATE'
}
end
filter {'system:windows', 'options:toolset=clang'}
do
buildoptions {
'-Wno-c++98-compat',
'-Wno-c++20-compat',
'-Wno-c++98-compat-pedantic',
'-Wno-c99-extensions',
'-Wno-ctad-maybe-unsupported',
'-Wno-deprecated-copy-with-user-provided-dtor',
'-Wno-deprecated-declarations',
'-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',
'-Wno-four-char-constants',
'-Wno-unreachable-code',
'-Wno-switch-enum',
'-Wno-missing-field-initializers'
}
end
filter {'system:windows', 'options:toolset=msc'}
do
-- We currently suppress several warnings for the MSVC build, some serious. Once this build
-- is fully integrated into GitHub actions, we will definitely want to address these.
disablewarnings {
"4061", -- enumerator 'identifier' in switch of enum 'enumeration' is not explicitly
-- handled by a case label
"4100", -- 'identifier': unreferenced formal parameter
"4201", -- nonstandard extension used: nameless struct/union
"4244", -- 'conversion_type': conversion from 'type1' to 'type2', possible loss of data
"4245", -- 'conversion_type': conversion from 'type1' to 'type2', signed/unsigned
-- mismatch
"4267", -- 'variable': conversion from 'size_t' to 'type', possible loss of data
"4355", -- 'this': used in base member initializer list
"4365", -- 'expression': conversion from 'type1' to 'type2', signed/unsigned mismatch
"4388", -- 'expression': signed/unsigned mismatch
"4389", -- 'operator': signed/unsigned mismatch
"4458", -- declaration of 'identifier' hides class member
"4514", -- 'function': unreferenced inline function has been removed
"4583", -- 'Catch::clara::detail::ResultValueBase<T>::m_value': destructor is not
-- implicitly called
"4623", -- 'Catch::AssertionInfo': default constructor was implicitly defined as deleted
"4625", -- 'derived class': copy constructor was implicitly defined as deleted because a
-- base class copy constructor is inaccessible or deleted
"4626", -- 'derived class': assignment operator was implicitly defined as deleted
-- because a base class assignment operator is inaccessible or deleted
"4820", -- 'bytes' bytes padding added after construct 'member_name'
"4868", -- (catch.hpp) compiler may not enforce left-to-right evaluation order in braced
-- initializer list
"5026", -- 'type': move constructor was implicitly defined as deleted
"5027", -- 'type': move assignment operator was implicitly defined as deleted
"5039", -- (catch.hpp) 'AddVectoredExceptionHandler': pointer or reference to
-- potentially throwing function passed to 'extern "C"' function under -EHc.
-- Undefined behavior may occur if this function throws an exception.
"5045", -- Compiler will insert Spectre mitigation for memory load if /Qspectre switch
-- specified
"5204", -- 'Catch::Matchers::Impl::MatcherMethod<T>': class has virtual functions, but
-- its trivial destructor is not virtual; instances of objects derived from this
-- class may not be destructed correctly
"5219", -- implicit conversion from 'type-1' to 'type-2', possible loss of data
"5262", -- MSVC\14.34.31933\include\atomic(917,9): implicit fall-through occurs here;
-- are you missing a break statement?
"5264", -- 'rive::math::PI': 'const' variable is not used
}
end
end
newoption {
trigger = 'toolset',
value = 'type',
description = 'Choose which toolchain to build with',
allowed = {
{'clang', 'Build with Clang'},
{'msc', 'Build with the Microsoft C/C++ compiler'}
},
default = 'clang'
}