xmake.lua 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package("nettle")
  2. set_homepage("https://www.lysator.liu.se/~nisse/nettle/")
  3. set_description("Nettle is a cryptographic library that is designed to fit easily in more or less any context.")
  4. set_license("LGPL-3.0")
  5. add_urls("https://ftpmirror.gnu.org/gnu/nettle/nettle-$(version).tar.gz",
  6. "https://ftp.gnu.org/gnu/nettle/nettle-$(version).tar.gz")
  7. add_versions("3.6", "d24c0d0f2abffbc8f4f34dcf114b0f131ec3774895f3555922fe2f40f3d5e3f1")
  8. add_versions("3.9.1", "ccfeff981b0ca71bbd6fbcb054f407c60ffb644389a5be80d6716d5b550c6ce3")
  9. add_versions("3.10.1", "b0fcdd7fc0cdea6e80dcf1dd85ba794af0d5b4a57e26397eee3bc193272d9132")
  10. add_versions("4.0", "3addbc00da01846b232fb3bc453538ea5468da43033f21bb345cb1e9073f5094")
  11. add_deps("m4")
  12. add_deps("gmp")
  13. if is_plat("linux") then
  14. add_extsources("apt::nettle-dev")
  15. end
  16. on_install("@!windows and !wasm", function (package)
  17. if package:is_plat("iphoneos") then
  18. io.replace("configure", "#define gid_t int", "")
  19. io.replace("configure", "#define uid_t int", "")
  20. end
  21. local configs = {"--disable-openssl", "--disable-documentation", "--enable-pic"}
  22. if package:config("shared") then
  23. table.insert(configs, "--enable-shared")
  24. table.insert(configs, "--disable-static")
  25. else
  26. table.insert(configs, "--disable-shared")
  27. table.insert(configs, "--enable-static")
  28. end
  29. import("package.tools.autoconf")
  30. local envs = autoconf.buildenvs(package, {packagedeps = {"gmp"}})
  31. autoconf.install(package, configs, {envs = envs})
  32. if os.isfile(package:installdir("lib64", "pkgconfig", "nettle.pc")) then
  33. package:add("linkdirs", "lib64")
  34. end
  35. end)
  36. on_test(function (package)
  37. assert(package:check_csnippets([[
  38. void sha1_test(void) {
  39. struct sha256_ctx ctx;
  40. sha256_init(&ctx);
  41. uint8_t const buffer[] = "test";
  42. sha256_update(&ctx, sizeof(buffer), buffer);
  43. uint8_t digest[SHA256_DIGEST_SIZE];
  44. #if defined(NETTLE_VERSION_MAJOR) && (NETTLE_VERSION_MAJOR <= 3)
  45. sha256_digest(&ctx, SHA256_DIGEST_SIZE, digest);
  46. #else
  47. sha256_digest(&ctx, digest);
  48. #endif
  49. }
  50. ]], {includes = {"nettle/sha2.h", "nettle/version.h"}}))
  51. assert(package:check_csnippets([[
  52. void rsa_test(void) {
  53. struct rsa_public_key pub;
  54. rsa_public_key_init(&pub);
  55. rsa_public_key_clear(&pub);
  56. }
  57. ]], {includes = "nettle/rsa.h"}))
  58. end)