pleora: build for various versions of eBUS, and append version to plugin name

Not the prettiest way to handle this, but we have a need for supporting
multiple versions of eBUS, and this way we can distribute multiple
versions. This also tries to modernize the FindPleora.cmake file.
This commit is contained in:
Joshua M. Doe 2019-11-07 08:31:27 -05:00
parent 0fc4bc182c
commit 7292eaf353
5 changed files with 68 additions and 33 deletions

View File

@ -98,7 +98,7 @@ find_package(Phoenix)
macro_log_feature(PHOENIX_FOUND "Active Silicon Phoenix" "Required to build Active Silicon Phoenix source element" "http://www.activesilicon.com/" FALSE) macro_log_feature(PHOENIX_FOUND "Active Silicon Phoenix" "Required to build Active Silicon Phoenix source element" "http://www.activesilicon.com/" FALSE)
find_package(Pleora) find_package(Pleora)
macro_log_feature(PLEORA_FOUND "Pleora eBUS" "Required to build Pleora eBUS source element" "http://www.pleora.com/" FALSE) macro_log_feature(Pleora_FOUND "Pleora eBUS" "Required to build Pleora eBUS source element" "http://www.pleora.com/" FALSE)
find_package(Sapera) find_package(Sapera)
macro_log_feature(SAPERA_FOUND "Teledyne DALSA Sapera" "Required to build Teledyne DALSA Sapera source element" "http://www.teledynedalsa.com/" FALSE) macro_log_feature(SAPERA_FOUND "Teledyne DALSA Sapera" "Required to build Teledyne DALSA Sapera source element" "http://www.teledynedalsa.com/" FALSE)

View File

