Skip to content

Commit

Permalink
use add_subdirectory() instead of include() for platform cmake files
Browse files Browse the repository at this point in the history
  • Loading branch information
PonomarevDA committed Jun 24, 2024
1 parent cad5f4a commit 8f97080
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 74 deletions.
77 changes: 5 additions & 72 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
cmake_minimum_required(VERSION 3.15.3)
project(example CXX C ASM)

# Define options
option(USE_PLATFORM_UBUNTU "Build for SITL (Software In The Loop)" OFF)

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
Expand All @@ -13,6 +16,7 @@ set(SRC_DIR ${ROOT_DIR}/Src)
set(CMAKE_DIR ${ROOT_DIR}/cmake)
set(LIBPARAMS_PATH ${ROOT_DIR}/Libs/libparams)
set(BUILD_SRC_DIR ${ROOT_DIR}/build/src)
set(BUILD_OBJ_DIR ${ROOT_DIR}/build/obj)

if(CAN_PROTOCOL STREQUAL "dronecan" OR CAN_PROTOCOL STREQUAL "cyphal")
set(APPLICATION_DIR ${ROOT_DIR}/Src/${CAN_PROTOCOL}_application)
Expand Down Expand Up @@ -62,75 +66,4 @@ add_definitions(-DHW_VERSION_MINOR=1)

set(CMAKE_CXX_STANDARD 20)

include(${ROOT_DIR}/Src/platform/${APP_PLATFORM}/CMakeLists.txt)
set(EXECUTABLE ${PROJECT_NAME}.out)
add_executable(${EXECUTABLE}
${libparams}
${APPLICATION_SOURCES}
${BUILD_SRC_DIR}/params.cpp
${ROOT_DIR}/Src/common/algorithms.cpp
${ROOT_DIR}/Src/common/module.cpp
${PLATFORM_SOURCES}
)

target_include_directories(${EXECUTABLE} PRIVATE
${BUILD_SRC_DIR}
${APPLICATION_HEADERS}
${ROOT_DIR}/Src/common
${PLATFORM_HEADERS}
)

target_compile_options(${EXECUTABLE} PRIVATE
-Wall
-Wextra
-Wfloat-equal
-Werror
-Wundef
-Wshadow
-Wpointer-arith
-Wunreachable-code
-Wstrict-overflow=5
-Wwrite-strings
-Wswitch-default
)


if(USE_PLATFORM_UBUNTU)
else()
target_compile_definitions(${EXECUTABLE} PRIVATE
-DUSE_HAL_DRIVER
-D${CPU}
-DCYPHAL_NUM_OF_CAN_BUSES=1
)
target_compile_options(${EXECUTABLE} PRIVATE
-mcpu=${TARGET_ARCHITECTURE}
-mthumb
-fdata-sections
-ffunction-sections
-lc -lm -lnosys
-specs=nano.specs
--specs=nosys.specs
)

target_link_options(${EXECUTABLE} PRIVATE
-T${ldFile}
-mcpu=${TARGET_ARCHITECTURE}
-mthumb
--specs=nosys.specs
-specs=nano.specs
-lc
-lm
-lnosys
-Wl,-Map=${PROJECT_NAME}.map,--cref
-Wl,--gc-sections
)

# Post-build
add_custom_command(TARGET ${EXECUTABLE}
POST_BUILD
COMMAND ${CMAKE_SIZE} ${EXECUTABLE}
COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE} ${PROJECT_NAME}.hex
COMMAND ${CMAKE_OBJCOPY} -O binary ${EXECUTABLE} ${PROJECT_NAME}.bin
COMMAND ${CMAKE_OBJCOPY} -I binary -O elf32-little ${EXECUTABLE} ${PROJECT_NAME}.elf
)
endif()
add_subdirectory(${ROOT_DIR}/Src/platform/${APP_PLATFORM})
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ cyphal: checks generate_dsdl clean
cd ${BUILD_OBJ_DIR} && cmake -DCAN_PROTOCOL=cyphal ../.. && make
sitl_cyphal: checks generate_dsdl clean
mkdir -p ${BUILD_OBJ_DIR}
cd ${BUILD_OBJ_DIR} && cmake -DCAN_PROTOCOL=cyphal -DUSE_PLATFORM_UBUNTU=1 ../.. && make
cd ${BUILD_OBJ_DIR} && cmake -DCAN_PROTOCOL=cyphal -DUSE_PLATFORM_UBUNTU=ON ../.. && make

