xmake.lua 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package("fmtlog")
  2. set_homepage("https://github.com/MengRao/fmtlog")
  3. set_description("fmtlog is a performant fmtlib-style logging library with latency in nanoseconds.")
  4. set_license("MIT")
  5. add_urls("https://github.com/MengRao/fmtlog/archive/refs/tags/$(version).tar.gz",
  6. "https://github.com/MengRao/fmtlog.git")
  7. add_versions("v2.2.2", "31e8341093e45fc999dbeeecfe9cdc118cc8f1e64a184cc3f194f5701d5eaec9")
  8. add_versions("v2.2.1", "9bc2f1ea37eece0f4807689962b529d2d4fa07654baef184f051319b4eac9304")
  9. add_versions("v2.1.2", "d286184e04c3c3286417873dd2feac524c53babc6cd60f10179aa5b10416ead7")
  10. add_deps("cmake")
  11. if is_plat("linux") then
  12. add_syslinks("pthread")
  13. end
  14. on_load(function (package)
  15. local fmtver = ""
  16. local packagever = package:version()
  17. if packagever then
  18. local version_mapping = {
  19. {pkgver = "2.2.2", fmtver = " 10.2.1"},
  20. {pkgver = "2.2.1", fmtver = " 9.1.0"},
  21. {pkgver = "2.1.2", fmtver = " 8.1.0"}
  22. }
  23. -- find lowest matching version (or exact match)
  24. for _, ver in ipairs(version_mapping) do
  25. if packagever:lt(ver.pkgver) then
  26. fmtver = ver.fmtver
  27. else
  28. if packagever:eq(ver.pkgver) then
  29. fmtver = ver.fmtver
  30. end
  31. break
  32. end
  33. end
  34. end
  35. package:add("deps", "fmt" .. fmtver)
  36. end)
  37. on_install("linux", "macosx", "windows|!arm64", function (package)
  38. local configs = {}
  39. table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
  40. io.replace("CMakeLists.txt", "add_subdirectory(fmt)", "", {plain = true})
  41. io.replace("CMakeLists.txt", "add_subdirectory(test)", "", {plain = true})
  42. io.replace("CMakeLists.txt", "add_subdirectory(bench)", "", {plain = true})
  43. import("package.tools.cmake").install(package, configs, {packagedeps = "fmt"})
  44. if package:config("shared") then
  45. os.tryrm(path.join(package:installdir("lib"), "*.a"))
  46. else
  47. os.tryrm(path.join(package:installdir("lib"), "*.dll"))
  48. os.tryrm(path.join(package:installdir("lib"), "*.dylib"))
  49. os.tryrm(path.join(package:installdir("lib"), "*.so"))
  50. end
  51. os.cp("*.h", package:installdir("include/fmtlog"))
  52. end)
  53. on_test(function (package)
  54. assert(package:check_cxxsnippets({test = [[
  55. void test() {
  56. logi("A info msg");
  57. }
  58. ]]}, {configs = {languages = "c++17"}, includes = "fmtlog/fmtlog.h"}))
  59. end)