|
|
@@ -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)
|