CMAKE_MINIMUM_REQUIRED(VERSION 3.10) SET(CMAKE_SYSTEM_NAME Generic) SET(CMAKE_SYSTEM_PROCESSOR cortex-m7) #SET(CMAKE_VERBOSE_MAKEFILE ON) SET(CMAKE_EXPORT_COMPILE_COMMANDS ON) SET(CMAKE_C_COMPILER "C:/tool/rtthread/env-windows/tools/bin/../../tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-gcc.exe") SET(CMAKE_ASM_COMPILER "C:/tool/rtthread/env-windows/tools/bin/../../tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-gcc.exe") SET(CMAKE_C_FLAGS " -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g -std=c99") SET(CMAKE_ASM_FLAGS " -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -x assembler-with-cpp -Wa,-mimplicit-it=thumb -gdwarf-2") SET(CMAKE_C_COMPILER_WORKS TRUE) SET(CMAKE_CXX_COMPILER "C:/tool/rtthread/env-windows/tools/bin/../../tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-g++.exe") SET(CMAKE_CXX_FLAGS " -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Dgcc -O0 -gdwarf-2 -g -fno-exceptions -fno-rtti -ffunction-sections -fdata-sections -Wl,--gc-sections") SET(CMAKE_CXX_COMPILER_WORKS TRUE) SET(CMAKE_OBJCOPY "C:/tool/rtthread/env-windows/tools/bin/../../tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-objcopy.exe") SET(CMAKE_SIZE "C:/tool/rtthread/env-windows/tools/bin/../../tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-size.exe") SET(CMAKE_EXE_LINKER_FLAGS " -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T ${CMAKE_SOURCE_DIR}/board/linker_scripts/link.lds -Wl,--gc-sections,--print-memory-usage") SET(CMAKE_C_STANDARD 99) SET(CMAKE_CXX_STANDARD 17) PROJECT(rtthread C CXX ASM) INCLUDE_DIRECTORIES( . applications applications/erpc applications/erpc/service applications/erpc/client applications/erpc/proto/generated board board/CubeMX_Config/Inc libraries/HAL_Drivers/CMSIS/Include packages/erpc-1.14.0/erpc_c packages/erpc-1.14.0/erpc_c/config packages/erpc-1.14.0/erpc_c/infra packages/erpc-1.14.0/erpc_c/port packages/erpc-1.14.0/erpc_c/setup packages/erpc-1.14.0/erpc_c/transports rt-thread/include rt-thread/libcpu/arm/common rt-thread/libcpu/arm/cortex-m7 rt-thread/components/drivers/include rt-thread/components/drivers/ktime rt-thread/components/drivers/ktime/inc rt-thread/components/drivers/phy rt-thread/components/drivers/smp_call rt-thread/components/drivers/spi rt-thread/components/finsh rt-thread/components/libc/compilers/common/include rt-thread/components/libc/compilers/newlib rt-thread/components/libc/cplusplus rt-thread/components/libc/posix/delay rt-thread/components/libc/posix/io/epoll rt-thread/components/libc/posix/io/eventfd rt-thread/components/libc/posix/io/poll rt-thread/components/libc/posix/ipc rt-thread/components/libc/posix/pthreads rt-thread/components/libc/posix/tls rt-thread/components/net/utest libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Inc libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Include libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Inc/Legacy libraries/HAL_Drivers/drivers libraries/HAL_Drivers/drivers/config libraries/HAL_Drivers ) ADD_DEFINITIONS( -DSTM32H750xx -D__RTTHREAD__ -DRT_USING_NEWLIBC -DRT_USING_LIBC -D_POSIX_C_SOURCE=1 -DUSE_HAL_DRIVER ) # Library source files SET(RT_APP_ERPC_SOURCES applications/erpc/client/src/erpc_client_main.cpp applications/erpc/proto/generated/head_service_server.cpp applications/erpc/proto/generated/head_service_client.cpp applications/erpc/service/src/head_service_impl.cpp applications/erpc/service/src/erpc_server_main.cpp applications/erpc/proto/generated/head_service_interface.cpp ) SET(RT_APPLICATIONS_SOURCES applications/servo.c applications/main.c ) SET(RT_COMPILER_SOURCES rt-thread/components/libc/compilers/common/cctype.c rt-thread/components/libc/compilers/common/cstdlib.c rt-thread/components/libc/compilers/common/cstring.c rt-thread/components/libc/compilers/common/ctime.c rt-thread/components/libc/compilers/common/cunistd.c rt-thread/components/libc/compilers/common/cwchar.c rt-thread/components/libc/compilers/newlib/syscalls.c ) SET(RT_CPP_SOURCES rt-thread/components/libc/cplusplus/cxx_crt_init.c rt-thread/components/libc/cplusplus/cxx_crt.cpp ) SET(RT_DEVICEDRIVERS_SOURCES rt-thread/components/drivers/core/device.c rt-thread/components/drivers/ipc/completion_comm.c rt-thread/components/drivers/ipc/completion_up.c rt-thread/components/drivers/ipc/condvar.c rt-thread/components/drivers/ipc/dataqueue.c rt-thread/components/drivers/ipc/pipe.c rt-thread/components/drivers/ipc/ringblk_buf.c rt-thread/components/drivers/ipc/ringbuffer.c rt-thread/components/drivers/ipc/waitqueue.c rt-thread/components/drivers/ipc/workqueue.c rt-thread/components/drivers/pin/dev_pin.c rt-thread/components/drivers/serial/dev_serial.c rt-thread/components/drivers/spi/dev_spi.c rt-thread/components/drivers/spi/dev_spi_core.c ) SET(RT_DRIVERS_SOURCES board/CubeMX_Config/Src/stm32h7xx_hal_msp.c board/board.c board/ports/qspi_flash_init.c libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Source/Templates/gcc/startup_stm32h750xx.s libraries/HAL_Drivers/drivers/drv_gpio.c libraries/HAL_Drivers/drivers/drv_spi.c libraries/HAL_Drivers/drivers/drv_usart.c libraries/HAL_Drivers/drv_common.c ) SET(RT_ERPC_SOURCES packages/erpc-1.14.0/erpc_c/setup/erpc_client_setup.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_pre_post_action.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_crc16.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_server.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_message_buffer.cpp packages/erpc-1.14.0/erpc_c/setup/erpc_arbitrated_client_setup.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_transport_arbitrator.cpp packages/erpc-1.14.0/erpc_c/setup/erpc_server_setup.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_message_loggers.cpp packages/erpc-1.14.0/erpc_c/setup/erpc_setup_mbf_static.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_basic_codec.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_arbitrated_client_manager.cpp packages/erpc-1.14.0/erpc_c/setup/erpc_setup_uart_cmsis.cpp packages/erpc-1.14.0/erpc_c/setup/erpc_setup_mbf_dynamic.cpp packages/erpc-1.14.0/erpc_c/transports/erpc_uart_cmsis_transport.cpp packages/erpc-1.14.0/erpc_c/port/erpc_threading_pthreads.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_simple_server.cpp packages/erpc-1.14.0/erpc_c/transports/erpc_inter_thread_buffer_transport.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_framed_transport.cpp packages/erpc-1.14.0/erpc_c/infra/erpc_client_manager.cpp ) SET(RT_FINSH_SOURCES rt-thread/components/finsh/shell.c rt-thread/components/finsh/cmd.c rt-thread/components/finsh/msh.c rt-thread/components/finsh/msh_parse.c ) SET(RT_KERNEL_SOURCES rt-thread/src/clock.c rt-thread/src/components.c rt-thread/src/cpu_up.c rt-thread/src/defunct.c rt-thread/src/idle.c rt-thread/src/ipc.c rt-thread/src/irq.c rt-thread/src/kservice.c rt-thread/src/mem.c rt-thread/src/mempool.c rt-thread/src/object.c rt-thread/src/scheduler_comm.c rt-thread/src/scheduler_up.c rt-thread/src/thread.c rt-thread/src/timer.c ) SET(RT_KLIBC_SOURCES rt-thread/src/klibc/kerrno.c rt-thread/src/klibc/rt_vsnprintf_tiny.c rt-thread/src/klibc/rt_vsscanf.c rt-thread/src/klibc/kstdio.c rt-thread/src/klibc/kstring.c ) SET(RT_KTIME_SOURCES rt-thread/components/drivers/ktime/src/cputimer.c rt-thread/components/drivers/ktime/src/hrtimer.c rt-thread/components/drivers/ktime/src/boottime.c ) SET(RT_LIBCPU_SOURCES rt-thread/libcpu/arm/common/atomic_arm.c rt-thread/libcpu/arm/common/div0.c rt-thread/libcpu/arm/common/showmem.c rt-thread/libcpu/arm/cortex-m7/context_gcc.S rt-thread/libcpu/arm/cortex-m7/cpu_cache.c rt-thread/libcpu/arm/cortex-m7/cpuport.c ) SET(RT_LIBRARIES_SOURCES libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sram.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rng.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_comp.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cryp.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cryp_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c libraries/STM32H7xx_HAL/CMSIS/Device/ST/STM32H7xx/Source/Templates/system_stm32h7xx.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cec.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c libraries/STM32H7xx_HAL/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_usart.c ) SET(RT_POSIX_SOURCES rt-thread/components/libc/posix/delay/delay.c rt-thread/components/libc/posix/pthreads/pthread.c rt-thread/components/libc/posix/pthreads/pthread_attr.c rt-thread/components/libc/posix/pthreads/pthread_barrier.c rt-thread/components/libc/posix/pthreads/pthread_cond.c rt-thread/components/libc/posix/pthreads/pthread_mutex.c rt-thread/components/libc/posix/pthreads/pthread_rwlock.c rt-thread/components/libc/posix/pthreads/pthread_spin.c rt-thread/components/libc/posix/pthreads/pthread_tls.c rt-thread/components/libc/posix/pthreads/sched.c rt-thread/components/libc/posix/tls/emutls.c ) SET(RT_UTC_UTEST_SOURCES ) SET(RT_UTESTCASES_SOURCES ) # Library search paths # Library local macro definitions SET(RT_DEVICEDRIVERS_DEFINES __RT_IPC_SOURCE__ ) SET(RT_KERNEL_DEFINES __RT_KERNEL_SOURCE__ ) # Library dependencies SET(RT_COMPILER_LIBS c m ) # Libraries ADD_LIBRARY(rtt_app_erpc OBJECT ${RT_APP_ERPC_SOURCES}) ADD_LIBRARY(rtt_Compiler OBJECT ${RT_COMPILER_SOURCES}) ADD_LIBRARY(rtt_CPP OBJECT ${RT_CPP_SOURCES}) ADD_LIBRARY(rtt_DeviceDrivers OBJECT ${RT_DEVICEDRIVERS_SOURCES}) ADD_LIBRARY(rtt_Drivers OBJECT ${RT_DRIVERS_SOURCES}) ADD_LIBRARY(rtt_erpc OBJECT ${RT_ERPC_SOURCES}) ADD_LIBRARY(rtt_Finsh OBJECT ${RT_FINSH_SOURCES}) ADD_LIBRARY(rtt_Kernel OBJECT ${RT_KERNEL_SOURCES}) ADD_LIBRARY(rtt_klibc OBJECT ${RT_KLIBC_SOURCES}) ADD_LIBRARY(rtt_ktime OBJECT ${RT_KTIME_SOURCES}) ADD_LIBRARY(rtt_libcpu OBJECT ${RT_LIBCPU_SOURCES}) ADD_LIBRARY(rtt_Libraries OBJECT ${RT_LIBRARIES_SOURCES}) ADD_LIBRARY(rtt_POSIX OBJECT ${RT_POSIX_SOURCES}) # Interface libraries ADD_LIBRARY(rtt_utc_UTest INTERFACE) ADD_LIBRARY(rtt_utestcases INTERFACE) # Private macros TARGET_COMPILE_DEFINITIONS(rtt_DeviceDrivers PRIVATE ${RT_DEVICEDRIVERS_DEFINES}) TARGET_COMPILE_DEFINITIONS(rtt_Kernel PRIVATE ${RT_KERNEL_DEFINES}) # Interface library search paths TARGET_LINK_LIBRARIES(rtt_Compiler INTERFACE ${RT_COMPILER_LIBS}) ADD_EXECUTABLE(${CMAKE_PROJECT_NAME}.elf ${RT_APPLICATIONS_SOURCES}) TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME}.elf rtt_app_erpc rtt_Compiler rtt_CPP rtt_DeviceDrivers rtt_Drivers rtt_erpc rtt_Finsh rtt_Kernel rtt_klibc rtt_ktime rtt_libcpu rtt_Libraries rtt_POSIX rtt_utc_UTest rtt_utestcases ) ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME}.elf POST_BUILD COMMAND ${CMAKE_OBJCOPY} -O binary ${CMAKE_PROJECT_NAME}.elf rtthread.bin COMMAND ${CMAKE_SIZE} ${CMAKE_PROJECT_NAME}.elf ) # if custom.cmake is exist, add it if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/custom.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/custom.cmake) endif()