xmake.lua 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package("openldap")
  2. set_homepage("https://www.openldap.org/")
  3. set_description("OpenLDAP Software is an open source implementation of the Lightweight Directory Access Protocol.")
  4. add_urls("https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-$(version).tgz")
  5. add_versions("2.5.7", "ea9757001bc36295037f0030ede16810a1bb7438bbe8f871a35cc2a2b439d9ab")
  6. add_configs("tls", {description = "Set TLS/SSL support library.", default = "openssl", type = "string", values = {"openssl", "gnutls"}})
  7. add_configs("sasl", {description = "Enable Cyrus SASL support.", default = false, type = "boolean"})
  8. if is_plat("linux") then
  9. add_syslinks("pthread")
  10. end
  11. on_load("linux", "macosx", function (package)
  12. package:add("deps", package:config("tls"))
  13. if package:config("sasl") then
  14. package:add("deps", "cyrus-sasl")
  15. end
  16. end)
  17. on_install("linux", "macosx", function (package)
  18. local configs = {}
  19. table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no"))
  20. table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes"))
  21. table.insert(configs, "--with-tls=" .. package:config("tls"))
  22. table.insert(configs, "--with-cyrus-sasl=" .. (package:config("sasl") and "yes" or "no"))
  23. if package:config("pic") ~= false then
  24. table.insert(configs, "--with-pic")
  25. end
  26. local cppflags = {}
  27. local ldflags = {}
  28. for _, dep in ipairs(package:orderdeps()) do
  29. local fetchinfo = dep:fetch()
  30. if fetchinfo then
  31. for _, includedir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do
  32. table.insert(cppflags, "-I" .. includedir)
  33. end
  34. for _, linkdir in ipairs(fetchinfo.linkdirs) do
  35. table.insert(ldflags, "-L" .. linkdir)
  36. end
  37. for _, link in ipairs(fetchinfo.links) do
  38. table.insert(ldflags, "-l" .. link)
  39. end
  40. end
  41. end
  42. import("package.tools.autoconf").install(package, configs, {cppflags = cppflags, ldflags = ldflags})
  43. end)
  44. on_test(function (package)
  45. assert(package:has_cfuncs("ldap_get_option", {includes = "ldap.h"}))
  46. end)