Hi!

Please review the attached version of FindGStreamer.cmake. What changed:

* Support find_package(GStreamer "0.10.20") (including EXACT)
* Find GStreamer if pkg-config information is not available (added 
PATH_SUFFIXES to find_path)
* Do not print debug information, fphsa prints enough.
* Use lowercase.

Should we add GSTREAMER_INCLUDE_DIRS to follow cmake/Modules/readme.txt 
recommendations?
-- 
Yury G. Kudryashov,
mailto: [email protected]
# - Try to find GStreamer
# Once done this will define
#
#  GSTREAMER_FOUND - system has GStreamer
#  GSTREAMER_VERSION - version as reported by gst/gstversion.h
#  GSTREAMER_INCLUDE_DIR - the GStreamer include directory
#  GSTREAMER_LIBRARIES - the libraries needed to use GStreamer
#  GSTREAMER_DEFINITIONS - Compiler switches required for using GStreamer

# Copyright (c) 2006, Tim Beaulen <[email protected]>
# Copyright (c) 2011, Yury G. Kudryashov <[email protected]>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.

# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls

if( NOT GStreamer_FIND_VERSION )
   set(GStreamer_FIND_VERSION_MAJOR "0")
   set(GStreamer_FIND_VERSION_MINOR "10")
   set(GStreamer_FIND_VERSION_PATCH "0")
   set(GStreamer_FIND_VERSION "0.10.0")
endif()

find_package(PkgConfig)
if(GStreamer_FIND_VERSION_EXACT)
pkg_check_modules(PC_GSTREAMER QUIET "gstreamer-${GStreamer_FIND_VERSION_MAJOR}.${GStreamer_FIND_VERSION_MINOR}=${GStreamer_FIND_VERSION}")
else()
pkg_check_modules(PC_GSTREAMER QUIET "gstreamer-${GStreamer_FIND_VERSION_MAJOR}.${GStreamer_FIND_VERSION_MINOR}>=${GStreamer_FIND_VERSION}")
endif()
set(GSTREAMER_DEFINITIONS ${PC_GSTREAMER_CFLAGS_OTHER})

find_path(GSTREAMER_INCLUDE_DIR gst/gst.h
   HINTS
   ${PC_GSTREAMER_INCLUDEDIR}
   ${PC_GSTREAMER_INCLUDE_DIRS}
   PATH_SUFFIXES
   gstreamer-${GStreamer_FIND_VERSION_MAJOR}.${GStreamer_FIND_VERSION_MINOR}
   )

# TODO: Store found version number in cache or not?
if(GSTREAMER_INCLUDE_DIR)
   file(READ ${GSTREAMER_INCLUDE_DIR}/gst/gstversion.h GST_VERSION_CONTENT)
   string(REGEX MATCH "#define GST_VERSION_MAJOR *\\([0-9]*\\)\n" _GST_VERSION_MAJOR_MATCH ${GST_VERSION_CONTENT})
   string(REGEX MATCH "#define GST_VERSION_MINOR *\\([0-9]*\\)\n" _GST_VERSION_MINOR_MATCH ${GST_VERSION_CONTENT})
   string(REGEX MATCH "#define GST_VERSION_MICRO *\\([0-9]*\\)\n" _GST_VERSION_PATCH_MATCH ${GST_VERSION_CONTENT})

   string(REGEX REPLACE "#define GST_VERSION_MAJOR *\\(([0-9]*)\\)\n" "\\1" GSTREAMER_VERSION_MAJOR ${_GST_VERSION_MAJOR_MATCH})
   string(REGEX REPLACE "#define GST_VERSION_MINOR *\\(([0-9]*)\\)\n" "\\1" GSTREAMER_VERSION_MINOR ${_GST_VERSION_MINOR_MATCH})
   string(REGEX REPLACE "#define GST_VERSION_MICRO *\\(([0-9]*)\\)\n" "\\1" GSTREAMER_VERSION_PATCH ${_GST_VERSION_PATCH_MATCH})

   set(GSTREAMER_VERSION "${GSTREAMER_VERSION_MAJOR}.${GSTREAMER_VERSION_MINOR}.${GSTREAMER_VERSION_PATCH}")
endif()

find_library(GSTREAMER_LIBRARIES NAMES gstreamer-${GStreamer_FIND_VERSION_MAJOR}.${GStreamer_FIND_VERSION_MINOR}
   HINTS
   ${PC_GSTREAMER_LIBDIR}
   ${PC_GSTREAMER_LIBRARY_DIRS}
   )

find_library(GSTREAMER_BASE_LIBRARY NAMES gstbase-${GStreamer_FIND_VERSION_MAJOR}.${GStreamer_FIND_VERSION_MINOR}
   HINTS
   ${PC_GSTREAMER_LIBDIR}
   ${PC_GSTREAMER_LIBRARY_DIRS}
   )

find_library(GSTREAMER_INTERFACE_LIBRARY NAMES gstinterfaces-${GStreamer_FIND_VERSION_MAJOR}.${GStreamer_FIND_VERSION_MINOR}
   HINTS
   ${PC_GSTREAMER_LIBDIR}
   ${PC_GSTREAMER_LIBRARY_DIRS}
   )

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GStreamer
   REQUIRED_VARS GSTREAMER_LIBRARIES GSTREAMER_INCLUDE_DIR
   GSTREAMER_BASE_LIBRARY GSTREAMER_INTERFACE_LIBRARY
   VERSION_VAR GSTREAMER_VERSION)

mark_as_advanced(GSTREAMER_INCLUDE_DIR GSTREAMER_LIBRARIES GSTREAMER_BASE_LIBRARY GSTREAMER_INTERFACE_LIBRARY)

_______________________________________________
Kde-buildsystem mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kde-buildsystem

Reply via email to