rewritten findffmpeg.cmake
authorkoda
Wed, 06 Mar 2013 03:46:22 +0100
changeset 8662 bfcc09f2accc
parent 8661 ac8dba27a3f1
child 8663 25b35de44234
rewritten findffmpeg.cmake
cmake_modules/FindFFMPEG.cmake
hedgewars/CMakeLists.txt
share/CMakeLists.txt
--- a/cmake_modules/FindFFMPEG.cmake	Wed Mar 06 03:11:15 2013 +0100
+++ b/cmake_modules/FindFFMPEG.cmake	Wed Mar 06 03:46:22 2013 +0100
@@ -1,96 +1,83 @@
-# - Try to find ffmpeg libraries (libavcodec, libavformat and libavutil)
+# Find ffmpeg/libav libraries (libavcodec, libavformat and libavutil)
 # Once done this will define
 #
-#  FFMPEG_FOUND - system has ffmpeg or libav
-#  FFMPEG_INCLUDE_DIR - the ffmpeg include directory
-#  FFMPEG_LIBRARIES - Link these to use ffmpeg
-#  FFMPEG_LIBAVCODEC
-#  FFMPEG_LIBAVFORMAT
-#  FFMPEG_LIBAVUTIL
+#  FFMPEG_FOUND             - system has libavcodec, libavformat, libavutil
+#  FFMPEG_INCLUDE_DIR       - the libav include directories
+#  FFMPEG_LIBRARIES         - the libav libraries
+#
+#  LIBAVCODEC_LIBRARY      - the libavcodec library
+#  LIBAVCODEC_INCLUDE_DIR  - the libavcodec include directory
+#  LIBAVFORMAT_LIBRARY     - the libavformat library
+#  LIBAVUTIL_LIBRARY       - the libavutil library
 #
 #  Copyright (c) 2008 Andreas Schneider <mail@cynapses.org>
 #  Modified for other libraries by Lasse Kärkkäinen <tronic>
 #  Modified for Hedgewars by Stepik777
+#  Copyright (c) 2013 Vittorio Giovara <vittorio.giovara@gmail.com>
 #
 #  Redistribution and use is allowed according to the terms of the New
 #  BSD license.
 #
 
-set(FFMPEG_FOUND FALSE)
+include(FindPackageHandleStandardArgs)
+
 
-if (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR)
-  # in cache already
-  set(FFMPEG_FOUND TRUE)
-else (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR)
-  # silence output option
-  if (FFMPEG_FIND_QUIETLY)
-    set(VERBOSITY "QUIET")
-  endif ()
-  # use pkg-config to get the directories and then use these values
-  # in the FIND_PATH() and FIND_LIBRARY() calls
-  find_package(PkgConfig)
-  if (PKG_CONFIG_FOUND)
+# use pkg-config to get the directories and then use these values
+# in the FIND_PATH() and FIND_LIBRARY() calls
+find_package(PkgConfig)
+if (PKG_CONFIG_FOUND)
     pkg_check_modules(_FFMPEG_AVCODEC libavcodec ${VERBOSITY})
     pkg_check_modules(_FFMPEG_AVFORMAT libavformat ${VERBOSITY})
     pkg_check_modules(_FFMPEG_AVUTIL libavutil ${VERBOSITY})
-  endif (PKG_CONFIG_FOUND)
+endif (PKG_CONFIG_FOUND)
 
-  find_path(FFMPEG_AVCODEC_INCLUDE_DIR
+find_path(LIBAVCODEC_INCLUDE_DIR
     NAMES libavcodec/avcodec.h
-    PATHS ${_FFMPEG_AVCODEC_INCLUDE_DIRS}
+    PATHS ${_AVCODEC_INCLUDE_DIRS}
         /usr/include /usr/local/include #system level
         /opt/local/include #macports
         /sw/include #fink
-    PATH_SUFFIXES ffmpeg libav
-  )
+    PATH_SUFFIXES libav ffmpeg
+)
 
-  find_library(FFMPEG_LIBAVCODEC
+#TODO: add other include paths
+
+find_library(LIBAVCODEC_LIBRARY
     NAMES avcodec
-    PATHS ${_FFMPEG_AVCODEC_LIBRARY_DIRS}
+    PATHS ${_AVCODEC_LIBRARY_DIRS}
         /usr/lib /usr/local/lib #system level
         /opt/local/lib #macports
         /sw/lib #fink
-  )
+)
 
