xmake.lua 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package("z3")
  2. set_homepage("https://github.com/Z3Prover/z3")
  3. set_description("Z3 is a theorem prover from Microsoft Research.")
  4. set_license("MIT")
  5. add_urls("https://github.com/Z3Prover/z3/releases/download/z3-$(version)/z3-solver-$(version).0.tar.gz")
  6. add_versions("4.8.15", "4f1612fcca67eba92bb1752182e6e659d0607ae5d88d8db99a07451ed7f8ff49")
  7. add_deps("python 3.x", {kind = "binary"})
  8. if is_plat("linux") then
  9. add_syslinks("pthread", "rt")
  10. end
  11. on_install("windows", function (package)
  12. os.cd("core")
  13. io.gsub("scripts/mk_project.py", " *add_[^\n]-_example%([^\n]-%)", "")
  14. local args = {"scripts/mk_make.py"}
  15. table.insert(args, "--python")
  16. if package:debug() then
  17. table.insert(args, "--debug")
  18. end
  19. if package:is_arch("x64") then
  20. table.insert(args, "--x64")
  21. end
  22. if not package:config("shared") then
  23. table.insert(args, "--staticlib")
  24. end
  25. if package:config("vs_runtime"):startswith("MT") then
  26. table.insert(args, "--staticbin")
  27. end
  28. os.vrunv("python", args)
  29. for _, header in ipairs({"z3_algebraic.h", "z3_api.h", "z3_ast_containers.h", "z3_fixedpoint.h", "z3_fpa.h", "z3.h", "c++/z3++.h", "z3_macros.h", "z3_optimization.h", "z3_polynomial.h", "z3_rcf.h", "z3_v1.h", "z3_spacer.h"}) do
  30. os.cp(path.join("src", "api", header), package:installdir("include"))
  31. end
  32. os.cd("build")
  33. import("package.tools.nmake").build(package)
  34. os.cp("z3.exe", package:installdir("bin"))
  35. os.cp("python", package:installdir())
  36. if package:config("shared") then
  37. os.cp("libz3.dll", package:installdir("bin"))
  38. os.cp("libz3.lib", package:installdir("lib"))
  39. else
  40. os.cp("libz3-static.lib", package:installdir("lib"))
  41. end
  42. package:addenv("PATH", "bin")
  43. package:addenv("PYTHONPATH", package:installdir("python"))
  44. end)
  45. on_install("macosx", "linux", function (package)
  46. os.cd("core")
  47. io.gsub("scripts/mk_project.py", " *add_[^\n]-_example%([^\n]-%)", "")
  48. local args = {"scripts/mk_make.py"}
  49. table.insert(args, "--prefix=" .. package:installdir())
  50. table.insert(args, "--python")
  51. table.insert(args, "--pypkgdir=" .. package:installdir("python"))
  52. if package:debug() then
  53. table.insert(args, "--debug")
  54. end
  55. if package:is_arch("x86") then
  56. table.insert(args, "--x86")
  57. end
  58. if not package:config("shared") then
  59. table.insert(args, "--staticlib")
  60. end
  61. os.vrunv("python", args)
  62. os.cd("build")
  63. import("package.tools.make").install(package)
  64. if not package:config("shared") then
  65. local libfile = package:is_plat("macosx") and "libz3.dylib" or "libz3.so"
  66. os.mv(path.join(package:installdir("lib"), libfile), path.join(package:installdir("python"), "z3", "lib", libfile))
  67. end
  68. package:addenv("PATH", "bin")
  69. package:addenv("PYTHONPATH", package:installdir("python"))
  70. end)
  71. on_test(function (package)
  72. if package:is_plat(os.host()) and package:is_arch(os.arch()) then
  73. os.vrun("z3 -version")
  74. os.vrun("python3 -c \"import z3\"")
  75. end
  76. assert(package:has_cfuncs("Z3_mk_config", {includes = "z3.h"}))
  77. end)