From 24d4a2ca22b0d97f56b34b9c9132284d50c80559 Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 31 Mar 2024 20:09:53 +0800 Subject: [PATCH] Auto-update libassert to v2.0.0 (#3632) * Update libassert to v2.0.0 * use cmake for v2 --------- Co-authored-by: star9029 --- packages/c/cpptrace/xmake.lua | 21 +++++-- packages/l/libassert/port/v1/xmake.lua | 29 ++++++++++ packages/l/libassert/xmake.lua | 80 +++++++++++++------------- 3 files changed, 84 insertions(+), 46 deletions(-) create mode 100644 packages/l/libassert/port/v1/xmake.lua diff --git a/packages/c/cpptrace/xmake.lua b/packages/c/cpptrace/xmake.lua index 9b5f80c55..bf3b67e08 100644 --- a/packages/c/cpptrace/xmake.lua +++ b/packages/c/cpptrace/xmake.lua @@ -34,9 +34,20 @@ package("cpptrace") end) on_test(function (package) - assert(package:check_cxxsnippets({test = [[ - void test() { - cpptrace::generate_trace().print(); - } - ]]}, {configs = {languages = "c++11"}, includes = {"cpptrace/cpptrace.hpp"}})) + local code + if package:version():le("0.1") then + code = [[ + void test() { + cpptrace::print_trace(); + } + ]] + else + code = [[ + void test() { + cpptrace::generate_trace().print(); + } + ]] + end + + assert(package:check_cxxsnippets({test = code}, {configs = {languages = "c++11"}, includes = {"cpptrace/cpptrace.hpp"}})) end) diff --git a/packages/l/libassert/port/v1/xmake.lua b/packages/l/libassert/port/v1/xmake.lua new file mode 100644 index 000000000..ed6a0acc2 --- /dev/null +++ b/packages/l/libassert/port/v1/xmake.lua @@ -0,0 +1,29 @@ +add_requires("cpptrace <=0.4.0") + +if has_config("decompose") then + add_defines("ASSERT_DECOMPOSE_BINARY_LOGICAL") +end + +if has_config("lowercase") then + add_defines("ASSERT_LOWERCASE") +end + +if has_config("magic_enum") then + add_requires("magic_enum") + add_packages("magic_enum") + add_defines("ASSERT_USE_MAGIC_ENUM") +end + +add_rules("mode.debug", "mode.release") +set_languages("c++17") + +target("assert") + set_kind("$(kind)") + add_files("src/*.cpp") + add_includedirs("include") + add_headerfiles("include/*.hpp") + add_packages("cpptrace") + + if is_plat("windows") and is_kind("shared") then + add_rules("utils.symbols.export_all", {export_classes = true}) + end diff --git a/packages/l/libassert/xmake.lua b/packages/l/libassert/xmake.lua index 9869789cd..c7784b4b9 100644 --- a/packages/l/libassert/xmake.lua +++ b/packages/l/libassert/xmake.lua @@ -6,6 +6,7 @@ package("libassert") add_urls("https://github.com/jeremy-rifkin/libassert/archive/refs/tags/$(version).tar.gz", "https://github.com/jeremy-rifkin/libassert.git") + add_versions("v2.0.0", "d4b2da2179a94637b34d18813a814531a1eceb0ddc6dd6db6098050dd638f4a1") add_versions("v1.2.2", "68206b43bc4803357ba7d366574b4631bd327c46ab76ddef6ff9366784fa6b3c") add_versions("v1.2", "332f96181f4bdbd95ef5fcd6484782ba2d89b50fd5189bc2a33fd524962f6771") @@ -13,62 +14,60 @@ package("libassert") add_configs("lowercase", {description = "Enables assert alias for ASSERT", default = false, type = "boolean"}) add_configs("magic_enum", {description = "Use the MagicEnum library to print better diagnostics for enum classes", default = true, type = "boolean"}) - add_deps("cpptrace") - on_load(function (package) if package:config("magic_enum") then package:add("deps", "magic_enum") end + + package:add("deps", "cpptrace " .. (package:version():lt("2.0.0") and "<=0.4.0" or "")) end) on_install("windows", "linux", "macosx", function (package) - local configs = {} - io.writefile("xmake.lua", [[ - add_requires("cpptrace") - if has_config("decompose") then - add_defines("ASSERT_DECOMPOSE_BINARY_LOGICAL") + if package:version():lt("2.0.0") then + if package:config("decompose") then + package:add("defines", "ASSERT_DECOMPOSE_BINARY_LOGICAL") end - if has_config("lowercase") then - add_defines("ASSERT_LOWERCASE") + if package:config("lowercase") then + package:add("defines", "ASSERT_LOWERCASE") end - if has_config("magic_enum") then - add_requires("magic_enum") - add_packages("magic_enum") - add_defines("ASSERT_USE_MAGIC_ENUM") + if package:config("magic_enum") then + package:add("defines", "ASSERT_USE_MAGIC_ENUM") + io.replace("include/assert.hpp", "../third_party/magic_enum.hpp", "magic_enum.hpp", {plain = true}) end - add_rules("mode.debug", "mode.release") - target("assert") - set_kind("$(kind)") - add_files("src/*.cpp") - add_includedirs("include") - add_headerfiles("include/*.hpp") - set_languages("c++17") - add_packages("cpptrace") - if is_plat("windows") and is_kind("shared") then - add_rules("utils.symbols.export_all", {export_classes = true}) - end - ]]) - if package:config("shared") then - configs.kind = "shared" - end - if package:config("decompose") then - package:add("defines", "ASSERT_DECOMPOSE_BINARY_LOGICAL") - end - if package:config("lowercase") then - package:add("defines", "ASSERT_LOWERCASE") - end - if package:config("magic_enum") then - package:add("defines", "ASSERT_USE_MAGIC_ENUM") - io.replace("include/assert.hpp", "../third_party/magic_enum.hpp", "magic_enum.hpp", {plain = true}) + + local configs = {} + configs.decompose = package:config("decompose") + configs.lowercase = package:config("lowercase") + configs.magic_enum = package:config("magic_enum") + os.cp(path.join(package:scriptdir(), "port", "v1", "xmake.lua"), "xmake.lua") + import("package.tools.xmake").install(package, configs) + else + local configs = { + "-DLIBASSERT_USE_EXTERNAL_CPPTRACE=ON", + "-DLIBASSERT_USE_MAGIC_ENUM=ON", + "-DLIBASSERT_BUILD_TESTING=OFF", + "-DLIBASSERT_SANITIZER_BUILD=OFF", + } + io.replace("CMakeLists.txt", "/WX", "", {plain = true}) + if not package:config("shared") then + package:add("defines", "LIBASSERT_STATIC_DEFINE") + end + if package:config("magic_enum") then + package:add("defines", "LIBASSERT_USE_MAGIC_ENUM") + end + + table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release")) + table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF")) + table.insert(configs, "-DLIBASSERT_USE_MAGIC_ENUM=" .. (package:config("magic_enum") and "ON" or "OFF")) + import("package.tools.cmake").install(package, configs) end - import("package.tools.xmake").install(package, configs) end) on_test(function (package) - local opt = {configs = {languages = "c++17"}} + local includes = (package:version():lt("2.0.0") and "assert.hpp" or "libassert/assert.hpp") + local opt = {configs = {languages = "c++17"}, includes = includes} if package:config("lowercase") then assert(package:check_cxxsnippets({test = [[ - #include void test() { int x = 0; assert(x != 1, "", x); @@ -76,7 +75,6 @@ package("libassert") ]]}, opt)) else assert(package:check_cxxsnippets({test = [[ - #include void test() { int x = 0; ASSERT(x != 1, "", x);