Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 56 additions & 1 deletion cmake/dependencies/aja.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,48 @@ SET(_mbedcrypto_lib
${_mbedtls_lib_dir}/${CMAKE_STATIC_LIBRARY_PREFIX}mbedcrypto${CMAKE_STATIC_LIBRARY_SUFFIX}
)

IF(RV_USE_BREW_DEPS)
FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(PC_mbedtls mbedtls mbedx509 mbedcrypto)
IF(PC_mbedtls_FOUND)
MESSAGE(STATUS "Using Homebrew mbedtls")
# Use direct paths from pkg-config
FIND_LIBRARY(
BREW_MBEDTLS_LIB
NAMES mbedtls
HINTS ${PC_mbedtls_LIBDIR}
)
FIND_LIBRARY(
BREW_MBEDX509_LIB
NAMES mbedx509
HINTS ${PC_mbedtls_LIBDIR}
)
FIND_LIBRARY(
BREW_MBEDCRYPTO_LIB
NAMES mbedcrypto
HINTS ${PC_mbedtls_LIBDIR}
)

IF(BREW_MBEDTLS_LIB
AND BREW_MBEDX509_LIB
AND BREW_MBEDCRYPTO_LIB
)
SET(_mbedtls_lib
"${BREW_MBEDTLS_LIB}"
)
SET(_mbedx509_lib
"${BREW_MBEDX509_LIB}"
)
SET(_mbedcrypto_lib
"${BREW_MBEDCRYPTO_LIB}"
)
SET(_use_brew_mbedtls
TRUE
)
ENDIF()
ENDIF()
ENDIF()

LIST(APPEND _byproducts ${_mbedtls_lib} ${_mbedx509_lib} ${_mbedcrypto_lib})

