1# zlib
2find_package(ZLIB)
3
4if(ZLIB_FOUND)
5  # Only to satisfy dependencies
6  add_custom_target(zlib)
7else()
8  include(ExternalProject)
9  # An external project for zlib
10  set(ZLIB_SOURCE  "${CMAKE_CURRENT_BINARY_DIR}/zlib-src")
11  set(ZLIB_BUILD   "${CMAKE_CURRENT_BINARY_DIR}/zlib")
12  set(ZLIB_INSTALL "${CMAKE_CURRENT_BINARY_DIR}/prefix")
13  set(ZLIB_FILE "https://zlib.net/fossils/zlib-1.2.8.tar.gz")
14  set(ZLIB_MD5 "44d667c142d7cda120332623eab69f40")
15
16  if(CMAKE_CFG_INTDIR STREQUAL ".")
17    set(ZLIB_BUILD_TYPE ${CMAKE_BUILD_TYPE})
18  else()
19    set(ZLIB_BUILD_TYPE ${CMAKE_CFG_INTDIR})
20  endif()
21
22  ExternalProject_Add(
23      zlib
24      DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}
25      SOURCE_DIR ${ZLIB_SOURCE}
26      BINARY_DIR ${ZLIB_BUILD}
27      INSTALL_DIR ${ZLIB_INSTALL}
28      URL ${ZLIB_FILE}
29      # `ExternalProject_Add` currently doesn't support anything other than MD5.
30      URL_MD5 ${ZLIB_MD5}
31      PATCH_COMMAND ${CMAKE_COMMAND} -E remove "<SOURCE_DIR>/zconf.h"
32      CMAKE_CACHE_ARGS
33      -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS}
34      -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}
35      -DCMAKE_BUILD_TYPE:STRING=${ZLIB_BUILD_TYPE}
36      ${ZLIB_EXTRA_ARGS}
37      CMAKE_ARGS
38      -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
39  )
40
41  set(ZLIB_INCLUDE_DIRS "${ZLIB_INSTALL}/include/")
42  set(ZLIB_INCLUDES "${ZLIB_INCLUDE_DIRS}/zconf.h" "${ZLIB_INCLUDE_DIRS}/zlib.h")
43
44  if(MSVC)
45    set(ZLIB_LIBRARIES "${ZLIB_INSTALL}/lib/zlibstatic$<$<CONFIG:Debug>:d>.lib")
46  endif()
47  if(UNIX)
48    set(ZLIB_LIBRARIES "${ZLIB_INSTALL}/lib/libz.a")
49  endif()
50endif()
51
52include_directories(${ZLIB_INCLUDE_DIRS})
53