-  find_library(FFMPEG_LIBAVFORMAT
+find_library(LIBAVFORMAT_LIBRARY
     NAMES avformat
-    PATHS ${_FFMPEG_AVFORMAT_LIBRARY_DIRS}
+    PATHS ${_AVFORMAT_LIBRARY_DIRS}
         /usr/lib /usr/local/lib #system level
         /opt/local/lib #macports
         /sw/lib #fink
-  )
+)
 
-  find_library(FFMPEG_LIBAVUTIL
+find_library(LIBAVUTIL_LIBRARY
     NAMES avutil
-    PATHS ${_FFMPEG_AVUTIL_LIBRARY_DIRS}
+    PATHS ${_AVUTIL_LIBRARY_DIRS}
         /usr/lib /usr/local/lib #system level
         /opt/local/lib #macports
         /sw/lib #fink
-  )
-
-  if (FFMPEG_LIBAVCODEC AND FFMPEG_LIBAVFORMAT)
-    set(FFMPEG_FOUND TRUE)
-  endif()
-
-  if (FFMPEG_FOUND)
-    set(FFMPEG_INCLUDE_DIR ${FFMPEG_AVCODEC_INCLUDE_DIR})
+)
 
-    set(FFMPEG_LIBRARIES
-      ${FFMPEG_LIBAVCODEC}
-      ${FFMPEG_LIBAVFORMAT}
-      ${FFMPEG_LIBAVUTIL}
-    )
-  endif (FFMPEG_FOUND)
+find_package_handle_standard_args(FFMPEG DEFAULT_MSG LIBAVCODEC_LIBRARY LIBAVCODEC_INCLUDE_DIR
+                                                     LIBAVFORMAT_LIBRARY
+                                                     LIBAVUTIL_LIBRARY
+                                                     )
+set(FFMPEG_INCLUDE_DIR ${LIBAVCODEC_INCLUDE_DIR}
+                       #TODO: add other include paths
+                       )
+set(FFMPEG_LIBRARIES ${LIBAVCODEC_LIBRARY}
+                     ${LIBAVFORMAT_LIBRARY}
+                     ${LIBAVUTIL_LIBRARY}
+                     )
 
-  if (FFMPEG_FOUND)
-    if (NOT FFMPEG_FIND_QUIETLY)
-      message(STATUS "Found FFMPEG/LibAV: ${FFMPEG_LIBRARIES}, ${FFMPEG_INCLUDE_DIR}")
-    endif (NOT FFMPEG_FIND_QUIETLY)
-  else (FFMPEG_FOUND)
-    if (FFMPEG_FIND_REQUIRED)
-      message(FATAL_ERROR "Could NOT find libavcodec or libavformat or libavutil")
-    endif (FFMPEG_FIND_REQUIRED)
-  endif (FFMPEG_FOUND)
+mark_as_advanced(FFMPEG_INCLUDE_DIR FFMPEG_LIBRARIES LIBAVCODEC_LIBRARY LIBAVCODEC_INCLUDE_DIR LIBAVFORMAT_LIBRARY LIBAVUTIL_LIBRARY)
 
-endif (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIR)
 
--- a/hedgewars/CMakeLists.txt	Wed Mar 06 03:11:15 2013 +0100
+++ b/hedgewars/CMakeLists.txt	Wed Mar 06 03:46:22 2013 +0100
@@ -192,7 +192,6 @@
 
 
 if(NOT NOVIDEOREC)
-    set(FFMPEG_FIND_QUIETLY true)
     find_package(FFMPEG)
     if(${FFMPEG_FOUND})
         # TODO: this check is only for SDL < 2
--- a/share/CMakeLists.txt	Wed Mar 06 03:11:15 2013 +0100
+++ b/share/CMakeLists.txt	Wed Mar 06 03:46:22 2013 +0100
@@ -9,7 +9,6 @@
 
     #silly libav that always brings in VideoDecoderAcceleration, avaible only from 10.6.3
     if(NOT NOVIDEOREC)
-        set(FFMPEG_FIND_QUIETLY true)
         find_package(FFMPEG)
         if(${FFMPEG_FOUND} AND ${minimum_macosx_version} VERSION_EQUAL "10.6")
             set(minimum_macosx_version "10.6.3")