xmake.lua 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. add_rules("mode.debug", "mode.release")
  2. option("enable_tools")
  3. set_default(false)
  4. set_showmenu(true)
  5. target("bz2")
  6. set_kind("$(kind)")
  7. set_languages("c89")
  8. add_headerfiles("bzlib.h")
  9. add_files("blocksort.c")
  10. add_files("bzlib.c")
  11. add_files("compress.c")
  12. add_files("crctable.c")
  13. add_files("decompress.c")
  14. add_files("huffman.c")
  15. add_files("randtable.c")
  16. if is_plat("windows") and is_kind("shared") then
  17. set_filename("libbz2.dll")
  18. add_files("libbz2.def")
  19. end
  20. if is_plat("wasm") then
  21. add_defines("BZ_STRICT_ANSI")
  22. end
  23. add_cflags("clang::-Wno-error=int-conversion")
  24. if has_config("enable_tools") then
  25. target("bzip2")
  26. set_kind("binary")
  27. add_deps("bz2")
  28. add_files("bzip2.c")
  29. after_install(function (target)
  30. -- copy/link additional executables/scripts (behavior is altered by checking the program name)
  31. if target:is_plat("windows", "mingw") then
  32. local binarydir = path.join(target:installdir(), "bin")
  33. os.vcp(path.join(binarydir, "bzip2.exe"), path.join(binarydir, "bzcat.exe"))
  34. os.vcp(path.join(binarydir, "bzip2.exe"), path.join(binarydir, "bunzip2.exe"))
  35. elseif is_subhost("windows") then
  36. -- when cross-compiling (ex: android from windows), we need to copy the binaries too
  37. local binarydir = path.join(target:installdir(), "bin")
  38. os.vcp(path.join(binarydir, "bzip2"), path.join(binarydir, "bzcat"))
  39. os.vcp(path.join(binarydir, "bzip2"), path.join(binarydir, "bunzip2"))
  40. else
  41. local binarydir = path.join(target:installdir(), "bin")
  42. os.ln(path.join(binarydir, "bzip2"), path.join(binarydir, "bzcat"))
  43. os.ln(path.join(binarydir, "bzip2"), path.join(binarydir, "bunzip2"))
  44. -- copy shell scripts
  45. os.vcp("bzdiff", binarydir)
  46. os.vcp("bzgrep", binarydir)
  47. os.vcp("bzmore", binarydir)
  48. -- and renamed copies
  49. os.ln(path.join(binarydir, "bzdiff"), path.join(binarydir, "bzcmp"))
  50. os.ln(path.join(binarydir, "bzgrep"), path.join(binarydir, "bzegrep"))
  51. os.ln(path.join(binarydir, "bzgrep"), path.join(binarydir, "bzfgrep"))
  52. os.ln(path.join(binarydir, "bzmore"), path.join(binarydir, "bzless"))
  53. end
  54. end)
  55. target("bzip2recover")
  56. set_kind("binary")
  57. add_deps("bz2")
  58. add_files("bzip2recover.c")
  59. end