| cmake_minimum_required(VERSION 2.8.7) |
| project(iiod C) |
| |
| include(FindBISON) |
| include(FindFLEX) |
| |
| flex_target(lexer |
| ${CMAKE_CURRENT_SOURCE_DIR}/lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.c) |
| bison_target(parser |
| ${CMAKE_CURRENT_SOURCE_DIR}/parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.c) |
| add_flex_bison_dependency(lexer parser) |
| include_directories(${CMAKE_CURRENT_BINARY_DIR}) |
| include_directories(${CMAKE_CURRENT_SOURCE_DIR}) |
| |
| set(IIOD_CFILES iiod.c ops.c thread-pool.c ${BISON_parser_OUTPUTS} ${FLEX_lexer_OUTPUTS}) |
| |
| find_library(LIBAIO_LIBRARIES aio) |
| find_path(LIBAIO_INCLUDE_DIR libaio.h) |
| |
| if (LIBAIO_LIBRARIES AND LIBAIO_INCLUDE_DIR) |
| option(ENABLE_AIO "Build IIOD with async. I/O support" ON) |
| endif () |
| |
| include(CheckTypeSize) |
| set(CMAKE_EXTRA_INCLUDE_FILES linux/usb/functionfs.h) |
| check_type_size("struct usb_functionfs_descs_head_v2" FUNCTIONFS_V2) |
| set(CMAKE_EXTRA_INCLUDE_FILES) |
| |
| if (HAVE_FUNCTIONFS_V2) |
| OPTION(WITH_IIOD_USBD "Add support for USB through FunctionFS within IIOD" ${ENABLE_AIO}) |
| |
| if (WITH_IIOD_USBD) |
| if (NOT ENABLE_AIO) |
| message(SEND_ERROR "USB support in IIOD requires async. I/O support") |
| endif (NOT ENABLE_AIO) |
| |
| set(IIOD_CFILES ${IIOD_CFILES} usbd.c) |
| endif (WITH_IIOD_USBD) |
| endif (HAVE_FUNCTIONFS_V2) |
| |
| include(CheckSymbolExists) |
| set(CMAKE_REQUIRED_LIBRARIES ${PTHREAD_LIBRARIES}) |
| check_symbol_exists(pthread_setname_np "pthread.h" HAS_PTHREAD_SETNAME_NP) |
| set(CMAKE_REQUIRED_LIBRARIES) |
| |
| add_executable(iiod ${IIOD_CFILES}) |
| set_target_properties(iiod PROPERTIES |
| C_STANDARD 99 |
| C_STANDARD_REQUIRED ON |
| C_EXTENSIONS OFF |
| ) |
| target_link_libraries(iiod iio ${PTHREAD_LIBRARIES} ${AVAHI_LIBRARIES}) |
| |
| if (ENABLE_AIO) |
| add_definitions(-DWITH_AIO=1) |
| include_directories(${LIBAIO_INCLUDE_DIR}) |
| target_link_libraries(iiod ${LIBAIO_LIBRARIES}) |
| endif () |
| |
| add_definitions(-D_GNU_SOURCE=1) |
| |
| if(NOT SKIP_INSTALL_ALL) |
| install(TARGETS iiod RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}) |
| endif() |
| |
| if (WITH_SYSTEMD) |
| configure_file(${CMAKE_CURRENT_SOURCE_DIR}/init/iiod.service.cmakein ${PROJECT_BINARY_DIR}/init/iiod.service) |
| install(FILES ${PROJECT_BINARY_DIR}/init/iiod.service DESTINATION ${SYSTEMD_UNIT_INSTALL_DIR}) |
| endif() |
| |
| if (WITH_SYSVINIT) |
| configure_file(${CMAKE_CURRENT_SOURCE_DIR}/init/iiod.init.cmakein ${PROJECT_BINARY_DIR}/init/iiod) |
| install(FILES ${PROJECT_BINARY_DIR}/init/iiod |
| PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ |
| DESTINATION ${SYSVINIT_INSTALL_DIR}) |
| endif() |
| |
| if (WITH_UPSTART) |
| configure_file(${CMAKE_CURRENT_SOURCE_DIR}/init/iiod.conf.cmakein ${PROJECT_BINARY_DIR}/init/iiod.conf) |
| install(FILES ${PROJECT_BINARY_DIR}/init/iiod.conf DESTINATION ${UPSTART_CONF_INSTALL_DIR}) |
| endif() |