feat: Add Linux ARM64 support and cleanup build system

- 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
This commit is contained in:
yair
2025-11-26 18:02:21 +00:00
parent b9d664ad23
commit 73afb1f671
34 changed files with 43 additions and 1191 deletions

View File

@@ -28,9 +28,17 @@ set(CPACK_COMPONENTS_GROUPING IGNORE)
set(CPACK_COMPONENTS_ALL pdb Unspecified)
set(CPACK_PACKAGE_VERSION ${GIT_DESCRIBE})
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-x86_64")
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 ()
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-x86")
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}")
@@ -73,7 +81,14 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
if (WIN32)
get_filename_component(_PREFIX "${GSTREAMER_PLUGIN_DIR}/../" REALPATH)
else ()
set(_PREFIX "/usr/lib")
# 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)