mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-07-03 20:57:19 -04:00
194 lines
6.4 KiB
CMake
194 lines
6.4 KiB
CMake
cmake_minimum_required(VERSION 3.14)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")
|
|
project(PurePhone)
|
|
|
|
include(config/CCacheConfig.cmake)
|
|
include(config/ProjectConfig.cmake)
|
|
include(config/Version.cmake)
|
|
include(config/ModuleConfig.cmake)
|
|
include(module-lwip/lwip-includes.cmake)
|
|
|
|
message("PROJECT_TARGET: ${PROJECT_TARGET}")
|
|
message("TARGET_SOURCES: ${TARGET_SOURCES}")
|
|
message("TARGET_COMPILE_DEFINITIONS: ${TARGET_COMPILE_OPTIONS}")
|
|
message("TARGET_LIBRARIES: ${TARGET_LIBRARIES}")
|
|
message("TARGET_LINKER_FLAGS: ${TARGET_LINKER_FLAGS}")
|
|
|
|
add_executable(${PROJECT_NAME} "")
|
|
|
|
enable_testing()
|
|
add_custom_target(check ${CMAKE_CTEST_COMMAND} -V)
|
|
# setting build flags
|
|
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb3 -O2 -DDEBUG" CACHE STRING "")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "-O2" CACHE STRING "")
|
|
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -ggdb3 -DDEBUG" CACHE STRING "")
|
|
|
|
set(SERIAL_PORT_PATH "SERIAL_PORT=\"/dev/ttyUSB0\"" CACHE STRING "defines where serial port is")
|
|
set(TOOLCHAIN_PATH "" CACHE STRING "Path to coolchain directory")
|
|
|
|
target_link_directories(${PROJECT_NAME} PUBLIC ${PROJECT_LIB_DIRECTORY})
|
|
|
|
message("Setting PROJECT_LIB_DIRECTORY to ${PROJECT_LIB_DIRECTORY}")
|
|
message("Setting CMAKE_BINARY_DIR to ${CMAKE_BINARY_DIR}")
|
|
target_compile_definitions(${PROJECT_NAME} PUBLIC ${PROJECT_CONFIG_DEFINITIONS}
|
|
${TARGET_COMPILE_DEFINITIONS}
|
|
${PROJECT_TARGET}
|
|
${SERIAL_PORT_PATH})
|
|
|
|
add_compile_definitions(FSL_RTOS_FREE_RTOS
|
|
USB_STACK_FREERTOS
|
|
DEBUG_CONSOLE_TRANSFER_NON_BLOCKING
|
|
FSL_SDK_ENABLE_DRIVER_CACHE_CONTROL=1
|
|
__STARTUP_INITIALIZE_NONCACHEDATA
|
|
SDK_OS_FREE_RTOS
|
|
XIP_EXTERNAL_FLASH=0
|
|
XIP_BOOT_HEADER_ENABLE=1
|
|
XIP_BOOT_HEADER_DCD_ENABLE=0
|
|
CPU_MIMXRT1051DVL6B_cm7
|
|
CPU_MIMXRT1051DVL6B
|
|
SDK_DEBUGCONSOLE=0
|
|
__MCUXPRESSO
|
|
__USE_CMSIS
|
|
__NEWLIB__
|
|
SKIP_SYSCLK_INIT
|
|
_GNU_SOURCE)
|
|
|
|
add_compile_options( ${TARGET_COMPILE_OPTIONS}
|
|
$<$<COMPILE_LANGUAGE:C>:-std=gnu11>
|
|
-fsingle-precision-constant
|
|
-ffunction-sections
|
|
-fdata-sections
|
|
-MMD
|
|
-MP
|
|
-fno-builtin
|
|
# warning flags
|
|
-Wall -Wextra -Werror -Wno-unused-parameter)
|
|
|
|
target_compile_features(${PROJECT_NAME} PUBLIC
|
|
${TARGET_COMPILE_FEATURES})
|
|
|
|
|
|
target_compile_options(${PROJECT_NAME} PUBLIC $<$<COMPILE_LANGUAGE:C>:-Wno-discarded-qualifiers>)
|
|
|
|
target_sources(${CMAKE_PROJECT_NAME} PUBLIC ${TARGET_SOURCES})
|
|
target_sources(${CMAKE_PROJECT_NAME}
|
|
PRIVATE
|
|
|
|
source/main.cpp
|
|
PUBLIC
|
|
source/MessageType.hpp
|
|
|
|
)
|
|
|
|
set(PROJECT_INCLUDES
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/source
|
|
${CMAKE_CURRENT_SOURCE_DIR}/config
|
|
|
|
|
|
CACHE INTERNAL "")
|
|
|
|
target_include_directories(${PROJECT_NAME} PUBLIC ${TARGET_DIR_INCLUDES})
|
|
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_INCLUDES})
|
|
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-sys")
|
|
add_subdirectory(module-sys)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-utils")
|
|
add_subdirectory(module-utils)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-os")
|
|
add_subdirectory(module-os)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-bsp")
|
|
add_subdirectory(module-bsp)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-vfs")
|
|
add_subdirectory(module-vfs)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-gui")
|
|
add_subdirectory(module-gui)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-db")
|
|
add_subdirectory(module-db)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-cellular")
|
|
add_subdirectory(module-cellular)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-audio")
|
|
add_subdirectory(module-audio)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-services")
|
|
add_subdirectory(module-services)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-apps")
|
|
add_subdirectory(module-apps)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-bluetooth")
|
|
add_subdirectory(module-bluetooth)
|
|
|
|
message("${PROJECT_NAME}: add_subdirectory module-lwip")
|
|
add_subdirectory(module-lwip)
|
|
|
|
add_subdirectory(image)
|
|
|
|
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES SUFFIX ".elf")
|
|
|
|
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES LINK_FLAGS "-Xlinker -Map=${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.map ")
|
|
|
|
# M.P: Please don't change the order of modules in the first group ("module-bsp" - "module-utils")
|
|
# They have to be arranged in specific order because of circular dependencies that need to be correctly resolved
|
|
# In case of doubt please contact me: mateusz.piesta@mudita.com
|
|
target_link_libraries(${PROJECT_NAME}
|
|
module-bsp
|
|
module-os
|
|
module-bsp
|
|
module-utils
|
|
module-vfs
|
|
module-utils
|
|
module-sys
|
|
module-cellular
|
|
module-audio
|
|
module-db
|
|
module-gui
|
|
module-services
|
|
module-apps
|
|
module-bluetooth
|
|
${LWIP_LIBRARIES}
|
|
module-lwip
|
|
${TARGET_LIBRARIES}
|
|
)
|
|
|
|
|
|
target_link_options(${PROJECT_NAME} PUBLIC ${TARGET_LINK_OPTIONS})
|
|
|
|
set(HEX_FILE ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.hex)
|
|
set(BIN_FILE ${CMAKE_BINARY_DIR}/boot.bin)
|
|
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
|
|
COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${CMAKE_PROJECT_NAME}> ${HEX_FILE}
|
|
COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${CMAKE_PROJECT_NAME}> ${BIN_FILE}
|
|
)
|
|
|
|
|
|
if (${CMAKE_BUILD_TYPE} STREQUAL "Release")
|
|
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
|
|
COMMAND ${CMAKE_STRIP} --strip-debug --strip-unneeded $<TARGET_FILE:${CMAKE_PROJECT_NAME}>
|
|
)
|
|
endif()
|
|
|
|
if (${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo")
|
|
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
|
|
COMMAND ${CMAKE_OBJCOPY} --only-keep-debug
|
|
$<TARGET_FILE:${CMAKE_PROJECT_NAME}>
|
|
$<TARGET_FILE:${CMAKE_PROJECT_NAME}>.dbg
|
|
COMMAND ${CMAKE_STRIP} --strip-debug --strip-unneeded $<TARGET_FILE:${CMAKE_PROJECT_NAME}>
|
|
COMMAND ${CMAKE_OBJCOPY} --add-gnu-debuglink=$<TARGET_FILE:${CMAKE_PROJECT_NAME}>.dbg
|
|
$<TARGET_FILE:${CMAKE_PROJECT_NAME}>.dbg
|
|
)
|
|
endif()
|