diff options
Diffstat (limited to 'cmake/modules/FindDav1d.cmake')
| -rw-r--r-- | cmake/modules/FindDav1d.cmake | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/cmake/modules/FindDav1d.cmake b/cmake/modules/FindDav1d.cmake new file mode 100644 index 0000000..7625afa --- /dev/null +++ b/cmake/modules/FindDav1d.cmake | |||
| @@ -0,0 +1,82 @@ | |||
| 1 | #.rst: | ||
| 2 | # FindDav1d | ||
| 3 | # -------- | ||
| 4 | # Finds the dav1d library | ||
| 5 | # | ||
| 6 | # This will define the following variables:: | ||
| 7 | # | ||
| 8 | # DAV1D_FOUND - system has dav1d | ||
| 9 | # DAV1D_INCLUDE_DIRS - the dav1d include directories | ||
| 10 | # DAV1D_LIBRARIES - the dav1d libraries | ||
| 11 | |||
| 12 | if(PKG_CONFIG_FOUND) | ||
| 13 | pkg_check_modules(PC_DAV1D dav1d QUIET) | ||
| 14 | endif() | ||
| 15 | |||
| 16 | find_library(DAV1D_LIBRARY NAMES dav1d libdav1d | ||
| 17 | PATHS ${PC_DAV1D_LIBDIR}) | ||
| 18 | |||
| 19 | find_path(DAV1D_INCLUDE_DIR NAMES dav1d/dav1d.h | ||
| 20 | PATHS ${PC_DAV1D_INCLUDEDIR}) | ||
| 21 | |||
| 22 | set(DAV1D_VERSION ${PC_DAV1D_VERSION}) | ||
| 23 | |||
| 24 | if(ENABLE_INTERNAL_DAV1D) | ||
| 25 | include(ExternalProject) | ||
| 26 | |||
| 27 | # Extract version | ||
| 28 | file(STRINGS ${CMAKE_SOURCE_DIR}/tools/depends/target/dav1d/DAV1D-VERSION VER) | ||
| 29 | |||
| 30 | string(REGEX MATCH "VERSION=[^ ]*$.*" DAV1D_VER "${VER}") | ||
| 31 | list(GET DAV1D_VER 0 DAV1D_VER) | ||
| 32 | string(SUBSTRING "${DAV1D_VER}" 8 -1 DAV1D_VER) | ||
| 33 | |||
| 34 | # allow user to override the download URL with a local tarball | ||
| 35 | # needed for offline build envs | ||
| 36 | if(DAV1D_URL) | ||
| 37 | get_filename_component(DAV1D_URL "${DAV1D_URL}" ABSOLUTE) | ||
| 38 | else() | ||
| 39 | set(DAV1D_URL http://mirrors.kodi.tv/build-deps/sources/dav1d-${DAV1D_VER}.tar.gz) | ||
| 40 | endif() | ||
| 41 | |||
| 42 | if(VERBOSE) | ||
| 43 | message(STATUS "DAV1D_URL: ${DAV1D_URL}") | ||
| 44 | endif() | ||
| 45 | |||
| 46 | set(DAV1D_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/libdav1d.a) | ||
| 47 | set(DAV1D_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include) | ||
| 48 | set(DAV1D_VERSION ${DAV1D_VER}) | ||
| 49 | |||
| 50 | externalproject_add(dav1d | ||
| 51 | URL ${DAV1D_URL} | ||
| 52 | DOWNLOAD_NAME dav1d-${DAV1D_VER}.tar.gz | ||
| 53 | DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download | ||
| 54 | PREFIX ${CORE_BUILD_DIR}/dav1d | ||
| 55 | CONFIGURE_COMMAND meson | ||
| 56 | --buildtype=release | ||
| 57 | --default-library=static | ||
| 58 | --prefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} | ||
| 59 | --libdir=lib | ||
| 60 | -Denable_asm=true | ||
| 61 | -Denable_tools=false | ||
| 62 | -Denable_examples=false | ||
| 63 | -Denable_tests=false | ||
| 64 | ../dav1d | ||
| 65 | BUILD_COMMAND ninja | ||
| 66 | INSTALL_COMMAND ninja install | ||
| 67 | BUILD_BYPRODUCTS ${DAV1D_LIBRARY}) | ||
| 68 | |||
| 69 | set_target_properties(dav1d PROPERTIES FOLDER "External Projects") | ||
| 70 | endif() | ||
| 71 | |||
| 72 | include(FindPackageHandleStandardArgs) | ||
| 73 | find_package_handle_standard_args(Dav1d | ||
| 74 | REQUIRED_VARS DAV1D_LIBRARY DAV1D_INCLUDE_DIR | ||
| 75 | VERSION_VAR DAV1D_VERSION) | ||
| 76 | |||
| 77 | if(DAV1D_FOUND) | ||
| 78 | set(DAV1D_INCLUDE_DIRS ${DAV1D_INCLUDE_DIR}) | ||
| 79 | set(DAV1D_LIBRARIES ${DAV1D_LIBRARY}) | ||
| 80 | endif() | ||
| 81 | |||
| 82 | mark_as_advanced(DAV1D_INCLUDE_DIR DAV1D_LIBRARY) | ||
