manually merged with ARM version

This commit is contained in:
2025-11-13 17:43:55 +03:00
parent 77005d7863
commit b7ba42765b
463 changed files with 119514 additions and 45 deletions

170
e502/CMakeLists.txt Normal file
View File

@ -0,0 +1,170 @@
cmake_minimum_required(VERSION 2.8.12)
project(e502api C)
set(PROJECT_VARNAME_PREFIX E502API)
option(E502API_ENABLE_USB "enable usb interface support" ON)
option(E502API_ENABLE_TCP "enable tcp interface support" ON)
option(E502API_ENABLE_DNSSD "enable dns-sd service discovery" ON)
set(OSSPEC_USE_MUTEX ON)
if(E502API_ENABLE_USB)
option(E502API_LIBUSB_DEBUG "Print debug messages from libusb" OFF)
if(WIN32)
option(LIBUSB_INTERNAL "use internal libusb realisation" ON)
endif(WIN32)
set(OSSPEC_USE_EVENTS ON)
set(OSSPEC_USE_THREADS ON)
else(E502API_ENABLE_USB)
set(OSSPEC_USE_EVENTS OFF)
set(OSSPEC_USE_THREADS OFF)
endif(E502API_ENABLE_USB)
if (E502API_ENABLE_DNSSD)
if(WIN32)
option(ENABLE_BONJOUR "enable bonjour support" ON)
else(WIN32)
option(ENABLE_AVAHI "enable avahi support" ON)
endif(WIN32)
endif(E502API_ENABLE_DNSSD)
include(${LTIMER_DIR}/ltimer.cmake)
include(${OSSPEC_DIR}/osspec.cmake)
set(E502API_COMPILE_DEFINITIONS ${E502API_COMPILE_DEFINITIONS} ${LTIMER_DEFINITIONS} ${OSSPEC_DEFINITIONS})
set(SOURCES
e502api_usb.c
e502api_tcp.c
e502api_dnssd.c
e502api.c
e502api_eth_config.c
${LTIMER_SOURCES}
${OSSPEC_SOURCES}
)
set(SETUP_HEADERS e502api.h)
set(HEADERS
${OSSPEC_HEADERS}
${LTIMER_HEADERS}
e502_fpga_regs.h
e502_cm4_defs.h
e502_eth_config.h
e502api_private.h
e502api_tcp_private.h
e502_tcp_protocol.h)
set(LIBS
x502api
${LTIMER_LIBS}
${OSSPEC_LIBS})
include_directories(${X502API_LIB_DIR}/osspec)
if (E502API_ENABLE_USB)
set(E502API_COMPILE_DEFINITIONS ${E502API_COMPILE_DEFINITIONS} ENABLE_USB)
if(E502API_LIBUSB_DEBUG)
set(E502API_COMPILE_DEFINITIONS ${E502API_COMPILE_DEFINITIONS} LIBUSB_DEBUG)
endif(E502API_LIBUSB_DEBUG)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/")
if(LIBUSB_INTERNAL)
include(CheckStructHasMember)
check_struct_has_member("struct timespec" tv_sec time.h HAVE_STRUCT_TIMESPEC LANGUAGE C)
if(HAVE_STRUCT_TIMESPEC)
add_definitions(-DHAVE_STRUCT_TIMESPEC)
endif(HAVE_STRUCT_TIMESPEC)
# использование внутренней реализации libusb, а не внешеней библиотеки
# используется под windows, так как стандартная версия c WinUSB драйвером
# имеет проблемны при отмене трансферов
include_directories(libusb-1.0 libusb-1.0/msvc)
set(SOURCES ${SOURCES}
libusb-1.0/core.c
libusb-1.0/descriptor.c
libusb-1.0/hotplug.c
libusb-1.0/io.c
libusb-1.0/strerror.c
libusb-1.0/sync.c
libusb-1.0/os/poll_windows.c
libusb-1.0/os/threads_windows.c
libusb-1.0/os/windows_usb.c
)
set(HEADERS ${HEADERS}
libusb-1.0/libusb.h
libusb-1.0/libusbi.h
libusb-1.0/hotplug.h
libusb-1.0/version.h
libusb-1.0/version_nano.h
libusb-1.0/os/poll_windows.h
libusb-1.0/os/threads_windows.h
libusb-1.0/os/windows_common.h
libusb-1.0/msvc/config.h
libusb-1.0/msvc/errno.h
libusb-1.0/msvc/inttypes.h
libusb-1.0/msvc/missing.h
libusb-1.0/msvc/stdint.h
)
else()
#ищем libusb-1.0
find_package(LibUSB REQUIRED)
include_directories(${LIBUSB_INCLUDE_DIR})
set(LIBS ${LIBS} ${LIBUSB_LIBRARIES})
endif()
endif(E502API_ENABLE_USB)
if(E502API_ENABLE_TCP)
set(E502API_COMPILE_DEFINITIONS ${E502API_COMPILE_DEFINITIONS} ENABLE_TCP)
if(WIN32)
#подключение библиотеки для работы с сокетами
set(LIBS ${LIBS} Ws2_32)
endif(WIN32)
endif(E502API_ENABLE_TCP)
if(E502API_ENABLE_DNSSD)
set(E502API_COMPILE_DEFINITIONS ${E502API_COMPILE_DEFINITIONS} ENABLE_DNSSD)
if(ENABLE_BONJOUR)
find_package(DNSSD REQUIRED)
include_directories(${DNSSD_INCLUDE_DIRS})
set(LIBS ${LIBS} ${DNSSD_LIBRARIES})
set(E502API_COMPILE_DEFINITIONS ${E502API_COMPILE_DEFINITIONS} ENABLE_BONJOUR)
endif(ENABLE_BONJOUR)
if(ENABLE_AVAHI)
find_package(Avahi REQUIRED)
include_directories(${AVAHI_INCLUDE_DIRS})
set(LIBS ${LIBS} ${AVAHI_LIBRARIES})
set(E502API_COMPILE_DEFINITIONS ${E502API_COMPILE_DEFINITIONS} ENABLE_AVAHI)
endif(ENABLE_AVAHI)
endif(E502API_ENABLE_DNSSD)
message("e502 libs: ${LIBS}")
include(${X502_LIBS_CMAKE_FILE})
if(UNIX)
if (E502API_ENABLE_USB)
if(NOT UDEV_RULES_DIR)
set(UDEV_RULES_DIR lib/udev/rules.d)
endif(NOT UDEV_RULES_DIR)
install(FILES e502.rules DESTINATION ${UDEV_RULES_DIR})
install(FILES e16.rules DESTINATION ${UDEV_RULES_DIR})
endif(E502API_ENABLE_USB)
endif(UNIX)