# Define the current source locations SET(CURRENT_HEADER_DIR ${CMAKE_SOURCE_DIR}/include/leddevice) SET(CURRENT_SOURCE_DIR ${CMAKE_SOURCE_DIR}/libsrc/leddevice) find_package(Qt5 COMPONENTS Network SerialPort REQUIRED) include_directories( dev_hid dev_net dev_other dev_serial dev_spi dev_rpi_pwm dev_tinker ) FILE ( GLOB Leddevice_SOURCES "${CURRENT_HEADER_DIR}/*.h" "${CURRENT_SOURCE_DIR}/*.h" "${CURRENT_SOURCE_DIR}/*.cpp" "${CURRENT_SOURCE_DIR}/dev_serial/*.h" "${CURRENT_SOURCE_DIR}/dev_serial/*.cpp" "${CURRENT_SOURCE_DIR}/dev_net/*.h" "${CURRENT_SOURCE_DIR}/dev_net/*.cpp" "${CURRENT_SOURCE_DIR}/dev_other/*.h" "${CURRENT_SOURCE_DIR}/dev_other/*.cpp" ) if ( ENABLE_OSX OR WIN32 ) list(REMOVE_ITEM Leddevice_SOURCES "${CURRENT_SOURCE_DIR}/dev_other/LedDevicePiBlaster.h") list(REMOVE_ITEM Leddevice_SOURCES "${CURRENT_SOURCE_DIR}/dev_other/LedDevicePiBlaster.cpp") endif() if ( ENABLE_USB_HID ) find_package(libusb-1.0 REQUIRED) include_directories( ${CMAKE_SOURCE_DIR}/include/hidapi ${LIBUSB_1_INCLUDE_DIRS} ) FILE ( GLOB Leddevice_USB_HID_SOURCES "${CURRENT_SOURCE_DIR}/dev_hid/*.h" "${CURRENT_SOURCE_DIR}/dev_hid/*.cpp") endif() if ( ENABLE_SPIDEV ) FILE ( GLOB Leddevice_SPI_SOURCES "${CURRENT_SOURCE_DIR}/dev_spi/*.h" "${CURRENT_SOURCE_DIR}/dev_spi/*.cpp") endif() if ( ENABLE_TINKERFORGE ) FILE ( GLOB Leddevice_TINKER_SOURCES "${CURRENT_SOURCE_DIR}/dev_tinker/*.h" "${CURRENT_SOURCE_DIR}/dev_tinker/*.cpp") endif() if ( ENABLE_WS281XPWM ) include_directories(../../dependencies/external/rpi_ws281x) FILE ( GLOB Leddevice_PWM_SOURCES "${CURRENT_SOURCE_DIR}/dev_rpi_pwm/*.h" "${CURRENT_SOURCE_DIR}/dev_rpi_pwm/*.cpp") endif() set(LedDevice_RESOURCES ${CURRENT_SOURCE_DIR}/LedDeviceSchemas.qrc ) SET( Leddevice_SOURCES ${Leddevice_SOURCES} ${LedDevice_RESOURCES} ${Leddevice_USB_HID_SOURCES} ${Leddevice_TINKER_SOURCES} ${Leddevice_SPI_SOURCES} ${Leddevice_PWM_SOURCES} ) # auto generate header file that include all available leddevice headers # auto generate cpp file for register() calls FILE ( WRITE "${CMAKE_BINARY_DIR}/LedDevice_headers.h" "#pragma once\n\n//this file is autogenerated, don't touch it\n\n" ) FILE ( WRITE "${CMAKE_BINARY_DIR}/LedDevice_register.cpp" "//this file is autogenerated, don't touch it\n\n" ) FOREACH( f ${Leddevice_SOURCES} ) if ( "${f}" MATCHES "dev_.*/Led.evice.+h$" ) GET_FILENAME_COMPONENT(fname ${f} NAME) FILE ( APPEND "${CMAKE_BINARY_DIR}/LedDevice_headers.h" "#include \"${fname}\"\n" ) STRING( SUBSTRING ${fname} 9 -1 dname) STRING( REPLACE ".h" "" dname "${dname}" ) FILE ( APPEND "${CMAKE_BINARY_DIR}/LedDevice_register.cpp" "REGISTER(${dname});\n" ) endif() ENDFOREACH() add_library(leddevice ${CMAKE_BINARY_DIR}/LedDevice_headers.h ${Leddevice_SOURCES} ) target_link_libraries(leddevice hyperion hyperion-utils ${CMAKE_THREAD_LIBS_INIT} Qt5::Network Qt5::SerialPort ssdp ) if(WIN32) target_link_libraries(leddevice ws2_32) endif() if(ENABLE_TINKERFORGE) target_link_libraries(leddevice tinkerforge) endif() if(ENABLE_WS281XPWM) target_link_libraries(leddevice ws281x) endif() if (ENABLE_USB_HID) if(APPLE) target_link_libraries(leddevice ${LIBUSB_1_LIBRARIES} hidapi-mac) else() target_link_libraries(leddevice ${LIBUSB_1_LIBRARIES} hidapi-libusb) endif() endif() if (NOT DEFAULT_USE_SYSTEM_MBEDTLS_LIBS) if (MBEDTLS_LIBRARIES) include_directories(${MBEDTLS_INCLUDE_DIR}) target_link_libraries(leddevice ${MBEDTLS_LIBRARIES}) target_include_directories(leddevice PRIVATE ${MBEDTLS_INCLUDE_DIR}) endif (MBEDTLS_LIBRARIES) endif ()