# Dronecan:
dronecan: checks clean
mkdir -p ${BUILD_OBJ_DIR}
cd ${BUILD_OBJ_DIR} && cmake -DCAN_PROTOCOL=dronecan ../.. && make
sitl_dronecan: checks clean
mkdir -p ${BUILD_OBJ_DIR}
cd ${BUILD_OBJ_DIR} && cmake -DCAN_PROTOCOL=dronecan -DUSE_PLATFORM_UBUNTU=1 ../.. && make
cd ${BUILD_OBJ_DIR} && cmake -DCAN_PROTOCOL=dronecan -DUSE_PLATFORM_UBUNTU=ON ../.. && make

# Common:
checks:
Expand Down
68 changes: 68 additions & 0 deletions Src/platform/stm32f103/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,71 @@ set(PLATFORM_SOURCES
set(PLATFORM_HEADERS
${stm32CubeMxHeaders}
)

set(EXECUTABLE ${PROJECT_NAME}.out)
add_executable(${EXECUTABLE}
${libparams}
${APPLICATION_SOURCES}
${BUILD_SRC_DIR}/params.cpp
${ROOT_DIR}/Src/common/algorithms.cpp
${ROOT_DIR}/Src/common/module.cpp
${PLATFORM_SOURCES}
)

target_include_directories(${EXECUTABLE} PRIVATE
${BUILD_SRC_DIR}
${APPLICATION_HEADERS}
${ROOT_DIR}/Src/common
${PLATFORM_HEADERS}
)

target_compile_options(${EXECUTABLE} PRIVATE
-Wall
-Wextra
-Wfloat-equal
-Werror
-Wundef
-Wshadow
-Wpointer-arith
-Wunreachable-code
-Wstrict-overflow=5
-Wwrite-strings
-Wswitch-default
)

target_compile_definitions(${EXECUTABLE} PRIVATE
-DUSE_HAL_DRIVER
-D${CPU}
-DCYPHAL_NUM_OF_CAN_BUSES=1
)
target_compile_options(${EXECUTABLE} PRIVATE
-mcpu=${TARGET_ARCHITECTURE}
-mthumb
-fdata-sections
-ffunction-sections
-lc -lm -lnosys
-specs=nano.specs
--specs=nosys.specs
)

target_link_options(${EXECUTABLE} PRIVATE
-T${ldFile}
-mcpu=${TARGET_ARCHITECTURE}
-mthumb
--specs=nosys.specs
-specs=nano.specs
-lc
-lm
-lnosys
-Wl,-Map=${PROJECT_NAME}.map,--cref
-Wl,--gc-sections
)

# Post-build
add_custom_command(TARGET ${EXECUTABLE}
POST_BUILD
COMMAND ${CMAKE_SIZE} ${EXECUTABLE}
COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE} ${BUILD_OBJ_DIR}/${PROJECT_NAME}.hex
COMMAND ${CMAKE_OBJCOPY} -O binary ${EXECUTABLE} ${BUILD_OBJ_DIR}/${PROJECT_NAME}.bin
COMMAND ${CMAKE_OBJCOPY} -I binary -O elf32-little ${EXECUTABLE} ${BUILD_OBJ_DIR}/${PROJECT_NAME}.elf
)
37 changes: 37 additions & 0 deletions Src/platform/ubuntu/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,40 @@ set(PLATFORM_SOURCES
set(PLATFORM_HEADERS
${CMAKE_CURRENT_LIST_DIR}
)

set(EXECUTABLE ${PROJECT_NAME}.out)
add_executable(${EXECUTABLE}
${libparams}
${APPLICATION_SOURCES}
${BUILD_SRC_DIR}/params.cpp
${ROOT_DIR}/Src/common/algorithms.cpp
${ROOT_DIR}/Src/common/module.cpp
${PLATFORM_SOURCES}
)

target_include_directories(${EXECUTABLE} PRIVATE
${BUILD_SRC_DIR}
${APPLICATION_HEADERS}
${ROOT_DIR}/Src/common
${PLATFORM_HEADERS}
)

target_compile_options(${EXECUTABLE} PRIVATE
-Wall
-Wextra
-Wfloat-equal
-Werror
-Wundef
-Wshadow
-Wpointer-arith
-Wunreachable-code
-Wstrict-overflow=5
-Wwrite-strings
-Wswitch-default
)

# Post-build
add_custom_command(TARGET ${EXECUTABLE}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${EXECUTABLE} ${BUILD_OBJ_DIR}/${EXECUTABLE}
)

0 comments on commit 8f97080

Please sign in to comment.