Home | History | Annotate | Download | only in cmake
      1 # Copyright 2017 gRPC authors.
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
      4 # you may not use this file except in compliance with the License.
      5 # You may obtain a copy of the License at
      6 #
      7 #     http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 # Unless required by applicable law or agreed to in writing, software
     10 # distributed under the License is distributed on an "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     14 
     15 if("${gRPC_ZLIB_PROVIDER}" STREQUAL "module")
     16   if(NOT ZLIB_ROOT_DIR)
     17     set(ZLIB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/zlib)
     18   endif()
     19   if(EXISTS "${ZLIB_ROOT_DIR}/CMakeLists.txt")
     20     # TODO(jtattermusch): workaround for https://github.com/madler/zlib/issues/218
     21     include_directories("${ZLIB_ROOT_DIR}")
     22     add_subdirectory(${ZLIB_ROOT_DIR} third_party/zlib)
     23 
     24     if(TARGET zlibstatic)
     25       set(_gRPC_ZLIB_LIBRARIES zlibstatic)
     26       set(_gRPC_ZLIB_INCLUDE_DIR "${ZLIB_ROOT_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib")
     27     endif()
     28   else()
     29       message(WARNING "gRPC_ZLIB_PROVIDER is \"module\" but ZLIB_ROOT_DIR is wrong")
     30   endif()
     31   if(gRPC_INSTALL)
     32     message(WARNING "gRPC_INSTALL will be forced to FALSE because gRPC_ZLIB_PROVIDER is \"module\"")
     33     set(gRPC_INSTALL FALSE)
     34   endif()
     35 elseif("${gRPC_ZLIB_PROVIDER}" STREQUAL "package")
     36   # zlib installation directory can be configured by setting ZLIB_ROOT
     37   # We allow locating zlib using both "CONFIG" and "MODULE" as the expectation
     38   # is that many Linux systems will have zlib installed via a distribution
     39   # package ("MODULE"), while on Windows the user is likely to have installed
     40   # zlib using cmake ("CONFIG").
     41   # See https://cmake.org/cmake/help/v3.6/module/FindZLIB.html
     42   find_package(ZLIB REQUIRED)
     43 
     44   if(TARGET ZLIB::ZLIB)
     45     set(_gRPC_ZLIB_LIBRARIES ZLIB::ZLIB)
     46   else()
     47     set(_gRPC_ZLIB_LIBRARIES ${ZLIB_LIBRARIES})
     48   endif()
     49   set(_gRPC_ZLIB_INCLUDE_DIR ${ZLIB_INCLUDE_DIRS})
     50   set(_gRPC_FIND_ZLIB "if(NOT ZLIB_FOUND)\n  find_package(ZLIB)\nendif()")
     51 endif()
     52