manually merged with ARM version
This commit is contained in:
170
e502/CMakeLists.txt
Normal file
170
e502/CMakeLists.txt
Normal 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)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user