2
0

xmake.lua 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package("qt6lib")
  2. set_kind("template")
  3. set_homepage("https://www.qt.io")
  4. set_description("Qt is the faster, smarter way to create innovative devices, modern UIs & applications for multiple screens. Cross-platform software development at its best.")
  5. set_license("LGPL-3")
  6. add_configs("shared", {description = "Download shared binaries.", default = true, type = "boolean", readonly = true})
  7. add_configs("vs_runtime", {description = "Set vs compiler runtime.", default = "MD", readonly = true})
  8. -- Sync with qt6base and qt-tools
  9. add_versions("6.3.0", "dummy")
  10. add_versions("6.3.1", "dummy")
  11. add_versions("6.3.2", "dummy")
  12. add_versions("6.4.0", "dummy")
  13. add_versions("6.4.1", "dummy")
  14. add_versions("6.4.2", "dummy")
  15. add_versions("6.4.3", "dummy")
  16. add_versions("6.5.0", "dummy")
  17. add_versions("6.5.1", "dummy")
  18. add_versions("6.5.2", "dummy")
  19. add_versions("6.5.3", "dummy")
  20. add_versions("6.6.0", "dummy")
  21. add_versions("6.6.1", "dummy")
  22. add_versions("6.6.2", "dummy")
  23. add_versions("6.6.3", "dummy")
  24. add_versions("6.7.0", "dummy")
  25. add_versions("6.7.1", "dummy")
  26. add_versions("6.7.2", "dummy")
  27. add_versions("6.8.0", "dummy")
  28. on_load(function (package)
  29. package:add("deps", "qt6base", {debug = package:is_debug(), version = package:version_str()})
  30. end)
  31. on_fetch(function (package)
  32. local qt = package:dep("qt6base"):fetch()
  33. if not qt then
  34. return
  35. end
  36. -- Ensure all direct dependencies are fetched
  37. for _, dep in ipairs(package:plaindeps()) do
  38. if not dep:fetch() and dep:parents(package:name()) then
  39. return
  40. end
  41. end
  42. local libname = assert(package:data("libname"), "this package must not be used directly")
  43. local links = table.wrap(package:data("links"))
  44. local includedirs = {qt.includedir}
  45. local linkname
  46. local frameworks
  47. if package:is_plat("windows") then
  48. linkname = "Qt6" .. libname
  49. if package:is_debug() then
  50. linkname = linkname .. "d"
  51. end
  52. table.insert(includedirs, path.join(qt.includedir, "Qt" .. libname))
  53. elseif package:is_plat("android") then
  54. linkname = "Qt6" .. libname
  55. if package:is_arch("x86_64", "x64") then
  56. linkname = linkname .. "_x86_64"
  57. elseif package:is_arch("arm64", "arm64-v8a") then
  58. linkname = linkname .. "_arm64-v8a"
  59. elseif package:is_arch("armv7", "armeabi-v7a", "armeabi", "armv7-a", "armv5te") then
  60. linkname = linkname .. "_armeabi-v7a"
  61. elseif package:is_arch("x86") then
  62. linkname = linkname .. "_x86"
  63. end
  64. table.insert(includedirs, path.join(qt.includedir, "Qt" .. libname))
  65. elseif package:is_plat("macosx") then
  66. table.insert(includedirs, path.join(qt.libdir, "Qt" .. libname .. ".framework", "Headers"))
  67. frameworks = "Qt" .. libname
  68. else
  69. linkname = "Qt6" .. libname
  70. table.insert(includedirs, path.join(qt.includedir, "Qt" .. libname))
  71. end
  72. table.insert(links, 1, linkname)
  73. if frameworks then
  74. table.join2(frameworks, package:data("frameworks"))
  75. else
  76. frameworks = package:data("frameworks")
  77. end
  78. return {
  79. qtdir = qt,
  80. version = qt.version,
  81. includedirs = includedirs,
  82. links = links,
  83. linkdirs = qt.libdir,
  84. frameworks = frameworks,
  85. frameworkdirs = qt.libdir,
  86. syslinks = package:data("syslinks")
  87. }
  88. end)
  89. on_install("windows|x64,linux|x86_64,macosx,mingw|x86_64@windows,linux,macosx", function (package)
  90. local qt = package:dep("qt6base"):data("qt")
  91. assert(qt, "qt6base is required")
  92. end)
  93. on_install("android|arm64-v8a,armeabi-v7a,armeabi,x86_64,x86@windows,linux,macosx", function (package)
  94. local qt = package:dep("qt6base"):data("qt")
  95. assert(qt, "qt6base is required")
  96. end)
  97. on_install("iphoneos,wasm@windows,linux,macosx", function (package)
  98. local qt = package:dep("qt6base"):data("qt")
  99. assert(qt, "qt6base is required")
  100. end)