Files
E502_ADC_BF_PC_companion/lib/e502/CMakeLists.txt

171 lines
4.9 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)