1# Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2# file Copyright.txt or https://cmake.org/licensing for details. 3 4#[=======================================================================[.rst: 5FindBZip2 6--------- 7 8Try to find BZip2 9 10IMPORTED Targets 11^^^^^^^^^^^^^^^^ 12 13.. versionadded:: 3.12 14 15This module defines :prop_tgt:`IMPORTED` target ``BZip2::BZip2``, if 16BZip2 has been found. 17 18Result Variables 19^^^^^^^^^^^^^^^^ 20 21This module defines the following variables: 22 23``BZIP2_FOUND`` 24 system has BZip2 25``BZIP2_INCLUDE_DIRS`` 26 .. versionadded:: 3.12 27 the BZip2 include directories 28``BZIP2_LIBRARIES`` 29 Link these to use BZip2 30``BZIP2_NEED_PREFIX`` 31 this is set if the functions are prefixed with ``BZ2_`` 32``BZIP2_VERSION_STRING`` 33 the version of BZip2 found 34 35Cache variables 36^^^^^^^^^^^^^^^ 37 38The following cache variables may also be set: 39 40``BZIP2_INCLUDE_DIR`` 41 the BZip2 include directory 42#]=======================================================================] 43 44set(_BZIP2_PATHS PATHS 45 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Bzip2;InstallPath]" 46 ) 47 48find_path(BZIP2_INCLUDE_DIR bzlib.h ${_BZIP2_PATHS} PATH_SUFFIXES include) 49 50if (NOT BZIP2_LIBRARIES) 51 find_library(BZIP2_LIBRARY_RELEASE NAMES bz2 bzip2 libbz2 libbzip2 NAMES_PER_DIR ${_BZIP2_PATHS} PATH_SUFFIXES lib) 52 find_library(BZIP2_LIBRARY_DEBUG NAMES bz2d bzip2d libbz2d libbzip2d NAMES_PER_DIR ${_BZIP2_PATHS} PATH_SUFFIXES lib) 53 54 include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) 55 SELECT_LIBRARY_CONFIGURATIONS(BZIP2) 56else () 57 file(TO_CMAKE_PATH "${BZIP2_LIBRARIES}" BZIP2_LIBRARIES) 58endif () 59 60if (BZIP2_INCLUDE_DIR AND EXISTS "${BZIP2_INCLUDE_DIR}/bzlib.h") 61 file(STRINGS "${BZIP2_INCLUDE_DIR}/bzlib.h" BZLIB_H REGEX "bzip2/libbzip2 version [0-9]+\\.[^ ]+ of [0-9]+ ") 62 string(REGEX REPLACE ".* bzip2/libbzip2 version ([0-9]+\\.[^ ]+) of [0-9]+ .*" "\\1" BZIP2_VERSION_STRING "${BZLIB_H}") 63endif () 64 65include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) 66FIND_PACKAGE_HANDLE_STANDARD_ARGS(BZip2 67 REQUIRED_VARS BZIP2_LIBRARIES BZIP2_INCLUDE_DIR 68 VERSION_VAR BZIP2_VERSION_STRING) 69 70if (BZIP2_FOUND) 71 set(BZIP2_INCLUDE_DIRS ${BZIP2_INCLUDE_DIR}) 72 include(${CMAKE_CURRENT_LIST_DIR}/CheckSymbolExists.cmake) 73 include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake) 74 cmake_push_check_state() 75 set(CMAKE_REQUIRED_QUIET ${BZip2_FIND_QUIETLY}) 76 set(CMAKE_REQUIRED_INCLUDES ${BZIP2_INCLUDE_DIR}) 77 set(CMAKE_REQUIRED_LIBRARIES ${BZIP2_LIBRARIES}) 78 CHECK_SYMBOL_EXISTS(BZ2_bzCompressInit "bzlib.h" BZIP2_NEED_PREFIX) 79 cmake_pop_check_state() 80 81 if(NOT TARGET BZip2::BZip2) 82 add_library(BZip2::BZip2 UNKNOWN IMPORTED) 83 set_target_properties(BZip2::BZip2 PROPERTIES 84 INTERFACE_INCLUDE_DIRECTORIES "${BZIP2_INCLUDE_DIRS}") 85 86 if(BZIP2_LIBRARY_RELEASE) 87 set_property(TARGET BZip2::BZip2 APPEND PROPERTY 88 IMPORTED_CONFIGURATIONS RELEASE) 89 set_target_properties(BZip2::BZip2 PROPERTIES 90 IMPORTED_LOCATION_RELEASE "${BZIP2_LIBRARY_RELEASE}") 91 endif() 92 93 if(BZIP2_LIBRARY_DEBUG) 94 set_property(TARGET BZip2::BZip2 APPEND PROPERTY 95 IMPORTED_CONFIGURATIONS DEBUG) 96 set_target_properties(BZip2::BZip2 PROPERTIES 97 IMPORTED_LOCATION_DEBUG "${BZIP2_LIBRARY_DEBUG}") 98 endif() 99 100 if(NOT BZIP2_LIBRARY_RELEASE AND NOT BZIP2_LIBRARY_DEBUG) 101 set_property(TARGET BZip2::BZip2 APPEND PROPERTY 102 IMPORTED_LOCATION "${BZIP2_LIBRARY}") 103 endif() 104 endif() 105endif () 106 107mark_as_advanced(BZIP2_INCLUDE_DIR) 108