- Add ARM64 architecture support for Linux builds - Fix case-sensitive header includes (ueye.h → uEye.h) for Unix systems - Update CMake modules to find ARM64 library paths: * Add /opt/ids/ueye/lib/aarch64-linux-gnu for IDS uEye SDK * Add aarch64-linux-gnu paths to GStreamer module - Add ARM64 packaging support in main CMakeLists.txt - Make intervalometer conditional on IDS uEye availability - Remove 28 unused CMake Find modules for camera vendors: * ATK, Aptina, Bitflow, Cairo, EDT, Euresys, FreeImage * GigESim, Glew, GTK2, Imperx, IOtech, KAYA, Matrox * National Instruments, OpenCV, OpenGL, Phoenix, Pleora * Pylon, QCam, Sapera, XCLIB, and utility libraries - Retain only essential modules for GStreamer plugin development Successfully builds all 8 plugins on ARM64: idsueye, intervalometer, linescan, bayerutils, extractcolor, select, misb, videoadjust Tested on: Linux ARM64 (aarch64) with GStreamer 1.16.3
118 lines
4.3 KiB
CMake
118 lines
4.3 KiB
CMake
cmake_minimum_required(VERSION "3.5.0")
|
|
|
|
project(gst-plugins-vision)
|
|
|
|
option(ENABLE_KLV "Whether to enable KLV support" OFF)
|
|
|
|
set(CMAKE_SHARED_MODULE_PREFIX "lib")
|
|
set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
|
|
|
|
# add local cmake modules
|
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
|
|
|
|
# get git version info
|
|
include(GetGitRevisionDescription)
|
|
git_describe(GIT_DESCRIBE --dirty)
|
|
|
|
# values used when registering plugins
|
|
add_definitions(-DGST_PACKAGE_VERSION="${GIT_DESCRIBE}")
|
|
add_definitions(-DGST_PACKAGE_LICENSE="LGPL")
|
|
add_definitions(-DGST_PACKAGE_ORIGIN="Unknown package origin")
|
|
add_definitions(-DGST_PACKAGE_NAME="${CMAKE_PROJECT_NAME}")
|
|
add_definitions(-DPACKAGE="${CMAKE_PROJECT_NAME} package")
|
|
|
|
# configure CPack
|
|
set(CPACK_GENERATOR "ZIP")
|
|
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
|
|
set(CPACK_COMPONENTS_GROUPING IGNORE)
|
|
set(CPACK_COMPONENTS_ALL pdb Unspecified)
|
|
set(CPACK_PACKAGE_VERSION ${GIT_DESCRIBE})
|
|
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
|
|
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-arm64")
|
|
else ()
|
|
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-x86_64")
|
|
endif ()
|
|
else ()
|
|
if (CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
|
|
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-arm")
|
|
else ()
|
|
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-x86")
|
|
endif ()
|
|
endif ()
|
|
set(CPACK_ARCHIVE_PDB_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-pdbs")
|
|
set(CPACK_ARCHIVE_UNSPECIFIED_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}")
|
|
include(CPack)
|
|
|
|
include(MacroLogFeature)
|
|
|
|
find_package(GStreamer REQUIRED COMPONENTS base)
|
|
macro_log_feature(GSTREAMER_FOUND "GStreamer" "Required to build gst-plugins-vision" "http://gstreamer.freedesktop.org/" TRUE "1.2.0")
|
|
macro_log_feature(GSTREAMER_BASE_LIBRARY_FOUND "GStreamer base library" "Required to build most plugins" "http://gstreamer.freedesktop.org/" FALSE "1.2.0")
|
|
|
|
find_package(GStreamerPluginsBase COMPONENTS video)
|
|
macro_log_feature(GSTREAMER_VIDEO_LIBRARY_FOUND "GStreamer video library" "Required to build several video plugins" "http://gstreamer.freedesktop.org/" FALSE "1.2.0")
|
|
|
|
find_package(GLIB2 REQUIRED)
|
|
macro_log_feature(GLIB2_FOUND "GLib" "Required to build gst-plugins-vision" "http://www.gtk.org/" TRUE)
|
|
|
|
find_package(GObject REQUIRED)
|
|
macro_log_feature(GOBJECT_FOUND "GObject" "Required to build gst-plugins-vision" "http://www.gtk.org/" TRUE)
|
|
|
|
find_package(Orc REQUIRED)
|
|
macro_log_feature(ORC_FOUND "Orc" "Required library to improve performance" "http://code.entropywave.com/orc/" TRUE)
|
|
|
|
find_package(IDSuEye)
|
|
macro_log_feature(IDSUEYE_FOUND "IDS uEye" "Required to build IDS uEye source element" "http://en.ids-imaging.com/" FALSE)
|
|
|
|
if (WIN32)
|
|
# Windows distributions of GStreamer include ZLIB
|
|
set(ZLIB_ROOT ${GSTREAMER_ROOT})
|
|
endif ()
|
|
find_package(ZLIB)
|
|
|
|
# Setup common environment
|
|
include_directories(
|
|
.
|
|
${GSTREAMER_INCLUDE_DIR}
|
|
${GLIB2_INCLUDE_DIR})
|
|
|
|
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
|
if (WIN32)
|
|
get_filename_component(_PREFIX "${GSTREAMER_PLUGIN_DIR}/../" REALPATH)
|
|
else ()
|
|
# Use architecture-specific library path on Linux
|
|
if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
|
|
set(_PREFIX "/usr/lib/aarch64-linux-gnu")
|
|
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
|
|
set(_PREFIX "/usr/lib/arm-linux-gnueabihf")
|
|
else ()
|
|
set(_PREFIX "/usr/lib")
|
|
endif ()
|
|
endif ()
|
|
set(CMAKE_INSTALL_PREFIX "${_PREFIX}"
|
|
CACHE PATH "Common prefix for all installed files (e.g., plugins will be installed under CMAKE_INSTALL_PREFIX/gstreamer-1.0)" FORCE)
|
|
endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
|
|
|
if (NOT LIBRARY_INSTALL_DIR)
|
|
set(LIBRARY_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/"
|
|
CACHE PATH "Location to install libraries (e.g., libgstklv-1.0-0.so/dll)")
|
|
endif ()
|
|
if (NOT PLUGIN_INSTALL_DIR)
|
|
set(PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/gstreamer-1.0/"
|
|
CACHE PATH "Location to install plugins (e.g., libgstpylon.so/dll)")
|
|
endif()
|
|
if (WIN32 AND NOT PDB_INSTALL_DIR)
|
|
set(PDB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/gstreamer-1.0/"
|
|
CACHE PATH "Location to install PDB debug files (e.g., libgstpylon.pdb)")
|
|
endif()
|
|
|
|
add_subdirectory(gst-libs)
|
|
|
|
# Build the plugins
|
|
add_subdirectory(ext)
|
|
add_subdirectory(gst)
|
|
add_subdirectory(sys)
|
|
|
|
macro_display_feature_log()
|