# Locate FFmpeg
#
# This module defines:
# FFMPEG_FOUND
# FFMPEG_INCLUDE_DIRS
# FFMPEG_LIBRARIES
#
# Created by Robert Osfield
# Modified by Lukas Lalinsky
# Modified by Leon Styhre
#

# Macro to find headers and library directories.
# Example: FFMPEG_FIND(AVFORMAT avformat avformat.h)
macro(FFMPEG_FIND varname shortname headername)
    find_path(FFMPEG_${varname}_INCLUDE_DIRS lib${shortname}/${headername}
        PATHS
        ${FFMPEG_ROOT}/include
        $ENV{FFMPEG_DIR}/include
        ~/Library/Frameworks
        /Library/Frameworks
        /usr/local/include
        /usr/pkg/include # NetBSD
        /usr/include
        /sw/include # Fink
        /opt/local/include # DarwinPorts
        /opt/csw/include # Blastwave
        /opt/include
        /usr/freeware/include
        NO_DEFAULT_PATH
        PATH_SUFFIXES
        ffmpeg
        ffmpeg4 # NetBSD
        DOC "Location of FFMPEG Headers"
    )

    if(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
        set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/pkg/lib/ffmpeg4/pkgconfig")
    endif()

    pkg_check_modules(FFMPEG_${varname} lib${shortname} REQUIRED)

    if(FFMPEG_${varname}_LIBRARIES AND FFMPEG_${varname}_INCLUDE_DIRS)
        set(FFMPEG_${varname}_FOUND 1)
        message("--   " ${FFMPEG_${varname}_LINK_LIBRARIES})
    endif(FFMPEG_${varname}_LIBRARIES AND FFMPEG_${varname}_INCLUDE_DIRS)

endmacro(FFMPEG_FIND)

set(FFMPEG_ROOT "$ENV{FFMPEG_DIR}" CACHE PATH "Location of FFMPEG")

FFMPEG_FIND(LIBAVCODEC avcodec avcodec.h)
FFMPEG_FIND(LIBAVFILTER avfilter avfilter.h)
FFMPEG_FIND(LIBAVFORMAT avformat avformat.h)
FFMPEG_FIND(LIBAVUTIL avutil avutil.h)

set(FFMPEG_FOUND "NO")

if(FFMPEG_LIBAVCODEC_FOUND AND FFMPEG_LIBAVFILTER_FOUND AND
    FFMPEG_LIBAVFORMAT_FOUND AND FFMPEG_LIBAVUTIL_FOUND)

    set(FFMPEG_FOUND "YES")
    set(FFMPEG_INCLUDE_DIRS ${FFMPEG_LIBAVFORMAT_INCLUDE_DIRS})
    set(FFMPEG_LIBRARY_DIRS ${FFMPEG_LIBAVFORMAT_LIBRARY_DIRS})

    set(FFMPEG_LIBRARIES
        ${FFMPEG_LIBAVCODEC_LINK_LIBRARIES}
        ${FFMPEG_LIBAVFILTER_LINK_LIBRARIES}
        ${FFMPEG_LIBAVFORMAT_LINK_LIBRARIES}
        ${FFMPEG_LIBAVUTIL_LINK_LIBRARIES})
endif()