@ -1,18 +1,19 @@
# - Try to find Pleora SDK # - Try to find Pleora SDK
# Once done this will define # Once done this will define
# #
# PLEORA_FOUND - system has Pleora SDK # Pleora_FOUND - system has Pleora SDK
# PLEORA_INCLUDE_DIR - the Pleora SDK include directory # Pleora_INCLUDE_DIR - the Pleora SDK include directory
# PLEORA_LIBRARIES_DIR - the Pleora SDK libraries directory # Pleora_LIBRARIES - the Pleora SDK libraries
# Pleora_LIBRARY_DIR - the Pleora SDK library directory
# Copyright (c) 2006, Tim Beaulen <tbscope@gmail.com> # Copyright (c) 2006, Tim Beaulen <tbscope@gmail.com>
# Copyright (c) 2016 outside US, United States Government, Joshua M. Doe <oss@nvl.army.mil> # Copyright (c) 2019 outside US, United States Government, Joshua M. Doe <oss@nvl.army.mil>
# #
# Redistribution and use is allowed according to the terms of the BSD license. # Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file. # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
if (NOT PLEORA_DIR) if (NOT Pleora_DIR)
set (PLEORA_DIR $ENV{PUREGEV_ROOT} CACHE PATH "Directory containing Pleora SDK includes and libraries") set (Pleora_DIR $ENV{PUREGEV_ROOT} CACHE PATH "Directory containing Pleora SDK includes and libraries")
endif () endif ()
if (CMAKE_SIZEOF_VOID_P MATCHES "8") if (CMAKE_SIZEOF_VOID_P MATCHES "8")
@ -21,19 +22,37 @@ else ()
set(_LIB_SUFFIX "") set(_LIB_SUFFIX "")
endif () endif ()
find_path (PLEORA_INCLUDE_DIR PvBase.h set(_Pleora_PATHS PATHS
PATHS "${Pleora_DIR}"
"${PLEORA_DIR}/Includes"
"C:/Program Files/Pleora Technologies Inc/eBUS SDK/Includes" "C:/Program Files/Pleora Technologies Inc/eBUS SDK/Includes"
"C:/Program Files (x86)/Pleora Technologies Inc/eBUS SDK/Includes" "C:/Program Files (x86)/Pleora Technologies Inc/eBUS SDK/Includes")
DOC "Directory containing Pleora eBUS SDK headers")
find_path (PLEORA_LIBRARIES_DIR PvBase${_LIB_SUFFIX}.lib find_path (Pleora_INCLUDE_DIR PvBase.h
PATHS PATHS ${_Pleora_PATHS}
"${PLEORA_DIR}/Libraries" PATH_SUFFIXES Includes)
"C:/Program Files/Pleora Technologies Inc/eBUS SDK/Libraries"
"C:/Program Files (x86)/Pleora Technologies Inc/eBUS SDK/Libraries" find_path (Pleora_LIBRARY_DIR PvBase${_LIB_SUFFIX}.lib
DOC "Directory containing Pleora eBUS SDK libraries") PATHS ${_Pleora_PATHS}
PATH_SUFFIXES Libraries)
find_library (Pleora_LIBRARY_BASE PvBase${_LIB_SUFFIX} ${Pleora_LIBRARY_DIR})
find_library (Pleora_LIBRARY_DEVICE PvDevice${_LIB_SUFFIX} ${Pleora_LIBRARY_DIR})
set (Pleora_LIBRARIES ${Pleora_LIBRARY_BASE} ${Pleora_LIBRARY_DEVICE})
file(STRINGS "${Pleora_INCLUDE_DIR}/PvVersion.h" _pleora_VERSION_CONTENTS REGEX "#define NVERSION_STRING")
if ("${_pleora_VERSION_CONTENTS}" MATCHES "#define NVERSION_STRING[ \t]+\"([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)+")
set(Pleora_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(Pleora_VERSION_MINOR "${CMAKE_MATCH_2}")
set(Pleora_VERSION_PATCH "${CMAKE_MATCH_3}")
set(Pleora_VERSION_TWEAK "${CMAKE_MATCH_4}")
set(Pleora_VERSION_COUNT 4)
set(Pleora_VERSION_STRING "${Pleora_VERSION_MAJOR}.${Pleora_VERSION_MINOR}.${Pleora_VERSION_PATCH}.${Pleora_VERSION_TWEAK}")
set(Pleora_VERSION ${Pleora_VERSION_STRING})
message(STATUS "Found Pleora version: ${Pleora_VERSION_STRING}")
endif ()
include (FindPackageHandleStandardArgs) include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (PLEORA DEFAULT_MSG PLEORA_INCLUDE_DIR PLEORA_LIBRARIES_DIR) find_package_handle_standard_args (Pleora
REQUIRED_VARS Pleora_INCLUDE_DIR Pleora_LIBRARY_DIR Pleora_LIBRARIES
VERSION_VAR Pleora_VERSION_STRING)

View File

@ -54,9 +54,9 @@ if (PHOENIX_FOUND)
add_subdirectory(phoenix) add_subdirectory(phoenix)
endif (PHOENIX_FOUND) endif (PHOENIX_FOUND)
if (PLEORA_FOUND) if (Pleora_FOUND)
add_subdirectory(pleora) add_subdirectory(pleora)
endif (PLEORA_FOUND) endif (Pleora_FOUND)
if (SAPERA_FOUND) if (SAPERA_FOUND)
add_subdirectory(sapera) add_subdirectory(sapera)

View File

@ -2,21 +2,28 @@ add_definitions(-D_XKEYCHECK_H)
set (SOURCES set (SOURCES
gstpleora.cpp gstpleora.cpp
gstpleorasink.cpp gstpleorasrc.cpp)
gstpleorasrc.cpp
streamingchannelsource.cpp)
set (HEADERS set (HEADERS
gstpleorasrc.h)
if (Pleora_VERSION_MAJOR GREATER 5)
set (SOURCES
${SOURCES}
gstpleorasink.cpp
streamingchannelsource.cpp)
set (HEADERS
${HEADERS}
gstpleorasink.h gstpleorasink.h
gstpleorasrc.h
streamingchannelsource.h) streamingchannelsource.h)
endif ()
include_directories (AFTER include_directories (AFTER
${PLEORA_INCLUDE_DIR}) ${Pleora_INCLUDE_DIR})
set (libname libgstpleora) link_directories(${Pleora_LIBRARY_DIR})
link_directories(${PLEORA_LIBRARIES_DIR}) set (libname libgstpleora${Pleora_VERSION_MAJOR})
add_library (${libname} MODULE add_library (${libname} MODULE
${SOURCES} ${SOURCES}

View File

@ -2,7 +2,11 @@
#include "config.h" #include "config.h"
#endif #endif
#include "PvVersion.h"
#if VERSION_MAJOR >= 6
#include "gstpleorasink.h" #include "gstpleorasink.h"
#endif
#include "gstpleorasrc.h" #include "gstpleorasrc.h"
#define GST_CAT_DEFAULT gst_pleora_debug #define GST_CAT_DEFAULT gst_pleora_debug
@ -14,10 +18,13 @@ plugin_init (GstPlugin * plugin)
GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "pleora", 0, GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "pleora", 0,
"debug category for pleora plugin"); "debug category for pleora plugin");
#if VERSION_MAJOR >= 6
/* eBUS 6 is needed for this sink element */
if (!gst_element_register (plugin, "pleorasink", GST_RANK_NONE, if (!gst_element_register (plugin, "pleorasink", GST_RANK_NONE,
gst_pleorasink_get_type ())) { gst_pleorasink_get_type ())) {
return FALSE; return FALSE;
} }
#endif
if (!gst_element_register (plugin, "pleorasrc", GST_RANK_NONE, if (!gst_element_register (plugin, "pleorasrc", GST_RANK_NONE,
gst_pleorasrc_get_type ())) { gst_pleorasrc_get_type ())) {
@ -27,9 +34,11 @@ plugin_init (GstPlugin * plugin)
return TRUE; return TRUE;
} }
#define PLUGIN_NAME G_PASTE(pleora, VERSION_MAJOR)
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
GST_VERSION_MINOR, GST_VERSION_MINOR,
pleora, PLUGIN_NAME,
"Pleora eBUS video sink/source", "Pleora eBUS video elements",
plugin_init, GST_PACKAGE_VERSION, GST_PACKAGE_LICENSE, GST_PACKAGE_NAME, plugin_init, GST_PACKAGE_VERSION, GST_PACKAGE_LICENSE, GST_PACKAGE_NAME,
GST_PACKAGE_ORIGIN) GST_PACKAGE_ORIGIN)