# There is an issue with the recent AJA SDK : the OS specific header files are no longer copied to _aja_ntv2_include_dir Adding custom paths here to work around
Expand Down Expand Up @@ -85,6 +127,19 @@ IF(RV_TARGET_WINDOWS
LIST(APPEND _configure_options "-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug")
ENDIF()

IF(_use_brew_mbedtls)
LIST(APPEND _configure_options "-DAJANTV2_DISABLE_MBEDTLS=ON")
# In AJA SDK, AJANTV2_DISABLE_PLUGIN_LOAD=ON also disables internal mbedtls
LIST(APPEND _configure_options "-DAJANTV2_DISABLE_PLUGIN_LOAD=ON")
SET(_aja_install_command
${_cmake_install_command}
)
ELSE()
SET(_aja_install_command
${_cmake_install_command} && ${CMAKE_COMMAND} -E copy_directory ${_mbedtls_lib_dir} ${_lib_dir}
)
ENDIF()

EXTERNALPROJECT_ADD(
${_target}
URL ${_download_url}
Expand All @@ -97,7 +152,7 @@ EXTERNALPROJECT_ADD(
INSTALL_DIR ${_install_dir}
CONFIGURE_COMMAND ${CMAKE_COMMAND} ${_configure_options}
BUILD_COMMAND ${_cmake_build_command}
INSTALL_COMMAND ${_cmake_install_command} && ${CMAKE_COMMAND} -E copy_directory ${_mbedtls_lib_dir} ${_lib_dir}
INSTALL_COMMAND ${_aja_install_command}
BUILD_IN_SOURCE FALSE
BUILD_ALWAYS FALSE
BUILD_BYPRODUCTS ${_byproducts}
Expand Down
54 changes: 29 additions & 25 deletions cmake/dependencies/boost.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -207,37 +207,41 @@ FOREACH(
_boost_lib
${_boost_libs}
)
ADD_LIBRARY(Boost::${_boost_lib} SHARED IMPORTED GLOBAL)
ADD_DEPENDENCIES(Boost::${_boost_lib} ${_target})
SET_PROPERTY(
TARGET Boost::${_boost_lib}
PROPERTY IMPORTED_LOCATION ${_boost_${_boost_lib}_lib}
)
SET_PROPERTY(
TARGET Boost::${_boost_lib}
PROPERTY IMPORTED_SONAME ${_boost_${_boost_lib}_lib_name}
)

IF(RV_TARGET_WINDOWS)
IF(NOT TARGET Boost::${_boost_lib})
ADD_LIBRARY(Boost::${_boost_lib} SHARED IMPORTED GLOBAL)
ADD_DEPENDENCIES(Boost::${_boost_lib} ${_target})
SET_PROPERTY(
TARGET Boost::${_boost_lib}
PROPERTY IMPORTED_IMPLIB ${_boost_${_boost_lib}_implib}
PROPERTY IMPORTED_LOCATION ${_boost_${_boost_lib}_lib}
)
SET_PROPERTY(
TARGET Boost::${_boost_lib}
PROPERTY IMPORTED_SONAME ${_boost_${_boost_lib}_lib_name}
)

IF(RV_TARGET_WINDOWS)
SET_PROPERTY(
TARGET Boost::${_boost_lib}
PROPERTY IMPORTED_IMPLIB ${_boost_${_boost_lib}_implib}
)
ENDIF()
TARGET_INCLUDE_DIRECTORIES(
Boost::${_boost_lib}
INTERFACE ${_include_dir}
)
ENDIF()
TARGET_INCLUDE_DIRECTORIES(
Boost::${_boost_lib}
INTERFACE ${_include_dir}
)

LIST(APPEND RV_DEPS_LIST Boost::${_boost_lib})
LIST(APPEND _boost_stage_output ${RV_STAGE_LIB_DIR}/${_boost_${_boost_lib}_lib_name})
LIST(APPEND RV_DEPS_LIST Boost::${_boost_lib})
LIST(APPEND _boost_stage_output ${RV_STAGE_LIB_DIR}/${_boost_${_boost_lib}_lib_name})
ENDIF()
ENDFOREACH()

ADD_LIBRARY(Boost::headers INTERFACE IMPORTED GLOBAL)
SET_TARGET_PROPERTIES(
Boost::headers
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${_include_dir}"
)
IF(NOT TARGET Boost::headers)
ADD_LIBRARY(Boost::headers INTERFACE IMPORTED GLOBAL)
SET_TARGET_PROPERTIES(
Boost::headers
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${_include_dir}"
)
ENDIF()

# Note: On Windows, Boost's b2 puts both .lib and .dll in lib/, so we copy _lib_dir to both RV_STAGE_LIB_DIR and RV_STAGE_BIN_DIR.
IF(RV_TARGET_WINDOWS)
Expand Down
56 changes: 56 additions & 0 deletions cmake/dependencies/dav1d.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,62 @@
# SPDX-License-Identifier: Apache-2.0
#

IF(RV_USE_BREW_DEPS)
FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(PC_dav1d dav1d)
IF(PC_dav1d_FOUND)
MESSAGE(STATUS "Using Homebrew dav1d: ${PC_dav1d_VERSION}")

IF(NOT TARGET dav1d::dav1d)
ADD_LIBRARY(dav1d::dav1d UNKNOWN IMPORTED GLOBAL)
FIND_LIBRARY(
dav1d_LIBRARY
NAMES dav1d
HINTS ${PC_dav1d_LIBDIR}
)
SET_PROPERTY(
TARGET dav1d::dav1d
PROPERTY IMPORTED_LOCATION "${dav1d_LIBRARY}"
)
TARGET_INCLUDE_DIRECTORIES(
dav1d::dav1d
INTERFACE "${PC_dav1d_INCLUDE_DIRS}"
)
ENDIF()

LIST(APPEND RV_DEPS_LIST dav1d::dav1d)
GET_TARGET_PROPERTY(_dav1d_loc dav1d::dav1d LOCATION)
GET_FILENAME_COMPONENT(_dav1d_lib_dir "${_dav1d_loc}" DIRECTORY)
SET(RV_DEPS_DAVID_LIB_DIR
"${_dav1d_lib_dir}"
CACHE INTERNAL ""
)

# FFmpeg customization adding dav1d codec support to FFmpeg
SET_PROPERTY(
GLOBAL APPEND
PROPERTY "RV_FFMPEG_EXTRA_C_OPTIONS" "--extra-cflags=-I${PC_dav1d_INCLUDE_DIRS}"
)
IF(RV_TARGET_WINDOWS)
SET_PROPERTY(
GLOBAL APPEND
PROPERTY "RV_FFMPEG_EXTRA_LIBPATH_OPTIONS" "--extra-ldflags=-LIBPATH:${_dav1d_lib_dir}"
)
ELSE()
SET_PROPERTY(
GLOBAL APPEND
PROPERTY "RV_FFMPEG_EXTRA_LIBPATH_OPTIONS" "--extra-ldflags=-L${_dav1d_lib_dir}"
)
ENDIF()
SET_PROPERTY(
GLOBAL APPEND
PROPERTY "RV_FFMPEG_EXTERNAL_LIBS" "--enable-libdav1d"
)

RETURN()
ENDIF()
ENDIF()

RV_CREATE_STANDARD_DEPS_VARIABLES("RV_DEPS_DAV1D" "${RV_DEPS_DAV1D_VERSION}" "ninja" "meson")
RV_SHOW_STANDARD_DEPS_VARIABLES()

Expand Down
27 changes: 27 additions & 0 deletions cmake/dependencies/expat.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,33 @@
RV_CREATE_STANDARD_DEPS_VARIABLES("RV_DEPS_EXPAT" "${RV_DEPS_EXPAT_VERSION}" "" "")
RV_SHOW_STANDARD_DEPS_VARIABLES()

IF(RV_USE_BREW_DEPS)
FIND_PACKAGE(EXPAT)
IF(EXPAT_FOUND)
MESSAGE(STATUS "Using Homebrew EXPAT: ${EXPAT_VERSION_STRING}")
IF(NOT TARGET EXPAT::EXPAT)
ADD_LIBRARY(EXPAT::EXPAT UNKNOWN IMPORTED GLOBAL)
SET_PROPERTY(
TARGET EXPAT::EXPAT
PROPERTY IMPORTED_LOCATION "${EXPAT_LIBRARY}"
)
TARGET_INCLUDE_DIRECTORIES(
EXPAT::EXPAT
INTERFACE "${EXPAT_INCLUDE_DIRS}"
)
ENDIF()
LIST(APPEND RV_DEPS_LIST EXPAT::EXPAT)
# Some other deps might need EXPAT root dir
GET_FILENAME_COMPONENT(_expat_include_dir "${EXPAT_INCLUDE_DIRS}" ABSOLUTE)
GET_FILENAME_COMPONENT(_expat_root_dir "${_expat_include_dir}/.." ABSOLUTE)
SET(RV_DEPS_EXPAT_ROOT_DIR
"${_expat_root_dir}"
CACHE INTERNAL "" FORCE
)
RETURN()
ENDIF()
ENDIF()

STRING(REPLACE "." "_" _version_underscored ${_version})
SET(_download_url
"https://github.com/libexpat/libexpat/archive/refs/tags/R_${_version_underscored}.tar.gz"
Expand Down
60 changes: 60 additions & 0 deletions cmake/dependencies/ffmpeg.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,66 @@
# cmake-format: on
# ------------------------------------------------------------------------------

IF(RV_USE_BREW_DEPS)
FIND_PACKAGE(PkgConfig)
SET(_ffmpeg_found_all
TRUE
)
FOREACH(
_comp
avutil swresample swscale avcodec avformat
)
PKG_CHECK_MODULES(PC_${_comp} lib${_comp})
IF(PC_${_comp}_FOUND)
IF(NOT TARGET ffmpeg::${_comp})
ADD_LIBRARY(ffmpeg::${_comp} UNKNOWN IMPORTED GLOBAL)
FIND_LIBRARY(
LIB_${_comp}
NAMES ${_comp}
HINTS ${PC_${_comp}_LIBDIR}
)
SET_PROPERTY(
TARGET ffmpeg::${_comp}
PROPERTY IMPORTED_LOCATION "${LIB_${_comp}}"
)
TARGET_INCLUDE_DIRECTORIES(
ffmpeg::${_comp}
INTERFACE "${PC_${_comp}_INCLUDE_DIRS}"
)
LIST(APPEND RV_DEPS_LIST ffmpeg::${_comp})

# Need to link dependencies
IF("${_comp}" STREQUAL "swresample"
OR "${_comp}" STREQUAL "swscale"
)
TARGET_LINK_LIBRARIES(
ffmpeg::${_comp}
INTERFACE ffmpeg::avutil
)
ELSEIF("${_comp}" STREQUAL "avcodec")
TARGET_LINK_LIBRARIES(
ffmpeg::${_comp}
INTERFACE ffmpeg::swresample
)
ELSEIF("${_comp}" STREQUAL "avformat")
TARGET_LINK_LIBRARIES(
ffmpeg::${_comp}
INTERFACE ffmpeg::avcodec
)
ENDIF()
ENDIF()
ELSE()
MESSAGE(WARNING "Homebrew FFmpeg component lib${_comp} not found")
SET(_ffmpeg_found_all
FALSE
)
ENDIF()
ENDFOREACH()

IF(_ffmpeg_found_all)
RETURN()
ENDIF()
ENDIF()
SET(_target
"RV_DEPS_FFMPEG"
)
Expand Down
26 changes: 26 additions & 0 deletions cmake/dependencies/gc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,32 @@

RV_CREATE_STANDARD_DEPS_VARIABLES("RV_DEPS_GC" "${RV_DEPS_GC_VERSION}" "" "")

IF(RV_USE_BREW_DEPS)
FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(PC_GC bdw-gc)
IF(PC_GC_FOUND)
MESSAGE(STATUS "Using Homebrew GC")
IF(NOT TARGET BDWGC::Gc)
ADD_LIBRARY(BDWGC::Gc UNKNOWN IMPORTED GLOBAL)
FIND_LIBRARY(
GC_LIBRARY
NAMES gc
HINTS ${PC_GC_LIBDIR}
)
SET_PROPERTY(
TARGET BDWGC::Gc
PROPERTY IMPORTED_LOCATION "${GC_LIBRARY}"
)
TARGET_INCLUDE_DIRECTORIES(
BDWGC::Gc
INTERFACE "${PC_GC_INCLUDE_DIRS}"
)
ENDIF()
LIST(APPEND RV_DEPS_LIST BDWGC::Gc)
RETURN()
ENDIF()
ENDIF()

SET(_download_url
"https://github.com/ivmai/bdwgc/archive/refs/tags/v${_version}.zip"
)
Expand Down
27 changes: 27 additions & 0 deletions cmake/dependencies/glew.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,33 @@

RV_CREATE_STANDARD_DEPS_VARIABLES("RV_DEPS_GLEW" "${RV_DEPS_GLEW_VERSION}" "make" "")

IF(RV_USE_BREW_DEPS)
FIND_PACKAGE(GLEW)
IF(GLEW_FOUND)
MESSAGE(STATUS "Using Homebrew GLEW: ${GLEW_VERSION}")
IF(NOT TARGET GLEW::GLEW)
ADD_LIBRARY(GLEW::GLEW UNKNOWN IMPORTED GLOBAL)
IF(GLEW_SHARED_LIBRARY)
SET_PROPERTY(
TARGET GLEW::GLEW
PROPERTY IMPORTED_LOCATION "${GLEW_SHARED_LIBRARY}"
)
ELSE()
SET_PROPERTY(
TARGET GLEW::GLEW
PROPERTY IMPORTED_LOCATION "${GLEW_LIBRARIES}"
)
ENDIF()
TARGET_INCLUDE_DIRECTORIES(
GLEW::GLEW
INTERFACE "${GLEW_INCLUDE_DIRS}"
)
ENDIF()
LIST(APPEND RV_DEPS_LIST GLEW::GLEW)
RETURN()
ENDIF()
ENDIF()

SET(_download_url
"https://github.com/nigels-com/glew/archive/refs/tags/glew-${_version}.tar.gz"
)
Expand Down
Loading
Loading