mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-06 12:39:51 +00:00
209 lines
6.5 KiB
CMake
209 lines
6.5 KiB
CMake
# CMakeLists.txt for BTstack EK-RA6M4 + DA14531 port
|
|
|
|
cmake_minimum_required (VERSION 3.5)
|
|
|
|
SET(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
# select arm-non-eabi toolchain
|
|
include (cmake/arm-none-eabi.cmake)
|
|
|
|
# Project
|
|
project(BTstack-ra6m4-da14531)
|
|
|
|
# BTstack root
|
|
SET(BTSTACK_ROOT ${CMAKE_SOURCE_DIR}/../..)
|
|
|
|
# Linker script
|
|
set(LINKER_SCRIPT "fsp.ld")
|
|
|
|
# CPU OPTIONS
|
|
set(CPU_OPTIONS
|
|
-mcpu=cortex-m33
|
|
-mthumb
|
|
-mfloat-abi=hard
|
|
-mfpu=fpv5-sp-d16
|
|
-g
|
|
)
|
|
|
|
# Other Compile options from e2-studio debug/Makefile
|
|
add_compile_options(
|
|
${CPU_OPTIONS}
|
|
-Og
|
|
-g
|
|
-fmessage-length=0
|
|
-fsigned-char
|
|
-ffunction-sections
|
|
-fdata-sections
|
|
# -Wunused
|
|
-Wuninitialized
|
|
-Wall
|
|
-Wextra
|
|
-Wmissing-declarations
|
|
# -Wconversion
|
|
-Wpointer-arith
|
|
-Wshadow
|
|
-Wlogical-op
|
|
-Waggregate-return
|
|
-Wfloat-equal
|
|
--specs=nano.specs
|
|
--specs=rdimon.specs
|
|
)
|
|
|
|
# E2 project headers and sources
|
|
include_directories(
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/arm/CMSIS_5/CMSIS/Core/Include/
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/inc
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/inc/api
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/inc/instances/
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra_cfg/fsp_cfg
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra_cfg/fsp_cfg/bsp
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra_gen
|
|
${CMAKE_SOURCE_DIR}/port
|
|
)
|
|
|
|
set (E2_SOURCES
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/board/ra6m4_ek/board_init.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/board/ra6m4_ek/board_leds.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/mcu/all/bsp_clocks.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/mcu/all/bsp_common.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/mcu/all/bsp_delay.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/mcu/all/bsp_guard.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/mcu/all/bsp_io.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/mcu/all/bsp_irq.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/bsp/mcu/all/bsp_security.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/r_dtc/r_dtc.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/r_flash_hp/r_flash_hp.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/r_gpt/r_gpt.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/r_ioport/r_ioport.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra/fsp/src/r_sci_uart/r_sci_uart.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra_gen/common_data.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra_gen/hal_data.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra_gen/main.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra_gen/pin_data.c
|
|
${CMAKE_SOURCE_DIR}/e2-project/ra_gen/vector_data.c
|
|
)
|
|
|
|
# BTstack headers and includes
|
|
|
|
# local dir for btstack_config.h after build dir to avoid using .h from Makefile
|
|
include_directories(
|
|
${BTSTACK_ROOT}/3rd-party/micro-ecc
|
|
${BTSTACK_ROOT}/3rd-party/segger-rtt
|
|
${BTSTACK_ROOT}/3rd-party/hxcmod-player
|
|
${BTSTACK_ROOT}/3rd-party/hxcmod-player/mod
|
|
${BTSTACK_ROOT}/3rd-party/rijndael
|
|
${BTSTACK_ROOT}/src
|
|
${BTSTACK_ROOT}/platform/embedded
|
|
.
|
|
)
|
|
|
|
# to generate .h from .gatt files
|
|
find_package (Python REQUIRED COMPONENTS Interpreter)
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
file(GLOB SOURCES_SRC "${BTSTACK_ROOT}/src/*.c")
|
|
file(GLOB SOURCES_BLE "${BTSTACK_ROOT}/src/ble/*.c")
|
|
file(GLOB SOURCES_GATT "${BTSTACK_ROOT}/src/ble/gatt-service/*.c")
|
|
file(GLOB SOURCES_SEGGER_RTT "${BTSTACK_ROOT}/3rd-party/segger-rtt/*.c")
|
|
file(GLOB SOURCES_UECC "${BTSTACK_ROOT}/3rd-party/micro-ecc/uECC.c")
|
|
file(GLOB SOURCES_RIJNDAEL "${BTSTACK_ROOT}/3rd-party/rijndael/rijndael.c")
|
|
file(GLOB SOURCES_EMBEDDED "${BTSTACK_ROOT}/platform/embedded/*.c")
|
|
|
|
file(GLOB SOURCES_EMBEDDED_OFF ${BTSTACK_ROOT}/platform/embedded/btstack_em9304_spi_embedded.c)
|
|
list(REMOVE_ITEM SOURCES_EMBEDDED ${SOURCES_EMBEDDED_OFF})
|
|
file(GLOB SOURCES_BLE_OFF ${BTSTACK_ROOT}/src/ble/le_device_db_memory.c ${BTSTACK_ROOT}/src/ble/att_db_util.c)
|
|
list(REMOVE_ITEM SOURCES_BLE ${SOURCES_BLE_OFF})
|
|
file(GLOB SOURCES_SRC_OFF ${BTSTACK_ROOT}/src/btstack_lc3_google.c ${BTSTACK_ROOT}/btstack_tlv_none.c)
|
|
list(REMOVE_ITEM SOURCES_SRC ${SOURCES_SRC_OFF})
|
|
|
|
set(BTSTACK_SOURCES
|
|
${SOURCES_RIJNDAEL}
|
|
${SOURCES_EMBEDDED}
|
|
${SOURCES_SRC}
|
|
${SOURCES_BLE}
|
|
${SOURCES_GATT}
|
|
${SOURCES_UECC}
|
|
${SOURCES_SEGGER_RTT}
|
|
)
|
|
|
|
set (SOURCES
|
|
${BTSTACK_SOURCES}
|
|
${CMAKE_SOURCE_DIR}/port/hal_entry.c
|
|
${CMAKE_SOURCE_DIR}/port/hal_flash_bank_fsp.c
|
|
)
|
|
|
|
# create static lib
|
|
add_library(btstack STATIC ${SOURCES})
|
|
|
|
# create target with gatt file, use "NONE"
|
|
function(create_target EXAMPLE EXAMPLE_PATH GATT_PATH)
|
|
if (${GATT_PATH} STREQUAL "NONE")
|
|
message("example ${EXAMPLE}")
|
|
else()
|
|
message("example ${EXAMPLE} -- with GATT DB")
|
|
add_custom_command(
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h
|
|
DEPENDS ${GATT_PATH}
|
|
COMMAND ${Python_EXECUTABLE}
|
|
ARGS ${BTSTACK_ROOT}/tool/compile_gatt.py ${GATT_PATH} ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h
|
|
)
|
|
list(APPEND SOURCES_EXAMPLE ${CMAKE_CURRENT_BINARY_DIR}/${EXAMPLE}.h)
|
|
endif()
|
|
|
|
# create ozone project
|
|
configure_file(ozone.jdebug.in ${EXAMPLE}.jdebug)
|
|
|
|
add_executable(${EXAMPLE}
|
|
${E2_SOURCES}
|
|
${SOURCES_EXAMPLE}
|
|
)
|
|
|
|
target_link_libraries(${EXAMPLE}
|
|
${CPU_OPTIONS}
|
|
-L"${CMAKE_SOURCE_DIR}/e2-project/script"
|
|
-L"${CMAKE_SOURCE_DIR}"
|
|
-T${LINKER_SCRIPT}
|
|
-nostartfiles
|
|
m
|
|
-nostdlib
|
|
btstack
|
|
)
|
|
|
|
set_property(TARGET ${EXAMPLE} PROPERTY LINK_DEPENDS ${CMAKE_SOURCE_DIR}/memory_regions.ld)
|
|
set_property(TARGET ${EXAMPLE} PROPERTY LINK_DEPENDS ${CMAKE_SOURCE_DIR}/e2-project/script/${LINKER_SCRIPT})
|
|
|
|
endfunction()
|
|
|
|
# get list of examples, skipping some
|
|
include(${BTSTACK_ROOT}/example/CMakeLists.txt)
|
|
set (EXAMPLES ${EXAMPLES_GENERAL} ${EXAMPLES_LE_ONLY})
|
|
list(REMOVE_DUPLICATES EXAMPLES)
|
|
list(REMOVE_ITEM EXAMPLES mesh_node_demo mod_player sinus_player audio_duplex)
|
|
|
|
# create examples
|
|
foreach(EXAMPLE ${EXAMPLES})
|
|
# select c file
|
|
set (SOURCES_EXAMPLE ${BTSTACK_ROOT}/example/${EXAMPLE}.c)
|
|
|
|
# select GATT DB if it exists
|
|
if ( "${EXAMPLES_GATT_FILES}" MATCHES ${EXAMPLE} )
|
|
set(GATT_PATH ${BTSTACK_ROOT}/example/${EXAMPLE}.gatt)
|
|
else()
|
|
set(GATT_PATH "NONE")
|
|
endif()
|
|
|
|
# create example
|
|
create_target(${EXAMPLE} ${SOURCES_EXAMPLE} "NONE")
|
|
endforeach()
|
|
|
|
# create gatt_rgb example
|
|
create_target(gatt_rgb ${CMAKE_SOURCE_DIR}/example/gatt_rgb.c ${CMAKE_SOURCE_DIR}/example/gatt_rgb.gatt)
|
|
|
|
|