Files
yacreader/cmake/Findunarr.cmake
2026-03-30 15:56:27 +02:00

77 lines
2.7 KiB
CMake

include(BackendHelpers)
include(FindPackageHandleStandardArgs)
set(unarr_PROVIDER "")
set(unarr_TARGET "")
set(unarr_INCLUDE_DIRS "")
set(unarr_LIBRARIES "")
get_filename_component(_unarr_bundled_root "${CMAKE_CURRENT_LIST_DIR}/../dependencies/unarr" ABSOLUTE)
if(NOT TARGET unarr::unarr AND APPLE)
set(_unarr_include_dir "${_unarr_bundled_root}/macx")
set(_unarr_library "${_unarr_bundled_root}/macx/libunarr.a")
if(EXISTS "${_unarr_include_dir}/unarr.h" AND EXISTS "${_unarr_library}")
yacreader_add_imported_library(unarr::unarr
TYPE STATIC
LOCATION "${_unarr_library}"
INCLUDE_DIR "${_unarr_include_dir}"
LINK_LIBRARIES "z;bz2")
set(unarr_PROVIDER "bundled dependencies (macOS)")
set(unarr_INCLUDE_DIRS "${_unarr_include_dir}")
endif()
endif()
if(NOT TARGET unarr::unarr AND WIN32)
yacreader_get_windows_arch_subdir(_unarr_arch)
set(_unarr_include_dir "${_unarr_bundled_root}/win")
set(_unarr_implib "${_unarr_bundled_root}/win/${_unarr_arch}/unarr.lib")
set(_unarr_dll "${_unarr_bundled_root}/win/${_unarr_arch}/unarr.dll")
if(EXISTS "${_unarr_include_dir}/unarr.h" AND EXISTS "${_unarr_implib}" AND EXISTS "${_unarr_dll}")
yacreader_add_imported_library(unarr::unarr
TYPE SHARED
LOCATION "${_unarr_dll}"
IMPORTED_IMPLIB "${_unarr_implib}"
INCLUDE_DIR "${_unarr_include_dir}"
COMPILE_DEFINITIONS "UNARR_IS_SHARED_LIBRARY")
set(unarr_PROVIDER "bundled dependencies (${_unarr_arch}, Windows)")
set(unarr_INCLUDE_DIRS "${_unarr_include_dir}")
endif()
endif()
if(NOT TARGET unarr::unarr)
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(UNARR QUIET IMPORTED_TARGET libunarr)
if(TARGET PkgConfig::UNARR)
yacreader_add_imported_library(unarr::unarr
TYPE INTERFACE
LINK_LIBRARIES "PkgConfig::UNARR")
set(unarr_PROVIDER "pkg-config")
set(unarr_INCLUDE_DIRS "${UNARR_INCLUDE_DIRS}")
endif()
endif()
endif()
if(NOT TARGET unarr::unarr)
find_path(UNARR_INCLUDE_DIR NAMES unarr.h)
find_library(UNARR_LIBRARY NAMES unarr libunarr)
if(UNARR_INCLUDE_DIR AND UNARR_LIBRARY)
yacreader_add_imported_library(unarr::unarr
TYPE UNKNOWN
LOCATION "${UNARR_LIBRARY}"
INCLUDE_DIR "${UNARR_INCLUDE_DIR}")
set(unarr_PROVIDER "CMake search")
set(unarr_INCLUDE_DIRS "${UNARR_INCLUDE_DIR}")
endif()
endif()
if(TARGET unarr::unarr)
set(unarr_TARGET unarr::unarr)
set(unarr_LIBRARIES unarr::unarr)
endif()
find_package_handle_standard_args(unarr REQUIRED_VARS unarr_TARGET)
mark_as_advanced(UNARR_INCLUDE_DIR UNARR_LIBRARY)