## ## ______ _ ## / _____) _ | | ## ( (____ _____ ____ _| |_ _____ ____| |__ ## \____ \| ___ | (_ _) ___ |/ ___) _ \ ## _____) ) ____| | | || |_| ____( (___| | | | ## (______/|_____)_|_|_| \__)_____)\____)_| |_| ## (C)2013-2017 Semtech ## ___ _____ _ ___ _ _____ ___ ___ ___ ___ ## / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| ## \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| ## |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| ## embedded.connectivity.solutions.============== ## ## License: Revised BSD License, see LICENSE.TXT file included in the project ## Authors: Johannes Bruder (STACKFORCE), Miguel Luis (Semtech) ## project(lora-mac) cmake_minimum_required(VERSION 3.6) #--------------------------------------------------------------------------------------- # Options #--------------------------------------------------------------------------------------- # Allow switching of target platform set(BOARD_LIST NAMote72 NucleoL073 NucleoL152 NucleoL476 SAMR34 SKiM880B SKiM980A SKiM881AXL B-L072Z-LRWAN1) set(BOARD NucleoL073 CACHE STRING "Default target platform is NucleoL073") set_property(CACHE BOARD PROPERTY STRINGS ${BOARD_LIST}) # Allow switching of MBED shields set(MBED_RADIO_SHIELD_LIST SX1272MB2DAS SX1276MB1LAS SX1276MB1MAS SX1261MBXBAS SX1262MBXCAS SX1262MBXDAS ) set(MBED_RADIO_SHIELD SX1261MBXBAS CACHE STRING "Default MBED radio shield is SX1261MBXBAS") set_property(CACHE MBED_RADIO_SHIELD PROPERTY STRINGS ${MBED_RADIO_SHIELD_LIST}) # Allow switching of secure-elements set(SECURE_ELEMENT_LIST SOFT_SE LR1110_SE) set(SECURE_ELEMENT SOFT_SE CACHE STRING "Default secure element is SOFT_SE") set_property(CACHE SECURE_ELEMENT PROPERTY STRINGS ${SECURE_ELEMENT_LIST}) # Allow switching of Applications set(APPLICATION_LIST LoRaMac ping-pong rx-sensi tx-cw ) set(APPLICATION LoRaMac CACHE STRING "Default Application is LoRaMac") set_property(CACHE APPLICATION PROPERTY STRINGS ${APPLICATION_LIST}) # Switch for USB-Uart support, enable it for some Applications who needs it. option(USE_USB_CDC "Use USB-Uart" OFF) # Switch for debugger support. option(USE_DEBUGGER "Use Debugger" ON) # Switch for Class B support of LoRaMac. option(CLASSB_ENABLED "Class B support of LoRaMac" OFF) #--------------------------------------------------------------------------------------- # Target Boards #--------------------------------------------------------------------------------------- if(BOARD STREQUAL NAMote72) # Configure toolchain for NAMote72 set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/boards/NAMote72/cmsis/arm-gcc/stm32l152xc_flash.ld) include(stm32l1) # Build platform specific board implementation add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/boards/NAMote72) # Configure radio set(RADIO sx1272 CACHE INTERNAL "Radio sx1272 selected") elseif(BOARD STREQUAL NucleoL073) # Configure toolchain for NucleoL073 set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/boards/NucleoL073/cmsis/arm-gcc/stm32l073xx_flash.ld) include(stm32l0) # Build platform specific board implementation add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/boards/NucleoL073) # Configure radio if(MBED_RADIO_SHIELD STREQUAL SX1272MB2DAS) set(RADIO sx1272 CACHE INTERNAL "Radio sx1272 selected") elseif(MBED_RADIO_SHIELD STREQUAL SX1276MB1LAS OR MBED_RADIO_SHIELD STREQUAL SX1276MB1MAS) set(RADIO sx1276 CACHE INTERNAL "Radio sx1276 selected") elseif(MBED_RADIO_SHIELD STREQUAL SX1261MBXBAS OR MBED_RADIO_SHIELD STREQUAL SX1262MBXCAS OR MBED_RADIO_SHIELD STREQUAL SX1262MBXDAS) set(RADIO sx126x CACHE INTERNAL "Radio sx126x selected") elseif(MBED_RADIO_SHIELD STREQUAL LR1110MB1XXS) set(RADIO lr1110 CACHE INTERNAL "Radio lr1110 selected") else() message(STATUS "Please specify the MBED_RADIO_SHIELD!\nPossible values are: SX1272MB2DAS, SX1276MB1LAS, SX1276MB1MAS, SX1261MBXBAS, SX1262MBXCAS, SX1262MBXDAS and LR1110MB1XXS.") endif() elseif(BOARD STREQUAL NucleoL152) # Configure toolchain for NucleoL152 set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/boards/NucleoL152/cmsis/arm-gcc/stm32l152xe_flash.ld) include(stm32l1) # Build platform specific board implementation add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/boards/NucleoL152) # Configure radio if(MBED_RADIO_SHIELD STREQUAL SX1272MB2DAS) set(RADIO sx1272 CACHE INTERNAL "Radio sx1272 selected") elseif(MBED_RADIO_SHIELD STREQUAL SX1276MB1LAS OR MBED_RADIO_SHIELD STREQUAL SX1276MB1MAS) set(RADIO sx1276 CACHE INTERNAL "Radio sx1276 selected") elseif(MBED_RADIO_SHIELD STREQUAL SX1261MBXBAS OR MBED_RADIO_SHIELD STREQUAL SX1262MBXCAS OR MBED_RADIO_SHIELD STREQUAL SX1262MBXDAS) set(RADIO sx126x CACHE INTERNAL "Radio sx126x selected") elseif(MBED_RADIO_SHIELD STREQUAL LR1110MB1XXS) set(RADIO lr1110 CACHE INTERNAL "Radio lr1110 selected") else() message(STATUS "Please specify the MBED_RADIO_SHIELD!\nPossible values are: SX1272MB2DAS, SX1276MB1LAS, SX1276MB1MAS, SX1261MBXBAS, SX1262MBXCAS, SX1262MBXDAS and LR1110MB1XXS.") endif() elseif(BOARD STREQUAL NucleoL476) # Configure toolchain for NucleoL476 set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/boards/NucleoL476/cmsis/arm-gcc/stm32l476rgtx_flash.ld) include(stm32l4) # Build platform specific board implementation add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/boards/NucleoL476) # Configure radio if(MBED_RADIO_SHIELD STREQUAL SX1272MB2DAS) set(RADIO sx1272 CACHE INTERNAL "Radio sx1272 selected") elseif(MBED_RADIO_SHIELD STREQUAL SX1276MB1LAS OR MBED_RADIO_SHIELD STREQUAL SX1276MB1MAS) set(RADIO sx1276 CACHE INTERNAL "Radio sx1276 selected") elseif(MBED_RADIO_SHIELD STREQUAL SX1261MBXBAS OR MBED_RADIO_SHIELD STREQUAL SX1262MBXCAS OR MBED_RADIO_SHIELD STREQUAL SX1262MBXDAS) set(RADIO sx126x CACHE INTERNAL "Radio sx126x selected") elseif(MBED_RADIO_SHIELD STREQUAL LR1110MB1XXS) set(RADIO lr1110 CACHE INTERNAL "Radio lr1110 selected") else() message(STATUS "Please specify the MBED_RADIO_SHIELD!\nPossible values are: SX1272MB2DAS, SX1276MB1LAS, SX1276MB1MAS, SX1261MBXBAS, SX1262MBXCAS, SX1262MBXDAS and LR1110MB1XXS.") endif() elseif(BOARD STREQUAL SAMR34) # Configure toolchain for SAMR34 set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/boards/mcu/saml21/saml21b/gcc/gcc/saml21j18b_flash.ld) include(samr34) # Build platform specific board implementation add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/boards/SAMR34) # Configure radio set(RADIO sx1276 CACHE INTERNAL "Radio sx1276 selected") elseif(BOARD STREQUAL SKiM880B) # Configure toolchain for SKiM881AXL set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/boards/SKiM880B/cmsis/arm-gcc/stm32l151xba_flash.ld) include(stm32l1) # Build platform specific board implementation add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/boards/SKiM880B) # Configure radio set(RADIO sx1272 CACHE INTERNAL "Radio sx1272 selected") elseif(BOARD STREQUAL SKiM980A) # Configure toolchain for SKiM881AXL set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/boards/SKiM980A/cmsis/arm-gcc/stm32l151xba_flash.ld) include(stm32l1) # Build platform specific board implementation add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/boards/SKiM980A) # Configure radio set(RADIO sx1272 CACHE INTERNAL "Radio sx1272 selected") elseif(BOARD STREQUAL SKiM881AXL) # Configure toolchain for SKiM881AXL set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/boards/SKiM881AXL/cmsis/arm-gcc/stm32l081xx_flash.ld) include(stm32l0) # Build platform specific board implementation add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/boards/SKiM881AXL) # Configure radio set(RADIO sx1272 CACHE INTERNAL "Radio sx1272 selected") elseif(BOARD STREQUAL B-L072Z-LRWAN1) # Configure toolchain for B-L072Z-LRWAN1 set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/boards/B-L072Z-LRWAN1/cmsis/arm-gcc/stm32l072xx_flash.ld) include(stm32l0) # Build platform specific board implementation add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/boards/B-L072Z-LRWAN1) # Configure radio set(RADIO sx1276 CACHE INTERNAL "Radio sx1276 selected") endif() #--------------------------------------------------------------------------------------- # General Components #--------------------------------------------------------------------------------------- add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/boards) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/radio) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/system) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/mac) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/peripherals) #--------------------------------------------------------------------------------------- # Applications #--------------------------------------------------------------------------------------- if(APPLICATION STREQUAL LoRaMac) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/apps/LoRaMac) elseif(APPLICATION STREQUAL ping-pong) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/apps/ping-pong) elseif(APPLICATION STREQUAL rx-sensi) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/apps/rx-sensi) elseif(APPLICATION STREQUAL tx-cw) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/apps/tx-cw) endif()