1# Module for locating SVT-HEVC Library
2#
3#    SVT_HEVC_INCLUDE_DIR
4#        Points to the SVT-HEVC include directory.
5#
6#    SVT_HEVC_LIBRARY
7#        Points to the SVT-HEVC library
8# Copyright (c) 2013-2018 MulticoreWare, Inc
9
10include(FindPackageHandleStandardArgs)
11
12if(UNIX)
13SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so")
14else()
15SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib")
16endif()
17
18set(SVT_VERSION_MAJOR_REQUIRED       1)
19set(SVT_VERSION_MINOR_REQUIRED       4)
20set(SVT_VERSION_PATCHLEVEL_REQUIRED  1)
21
22find_path(SVT_HEVC_INCLUDE_DIR
23    NAMES EbApiVersion.h EbErrorCodes.h
24    HINTS $ENV{SVT_HEVC_INCLUDE_DIR}
25    PATHS ENV
26    DOC "SVT-HEVC include directory")
27
28if(SVT_HEVC_INCLUDE_DIR)
29    if(EXISTS "${SVT_HEVC_INCLUDE_DIR}/EbApiVersion.h")
30        file(READ "${SVT_HEVC_INCLUDE_DIR}/EbApiVersion.h" version)
31
32        string(REGEX MATCH "SVT_VERSION_MAJOR       \\(([0-9]*)\\)" _ ${version})
33        set(SVT_VERSION_MAJOR ${CMAKE_MATCH_1})
34
35        string(REGEX MATCH "SVT_VERSION_MINOR       \\(([0-9]*)\\)" _ ${version})
36        set(SVT_VERSION_MINOR ${CMAKE_MATCH_1})
37
38        string(REGEX MATCH "SVT_VERSION_PATCHLEVEL  \\(([0-9]*)\\)" _ ${version})
39        set(SVT_VERSION_PATCHLEVEL ${CMAKE_MATCH_1})
40
41        if(NOT ${SVT_VERSION_MAJOR} EQUAL "1" OR NOT ${SVT_VERSION_MINOR} EQUAL "4" OR NOT ${SVT_VERSION_PATCHLEVEL} EQUAL "1")
42            message (SEND_ERROR "-- Found SVT-HEVC Lib Version: ${SVT_VERSION_MAJOR}.${SVT_VERSION_MINOR}.${SVT_VERSION_PATCHLEVEL} which doesn't match the required version: ${SVT_VERSION_MAJOR_REQUIRED}.${SVT_VERSION_MINOR_REQUIRED}.${SVT_VERSION_PATCHLEVEL_REQUIRED}; Aborting configure  ")
43        else()
44            message(STATUS "-- Found SVT-HEVC Lib Version: ${SVT_VERSION_MAJOR}.${SVT_VERSION_MINOR}.${SVT_VERSION_PATCHLEVEL}")
45        endif()
46    else()
47        message (SEND_ERROR "-- Required version of SVT-HEVC Lib: ${SVT_VERSION_MAJOR_REQUIRED}.${SVT_VERSION_MINOR_REQUIRED}.${SVT_VERSION_PATCHLEVEL_REQUIRED}; Aborting configure  ")
48    endif()
49endif()
50
51find_library(SVT_HEVC_LIBRARY
52if(UNIX)
53    NAMES SvtHevcEnc
54else()
55    NAMES SvtHevcEnc
56endif()
57    HINTS $ENV{SVT_HEVC_LIBRARY_DIR}
58    PATHS ENV
59    DOC "SVT-HEVC library")
60
61
62mark_as_advanced(SVT_HEVC_LIBRARY SVT_HEVC_INCLUDE_DIR SVT_HEVC_LIBRARY_DIR)
63find_package_handle_standard_args(SVTHEVC REQUIRED_VARS SVT_HEVC_LIBRARY SVT_HEVC_INCLUDE_DIR)
64