@@ -25,32 +25,55 @@ option(ENABLE_SIMD_OPTIMIZATIONS "Enable all SIMD optimizations" OFF)
25
25
option (ENABLE_SIMD_AVX512 "Enable SIMD AXV512 optimizations" OFF )
26
26
option (USE_ZLIB_RABIN_KARP_HASH "Enable bitstream compatibility with canonical zlib" OFF )
27
27
option (BUILD_UNITTESTS "Enable standalone unit tests build" OFF )
28
+ option (BUILD_MINIZIP_BIN "Enable building minzip_bin tool" OFF )
28
29
29
30
if (USE_ZLIB_RABIN_KARP_HASH)
30
31
add_definitions (-DUSE_ZLIB_RABIN_KARP_ROLLING_HASH)
31
32
endif ()
32
33
33
- # TODO(cavalcantii): add support for other OSes (e.g. Android, fuchsia, osx )
34
- # and architectures (e.g. Arm ).
34
+ # TODO(cavalcantii): add support for other OSes (e.g. Android, Fuchsia, etc )
35
+ # and architectures (e.g. RISCV ).
35
36
if (ENABLE_SIMD_OPTIMIZATIONS)
36
- add_definitions (-DINFLATE_CHUNK_SIMD_SSE2)
37
- add_definitions (-DADLER32_SIMD_SSSE3)
38
- add_definitions (-DINFLATE_CHUNK_READ_64LE)
39
- add_definitions (-DCRC32_SIMD_SSE42_PCLMUL)
40
- if (ENABLE_SIMD_AVX512)
41
- add_definitions (-DCRC32_SIMD_AVX512_PCLMUL)
42
- add_compile_options (-mvpclmulqdq -msse2 -mavx512f -mpclmul)
43
- else ()
44
- add_compile_options (-msse4.2 -mpclmul)
45
- endif ()
46
- add_definitions (-DDEFLATE_SLIDE_HASH_SSE2)
47
- # Required by CPU features detection code.
48
- add_definitions (-DX86_NOT_WINDOWS)
49
- # Apparently some environments (e.g. CentOS) require to explicitly link
50
- # with pthread and that is required by the CPU features detection code.
51
- find_package (Threads REQUIRED)
52
- SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread" )
53
- SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread" )
37
+ # Apparently some environments (e.g. CentOS) require to explicitly link
38
+ # with pthread and that is required by the CPU features detection code.
39
+ find_package (Threads REQUIRED)
40
+ SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread" )
41
+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread" )
42
+
43
+ if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" )
44
+ add_definitions (-DINFLATE_CHUNK_SIMD_SSE2)
45
+ add_definitions (-DADLER32_SIMD_SSSE3)
46
+ add_definitions (-DINFLATE_CHUNK_READ_64LE)
47
+ add_definitions (-DCRC32_SIMD_SSE42_PCLMUL)
48
+ if (ENABLE_SIMD_AVX512)
49
+ add_definitions (-DCRC32_SIMD_AVX512_PCLMUL)
50
+ add_compile_options (-mvpclmulqdq -msse2 -mavx512f -mpclmul)
51
+ else ()
52
+ add_compile_options (-msse4.2 -mpclmul)
53
+ endif ()
54
+ add_definitions (-DDEFLATE_SLIDE_HASH_SSE2)
55
+ # Required by CPU features detection code.
56
+ add_definitions (-DX86_NOT_WINDOWS)
57
+ endif ()
58
+
59
+ if ((CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" ) OR
60
+ (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" ))
61
+ add_definitions (-DINFLATE_CHUNK_SIMD_NEON)
62
+ add_definitions (-DADLER32_SIMD_NEON)
63
+ add_definitions (-DINFLATE_CHUNK_READ_64LE)
64
+ add_definitions (-DCRC32_ARMV8_CRC32)
65
+ add_definitions (-DDEFLATE_SLIDE_HASH_NEON)
66
+ # Required by CPU features detection code.
67
+ if (APPLE )
68
+ add_definitions (-DARMV8_OS_MACOS)
69
+ endif ()
70
+
71
+ if (UNIX AND NOT APPLE )
72
+ add_definitions (-DARMV8_OS_LINUX)
73
+ endif ()
74
+
75
+ SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a+crc+crypto" )
76
+ endif ()
54
77
endif ()
55
78
56
79
#
@@ -300,8 +323,11 @@ endif()
300
323
#============================================================================
301
324
# Minigzip tool
302
325
#============================================================================
303
- add_executable (minizip_bin contrib/minizip/minizip.c contrib/minizip/ioapi.c
304
- contrib/minizip/ioapi.h contrib/minizip/unzip.c
305
- contrib/minizip/unzip.h contrib/minizip/zip.c contrib/minizip/zip.h
306
- )
307
- target_link_libraries (minizip_bin zlib)
326
+ # TODO(cavalcantii): get it working on Windows.
327
+ if (BUILD_MINIZIP_BIN)
328
+ add_executable (minizip_bin contrib/minizip/minizip.c contrib/minizip/ioapi.c
329
+ contrib/minizip/ioapi.h contrib/minizip/unzip.c
330
+ contrib/minizip/unzip.h contrib/minizip/zip.c contrib/minizip/zip.h
331
+ )
332
+ target_link_libraries (minizip_bin zlib)
333
+ endif ()
0 commit comments