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