xmake.lua 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package("sqlite3")
  2. set_homepage("https://sqlite.org/")
  3. set_description("The most used database engine in the world")
  4. set_license("Public Domain")
  5. set_urls("https://sqlite.org/$(version)", {version = function (version)
  6. local year = "2025"
  7. if version:le("3.24") then
  8. year = "2018"
  9. elseif version:le("3.36") then
  10. year = "2021"
  11. elseif version:le("3.42") then
  12. year = "2022"
  13. elseif version:le("3.44") then
  14. year = "2023"
  15. elseif version:lt("3.48") then
  16. year = "2024"
  17. end
  18. local version_str = version:gsub("[.+]", "")
  19. if #version_str < 7 then
  20. version_str = version_str .. "00"
  21. end
  22. return year .. "/sqlite-autoconf-" .. version_str .. ".tar.gz"
  23. end})
  24. add_versions("3.23.0+0", "b7711a1800a071674c2bf76898ae8584fc6c9643cfe933cfc1bc54361e3a6e49")
  25. add_versions("3.24.0+0", "d9d14e88c6fb6d68de9ca0d1f9797477d82fc3aed613558f87ffbdbbc5ceb74a")
  26. add_versions("3.34.0+100", "2a3bca581117b3b88e5361d0ef3803ba6d8da604b1c1a47d902ef785c1b53e89")
  27. add_versions("3.35.0+300", "ecbccdd440bdf32c0e1bb3611d635239e3b5af268248d130d0445a32daf0274b")
  28. add_versions("3.35.0+400", "7771525dff0185bfe9638ccce23faa0e1451757ddbda5a6c853bb80b923a512d")
  29. add_versions("3.36.0+0", "bd90c3eb96bee996206b83be7065c9ce19aef38c3f4fb53073ada0d0b69bbce3")
  30. add_versions("3.37.0+200", "4089a8d9b467537b3f246f217b84cd76e00b1d1a971fe5aca1e30e230e46b2d8")
  31. add_versions("3.39.0+200", "852be8a6183a17ba47cee0bbff7400b7aa5affd283bf3beefc34fcd088a239de")
  32. add_versions("3.43.0+200", "6d422b6f62c4de2ca80d61860e3a3fb693554d2f75bb1aaca743ccc4d6f609f0")
  33. add_versions("3.45.0+100", "cd9c27841b7a5932c9897651e20b86c701dd740556989b01ca596fcfa3d49a0a")
  34. add_versions("3.45.0+200", "bc9067442eedf3dd39989b5c5cfbfff37ae66cc9c99274e0c3052dc4d4a8f6ae")
  35. add_versions("3.45.0+300", "b2809ca53124c19c60f42bf627736eae011afdcc205bb48270a5ee9a38191531")
  36. add_versions("3.46.0+0", "6f8e6a7b335273748816f9b3b62bbdc372a889de8782d7f048c653a447417a7d")
  37. add_versions("3.46.0+100", "67d3fe6d268e6eaddcae3727fce58fcc8e9c53869bdd07a0c61e38ddf2965071")
  38. add_versions("3.47.0+0", "83eb21a6f6a649f506df8bd3aab85a08f7556ceed5dbd8dea743ea003fc3a957")
  39. add_versions("3.47.0+100", "416a6f45bf2cacd494b208fdee1beda509abda951d5f47bc4f2792126f01b452")
  40. add_versions("3.47.0+200", "f1b2ee412c28d7472bc95ba996368d6f0cdcf00362affdadb27ed286c179540b")
  41. add_versions("3.48.0+0", "ac992f7fca3989de7ed1fe99c16363f848794c8c32a158dafd4eb927a2e02fd5")
  42. add_versions("3.49.0+0", "4d8bfa0b55e36951f6e5a9fb8c99f3b58990ab785c57b4f84f37d163a0672759")
  43. add_versions("3.49.0+100", "106642d8ccb36c5f7323b64e4152e9b719f7c0215acf5bfeac3d5e7f97b59254")
  44. add_versions("3.49.0+200", "5c6d8697e8a32a1512a9be5ad2b2e7a891241c334f56f8b0fb4fc6051e1652e8")
  45. add_versions("3.50.0+0", "3bc776a5f243897415f3b80fb74db3236501d45194c75c7f69012e4ec0128327")
  46. add_versions("3.50.0+100", "00a65114d697cfaa8fe0630281d76fd1b77afcd95cd5e40ec6a02cbbadbfea71")
  47. add_versions("3.50.0+200", "84a616ffd31738e4590b65babb3a9e1ef9370f3638e36db220ee0e73f8ad2156")
  48. add_versions("3.50.0+300", "ec5496cdffbc2a4adb59317fd2bf0e582bf0e6acd8f4aae7e97bc723ddba7233")
  49. add_configs("explain_comments", { description = "Inserts comment text into the output of EXPLAIN.", default = true, type = "boolean"})
  50. add_configs("dbpage_vtab", { description = "Enable the SQLITE_DBPAGE virtual table.", default = true, type = "boolean"})
  51. add_configs("stmt_vtab", { description = "Enable the SQLITE_STMT virtual table logic.", default = true, type = "boolean"})
  52. add_configs("dbstat_vtab", { description = "Enable the dbstat virtual table.", default = true, type = "boolean"})
  53. add_configs("math_functions", { description = "Enable the built-in SQL math functions.", default = true, type = "boolean"})
  54. add_configs("rtree", { description = "Enable R-Tree.", default = false, type = "boolean"})
  55. add_configs("safe_mode", { description = "Use thread safe mode in 0 (single thread) | 1 (serialize) | 2 (mutli thread).", default = "1", type = "string", values = {"0", "1", "2"}})
  56. if is_plat("macosx", "linux", "bsd") then
  57. add_syslinks("pthread", "dl")
  58. end
  59. on_install(function (package)
  60. local xmake_lua = [[
  61. add_rules("mode.debug", "mode.release")
  62. set_encodings("utf-8")
  63. option("explain_comments", {default = false, defines = "SQLITE_ENABLE_EXPLAIN_COMMENTS"})
  64. option("dbpage_vtab", {default = false, defines = "SQLITE_ENABLE_DBPAGE_VTAB"})
  65. option("stmt_vtab", {default = false, defines = "SQLITE_ENABLE_STMTVTAB"})
  66. option("dbstat_vtab", {default = false, defines = "SQLITE_ENABLE_DBSTAT_VTAB"})
  67. option("math_functions", {default = false, defines = "SQLITE_ENABLE_MATH_FUNCTIONS"})
  68. option("rtree", {default = false, defines = "SQLITE_ENABLE_RTREE"})
  69. option("safe_mode", {default = "1"})
  70. target("sqlite3")
  71. set_kind("$(kind)")
  72. add_files("sqlite3.c")
  73. add_headerfiles("sqlite3.h", "sqlite3ext.h")
  74. add_options("explain_comments", "dbpage_vtab", "stmt_vtab", "dbstat_vtab", "math_functions", "rtree")
  75. if has_config("safe_mode") then
  76. add_defines("SQLITE_THREADSAFE=" .. get_config("safe_mode"))
  77. end
  78. if is_kind("shared") and is_plat("windows") then
  79. add_defines("SQLITE_API=__declspec(dllexport)")
  80. end
  81. if is_plat("macosx", "linux", "bsd") then
  82. add_syslinks("pthread", "dl")
  83. end
  84. ]]
  85. if package:is_plat(os.host()) and (package:is_arch(os.arch()) or package:is_plat("windows")) then
  86. xmake_lua = xmake_lua .. [[
  87. target("sqlite3_shell")
  88. set_kind("binary")
  89. set_basename("sqlite3")
  90. add_files("shell.c")
  91. add_deps("sqlite3")
  92. ]]
  93. end
  94. io.writefile("xmake.lua", xmake_lua)
  95. local configs = {}
  96. for opt, value in pairs(package:configs()) do
  97. if not package:extraconf("configs", opt, "builtin") then
  98. configs[opt] = value
  99. end
  100. end
  101. import("package.tools.xmake").install(package, configs)
  102. package:addenv("PATH", "bin")
  103. end)
  104. on_test(function (package)
  105. assert(package:has_cfuncs("sqlite3_open_v2", {includes = "sqlite3.h"}))
  106. end)