xmake.lua 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package("jemalloc")
  2. set_homepage("http://jemalloc.net/")
  3. set_description([[A general purpose malloc(3) implementation that emphasizes
  4. fragmentation avoidance and scalable concurrency support]])
  5. set_urls("https://github.com/jemalloc/jemalloc/releases/download/$(version)/jemalloc-$(version).tar.bz2",
  6. "https://github.com/jemalloc/jemalloc.git")
  7. add_versions("5.3.0", "2db82d1e7119df3e71b7640219b6dfe84789bc0537983c3b7ac4f7189aecfeaa")
  8. add_versions("5.2.1", "34330e5ce276099e2e8950d9335db5a875689a4c6a56751ef3b1d8c537f887f6")
  9. add_patches("5.2.1", path.join(os.scriptdir(), "patches", "5.2.1", "fix_nothrow_type.patch"), "d79f5c8767695059ff541f291db3fbc57c9b67299dc129848dd365c2f51b214a")
  10. if is_plat("linux") then
  11. add_syslinks("pthread", "dl")
  12. end
  13. on_load(function (package)
  14. if package:gitref() then
  15. package:add("deps", "automake", "autoconf")
  16. end
  17. if package:is_plat("linux") and package:config("pic") ~= false then
  18. package:add("links", "jemalloc_pic")
  19. else
  20. package:add("links", "jemalloc")
  21. end
  22. end)
  23. on_install("linux", "macosx", "mingw@macosx", function(package)
  24. local configs = {"--disable-debug",
  25. "--with-jemalloc-prefix="}
  26. table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no"))
  27. if package:is_plat("linux") and package:config("pic") ~= false then
  28. table.insert(configs, "--with-pic")
  29. end
  30. import("package.tools.autoconf").install(package, configs)
  31. end)
  32. on_test(function(package)
  33. assert(package:check_cxxsnippets({
  34. test = [[
  35. #include <stdlib.h>
  36. #include <jemalloc/jemalloc.h>
  37. static void test() {
  38. for (size_t i = 0; i < 1000; i++) {
  39. malloc(i * 100);
  40. }
  41. malloc_stats_print(NULL, NULL, NULL);
  42. }
  43. ]]
  44. }, {includes = {"stdlib.h", "jemalloc/jemalloc.h"}}))
  45. end)