Browse Source

Add nazarautils (#6886)

Jérôme Leclercq 3 months ago
parent
commit
98258c6f9e
2 changed files with 52 additions and 0 deletions
  1. 26 0
      packages/n/nazarautils/rules/compiler_setup.lua
  2. 26 0
      packages/n/nazarautils/xmake.lua

+ 26 - 0
packages/n/nazarautils/rules/compiler_setup.lua

@@ -0,0 +1,26 @@
+rule("compiler_setup")
+    on_config(function(target)
+        if target:has_tool("cxx", "cl") then
+            -- MSVC
+            target:add("cxxflags", "/bigobj", "/permissive-", "/Zc:__cplusplus", "/Zc:externConstexpr", "/Zc:inline", "/Zc:lambda", "/Zc:preprocessor", "/Zc:referenceBinding", "/Zc:strictStrings", "/Zc:throwingNew", {tools = "cl"})
+            target:add("defines", "_CRT_SECURE_NO_WARNINGS", "_ENABLE_EXTENDED_ALIGNED_STORAGE")
+
+            -- Enable the following additional warnings:
+            target:add("cxflags", "/we4062", {tools = "cl"}) -- Switch case not handled (warning as error)
+            target:add("cxflags", "/we4426", {tools = "cl"}) -- Optimization flags changed after including header, may be due to #pragma optimize() (warning as error)
+            target:add("cxflags", "/we5038", {tools = "cl"}) -- Data member will be initialized after data member (warning as error)
+        
+            -- Disable the following warnings:
+            target:add("cxflags", "/wd4251", {tools = "cl"}) -- class needs to have dll-interface to be used by clients of class blah blah blah
+            target:add("cxflags", "/wd4275", {tools = "cl"}) -- DLL-interface class 'class_1' used as base for DLL-interface blah
+        else
+            -- GCC-compatible (GCC, Clang, ...)
+            target:add("cxflags", "-Wtrampolines", {tools = "gcc"})
+            target:add("cxflags", "-Werror=inconsistent-missing-override", {tools = "clang"})
+            target:add("cxflags", "-Werror=pessimizing-move")
+            target:add("cxflags", "-Werror=redundant-move")
+            target:add("cxflags", "-Werror=reorder")
+            target:add("cxflags", "-Werror=suggest-override", {tools = "gcc"})
+            target:add("cxflags", "-Werror=switch")
+        end 
+    end)

+ 26 - 0
packages/n/nazarautils/xmake.lua

@@ -0,0 +1,26 @@
+package("nazarautils")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/NazaraEngine/NazaraUtils")
+    set_description("Header-only utility library for Nazara projects")
+    set_license("MIT")
+
+    add_urls("https://github.com/NazaraEngine/NazaraUtils/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/NazaraEngine/NazaraUtils.git")
+
+    add_versions("v1.0.0", "924ea35e99b163b4fd88b61fbc848d384be497e3b0dc36fa762cc5143312524a")
+
+    set_policy("package.strict_compatibility", true)
+
+    on_install(function (package)
+        import("package.tools.xmake").install(package)
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                Nz::Bitset<> bitset;
+                bitset.UnboundedSet(42);
+                bitset.Reverse();
+            }
+        ]]}, {configs = {languages = "c++17"}, includes = "NazaraUtils/Bitset.hpp"}))
+    end)