1cmake_minimum_required (VERSION 3.5) 2project(BTstackMesh) 3 4# enable AddressSanitizer 5set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") 6set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") 7set (CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fsanitize=address") 8 9# AddressSanitizer for Xcode 10set(CMAKE_XCODE_GENERATE_SCHEME ON) 11set(CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER ON) 12set(CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN ON) 13 14# fink pkgconfig 15find_package(PkgConfig REQUIRED) 16 17# libusb 18pkg_check_modules(LIBUSB REQUIRED libusb-1.0) 19include_directories(${LIBUSB_INCLUDE_DIRS}) 20link_directories(${LIBUSB_LIBRARY_DIRS}) 21link_libraries(${LIBUSB_LIBRARIES}) 22 23include_directories(../../3rd-party/bluedroid/decoder/include) 24include_directories(../../3rd-party/bluedroid/encoder/include) 25include_directories(../../3rd-party/micro-ecc) 26include_directories(../../3rd-party/rijndael) 27include_directories(../../3rd-party/tinydir) 28include_directories(../../3rd-party/lc3-google/include/) 29include_directories(../../src) 30include_directories(../../platform/posix) 31include_directories(.) 32 33file(GLOB SOURCES_SRC "../../src/*.c" "../../src/*.h" "../../example/sco_demo_util.c" "../../example/sco_demo_util.h") 34file(GLOB SOURCES_BLE "../../src/ble/*.c" "../../src/ble/*.h") 35file(GLOB SOURCES_GATT "../../src/ble/gatt-service/*.c" "../../src/ble/gatt-service/*.h") 36file(GLOB SOURCES_MESH "../../src/mesh/*.c" "../../src/mesh/*.h" "../../src/mesh/gatt-service/*.c") 37file(GLOB SOURCES_UECC "../../3rd-party/micro-ecc/uECC.c" "../../3rd-party/micro-ecc/uECC.h") 38file(GLOB SOURCES_POSIX "../../platform/posix/*.c" "../../platform/posix/*.h") 39file(GLOB SOURCES_LIBUSB "../../platform/libusb/*.c" "../../platform/libusb/*.h") 40 41 42file(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") 43list(REMOVE_ITEM SOURCES_BLE ${SOURCES_OFF}) 44 45set(SOURCES_MESH_NEW main.c) 46 47set(SOURCES 48 ${SOURCES_POSIX} 49 ${SOURCES_LIBUSB} 50 ${SOURCES_SRC} 51 ${SOURCES_BLE} 52 ${SOURCES_MESH} 53 ${SOURCES_MESH_NEW} 54 ${SOURCES_GATT} 55 ${SOURCES_UECC} 56) 57list(SORT SOURCES) 58 59# create static lib 60add_library(btstack STATIC ${SOURCES}) 61 62# list of targets 63set(EXAMPLES_C mesh_pts.c) 64 65file(GLOB EXAMPLES_GATT "*.gatt") 66 67# create targets 68foreach(EXAMPLE_FILE ${EXAMPLES_C}) 69 get_filename_component(EXAMPLE ${EXAMPLE_FILE} NAME_WE) 70 if ( "${EXAMPLES_GATT}" MATCHES ${EXAMPLE} ) 71 message("example ${EXAMPLE} -- with GATT DB") 72 add_custom_command( 73 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h 74 COMMAND ${CMAKE_SOURCE_DIR}/../../tool/compile_gatt.py ${CMAKE_SOURCE_DIR}/${EXAMPLE}.gatt ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h > /dev/null 75 ) 76 add_executable(${EXAMPLE} ${EXAMPLE_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h) 77 else() 78 message("example ${EXAMPLE}") 79 add_executable(${EXAMPLE} ${EXAMPLE_FILE}) 80 endif() 81 target_link_libraries(${EXAMPLE} btstack) 82endforeach(EXAMPLE_FILE) 83 84# pkgconfig required to link cpputest 85find_package(PkgConfig REQUIRED) 86 87# CppuTest 88pkg_check_modules(CPPUTEST REQUIRED CppuTest) 89include_directories(${CPPUTEST_INCLUDE_DIRS}) 90link_directories(${CPPUTEST_LIBRARY_DIRS}) 91link_libraries(${CPPUTEST_LIBRARIES}) 92 93message("example mesh_message_test") 94 95add_executable(mesh_message_test 96../../src/mesh/mesh_foundation.c 97../../src/mesh/mesh_node.c 98../../src/mesh/mesh_iv_index_seq_number.c 99../../src/mesh/mesh_network.c 100../../src/mesh/mesh_peer.c 101../../src/mesh/mesh_lower_transport.c 102../../src/mesh/mesh_upper_transport.c 103../../src/mesh/mesh_virtual_addresses.c 104../../src/mesh/mesh_keys.c 105../../src/mesh/mesh_crypto.c 106../../src/btstack_memory.c 107../../src/btstack_memory_pool.c 108../../src/btstack_util.c 109../../src/btstack_crypto.c 110../../src/btstack_linked_list.c 111../../src/hci_dump.c 112../../platform/posix/hci_dump_posix_fs.c 113../../src/hci_cmd.c 114../../3rd-party/micro-ecc/uECC.c 115../../3rd-party/rijndael/rijndael.c 116mock.c 117mesh_message_test.cpp 118) 119 120message("example provisioning_device_test") 121add_executable(provisioning_device_test 122provisioning_device_test.cpp 123mock.c 124../../3rd-party/micro-ecc/uECC.c 125../../3rd-party/rijndael/rijndael.c 126../../src/mesh/mesh_crypto.c 127../../src/mesh/provisioning_device.c 128../../src/mesh/mesh_node.c 129../../src/btstack_crypto.c 130../../src/btstack_util.c 131../../src/btstack_linked_list.c 132../../src/hci_cmd.c 133../../src/hci_dump.c 134../../platform/posix/hci_dump_posix_fs.c 135) 136 137message("example provisioning_provisioner_test") 138add_executable(provisioning_provisioner_test 139provisioning_provisioner_test.cpp 140mock.c 141../../3rd-party/micro-ecc/uECC.c 142../../3rd-party/rijndael/rijndael.c 143../../src/btstack_crypto.c 144../../src/mesh/provisioning_provisioner.c 145 ../../src/mesh/mesh_crypto.c 146../../src/btstack_crypto.c 147../../src/btstack_util.c 148../../src/btstack_linked_list.c 149../../src/hci_cmd.c 150../../src/hci_dump.c 151../../platform/posix/hci_dump_posix_fs.c 152) 153 154message("example mesh_configuration_composition_data_message_test") 155add_executable(mesh_configuration_composition_data_message_test 156mesh_configuration_composition_data_message_test.cpp 157../../src/mesh/mesh_configuration_client.c 158) 159target_link_libraries(mesh_configuration_composition_data_message_test btstack) 160