2023-03-18 22:47:05 +01:00

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)