1cmake_minimum_required (VERSION 3.12) 2project(BTstack-LE-Audio) 3set (CMAKE_CXX_STANDARD 11) 4 5 6# enable optional features 7add_compile_definitions(ENABLE_TESTING_SUPPORT) 8 9# to find generated .h from .gatt files 10include_directories(${CMAKE_CURRENT_BINARY_DIR}) 11 12# local dir for btstack_config.h after build dir to avoid using .h from Makefile 13include_directories(include) 14 15include_directories(../../3rd-party/micro-ecc) 16include_directories(../../3rd-party/bluedroid/decoder/include) 17include_directories(../../3rd-party/bluedroid/encoder/include) 18include_directories(../../3rd-party/md5) 19include_directories(../../3rd-party/hxcmod-player) 20include_directories(../../3rd-party/hxcmod-player/mod) 21include_directories(../../3rd-party/lc3-google/include) 22include_directories(../../3rd-party/lwip/core/src/include) 23include_directories(../../3rd-party/lwip/dhcp-server) 24include_directories(../../3rd-party/rijndael) 25include_directories(../../3rd-party/yxml) 26include_directories(../../3rd-party/tinydir) 27include_directories(../../src) 28include_directories(../../example) 29include_directories(../../chipset/zephyr) 30include_directories(../../chipset/bcm) 31include_directories(../../platform/posix) 32include_directories(../../platform/embedded) 33include_directories(../../platform/lwip) 34include_directories(../../platform/lwip/port) 35 36file(GLOB SOURCES_SRC "../../src/*.c" "../../src/*.cpp" "../../example/sco_demo_util.c") 37file(GLOB SOURCES_BLE "../../src/ble/*.c") 38file(GLOB SOURCES_GATT "../../src/ble/gatt-service/*.c") 39file(GLOB SOURCES_CLASSIC "../../src/classic/*.c") 40file(GLOB SOURCES_LE_AUDIO "../../src/le-audio/*.c" "../../src/le-audio/gatt-service/*.c" "../../example/le_audio_demo_util_*".c) 41file(GLOB SOURCES_MESH "../../src/mesh/*.c") 42file(GLOB SOURCES_MD5 "../../3rd-party/md5/md5.c") 43file(GLOB SOURCES_UECC "../../3rd-party/micro-ecc/uECC.c") 44file(GLOB SOURCES_YXML "../../3rd-party/yxml/yxml.c") 45file(GLOB SOURCES_HXCMOD "../../3rd-party/hxcmod-player/*.c" "../../3rd-party/hxcmod-player/mods/*.c") 46file(GLOB SOURCES_RIJNDAEL "../../3rd-party/rijndael/rijndael.c") 47file(GLOB SOURCES_POSIX "../../platform/posix/*.c") 48file(GLOB SOURCES_MAIN main.c) 49file(GLOB SOURCES_ZEPHYR "../../chipset/zephyr/*.c") 50file(GLOB SOURCES_BCM "../../chipset/bcm/*.c") 51file(GLOB SOURCES_LC3_GOOGLE "../../3rd-party/lc3-google/src/*.c") 52 53file(GLOB SOURCES_BLE_OFF "../../src/ble/le_device_db_memory.c") 54list(REMOVE_ITEM SOURCES_BLE ${SOURCES_BLE_OFF}) 55 56file(GLOB SOURCES_POSIX_OFF "../../platform/posix/le_device_db_fs.c") 57list(REMOVE_ITEM SOURCES_POSIX ${SOURCES_POSIX_OFF}) 58 59set(SOURCES 60 ${SOURCES_MD5} 61 ${SOURCES_YXML} 62 ${SOURCES_LC3_GOOGLE} 63 ${SOURCES_POSIX} 64 ${SOURCES_MAIN} 65 ${SOURCES_RIJNDAEL} 66 ${SOURCES_SRC} 67 ${SOURCES_BLE} 68 ${SOURCES_GATT} 69 ${SOURCES_LE_AUDIO} 70 ${SOURCES_MESH} 71 ${SOURCES_CLASSIC} 72 ${SOURCES_UECC} 73 ${SOURCES_HXCMOD} 74 ${SOURCES_ZEPHYR} 75 ${SOURCES_BCM} 76) 77list(SORT SOURCES) 78 79# create static lib 80add_library(btstack STATIC ${SOURCES}) 81 82# find pkgconfig 83find_package(PkgConfig REQUIRED) 84 85# portaudio 86pkg_check_modules(PORTAUDIO portaudio-2.0) 87if(PORTAUDIO_FOUND) 88 include_directories(${PORTAUDIO_INCLUDE_DIRS}) 89 target_link_directories(btstack PUBLIC ${PORTAUDIO_LIBRARY_DIRS}) 90 target_link_libraries(btstack ${PORTAUDIO_LIBRARIES}) 91 add_compile_definitions(HAVE_PORTAUDIO) 92endif() 93 94# fdk-aac 95pkg_check_modules(FDK_AAC fdk-aac) 96if(FDK_AAC_FOUND) 97 message("HAVE_AAC_FDK") 98 include_directories(${FDK_AAC_INCLUDE_DIRS}) 99 target_link_directories(btstack PUBLIC ${FDK_AAC_LIBRARY_DIRS}) 100 target_link_libraries(btstack ${FDK_AAC_LIBRARIES}) 101 add_compile_definitions(HAVE_AAC_FDK) 102endif() 103 104# ldac encoder 105pkg_check_modules(LDAC_ENCODER ldacBT-enc) 106if (LDAC_ENCODER_FOUND) 107 message("HAVE_LDAC_ENCODER") 108 include_directories(${LDAC_ENCODER_INCLUDE_DIRS}) 109 target_link_directories(btstack PUBLIC ${LDAC_ENCODER_LIBRARY_DIRS}) 110 target_link_libraries(btstack ${LDAC_ENCODER_LIBRARIES}) 111 add_compile_definitions(HAVE_LDAC_ENCODER) 112endif() 113 114# ldac decoder 115pkg_check_modules(LDAC_DECODER libldacdec) 116if (LDAC_DECODER_FOUND) 117 message("HAVE_LDAC_DECODER") 118 include_directories(${LDAC_DECODER_INCLUDE_DIRS}) 119 target_link_directories(btstack PUBLIC ${LDAC_DECODER_LIBRARY_DIRS}) 120 target_link_libraries(btstack ${LDAC_DECODER_LIBRARIES}) 121 add_compile_definitions(HAVE_LDAC_DECODER) 122endif() 123 124# openaptx 125pkg_check_modules(APTX libopenaptx) 126if (APTX_FOUND) 127 message("HAVE_APTX") 128 include_directories(${APTX_INCLUDE_DIRS}) 129 target_link_directories(btstack PUBLIC ${APTX_LIBRARY_DIRS}) 130 target_link_libraries(btstack ${APTX_LIBRARIES}) 131 add_compile_definitions(HAVE_APTX) 132endif() 133 134# lc3plus 135pkg_check_modules(LC3PLUS LC3plus) 136if(LC3PLUS_FOUND) 137 message("HAVE_LC3PLUS") 138 include_directories(${LC3PLUS_INCLUDE_DIRS}) 139 target_link_directories(btstack PUBLIC ${LC3PLUS_LIBRARY_DIRS}) 140 target_link_libraries(btstack ${LC3PLUS_LIBRARIES}) 141 add_definitions(${LC3PLUS_CFLAGS}) 142 add_compile_definitions(HAVE_LC3PLUS) 143endif() 144 145# create targets for all examples 146file(GLOB EXAMPLES_C "le_audio_*.c" "lc3_*.c") 147list(SORT EXAMPLES_C) 148file(GLOB EXAMPLES_GATT "*.gatt") 149 150# create targets 151foreach(EXAMPLE_FILE ${EXAMPLES_C}) 152 get_filename_component(EXAMPLE ${EXAMPLE_FILE} NAME_WE) 153 set(SOURCE_FILES ${EXAMPLE_FILE}) 154 155 # add GATT DB creation 156 if ( "${EXAMPLES_GATT}" MATCHES ${EXAMPLE} ) 157 message("LE Audio Tool: ${EXAMPLE} -- with GATT DB") 158 add_custom_command( 159 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h 160 DEPENDS ${CMAKE_SOURCE_DIR}/${EXAMPLE}.gatt 161 COMMAND ${CMAKE_SOURCE_DIR}/../../tool/compile_gatt.py 162 ARGS ${CMAKE_SOURCE_DIR}/${EXAMPLE}.gatt ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h 163 ) 164 list(APPEND SOURCE_FILES ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h) 165 else() 166 message("LE Audio Tool: ${EXAMPLE}") 167 endif() 168 add_executable(${EXAMPLE} ${SOURCE_FILES} ) 169 target_link_libraries(${EXAMPLE} btstack m pthread) 170endforeach(EXAMPLE_FILE) 171