xref: /aosp_15_r20/external/zlib/patches/0010-cmake-enable-simd.patch (revision 86ee64e75fa5f8bce2c8c356138035642429cd05)
1*86ee64e7SAndroid Build Coastguard Workerdiff --git a/third_party/zlib/CMakeLists.txt b/third_party/zlib/CMakeLists.txt
2*86ee64e7SAndroid Build Coastguard Workerindex b412dc7feb732..0431278405046 100644
3*86ee64e7SAndroid Build Coastguard Worker--- a/third_party/zlib/CMakeLists.txt
4*86ee64e7SAndroid Build Coastguard Worker+++ b/third_party/zlib/CMakeLists.txt
5*86ee64e7SAndroid Build Coastguard Worker@@ -1,4 +1,4 @@
6*86ee64e7SAndroid Build Coastguard Worker-cmake_minimum_required(VERSION 2.4.4)
7*86ee64e7SAndroid Build Coastguard Worker+cmake_minimum_required(VERSION 3.0)
8*86ee64e7SAndroid Build Coastguard Worker set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
9*86ee64e7SAndroid Build Coastguard Worker
10*86ee64e7SAndroid Build Coastguard Worker project(zlib C)
11*86ee64e7SAndroid Build Coastguard Worker@@ -21,6 +21,26 @@ check_include_file(sys/types.h HAVE_SYS_TYPES_H)
12*86ee64e7SAndroid Build Coastguard Worker check_include_file(stdint.h    HAVE_STDINT_H)
13*86ee64e7SAndroid Build Coastguard Worker check_include_file(stddef.h    HAVE_STDDEF_H)
14*86ee64e7SAndroid Build Coastguard Worker
15*86ee64e7SAndroid Build Coastguard Worker+option(ENABLE_SIMD_OPTIMIZATIONS "Enable all SIMD optimizations" OFF)
16*86ee64e7SAndroid Build Coastguard Worker+
17*86ee64e7SAndroid Build Coastguard Worker+# TODO(cavalcantii): add support for other OSes (e.g. Android, fuchsia, osx)
18*86ee64e7SAndroid Build Coastguard Worker+# and architectures (e.g. Arm).
19*86ee64e7SAndroid Build Coastguard Worker+if (ENABLE_SIMD_OPTIMIZATIONS)
20*86ee64e7SAndroid Build Coastguard Worker+   add_definitions(-DINFLATE_CHUNK_SIMD_SSE2)
21*86ee64e7SAndroid Build Coastguard Worker+   add_definitions(-DADLER32_SIMD_SSSE3)
22*86ee64e7SAndroid Build Coastguard Worker+   add_definitions(-DINFLATE_CHUNK_READ_64LE)
23*86ee64e7SAndroid Build Coastguard Worker+   add_definitions(-DCRC32_SIMD_SSE42_PCLMUL)
24*86ee64e7SAndroid Build Coastguard Worker+   add_definitions(-DDEFLATE_SLIDE_HASH_SSE2)
25*86ee64e7SAndroid Build Coastguard Worker+   add_compile_options(-msse4.2 -mpclmul)
26*86ee64e7SAndroid Build Coastguard Worker+   # Required by CPU features detection code.
27*86ee64e7SAndroid Build Coastguard Worker+   add_definitions(-DX86_NOT_WINDOWS)
28*86ee64e7SAndroid Build Coastguard Worker+   # Apparently some environments (e.g. CentOS) require to explicitly link
29*86ee64e7SAndroid Build Coastguard Worker+   # with pthread and that is required by the CPU features detection code.
30*86ee64e7SAndroid Build Coastguard Worker+   find_package (Threads REQUIRED)
31*86ee64e7SAndroid Build Coastguard Worker+   SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
32*86ee64e7SAndroid Build Coastguard Worker+   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
33*86ee64e7SAndroid Build Coastguard Worker+endif()
34*86ee64e7SAndroid Build Coastguard Worker+
35*86ee64e7SAndroid Build Coastguard Worker #
36*86ee64e7SAndroid Build Coastguard Worker # Check to see if we have large file support
37*86ee64e7SAndroid Build Coastguard Worker #
38*86ee64e7SAndroid Build Coastguard Worker@@ -120,10 +140,25 @@ set(ZLIB_SRCS
39*86ee64e7SAndroid Build Coastguard Worker     zutil.c
40*86ee64e7SAndroid Build Coastguard Worker )
41*86ee64e7SAndroid Build Coastguard Worker
42*86ee64e7SAndroid Build Coastguard Worker-if(NOT MINGW)
43*86ee64e7SAndroid Build Coastguard Worker-    set(ZLIB_DLL_SRCS
44*86ee64e7SAndroid Build Coastguard Worker-        win32/zlib1.rc # If present will override custom build rule below.
45*86ee64e7SAndroid Build Coastguard Worker-    )
46*86ee64e7SAndroid Build Coastguard Worker+
47*86ee64e7SAndroid Build Coastguard Worker+#============================================================================
48*86ee64e7SAndroid Build Coastguard Worker+# Update list of source files if optimizations were enabled
49*86ee64e7SAndroid Build Coastguard Worker+#============================================================================
50*86ee64e7SAndroid Build Coastguard Worker+if (ENABLE_SIMD_OPTIMIZATIONS)
51*86ee64e7SAndroid Build Coastguard Worker+  list(REMOVE_ITEM ZLIB_SRCS inflate.c)
52*86ee64e7SAndroid Build Coastguard Worker+
53*86ee64e7SAndroid Build Coastguard Worker+  list(APPEND ZLIB_PRIVATE_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/adler32_simd.h)
54*86ee64e7SAndroid Build Coastguard Worker+  list(APPEND ZLIB_PRIVATE_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/optimizations/chunkcopy.h)
55*86ee64e7SAndroid Build Coastguard Worker+  list(APPEND ZLIB_PRIVATE_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/optimizations/inffast_chunk.h)
56*86ee64e7SAndroid Build Coastguard Worker+  list(APPEND ZLIB_PRIVATE_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/cpu_features.h)
57*86ee64e7SAndroid Build Coastguard Worker+  list(APPEND ZLIB_PRIVATE_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/crc32_simd.h)
58*86ee64e7SAndroid Build Coastguard Worker+
59*86ee64e7SAndroid Build Coastguard Worker+  list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/adler32_simd.c)
60*86ee64e7SAndroid Build Coastguard Worker+  list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/optimizations/inffast_chunk.c)
61*86ee64e7SAndroid Build Coastguard Worker+  list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/optimizations/inflate.c)
62*86ee64e7SAndroid Build Coastguard Worker+  list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpu_features.c)
63*86ee64e7SAndroid Build Coastguard Worker+  list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/crc32_simd.c)
64*86ee64e7SAndroid Build Coastguard Worker+  list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/crc_folding.c)
65*86ee64e7SAndroid Build Coastguard Worker endif()
66*86ee64e7SAndroid Build Coastguard Worker
67*86ee64e7SAndroid Build Coastguard Worker # parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
68*86ee64e7SAndroid Build Coastguard Worker@@ -191,23 +226,9 @@ if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
69*86ee64e7SAndroid Build Coastguard Worker endif()
70*86ee64e7SAndroid Build Coastguard Worker
71*86ee64e7SAndroid Build Coastguard Worker #============================================================================
72*86ee64e7SAndroid Build Coastguard Worker-# Example binaries
73*86ee64e7SAndroid Build Coastguard Worker+# Benchmarker
74*86ee64e7SAndroid Build Coastguard Worker #============================================================================
75*86ee64e7SAndroid Build Coastguard Worker-
76*86ee64e7SAndroid Build Coastguard Worker-add_executable(example test/example.c)
77*86ee64e7SAndroid Build Coastguard Worker-target_link_libraries(example zlib)
78*86ee64e7SAndroid Build Coastguard Worker-add_test(example example)
79*86ee64e7SAndroid Build Coastguard Worker-
80*86ee64e7SAndroid Build Coastguard Worker-add_executable(minigzip test/minigzip.c)
81*86ee64e7SAndroid Build Coastguard Worker-target_link_libraries(minigzip zlib)
82*86ee64e7SAndroid Build Coastguard Worker-
83*86ee64e7SAndroid Build Coastguard Worker-if(HAVE_OFF64_T)
84*86ee64e7SAndroid Build Coastguard Worker-    add_executable(example64 test/example.c)
85*86ee64e7SAndroid Build Coastguard Worker-    target_link_libraries(example64 zlib)
86*86ee64e7SAndroid Build Coastguard Worker-    set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
87*86ee64e7SAndroid Build Coastguard Worker-    add_test(example64 example64)
88*86ee64e7SAndroid Build Coastguard Worker-
89*86ee64e7SAndroid Build Coastguard Worker-    add_executable(minigzip64 test/minigzip.c)
90*86ee64e7SAndroid Build Coastguard Worker-    target_link_libraries(minigzip64 zlib)
91*86ee64e7SAndroid Build Coastguard Worker-    set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
92*86ee64e7SAndroid Build Coastguard Worker-endif()
93*86ee64e7SAndroid Build Coastguard Worker+enable_language(CXX)
94*86ee64e7SAndroid Build Coastguard Worker+set(CMAKE_CXX_STANDARD 14) # workaround for older compilers (e.g. g++ 5.4).
95*86ee64e7SAndroid Build Coastguard Worker+add_executable(zlib_bench contrib/bench/zlib_bench.cc)
96*86ee64e7SAndroid Build Coastguard Worker+target_link_libraries(zlib_bench zlib)
97