blob: 04b2a85b36d5c701651e322043cb5dc428b19e64 [file] [log] [blame]
# - Try to find rav1e
# Once done this will define
#
# RAV1E_FOUND - system has rav1e
# RAV1E_INCLUDE_DIR - the rav1e include directory
# RAV1E_LIBRARIES - Link these to use rav1e
#
#=============================================================================
# Copyright (c) 2020 Andreas Schneider <asn@cryptomilk.org>
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
#
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(_RAV1E rav1e)
endif(PKG_CONFIG_FOUND)
if(NOT RAV1E_INCLUDE_DIR)
find_path(
RAV1E_INCLUDE_DIR
NAMES rav1e.h
PATHS ${_RAV1E_INCLUDEDIR}
PATH_SUFFIXES rav1e
)
endif()
if(NOT RAV1E_LIBRARY)
# For Windows MSVC, cargo-c names the import library ravie.dll.lib
if(WIN32 AND NOT MINGW)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.lib" # import library from Rust toolchain for MSVC ABI
".lib" # static or import library from MSVC tooling
)
endif()
find_library(RAV1E_LIBRARY NAMES rav1e PATHS ${_RAV1E_LIBDIR})
endif()
set(RAV1E_LIBRARIES ${RAV1E_LIBRARIES} ${RAV1E_LIBRARY} ${_RAV1E_LDFLAGS})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
rav1e
REQUIRED_VARS RAV1E_LIBRARY RAV1E_LIBRARIES RAV1E_INCLUDE_DIR
VERSION_VAR _RAV1E_VERSION
)
# show the RAV1E_INCLUDE_DIR, RAV1E_LIBRARY and RAV1E_LIBRARIES variables only
# in the advanced view
mark_as_advanced(RAV1E_INCLUDE_DIR RAV1E_LIBRARY RAV1E_LIBRARIES)
if(RAV1E_LIBRARY)
if(NOT TARGET rav1e::rav1e)
if("${RAV1E_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$")
add_library(rav1e::rav1e STATIC IMPORTED GLOBAL)
else()
add_library(rav1e::rav1e SHARED IMPORTED GLOBAL)
endif()
set_target_properties(rav1e::rav1e PROPERTIES IMPORTED_LOCATION "${RAV1E_LIBRARY}" IMPORTED_SONAME rav1e)
target_include_directories(rav1e::rav1e INTERFACE ${RAV1E_INCLUDE_DIR})
# The following is copied from the main CMakeLists.txt.
if(WIN32)
target_link_libraries(rav1e::rav1e INTERFACE ntdll.lib userenv.lib ws2_32.lib bcrypt.lib)
elseif(UNIX AND NOT APPLE)
target_link_libraries(rav1e::rav1e INTERFACE ${CMAKE_DL_LIBS}) # for backtrace
endif()
endif()
endif()