xmake.lua 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package("asmtk")
  2. set_homepage("https://github.com/asmjit/asmtk")
  3. set_description("Assembler toolkit based on AsmJit")
  4. set_license("zlib")
  5. set_urls("https://github.com/asmjit/asmtk.git")
  6. add_versions("2023.6.14", "6e25b8983fbd8bf455c01ed7c5dd40c99b789565")
  7. add_deps("asmjit")
  8. on_install("windows", "linux", "macosx", function (package)
  9. io.writefile("xmake.lua", [[
  10. add_rules("mode.debug", "mode.release")
  11. add_requires("asmjit")
  12. target("asmtk")
  13. set_kind("$(kind)")
  14. add_files("src/**.cpp")
  15. add_headerfiles("src/(**.h)")
  16. set_languages("c++11")
  17. if is_plat("windows") then
  18. add_cxxflags("/GR-", "/GF", "/Zc:inline", "/Zc:strictStrings", "/Zc:threadSafeInit-")
  19. if is_mode("debug") then
  20. add_cxxflags("/GS")
  21. else
  22. add_cxxflags("/GS-", "/Oi")
  23. end
  24. if is_kind("shared") then
  25. add_rules("utils.symbols.export_all", {export_classes = true})
  26. end
  27. else
  28. add_cxxflags("-fno-math-errno", "-fno-threadsafe-statics")
  29. end
  30. add_packages("asmjit")
  31. ]])
  32. local configs = {}
  33. if package:config("shared") then
  34. configs.kind = "shared"
  35. end
  36. import("package.tools.xmake").install(package, configs)
  37. end)
  38. on_test(function (package)
  39. assert(package:check_cxxsnippets({test = [[
  40. #include <asmtk/asmtk.h>
  41. using namespace asmjit;
  42. using namespace asmtk;
  43. void test() {
  44. Environment env(Arch::kX64);
  45. CodeHolder code;
  46. code.init(env);
  47. }
  48. ]]}, {configs = {languages = "c++11"}}))
  49. end)