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