diff --git a/packages/n/ng-log/xmake.lua b/packages/n/ng-log/xmake.lua new file mode 100644 index 00000000000..713c3f4fe2d --- /dev/null +++ b/packages/n/ng-log/xmake.lua @@ -0,0 +1,76 @@ +package("ng-log") + set_homepage("https://github.com/ng-log/ng-log/") + set_description("C++ library for application-level logging") + set_license("BSD-3-Clause") + + add_urls("https://github.com/ng-log/ng-log/archive/refs/tags/$(version).tar.gz", + "https://github.com/ng-log/ng-log.git") + + add_versions("v0.8.2", "4d7467025b800828d3b2eb87eb506b310d090171788857601a708a46825953a8") + + local configdeps = {gtest = "gtest", gflags = "gflags", unwind = "libunwind"} + for config, dep in pairs(configdeps) do + add_configs(config, {description = "Enable " .. dep .. " support.", default = (config == "gflags"), type = "boolean"}) + end + + add_links("glog", "ng-log") + + if is_plat("linux", "bsd") then + add_syslinks("pthread") + elseif is_plat("windows", "mingw") then + add_syslinks("dbghelp") + end + + add_deps("cmake") + + on_load(function (package) + for config, dep in pairs(configdeps) do + if package:config(config) then + -- ng-log depends on gflags (latest is 2.2.2), and gflags-2.2.2 has + -- cmake min version 3.4, which errors with modern cmake versions. + -- using master branch can bypass this problem, + -- once gflags has new versions, this if-clause can be removed + if config == "gflags" then + package:add("deps", "gflags 52e94563eba1968783864942fedf6e87e3c611f4") -- 2025.04.01 + else + package:add("deps", dep) + end + end + end + + package:add("defines", "NGLOG_USE_EXPORT") + if not package:config("shared") then + package:add("defines", "NGLOG_COMPAT_STATIC_DEFINE") + package:add("defines", "NGLOG_STATIC_DEFINE") + end + if package:is_plat("windows") then + package:add("defines", "NGLOG_NO_ABBREVIATED_SEVERITIES") + end + end) + + on_install(function (package) + io.replace("CMakeLists.txt", "set (CMAKE_DEBUG_POSTFIX d)", "", {plain = true}) + + local configs = {"-DBUILD_TESTING=OFF", "-DBUILD_EXAMPLES=OFF"} + 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")) + for config, dep in pairs(configdeps) do + table.insert(configs, "-DWITH_" .. config:upper() .. "=" .. (package:config(config) and "ON" or "OFF")) + end + -- fix cmake try run + if package:is_plat("mingw") or (package:is_plat("windows") and package:is_arch("arm64")) then + table.insert(configs, "-DHAVE_SYMBOLIZE_EXITCODE=1") + end + import("package.tools.cmake").install(package, configs) + end) + + on_test(function (package) + assert(package:check_cxxsnippets({test = [[ + void test(int argc, char* argv[]) { + nglog::InitializeLogging(argv[0]); + nglog::InstallFailureSignalHandler(); + int num_cookies = 4; + LOG(INFO) << "Found " << num_cookies << " cookies"; + } + ]]}, {includes = "ng-log/logging.h", configs = {languages = "c++14"}})) + end)