1cmake_minimum_required (VERSION 3.5) 2project(BTstackMesh) 3 4# add libusb 5find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h PATH_SUFFIXES "include" "libusb" "libusb-1.0") 6find_library(LIBUSB_LIBRARY NAMES usb-1.0 PATH_SUFFIXES "lib" "lib32" "lib64" "dylib") 7get_filename_component(LIBUSB_LIBRARY_PATH ${LIBUSB_LIBRARY} DIRECTORY) 8include_directories( ${LIBUSB_INCLUDE_DIR} ) 9link_directories( ${LIBUSB_LIBRARY_PATH} ) 10link_libraries( usb-1.0 ) 11 12include_directories(../../3rd-party/micro-ecc) 13include_directories(../../3rd-party/tinydir) 14include_directories(../../src) 15include_directories(../../platform/posix) 16include_directories(../rijndael) 17include_directories(.) 18 19file(GLOB SOURCES_SRC "../../src/*.c" "../../src/*.h" "../../example/sco_demo_util.c" "../../example/sco_demo_util.h") 20file(GLOB SOURCES_BLE "../../src/ble/*.c" "../../src/ble/*.h") 21file(GLOB SOURCES_GATT "../../src/ble/gatt-service/*.c" "../../src/ble/gatt-service/*.h") 22file(GLOB SOURCES_MESH "../../src/mesh/*.c" "../../src/mesh/*.h" ) 23file(GLOB SOURCES_UECC "../../3rd-party/micro-ecc/uECC.c" "../../3rd-party/micro-ecc/uECC.h") 24file(GLOB SOURCES_POSIX "../../platform/posix/*.c" "../../platform/posix/*.h") 25file(GLOB SOURCES_LIBUSB "../../platform/libusb/*.c" "../../platform/libusb/*.h") 26 27 28file(GLOB SOURCES_OFF "../../src/ble/le_device_db_memory.c" "../../src/ble/le_device_db_memory.h" "../../src/ble/le_device_db_tlv.c" "../../src/ble/le_device_db_tlv.h") 29list(REMOVE_ITEM SOURCES_BLE ${SOURCES_OFF}) 30 31set(SOURCES_MESH_NEW main.c) 32 33set(SOURCES 34 ${SOURCES_POSIX} 35 ${SOURCES_LIBUSB} 36 ${SOURCES_SRC} 37 ${SOURCES_BLE} 38 ${SOURCES_MESH} 39 ${SOURCES_MESH_NEW} 40 ${SOURCES_GATT} 41 ${SOURCES_UECC} 42) 43list(SORT SOURCES) 44 45# create static lib 46add_library(btstack STATIC ${SOURCES}) 47 48# list of targets 49set(EXAMPLES_C mesh_pts.c) 50 51file(GLOB EXAMPLES_GATT "*.gatt") 52 53# create targets 54foreach(EXAMPLE_FILE ${EXAMPLES_C}) 55 get_filename_component(EXAMPLE ${EXAMPLE_FILE} NAME_WE) 56 if ( "${EXAMPLES_GATT}" MATCHES ${EXAMPLE} ) 57 message("example ${EXAMPLE} -- with GATT DB") 58 add_custom_command( 59 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h 60 COMMAND ${CMAKE_SOURCE_DIR}/../../tool/compile_gatt.py ${CMAKE_SOURCE_DIR}/${EXAMPLE}.gatt ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h > /dev/null 61 ) 62 add_executable(${EXAMPLE} ${EXAMPLE_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h) 63 else() 64 message("example ${EXAMPLE}") 65 add_executable(${EXAMPLE} ${EXAMPLE_FILE}) 66 endif() 67 target_link_libraries(${EXAMPLE} btstack) 68endforeach(EXAMPLE_FILE) 69 70# create mesh_message_test target 71 72## hard-coded to use CPPUtest 73include_directories( /usr/local/include) 74link_directories( /usr/local/lib) 75link_libraries(CppUTest CppUTestExt) 76add_executable(mesh_message_test 77../../src/mesh/mesh_foundation.c 78../../src/mesh/mesh_node.c 79../../src/mesh/mesh_iv_index_seq_number.c 80../../src/mesh/mesh_network.c 81../../src/mesh/mesh_peer.c 82../../src/mesh/mesh_lower_transport.c 83../../src/mesh/mesh_upper_transport.c 84../../src/mesh/mesh_virtual_addresses.c 85../../src/mesh/mesh_keys.c 86../../src/mesh/mesh_crypto.c 87../../src/btstack_memory.c 88../../src/btstack_memory_pool.c 89../../src/btstack_util.c 90../../src/btstack_crypto.c 91../../src/btstack_linked_list.c 92../../src/hci_dump.c 93../../src/hci_cmd.c 94../../3rd-party/micro-ecc/uECC.c 95../rijndael/rijndael.c 96mock.c 97mesh_message_test.cpp 98) 99 100 101 102