xmake.lua 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. add_rules("mode.debug", "mode.release")
  2. set_languages("c++17")
  3. add_requires("capstone", "keystone")
  4. target("libmem")
  5. set_kind("$(kind)")
  6. if is_plat("windows") and is_kind("shared") then
  7. add_rules("utils.symbols.export_all", {export_classes = true, export_filter = function (symbol)
  8. if symbol:find("libmem", 1, true) then
  9. return true
  10. end
  11. end})
  12. end
  13. if is_plat("windows") or is_kind("shared") then
  14. add_defines("LM_EXPORT")
  15. end
  16. add_packages("capstone", "keystone")
  17. add_headerfiles("include/(libmem/*.h)")
  18. add_headerfiles("include/(libmem/*.hpp)")
  19. add_includedirs("include")
  20. add_includedirs(
  21. "external/llvm/include",
  22. "src/common",
  23. "internal",
  24. "src"
  25. )
  26. add_files(
  27. "src/common/*.c",
  28. "src/common/*.cpp",
  29. "src/common/arch/*.c",
  30. "internal/demangler/*.cpp",
  31. "external/llvm/lib/Demangle/*.cpp"
  32. )
  33. if is_plat("linux", "bsd") and is_arch("x86_64", "x64", "x86", "i386", "i686") then
  34. add_syslinks("dl", "stdc++", "m")
  35. if is_plat("bsd") then
  36. add_syslinks("kvm", "procstat", "elf")
  37. end
  38. add_files("internal/posixutils/*.c")
  39. add_files("internal/elfutils/*.c")
  40. local arch = (is_arch("x86_64", "x64") and "x64" or "x86")
  41. local prefix = path.join("src", is_plat("linux") and "linux" or "freebsd")
  42. add_files(path.join(prefix, "ptrace", "*.c"))
  43. add_files(path.join(prefix, "*.c"))
  44. add_files(path.join(prefix, "ptrace", arch, "*.c"))
  45. if os.exists("src/common/arch/generic.c") then
  46. remove_files("src/common/arch/generic.c")
  47. end
  48. elseif is_plat("windows", "mingw") then
  49. add_syslinks("user32", "psapi", "ntdll", "shell32", "ole32")
  50. if is_plat("mingw") then
  51. add_syslinks("uuid")
  52. add_cflags("-Wno-int-conversion", "-Wno-incompatible-pointer-types")
  53. end
  54. add_files("internal/winutils/*.c")
  55. add_files("src/win/*.c")
  56. if os.exists("src/common/arch/generic.c") then
  57. remove_files("src/common/arch/generic.c")
  58. end
  59. elseif os.exists("src/common/arch/generic.c") and is_plat("linux", "android") then
  60. if is_plat("linux") then
  61. add_syslinks("dl", "stdc++", "m")
  62. end
  63. add_files("internal/posixutils/*.c")
  64. add_files("internal/elfutils/*.c")
  65. local prefix = path.join("src", "linux")
  66. add_files(path.join(prefix, "ptrace", "*.c"))
  67. add_files(path.join(prefix, "*.c"))
  68. add_files(path.join(prefix, "ptrace", "generic", "*.c"))
  69. remove_files("src/common/arch/x86.c")
  70. elseif os.exists("src/common/arch/generic.c") and is_plat("bsd") then
  71. add_syslinks("dl", "stdc++", "m", "kvm", "procstat", "elf")
  72. add_files("internal/posixutils/*.c")
  73. add_files("internal/elfutils/*.c")
  74. local prefix = path.join("src", "freebsd")
  75. add_files(path.join(prefix, "ptrace", "*.c"))
  76. add_files(path.join(prefix, "*.c"))
  77. add_files(path.join(prefix, "ptrace", "generic", "*.c"))
  78. remove_files("src/common/arch/x86.c")
  79. end