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