xmake.lua 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. set_project("zlib")
  2. set_languages("c++11")
  3. add_rules("mode.debug", "mode.release")
  4. target("zlib")
  5. set_kind("static")
  6. if not is_plat("windows") then
  7. set_basename("z")
  8. end
  9. if is_plat("linux") then
  10. add_syslinks("pthread")
  11. end
  12. add_files("adler32.c", "compress.c", "cpu_features.c", "crc32.c", "deflate.c")
  13. add_files("gzclose.c", "gzlib.c", "gzread.c", "gzwrite.c")
  14. add_files("infback.c", "inffast.c", "inftrees.c", "trees.c", "uncompr.c", "zutil.c")
  15. add_headerfiles("zlib.h", "zconf.h", "chromeconf.h", "deflate.h", "inffast.h", "inffixed.h", "inflate.h", "inftrees.h", "zutil.h")
  16. add_includedirs(".", {public = true})
  17. -- SIMD settings
  18. on_load(function (target)
  19. import("core.tool.toolchain")
  20. if is_plat("android") then
  21. local ndk = toolchain.load("ndk"):config("ndk")
  22. target:add("includedirs", path.join(ndk, "sources", "android", "cpufeatures"))
  23. target:add("files", path.join(ndk, "sources", "android", "cpufeatures", "cpu-features.c"))
  24. end
  25. end)
  26. if is_plat("cross") then
  27. add_defines("CPU_NO_SIMD")
  28. add_files("inflate.c")
  29. elseif is_arch("i386", "x86", "x64", "x86_64") then
  30. add_defines("CRC32_SIMD_SSE42_PCLMUL", "DEFLATE_FILL_WINDOW_SSE2")
  31. add_files("crc32_simd.c", "crc_folding.c", "fill_window_sse.c")
  32. add_defines("ADLER32_SIMD_SSSE3", "INFLATE_CHUNK_SIMD_SSE2")
  33. add_files("adler32_simd.c", "contrib/optimizations/inffast_chunk.c", "contrib/optimizations/inflate.c")
  34. if is_plat("windows") then
  35. add_vectorexts("avx")
  36. else
  37. add_cflags("-msse4.2", "-mssse3", "-mpclmul")
  38. end
  39. add_defines(is_plat("windows") and "X86_WINDOWS" or "X86_NOT_WINDOWS")
  40. if is_arch(".+64") then
  41. add_defines("INFLATE_CHUNK_READ_64LE")
  42. end
  43. elseif is_arch("arm.*") then
  44. add_defines("ADLER32_SIMD_NEON", "INFLATE_CHUNK_SIMD_NEON")
  45. add_files("adler32_simd.c", "contrib/optimizations/inffast_chunk.c", "contrib/optimizations/inflate.c")
  46. if is_arch(".+64") then
  47. add_defines("INFLATE_CHUNK_READ_64LE")
  48. end
  49. if not is_plat("iphoneos") then
  50. -- ARM v8 architecture
  51. add_defines("CRC32_ARMV8_CRC32")
  52. if not is_plat("windows", "android") then
  53. add_cflags("-march=armv8-a+crc")
  54. end
  55. if is_plat("android") then
  56. add_defines("ARMV8_OS_ANDROID")
  57. elseif is_plat("linux") then
  58. add_defines("ARMV8_OS_LINUX")
  59. elseif is_plat("windows") then
  60. add_defines("ARMV8_OS_WINDOWS")
  61. elseif is_plat("macosx") then
  62. add_defines("ARMV8_OS_MACOS")
  63. else
  64. os.raise("Unsupported ARM OS")
  65. end
  66. add_files("crc32_simd.c")
  67. end
  68. else
  69. add_defines("CPU_NO_SIMD")
  70. add_files("inflate.c")
  71. end
  72. target("minizip")
  73. set_kind("static")
  74. add_deps("zlib")
  75. add_files("contrib/minizip/ioapi.c",
  76. "contrib/minizip/unzip.c",
  77. "contrib/minizip/zip.c")
  78. add_headerfiles("contrib/minizip/ioapi.h",
  79. "contrib/minizip/unzip.h",
  80. "contrib/minizip/zip.h")
  81. if is_plat("windows") then
  82. add_files("contrib/minizip/iowin32.c")
  83. add_headerfiles("contrib/minizip/iowin32.h")
  84. elseif is_plat("macosx", "iphoneos") then
  85. add_defines("USE_FILE32API")
  86. end
  87. target("compression_utils_portable")
  88. set_kind("static")
  89. add_deps("zlib")
  90. add_files("google/compression_utils_portable.cc")
  91. add_headerfiles("google/compression_utils_portable.h")