1 Star 6 Fork 6

freewear/FreewearDemo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
CMakeLists.txt 18.16 KB
一键复制 编辑 原始数据 按行查看 历史
liubingyan 提交于 2022-09-03 19:32 . ref |> first add files
# CMake minimum version
cmake_minimum_required (VERSION 3.1)
# ----------------------------------------------------------------------------------------------------------
# Project Infomation
project(freeWear)
enable_language(ASM)
# BOARD define
if ("${BOARD}" STREQUAL "simulator")
message(" ----> target borad : simulator")
add_definitions(-DSIMULATOR)
add_definitions(-DDEVICE_UBUNTU)
else ("${BOARD}" STREQUAL "freeWear")
add_definitions(-DfreeWear)
message(" ----> target borad : freeWear")
endif()
# ----------------------------------------------------------------------------------------------------------
# Reset output path
set (EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
set (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
# ----------------------------------------------------------------------------------------------------------
# Set include path
if ("${BOARD}" STREQUAL "simulator")
INCLUDE_DIRECTORIES (driver/log)
INCLUDE_DIRECTORIES (driver/rtc)
INCLUDE_DIRECTORIES (driver/display/simulator)
INCLUDE_DIRECTORIES (config)
INCLUDE_DIRECTORIES (config/simulator)
INCLUDE_DIRECTORIES (middleware/ams)
INCLUDE_DIRECTORIES (middleware/analyze-gpx/include/gpx)
INCLUDE_DIRECTORIES (middleware/analyze-gpx/include/track)
INCLUDE_DIRECTORIES (middleware/cmsis_rtos_v2)
INCLUDE_DIRECTORIES (middleware/freertos/FreeRTOS/Source/include)
INCLUDE_DIRECTORIES (middleware/freertos/FreeRTOS/Source/portable/ThirdParty/GCC/Posix)
INCLUDE_DIRECTORIES (middleware/freertos/FreeRTOS/Source/portable/ThirdParty/GCC/Posix/utils)
INCLUDE_DIRECTORIES (middleware/freertos/FreeRTOS-Plus/FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace/Include)
INCLUDE_DIRECTORIES (middleware/lvgl)
INCLUDE_DIRECTORIES (middleware/lvgl/lvgl/src/lv_core)
INCLUDE_DIRECTORIES (middleware/lvgl/lvgl/src/lv_draw)
INCLUDE_DIRECTORIES (middleware/lvgl/lvgl/src/lv_font)
INCLUDE_DIRECTORIES (middleware/lvgl/lvgl/src/lv_gpu)
INCLUDE_DIRECTORIES (middleware/lvgl/lvgl/src/lv_hal)
INCLUDE_DIRECTORIES (middleware/lvgl/lvgl/src/lv_misc)
INCLUDE_DIRECTORIES (middleware/lvgl/lvgl/src/lv_themes)
INCLUDE_DIRECTORIES (middleware/lvgl/lvgl/src/lv_widgets)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_drivers/display)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_drivers/indev)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_examples/src/lv_demo_keypad_encoder)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_examples/src/lv_demo_stress)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_examples/src/lv_ex_get_started)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_examples/src/lv_demo_music)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_examples/src/lv_demo_widgets)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_examples/src/lv_ex_style)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_examples/src/lv_demo_benchmark)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_examples/src/lv_demo_printer)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_examples/src/lv_ex_widgets)
INCLUDE_DIRECTORIES (middleware/lvgl/lv_lib_qrcode)
INCLUDE_DIRECTORIES (middleware/messager)
INCLUDE_DIRECTORIES (system/boot/simulator/inc)
INCLUDE_DIRECTORIES (system/signal_sync)
else ("${BOARD}" STREQUAL "freeWear")
INCLUDE_DIRECTORIES (driver/log)
INCLUDE_DIRECTORIES (driver/rtc)
INCLUDE_DIRECTORIES (driver/tft)
INCLUDE_DIRECTORIES (config)
INCLUDE_DIRECTORIES (config/stm32l475)
INCLUDE_DIRECTORIES (hal/stm32l4/Applications/WiFi/Common/Inc)
INCLUDE_DIRECTORIES (hal/stm32l4/BSP/Components/m24sr)
INCLUDE_DIRECTORIES (hal/stm32l4/BSP/B-L475E-IOT01)
INCLUDE_DIRECTORIES (hal/stm32l4/CMSIS/Device/ST/STM32L4xx/Include)
INCLUDE_DIRECTORIES (hal/stm32l4/CMSIS/Include)
INCLUDE_DIRECTORIES (hal/stm32l4/STM32L4xx_HAL_Driver/Inc)
INCLUDE_DIRECTORIES (hal/stm32l4/STM32L4xx_HAL_Driver/Inc/Legacy)
INCLUDE_DIRECTORIES (middleware/cmBacktrace/cm_backtrace)
INCLUDE_DIRECTORIES (middleware/cmsis_rtos_v2)
INCLUDE_DIRECTORIES (middleware/easyLogger/easylogger/inc)
INCLUDE_DIRECTORIES (middleware/freertos/FreeRTOS/Source/include)
INCLUDE_DIRECTORIES (middleware/freertos/FreeRTOS/Source/portable/GCC/ARM_CM4F)
INCLUDE_DIRECTORIES (middleware/messager)
INCLUDE_DIRECTORIES (system/boot/stm32l475/inc)
INCLUDE_DIRECTORIES (system/signal_sync)
endif()
# ----------------------------------------------------------------------------------------------------------
# The need build source path and build all files
if ("${BOARD}" STREQUAL "simulator")
aux_source_directory (driver/log DIR_PROJECT_SRCS)
aux_source_directory (driver/rtc DIR_PROJECT_SRCS)
aux_source_directory (driver/display/simulator DIR_PROJECT_SRCS)
aux_source_directory (middleware/ams DIR_PROJECT_SRCS)
aux_source_directory (middleware/analyze-gpx/src/gpx DIR_PROJECT_SRCS)
aux_source_directory (middleware/analyze-gpx/src/track DIR_PROJECT_SRCS)
aux_source_directory (middleware/cmsis_rtos_v2 DIR_PROJECT_SRCS)
aux_source_directory (middleware/freertos/FreeRTOS/Source DIR_PROJECT_SRCS)
aux_source_directory (middleware/freertos/FreeRTOS/Source/portable/MemMang DIR_PROJECT_SRCS)
aux_source_directory (middleware/freertos/FreeRTOS/Source/portable/ThirdParty/GCC/Posix DIR_PROJECT_SRCS)
aux_source_directory (middleware/freertos/FreeRTOS/Source/portable/ThirdParty/GCC/Posix/utils DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lvgl/src/lv_core DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lvgl/src/lv_draw DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lvgl/src/lv_font DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lvgl/src/lv_gpu DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lvgl/src/lv_hal DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lvgl/src/lv_misc DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lvgl/src/lv_themes DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lvgl/src/lv_widgets DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_drivers/display DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_drivers/indev DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/assets DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/lv_demo_benchmark DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/lv_demo_keypad_encoder DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/lv_demo_music DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/lv_demo_music/assets DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/lv_demo_printer DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/lv_demo_printer/images DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/lv_demo_stress DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/lv_demo_widgets DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/lv_ex_get_started DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/lv_ex_style DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_examples/src/lv_ex_widgets DIR_PROJECT_SRCS)
aux_source_directory (middleware/lvgl/lv_lib_qrcode DIR_PROJECT_SRCS)
aux_source_directory (middleware/messager DIR_PROJECT_SRCS)
aux_source_directory (system/boot/simulator/src DIR_PROJECT_SRCS)
aux_source_directory (system/signal_sync DIR_PROJECT_SRCS)
aux_source_directory (thread DIR_PROJECT_SRCS)
aux_source_directory (app/apps/app_dial DIR_PROJECT_SRCS)
aux_source_directory (app/asserts/generated/app_dial DIR_PROJECT_SRCS)
aux_source_directory (app/apps/app_system DIR_PROJECT_SRCS)
aux_source_directory (app/asserts/generated/app_system DIR_PROJECT_SRCS)
aux_source_directory (app/apps/app_list DIR_PROJECT_SRCS)
aux_source_directory (app/asserts/generated/app_list DIR_PROJECT_SRCS)
aux_source_directory (app/apps/app_track DIR_PROJECT_SRCS)
aux_source_directory (app/asserts/generated/app_track DIR_PROJECT_SRCS)
aux_source_directory (app/apps/app_capicity DIR_PROJECT_SRCS)
aux_source_directory (app/asserts/generated/app_capicity DIR_PROJECT_SRCS)
aux_source_directory (app/apps/app_distance DIR_PROJECT_SRCS)
aux_source_directory (app/asserts/generated/app_distance DIR_PROJECT_SRCS)
aux_source_directory (app/apps/app_heartrate DIR_PROJECT_SRCS)
aux_source_directory (app/asserts/generated/app_heartrate DIR_PROJECT_SRCS)
aux_source_directory (app/apps/app_steps DIR_PROJECT_SRCS)
aux_source_directory (app/asserts/generated/app_steps DIR_PROJECT_SRCS)
aux_source_directory (app/apps/app_pay DIR_PROJECT_SRCS)
aux_source_directory (app/asserts/generated/app_pay DIR_PROJECT_SRCS)
aux_source_directory (app/apps/app_weather DIR_PROJECT_SRCS)
aux_source_directory (app/asserts/generated/app_weather DIR_PROJECT_SRCS)
list(REMOVE_ITEM DIR_PROJECT_SRCS "driver/rtc/hal_rtc.c")
list(REMOVE_ITEM DIR_PROJECT_SRCS "thread/thread_wifi.c")
else ("${BOARD}" STREQUAL "freeWear")
aux_source_directory (driver/log DIR_PROJECT_SRCS)
aux_source_directory (driver/rtc DIR_PROJECT_SRCS)
aux_source_directory (driver/display/lcd DIR_PROJECT_SRCS)
aux_source_directory (hal/stm32l4/Applications/WiFi/Common/Src DIR_PROJECT_SRCS)
aux_source_directory (hal/stm32l4/BSP/B-L475E-IOT01 DIR_PROJECT_SRCS)
aux_source_directory (hal/stm32l4/stm32l4/CMSIS/Device/ST/STM32L4xx/Source/Templates/gcc DIR_PROJECT_SRCS)
aux_source_directory (hal/stm32l4/STM32L4xx_HAL_Driver/Src DIR_PROJECT_SRCS)
aux_source_directory (middleware/cmsis_rtos_v2 DIR_PROJECT_SRCS)
aux_source_directory (middleware/easyLogger/easylogger/port DIR_PROJECT_SRCS)
aux_source_directory (middleware/easyLogger/easylogger/src DIR_PROJECT_SRCS)
aux_source_directory (middleware/freertos/FreeRTOS/Source DIR_PROJECT_SRCS)
aux_source_directory (middleware/freertos/FreeRTOS/Source/portable/MemMang DIR_PROJECT_SRCS)
aux_source_directory (middleware/freertos/FreeRTOS/Source/portable/GCC/ARM_CM4F DIR_PROJECT_SRCS)
aux_source_directory (middleware/messager DIR_PROJECT_SRCS)
aux_source_directory (middleware/syscall DIR_PROJECT_SRCS)
aux_source_directory (system/boot/stm32l475/src DIR_PROJECT_SRCS)
aux_source_directory (system/signal_sync DIR_PROJECT_SRCS)
aux_source_directory (thread DIR_PROJECT_SRCS)
set (BOOT_ASSEMBLE_FILE hal/stm32l4/CMSIS/Device/ST/STM32L4xx/Source/Templates/gcc/startup_stm32l475xx.s)
# set (CMBT_ASSEMBLE_FILE middleware/cmBacktrace/cm_backtrace/fault_handler/gcc/cmb_fault.s)
endif()
list(REMOVE_ITEM DIR_PROJECT_SRCS "hal/stm32l4/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_timebase_tim_template.c")
list(REMOVE_ITEM DIR_PROJECT_SRCS "middleware/freertos/FreeRTOS/Source/portable/MemMang/heap_1.c")
list(REMOVE_ITEM DIR_PROJECT_SRCS "middleware/freertos/FreeRTOS/Source/portable/MemMang/heap_2.c")
list(REMOVE_ITEM DIR_PROJECT_SRCS "middleware/freertos/FreeRTOS/Source/portable/MemMang/heap_3.c")
list(REMOVE_ITEM DIR_PROJECT_SRCS "middleware/freertos/FreeRTOS/Source/portable/MemMang/heap_5.c")
#
execute_process(COMMAND sh scripts/build_image.sh
WORKING_DIRECTORY ../)
# ----------------------------------------------------------------------------------------------------------
# Prepend the cross-compiler prefix to the used tools.
if ("${BOARD}" STREQUAL "simulator")
set (CMAKE_C_COMPILER "gcc")
set (CMAKE_CXX_COMPILER "g++")
set (CMAKE_ASM_COMPILER "gcc")
set (CMAKE_C_AR "ar")
set (CMAKE_LINKER "ld")
set (CMAKE_OBJCOPY "objcopy")
set (CMAKE_OBJDUMP "objdump")
set (CMAKE_SIZE "size")
set (C_WARNING_FLAGS "-Wall -Wstrict-prototypes -Wmissing-prototypes -Wno-format-truncation -fsanitize=address -fno-omit-frame-pointer -fsanitize=leak")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_WARNING_FLAGS} -ggdb3 -O0 -DprojCOVERAGE_TEST=1 -D_WINDOWS_")
set (CMAKE_EXE_LINKER_FLAGS "-ggdb3 -O0 -pthread")
# target
add_executable(freeWear ${DIR_PROJECT_SRCS} ${DIR_APP_SRCS})
find_package(SDL2 REQUIRED SDL2)
include_directories(${SDL2_INCLUDE_DIRS})
target_link_libraries(freeWear PRIVATE SDL2 m)
else ("${BOARD}" STREQUAL "freeWear")
set (CMAKE_C_COMPILER "arm-none-eabi-gcc")
set (CMAKE_CXX_COMPILER "arm-none-eabi-g++")
set (CMAKE_ASM_COMPILER "arm-none-eabi-gcc")
set (CMAKE_C_AR "arm-none-eabi-ar")
set (CMAKE_LINKER "arm-none-eabi-ld")
set (CMAKE_OBJCOPY "arm-none-eabi-objcopy")
set (CMAKE_OBJDUMP "arm-none-eabi-objdump")
set (CMAKE_SIZE "arm-none-eabi-size")
# ----------------------------------------------------------------------------------------------------------
set (CMAKE_OPT_LEVEL "-g -Os")
set(C_WARNING_FLAGS "-Wall -Wpedantic -Wextra -Wshadow -Wimplicit-function-declaration -Wmissing-prototypes -Wstrict-prototypes")
set(CXX_WARNING_FLAGS "-Wall -Wpedantic -Wextra -Wshadow")
# ----------------------------------------------------------------------------------------------------------
# CFLAGS
set (CMAKE_C_FLAGS "${CMAKE_OPT_LEVEL} -mthumb -fno-builtin -mcpu=cortex-m4 -mfpu=fpv5-sp-d16 -mfloat-abi=softfp -std=gnu99 -ffunction-sections -fdata-sections -fomit-frame-pointer -mabi=aapcs -fno-unroll-loops -ffast-math -ftree-vectorize" CACHE INTERNAL "c compiler flags")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__TARGET_FPU_VFP -D__ARM_FEATURE_DSP=1 -D__DSP_PRESENT=1 -DUSE_FULL_ASSERT -D__FPU_PRESENT=1 -DARM_MATH_CM4 -DUSE_HAL_DRIVER -DSTM32L475xx -Dfreertos_kernal")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_WARNING_FLAGS} -Wl,-Map=app.map")
# ----------------------------------------------------------------------------------------------------------
# CXXFLAGS
set (CMAKE_CXX_FLAGS "${CMAKE_OPT_LEVEL} -mthumb -fno-builtin -mcpu=cortex-m4 -mfpu=fpv5-sp-d16 -mfloat-abi=softfp -std=c++11 -ffunction-sections -fdata-sections -fomit-frame-pointer -mabi=aapcs -fno-unroll-loops -ffast-math -ftree-vectorize" CACHE INTERNAL "cxx compiler flags")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_WARNING_FLAGS}")
# ----------------------------------------------------------------------------------------------------------
# ASMFLAGS
set (CMAKE_ASM_FLAGS "${CMAKE_OPT_LEVEL} -mthumb -mcpu=cortex-m4 -mfpu=fpv5-sp-d16 -mfloat-abi=softfp -x assembler-with-cpp" CACHE INTERNAL "asm compiler flags")
# ----------------------------------------------------------------------------------------------------------
# LDFLAGS
set (CMAKE_EXE_LINKER_FLAGS "-g -Wl,--gc-sections -mthumb -mcpu=cortex-m4 -mfpu=fpv5-sp-d16 -mfloat-abi=softfp -mabi=aapcs" CACHE INTERNAL "executable linker flags")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T ${CMAKE_SOURCE_DIR}/link/app.ld")
# ----------------------------------------------------------------------------------------------------------
# The following is required to get rid of the (not supported) -rdynamic flag
# when linking the final binary.
set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "" )
set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "" )
# ----------------------------------------------------------------------------------------------------------
# Generate the target
add_executable (${CMAKE_PROJECT_NAME}.elf ${DIR_PROJECT_SRCS} ${BOOT_ASSEMBLE_FILE} ${CMBT_ASSEMBLE_FILE})
# ----------------------------------------------------------------------------------------------------------
# Generate the binary file
add_custom_target (${CMAKE_PROJECT_NAME}.bin ALL arm-none-eabi-objcopy -Obinary "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.elf" "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.bin" DEPENDS ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.elf)
# ----------------------------------------------------------------------------------------------------------
# Generate the hex file
add_custom_target (${CMAKE_PROJECT_NAME}.hex ALL arm-none-eabi-objcopy -Oihex "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.elf" "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.hex" DEPENDS ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.elf)
# ----------------------------------------------------------------------------------------------------------
# Echo the size Infomation
add_custom_target (size ALL arm-none-eabi-size "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.elf" DEPENDS ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.elf)
# ----------------------------------------------------------------------------------------------------------
# Make flash to the board by st-link
add_custom_target (flash COMMAND st-flash write ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.bin 0x8000000)
# ----------------------------------------------------------------------------------------------------------
# Make clean-all
add_custom_target (clean-all COMMAND rm -rf ${CMAKE_BINARY_DIR}/*)
endif()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/freewear/freewear-demo.git
git@gitee.com:freewear/freewear-demo.git
freewear
freewear-demo
FreewearDemo
master

搜索帮助