Files
TencentOS-tiny/examples/tos_meets_rust/CMakeLists.txt
2021-01-12 23:47:54 +08:00

164 lines
6.5 KiB
CMake

# Set minimum CMake version
cmake_minimum_required(VERSION 2.8.4)
if (NOT DEFINED ENV{TOS_SRC_ROOT})
message(FATAL_ERROR "You must set TOS_SRC_ROOT environment variable!")
endif()
# Optional verbose mode, uncomment or pass in -DCMAKE_VERBOSE_MAKEFILE=ON
set(CMAKE_VERBOSE_MAKEFILE ON)
set(TOS_SRC_ROOT $ENV{TOS_SRC_ROOT})
message(STATUS "Tencent OS source root: ${TOS_SRC_ROOT}.")
set(BOARD TencentOS_Tiny_EVB_G0)
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_AR arm-none-eabi-ar)
# Set universal poject root directory
set(ROOTDIR ${CMAKE_SOURCE_DIR})
# Set the compiler (must be prior to project setup)
include(${ROOTDIR}/toolchain/arm-gcc.cmake)
# Configure project and languages
project(mqtt_iot_explorer_tc_ch20_oled C CXX ASM)
# Set device
if (NOT DEVICE)
set(DEVICE STM32G070xx)
endif ()
# Set build
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE DEBUG)
endif ()
##### Modules #####
# Libraries can be added to the LIBS variable
# or manually included here.
# Add base libs (emlib, CMSIS, device files)
include(${ROOTDIR}/toolchain/stm32-base.cmake)
set(LINKER_SCRIPT ${ROOTDIR}/BSP/STM32G070RBTx_FLASH.ld)
# This is normally set in stm32-base.cmake, but libraries may modify it so set
# it after libraries/subdirectories have been added
# Enable float printing in stm32, see https://stackoverflow.com/questions/28334435/stm32-printf-float-variable
set(CMAKE_EXE_LINKER_FLAGS "${COMMON_DEFINITIONS} -u _printf_float -Xlinker -T${LINKER_SCRIPT} -Wl,-Map=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.map -Wl,--gc-sections -Wl,-v ")
##### Files #####
# Add project headers
include_directories(${TOS_SRC_ROOT}/kernel/core/include)
include_directories(${TOS_SRC_ROOT}/kernel/pm/include)
include_directories(${TOS_SRC_ROOT}/kernel/hal/include)
include_directories(${TOS_SRC_ROOT}/arch/arm/arm-v7m/common/include)
include_directories(${TOS_SRC_ROOT}/arch/arm/arm-v7m/cortex-m0+/gcc)
include_directories(${TOS_SRC_ROOT}/osal/cmsis_os)
include_directories(${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Inc)
include_directories(${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Inc/Legacy)
include_directories(${TOS_SRC_ROOT}/platform/vendor_bsp/st/CMSIS/Device/ST/STM32G0xx/Include)
include_directories(${TOS_SRC_ROOT}/platform/vendor_bsp/st/CMSIS/Include)
include_directories(${ROOTDIR}/inc)
include_directories(${ROOTDIR}/BSP/Inc)
include_directories(${ROOTDIR}/TOS_CONFIG)
include_directories(${TOS_SRC_ROOT}/net/at/include)
include_directories(${TOS_SRC_ROOT}/devices/esp8266_tencent_firmware)
include_directories(${TOS_SRC_ROOT}/net/tencent_firmware_module_wrapper)
include_directories(${ROOTDIR}/BSP/Hardware/CH20)
include_directories(${ROOTDIR}/BSP/Hardware/OLED)
include_directories(${ROOTDIR}/BSP/Hardware/PM2D5)
#AUX_SOURCE_DIRECTORY(${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32Fg0xx_HAL_Driver/Src/ SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${TOS_SRC_ROOT}/platform/hal/st/stm32g0xx/src/ SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${TOS_SRC_ROOT}/kernel/core/ SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${TOS_SRC_ROOT}/kernel/pm/ SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${TOS_SRC_ROOT}/arch/arm/arm-v7m/cortex-m0+/gcc/ SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${TOS_SRC_ROOT}/arch/arm/arm-v7m/common/ SOURCE_FILES)
#AUX_SOURCE_DIRECTORY(${TOS_SRC_ROOT}/osal/cmsis_os/ SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${ROOTDIR}/BSP/Src SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${TOS_SRC_ROOT}/net/at/src SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${TOS_SRC_ROOT}/devices/esp8266_tencent_firmware SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${TOS_SRC_ROOT}/net/tencent_firmware_module_wrapper SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${ROOTDIR}/BSP/Hardware/CH20 SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${ROOTDIR}/BSP/Hardware/OLED SOURCE_FILES)
AUX_SOURCE_DIRECTORY(${ROOTDIR}/BSP/Hardware/PM2D5 SOURCE_FILES)
# Generate executable and link
add_executable(${PROJECT_NAME}
${ROOTDIR}/BSP/startup_stm32g070xx.s
${TOS_SRC_ROOT}/arch/arm/arm-v7m/cortex-m0+/gcc/port_s.S
${TOS_SRC_ROOT}/osal/cmsis_os/cmsis_os.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_tim_ex.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rtc.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rtc_ex.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_flash_ex.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma_ex.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi_ex.c
${TOS_SRC_ROOT}/platform/vendor_bsp/st/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_adc.c
${SOURCE_FILES}
)
stm32_configure_linker_addresses(${PROJECT_NAME})
add_library(rustcore STATIC ${ROOTDIR}/libs/rustcore/stub.c)
add_library(rustapp STATIC ${ROOTDIR}/libs/rustapp/stub.c)
add_library(tosglue STATIC ${ROOTDIR}/tosglue.c)
target_link_libraries(${PROJECT_NAME} ${LIBS} c nosys rustcore rustapp)
# Link optional libraries if available
if (${HAS_HARDWARE})
target_link_libraries(${PROJECT_NAME} hardware)
endif ()
if (${HAS_PROTOCOL})
target_link_libraries(${PROJECT_NAME} protocol)
endif ()
##### Post build #####
# Add post build commands
include(${ROOTDIR}/toolchain/post-build.cmake)
# Add stlink commands
include(${ROOTDIR}/toolchain/stlink.cmake)
##### CMake debug prints #####
if (CMAKE_VERBOSE_MAKEFILE)
print_debug_info()
endif()