mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-06 07:50:00 +01:00
Successful cpack with fixup bundle on arm64 M2. Signing of the .app and all binary dependencies within the cmake install process. Fixed minor issues with OSX compilation.
134 lines
4.8 KiB
CMake
134 lines
4.8 KiB
CMake
# - Try to find GStreamer
|
|
# Once done this will define
|
|
#
|
|
# GSTREAMER_FOUND - system has GStreamer
|
|
# GSTREAMER_INCLUDE_DIR - the GStreamer include directory
|
|
# GSTREAMER_LIBRARY - the main GStreamer library
|
|
# GSTREAMER_PLUGIN_DIR - the GStreamer plugin directory
|
|
#
|
|
# And for all the plugin libraries specified in the COMPONENTS
|
|
# of find_package, this module will define:
|
|
#
|
|
# GSTREAMER_<plugin_lib>_LIBRARY_FOUND - system has <plugin_lib>
|
|
# GSTREAMER_<plugin_lib>_LIBRARY - the <plugin_lib> library
|
|
# GSTREAMER_<plugin_lib>_INCLUDE_DIR - the <plugin_lib> include directory
|
|
#
|
|
# Copyright (c) 2010, Collabora Ltd.
|
|
# @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
|
|
#
|
|
# Redistribution and use is allowed according to the terms of the BSD license.
|
|
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
|
|
|
if (GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARY)
|
|
set(GStreamer_FIND_QUIETLY TRUE)
|
|
else()
|
|
set(GStreamer_FIND_QUIETLY FALSE)
|
|
endif()
|
|
|
|
set(GSTREAMER_ABI_VERSION "1.0")
|
|
|
|
|
|
# Find the main library
|
|
find_package(PkgConfig)
|
|
|
|
if (PKG_CONFIG_FOUND)
|
|
pkg_check_modules(PKG_GSTREAMER gstreamer-${GSTREAMER_ABI_VERSION})
|
|
execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE}
|
|
--variable pluginsdir gstreamer-${GSTREAMER_ABI_VERSION}
|
|
OUTPUT_VARIABLE PKG_GSTREAMER_PLUGIN_DIR_TMP)
|
|
string(STRIP ${PKG_GSTREAMER_PLUGIN_DIR_TMP} PKG_GSTREAMER_PLUGIN_DIR)
|
|
endif()
|
|
|
|
find_library(GSTREAMER_LIBRARY
|
|
NAMES gstreamer-${GSTREAMER_ABI_VERSION}
|
|
HINTS ${PKG_GSTREAMER_LIBRARY_DIRS} ${PKG_GSTREAMER_LIBDIR})
|
|
|
|
find_path(GSTREAMER_INCLUDE_DIR
|
|
gst/gst.h
|
|
HINTS ${PKG_GSTREAMER_INCLUDE_DIRS} ${PKG_GSTREAMER_INCLUDEDIR}
|
|
PATH_SUFFIXES gstreamer-${GSTREAMER_ABI_VERSION})
|
|
|
|
if (PKG_GSTREAMER_PLUGIN_DIR)
|
|
set(_GSTREAMER_PLUGIN_DIR ${PKG_GSTREAMER_PLUGIN_DIR})
|
|
else()
|
|
get_filename_component(_GSTREAMER_LIB_DIR ${GSTREAMER_LIBRARY} PATH)
|
|
set(_GSTREAMER_PLUGIN_DIR ${_GSTREAMER_LIB_DIR}/gstreamer-${GSTREAMER_ABI_VERSION})
|
|
endif()
|
|
|
|
set(GSTREAMER_PLUGIN_DIR ${_GSTREAMER_PLUGIN_DIR}
|
|
CACHE PATH "The path to the gstreamer plugins installation directory")
|
|
|
|
mark_as_advanced(GSTREAMER_LIBRARY GSTREAMER_INCLUDE_DIR GSTREAMER_PLUGIN_DIR)
|
|
|
|
|
|
# Find additional libraries
|
|
include(MacroFindGStreamerLibrary)
|
|
|
|
macro(_find_gst_component _name _header)
|
|
find_gstreamer_library(${_name} ${_header} ${GSTREAMER_ABI_VERSION})
|
|
set(_GSTREAMER_EXTRA_VARIABLES ${_GSTREAMER_EXTRA_VARIABLES}
|
|
GSTREAMER_${_name}_LIBRARY GSTREAMER_${_name}_INCLUDE_DIR)
|
|
endmacro()
|
|
|
|
foreach(_component ${GStreamer_FIND_COMPONENTS})
|
|
if (${_component} STREQUAL "base")
|
|
_find_gst_component(BASE gstbasesink.h)
|
|
elseif (${_component} STREQUAL "check")
|
|
_find_gst_component(CHECK gstcheck.h)
|
|
elseif (${_component} STREQUAL "controller")
|
|
_find_gst_component(CONTROLLER gstargbcontrolbinding.h)
|
|
elseif (${_component} STREQUAL "net")
|
|
_find_gst_component(NET gstnet.h)
|
|
else()
|
|
message (AUTHOR_WARNING "FindGStreamer.cmake: Invalid component \"${_component}\" was specified")
|
|
endif()
|
|
endforeach()
|
|
|
|
|
|
# Version check
|
|
if (GStreamer_FIND_VERSION)
|
|
if (PKG_GSTREAMER_FOUND)
|
|
if("${PKG_GSTREAMER_VERSION}" VERSION_LESS "${GStreamer_FIND_VERSION}")
|
|
message(STATUS "Found GStreamer version ${PKG_GSTREAMER_VERSION}, but at least version ${GStreamer_FIND_VERSION} is required")
|
|
set(GSTREAMER_VERSION_COMPATIBLE FALSE)
|
|
else()
|
|
set(GSTREAMER_VERSION_COMPATIBLE TRUE)
|
|
endif()
|
|
elseif(GSTREAMER_INCLUDE_DIR)
|
|
include(CheckCXXSourceCompiles)
|
|
|
|
set(CMAKE_REQUIRED_INCLUDES ${GSTREAMER_INCLUDE_DIR})
|
|
string(REPLACE "." "," _comma_version ${GStreamer_FIND_VERSION})
|
|
# Hack to invalidate the cached value
|
|
set(GSTREAMER_VERSION_COMPATIBLE GSTREAMER_VERSION_COMPATIBLE)
|
|
|
|
check_cxx_source_compiles("
|
|
#define G_BEGIN_DECLS
|
|
#define G_END_DECLS
|
|
#include <gst/gstversion.h>
|
|
|
|
#if GST_CHECK_VERSION(${_comma_version})
|
|
int main() { return 0; }
|
|
#else
|
|
# error \"GStreamer version incompatible\"
|
|
#endif
|
|
" GSTREAMER_VERSION_COMPATIBLE)
|
|
|
|
if (NOT GSTREAMER_VERSION_COMPATIBLE)
|
|
message(STATUS "GStreamer ${GStreamer_FIND_VERSION} is required, but the version found is older")
|
|
endif()
|
|
else()
|
|
# We didn't find gstreamer at all
|
|
set(GSTREAMER_VERSION_COMPATIBLE FALSE)
|
|
endif()
|
|
else()
|
|
# No version constrain was specified, thus we consider the version compatible
|
|
set(GSTREAMER_VERSION_COMPATIBLE TRUE)
|
|
endif()
|
|
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(GStreamer DEFAULT_MSG
|
|
GSTREAMER_LIBRARY GSTREAMER_INCLUDE_DIR
|
|
GSTREAMER_VERSION_COMPATIBLE ${_GSTREAMER_EXTRA_VARIABLES})
|