Update tests for windows
diff --git a/dev/test/premake5.lua b/dev/test/premake5.lua index 5fcf6b5..c0d716b 100644 --- a/dev/test/premake5.lua +++ b/dev/test/premake5.lua
@@ -13,6 +13,62 @@ end } + +WINDOWS_CLANG_CL_SUPPRESSED_WARNINGS = { + "-Wno-c++98-compat", + "-Wno-c++98-compat-pedantic", + "-Wno-reserved-macro-identifier", + "-Wno-newline-eof", + "-Wno-old-style-cast", + "-Wno-unused-parameter", + "-Wno-float-equal", + "-Wno-implicit-float-conversion", + "-Wno-shadow", + "-Wno-sign-conversion", + "-Wno-inconsistent-missing-destructor-override", + "-Wno-nested-anon-types", + "-Wno-suggest-destructor-override", + "-Wno-non-virtual-dtor", + "-Wno-unknown-argument", + "-Wno-gnu-anonymous-struct", + "-Wno-extra-semi", + "-Wno-cast-qual", + "-Wno-ignored-qualifiers", + "-Wno-double-promotion", + "-Wno-tautological-unsigned-zero-compare", + "-Wno-unreachable-code-break", + "-Wno-global-constructors", + "-Wno-switch-enum", + "-Wno-shorten-64-to-32", + "-Wno-missing-prototypes", + "-Wno-implicit-int-conversion", + "-Wno-unused-macros", + "-Wno-deprecated-copy-with-user-provided-dtor", + "-Wno-missing-variable-declarations", + "-Wno-ctad-maybe-unsupported", + "-Wno-vla-extension", + "-Wno-float-conversion", + "-Wno-gnu-zero-variadic-macro-arguments", + "-Wno-undef", + "-Wno-documentation", + "-Wno-documentation-pedantic", + "-Wno-documentation-unknown-command", + "-Wno-suggest-override", + "-Wno-unused-exception-parameter", + "-Wno-cast-align", + "-Wno-deprecated-declarations", + "-Wno-shadow-field", + "-Wno-nonportable-system-include-path", + "-Wno-reserved-identifier", + "-Wno-thread-safety-negative", + "-Wno-exit-time-destructors", + "-Wno-unreachable-code", + "-Wno-zero-as-null-pointer-constant", + "-Wno-pedantic", + "-Wno-sign-compare", +} + + workspace "rive_tests" configurations {"debug"} @@ -20,6 +76,7 @@ kind "ConsoleApp" language "C++" cppdialect "C++17" +toolset "clang" targetdir "build/bin/%{cfg.buildcfg}" objdir "build/obj/%{cfg.buildcfg}" @@ -37,137 +94,7 @@ defines {"DEBUG"} symbols "On" ---[[ - --- Recursively iterate through all files in a dir -function dirtree(dir) - - assert(dir and dir ~= "", "Provide a directory") - if string.sub(dir, -1) == "/" then - dir = string.sub(dir, 1, -2) - end - - local function yieldtree(dir) - for entry in lfs.dir(dir) do - if entry ~= "." and entry ~= ".." then - entry = dir .. "/" .. entry - local attr = lfs.attributes(entry) - coroutine.yield(entry, attr) - if attr.mode == "directory" then - yieldtree(entry) - end - end - end - end - return coroutine.wrap(function() - yieldtree(dir) - end) -end - --- Get the file extension from a string -function getFileExtension(path) - return path:match("^.+(%..+)$") -end - --- Get file paths to all files ending in the given file extension in a given dir --- This will recurse through subdirs -function getFilesByExtension(extension, dir) - local function yieldfile(dir) - for filename, attr in dirtree(dir) do - if attr.mode == "file" and getFileExtension(filename) == extension then - coroutine.yield(filename) - end - end - end - return coroutine.wrap(function() - yieldfile(dir) - end) -end - --- Build test executable for a cpp file -local function test(filepath) - - local filename = filepath:match("([^/]+)$") - local projectname = filename:match("^[^%.]+") - -- print("Filepath: " .. filepath) - -- print("Filename: " .. filename) - -- print("Projectname: " .. projectname) - - project(projectname) - kind "ConsoleApp" - language "C++" - cppdialect "C++17" - targetdir "build/bin/%{cfg.buildcfg}" - objdir "build/obj/%{cfg.buildcfg}" - - buildoptions { - "-Wall", - "-fno-exceptions", - "-fno-rtti" - } - - includedirs { - "./include", - "../../rive/include" - } - - files { - "../../rive/src/**.cpp", - filepath - } - - filter "configurations:debug" - defines { "DEBUG" } - symbols "On" -end - --- Build all cpp test files in Rive's test directory -for cppFile in getFilesByExtension(".cpp", "../../rive/test/") do - test(cppFile) -end - --- Build test executable for a cpp file and link to the precompiled rive lib -local function test_precompiled(filepath) - - local filename = filepath:match("([^/]+)$") .. "_linked" - local projectname = filename:match("^[^%.]+") .. "_linked" - -- print("Filepath: " .. filepath) - -- print("Filename: " .. filename) - -- print("Projectname: " .. projectname) - - project(projectname) - kind "ConsoleApp" - language "C++" - cppdialect "C++17" - targetdir "build/bin/%{cfg.buildcfg}" - objdir "build/obj/%{cfg.buildcfg}" - - buildoptions { - "-Wall", - "-fno-exceptions", - "-fno-rtti" - } - - includedirs { - "./include", - "../../rive/include" - } - - files { filepath } - - links - { - "../../rive/build/bin/debug/librive.a" - } - - filter "configurations:debug" - defines { "DEBUG" } - symbols "On" -end - --- Build all cpp test files in Rive's test directory -for cppFile in getFilesByExtension(".cpp", "../../rive/test/") do - test_precompiled(cppFile) -end - ---]] +filter "system:windows" + architecture "x64" + defines {"_USE_MATH_DEFINES"} + buildoptions {WINDOWS_CLANG_CL_SUPPRESSED_WARNINGS} \ No newline at end of file