132 lines
3.4 KiB
CMake
132 lines
3.4 KiB
CMake
function(pre_project_config)
|
|
|
|
# Basic input sanitization
|
|
if(DEFINED TGT_BSP)
|
|
if(${TGT_BSP} MATCHES "arm/raspberrypi" AND NOT ${OS_FSFW} MATCHES linux)
|
|
message(STATUS "FSFW OSAL invalid for specified target BSP ${TGT_BSP}!")
|
|
message(STATUS "Setting valid OS_FSFW: linux")
|
|
set(OS_FSFW "linux")
|
|
if(${TGT_BSP} MATCHES "arm/stm32h743zi-nucleo")
|
|
if(NOT ${OS_FSFW} MATCHES freertos)
|
|
message(STATUS
|
|
"FSFW OSAL invalid for specified target BSP ${TGT_BSP}!"
|
|
)
|
|
message(STATUS "Setting valid OS_FSFW: freertos")
|
|
set(OS_FSFW "freertos")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
endif()
|
|
|
|
# Disable compiler checks for cross-compiling.
|
|
if(${OS_FSFW} MATCHES freertos)
|
|
|
|
set(CMAKE_TOOLCHAIN_FILE
|
|
"${CMAKE_SCRIPT_PATH}/STM32FreeRTOSConfig.cmake"
|
|
PARENT_SCOPE
|
|
)
|
|
|
|
elseif(${OS_FSFW} MATCHES rtems)
|
|
|
|
set(RTEMS_CONFIG_DIR
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/rtems-cmake"
|
|
CACHE FILEPATH
|
|
"Directory containing the RTEMS *.cmake files"
|
|
)
|
|
|
|
include(${RTEMS_CONFIG_DIR}/RTEMSPreProjectConfig.cmake)
|
|
|
|
if(NOT DEFINED RTEMS_PREFIX)
|
|
if(NOT DEFINED ENV{RTEMS_PREFIX})
|
|
message(FATAL_ERROR
|
|
"RTEMS_PREFIX must be set either manually or as an environment "
|
|
"variable!"
|
|
)
|
|
else()
|
|
message(STATUS
|
|
"Using environment variable RTEMS_PREFIX $ENV{RTEMS_PREFIX} "
|
|
"as RTEMS prefix"
|
|
)
|
|
set(RTEMS_PREFIX $ENV{RTEMS_PREFIX})
|
|
endif()
|
|
endif()
|
|
|
|
if(${TGT_BSP} MATCHES "arm/stm32h743zi-nucleo")
|
|
set(RTEMS_BSP "arm/nucleo-h743zi")
|
|
else()
|
|
if(NOT DEFINED RTEMS_BSP)
|
|
if(NOT DEFINED ENV{RTEMS_BSP})
|
|
message(FATAL_ERROR
|
|
"RTEMS_BSP must be set either manually or as an environment"
|
|
"variable!"
|
|
)
|
|
else()
|
|
set(RTEMS_BSP $ENV{RTEMS_BSP})
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
rtems_pre_project_config(${RTEMS_PREFIX} ${RTEMS_BSP})
|
|
|
|
set(CMAKE_TOOLCHAIN_FILE
|
|
${RTEMS_CONFIG_DIR}/RTEMSToolchain.cmake
|
|
PARENT_SCOPE
|
|
)
|
|
|
|
elseif(${OS_FSFW} STREQUAL linux AND TGT_BSP)
|
|
if(${TGT_BSP} MATCHES "host/none")
|
|
|
|
elseif(${TGT_BSP} MATCHES "arm/raspberrypi")
|
|
if(NOT DEFINED ENV{RASPBIAN_ROOTFS})
|
|
if(NOT RASPBIAN_ROOTFS)
|
|
set(ENV{RASPBIAN_ROOTFS} "$ENV{HOME}/raspberrypi/rootfs")
|
|
else()
|
|
set(ENV{RASPBIAN_ROOTFS} "${RASPBIAN_ROOTFS}")
|
|
endif()
|
|
else()
|
|
message(STATUS
|
|
"RASPBIAN_ROOTFS from environmental variables used: "
|
|
"$ENV{RASPBIAN_ROOTFS}"
|
|
)
|
|
endif()
|
|
|
|
if(NOT DEFINED ENV{RASPBERRY_VERSION})
|
|
if(NOT RASPBERRY_VERSION)
|
|
message(STATUS "No RASPBERRY_VERSION specified, setting to 4")
|
|
set(RASPBERRY_VERSION "4" CACHE STRING "Raspberry Pi version")
|
|
else()
|
|
message(STATUS
|
|
"Setting RASPBERRY_VERSION to ${RASPBERRY_VERSION}"
|
|
)
|
|
set(RASPBERRY_VERSION
|
|
${RASPBERRY_VERSION} CACHE STRING "Raspberry Pi version"
|
|
)
|
|
set(ENV{RASPBERRY_VERSION} ${RASPBERRY_VERSION})
|
|
endif()
|
|
else()
|
|
message(STATUS
|
|
"RASPBERRY_VERSION from environmental variables used: "
|
|
"$ENV{RASPBERRY_VERSION}"
|
|
)
|
|
endif()
|
|
if(LINUX_CROSS_COMPILE)
|
|
set(CMAKE_TOOLCHAIN_FILE
|
|
"${CMAKE_SCRIPT_PATH}/RPiCrossCompileConfig.cmake"
|
|
PARENT_SCOPE
|
|
)
|
|
endif()
|
|
elseif(${TGT_BSP} MATCHES "arm/beagleboneblack")
|
|
if(LINUX_CROSS_COMPILE)
|
|
set(CMAKE_TOOLCHAIN_FILE
|
|
"${CMAKE_SCRIPT_PATH}/BBBCrossCompileConfig.cmake"
|
|
PARENT_SCOPE
|
|
)
|
|
endif()
|
|
else()
|
|
message(WARNING "Target BSP (TGT_BSP) ${TGT_BSP} unknown!")
|
|
endif()
|
|
endif()
|
|
|
|
endfunction()
|