Use Find*.cmake files for backend discovery

This commit is contained in:
luisangelsm
2026-03-29 23:15:24 +02:00
parent 52dd4e4c3c
commit 268b23376b
6 changed files with 221 additions and 144 deletions

74
cmake/Findunarr.cmake Normal file
View File

@ -0,0 +1,74 @@
include(BackendHelpers)
include(FindPackageHandleStandardArgs)
set(unarr_PROVIDER "")
set(unarr_TARGET "")
set(unarr_INCLUDE_DIRS "")
set(unarr_LIBRARIES "")
if(NOT TARGET unarr::unarr AND APPLE)
set(_unarr_include_dir "${CMAKE_SOURCE_DIR}/dependencies/unarr/macx")
set(_unarr_library "${CMAKE_SOURCE_DIR}/dependencies/unarr/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 "${CMAKE_SOURCE_DIR}/dependencies/unarr/win")
set(_unarr_implib "${CMAKE_SOURCE_DIR}/dependencies/unarr/win/${_unarr_arch}/unarr.lib")
set(_unarr_dll "${CMAKE_SOURCE_DIR}/dependencies/unarr/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)