From 63369ce48d3c599a4281e9ce6e001c5143776edc Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Fri, 14 May 2021 10:14:14 +0200 Subject: [PATCH] Made the FFmpeg CMake find module work properly on NetBSD. --- CMake/Packages/FindFFmpeg.cmake | 75 ++++++++++++--------------------- 1 file changed, 28 insertions(+), 47 deletions(-) diff --git a/CMake/Packages/FindFFmpeg.cmake b/CMake/Packages/FindFFmpeg.cmake index 01bbf84ca..8595e7b92 100644 --- a/CMake/Packages/FindFFmpeg.cmake +++ b/CMake/Packages/FindFFmpeg.cmake @@ -7,9 +7,9 @@ # $FFMPEG_DIR is an environment variable that would # correspond to the ./configure --prefix=$FFMPEG_DIR # -# Created by Robert Osfield. -# Modified by Lukas Lalinsky. -# Modified by Leon Styhre. +# Created by Robert Osfield +# Modified by Lukas Lalinsky +# Modified by Leon Styhre # In ffmpeg code, old version use "#include " and newer use "#include " # In OSG ffmpeg plugin, we use "#include " for compatibility with old version of ffmpeg @@ -25,58 +25,43 @@ # Macro to find header and lib directories # example: FFMPEG_FIND(AVFORMAT avformat avformat.h) -MACRO(FFMPEG_FIND varname shortname headername) +macro(FFMPEG_FIND varname shortname headername) - FIND_PATH(FFMPEG_${varname}_INCLUDE_DIRS lib${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/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 - DOC "Location of FFMPEG Headers" - ) - FIND_PATH(FFMPEG_${varname}_INCLUDE_DIRS lib${shortname}/${headername} - PATH_SUFFIXES ffmpeg + 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) + 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) +endmacro(FFMPEG_FIND) -SET(FFMPEG_ROOT "$ENV{FFMPEG_DIR}" CACHE PATH "Location of FFMPEG") - -# find stdint.h -FIND_PATH(FFMPEG_STDINT_INCLUDE_DIR stdint.h - PATHS - ${FFMPEG_ROOT}/include - $ENV{FFMPEG_DIR}/include - ~/Library/Frameworks - /Library/Frameworks - /usr/local/include - /usr/include - /sw/include # Fink - /opt/local/include # DarwinPorts - /opt/csw/include # Blastwave - /opt/include - /usr/freeware/include - PATH_SUFFIXES ffmpeg - DOC "Location of FFMPEG stdint.h Header" -) +set(FFMPEG_ROOT "$ENV{FFMPEG_DIR}" CACHE PATH "Location of FFMPEG") FFMPEG_FIND(LIBAVFORMAT avformat avformat.h) FFMPEG_FIND(LIBAVCODEC avcodec avcodec.h) @@ -85,23 +70,19 @@ FFMPEG_FIND(LIBAVUTIL avutil avutil.h) FFMPEG_FIND(LIBSWRESAMPLE swresample swresample.h) FFMPEG_FIND(LIBSWSCALE swscale swscale.h) # Not sure about the header to look for here. -SET(FFMPEG_FOUND "NO") +set(FFMPEG_FOUND "NO") -IF (FFMPEG_LIBAVFORMAT_FOUND AND FFMPEG_LIBAVCODEC_FOUND AND FFMPEG_LIBAVUTIL_FOUND AND - FFMPEG_LIBSWRESAMPLE_FOUND AND FFMPEG_LIBSWSCALE_FOUND AND FFMPEG_STDINT_INCLUDE_DIR) +if(FFMPEG_LIBAVFORMAT_FOUND AND FFMPEG_LIBAVCODEC_FOUND AND FFMPEG_LIBAVUTIL_FOUND AND + FFMPEG_LIBSWRESAMPLE_FOUND AND FFMPEG_LIBSWSCALE_FOUND) - SET(FFMPEG_FOUND "YES") - SET(FFMPEG_INCLUDE_DIRS ${FFMPEG_LIBAVFORMAT_INCLUDE_DIRS}) - SET(FFMPEG_LIBRARY_DIRS ${FFMPEG_LIBAVFORMAT_LIBRARY_DIRS}) + set(FFMPEG_FOUND "YES") + set(FFMPEG_INCLUDE_DIRS ${FFMPEG_LIBAVFORMAT_INCLUDE_DIRS}) + set(FFMPEG_LIBRARY_DIRS ${FFMPEG_LIBAVFORMAT_LIBRARY_DIRS}) - SET(FFMPEG_LIBRARIES + set(FFMPEG_LIBRARIES ${FFMPEG_LIBAVFORMAT_LINK_LIBRARIES} ${FFMPEG_LIBAVCODEC_LINK_LIBRARIES} ${FFMPEG_LIBAVUTIL_LINK_LIBRARIES} ${FFMPEG_LIBSWRESAMPLE_LINK_LIBRARIES} ${FFMPEG_LIBSWSCALE_LINK_LIBRARIES}) -ELSE () - -# MESSAGE(STATUS "Could not find FFMPEG") - -ENDIF() +endif()