141 lines
4.4 KiB
CMake
141 lines
4.4 KiB
CMake
function(pre_source_hw_os_config)
|
|
|
|
# FreeRTOS
|
|
if(FSFW_OSAL MATCHES freertos)
|
|
message(FATAL_ERROR "No FreeRTOS support implemented yet.")
|
|
# RTEMS
|
|
elseif(FSFW_OSAL STREQUAL rtems)
|
|
add_definitions(-DRTEMS)
|
|
message(FATAL_ERROR "No RTEMS support implemented yet.")
|
|
elseif(FSFW_OSAL STREQUAL linux)
|
|
add_definitions(-DUNIX -DLINUX)
|
|
find_package(Threads REQUIRED)
|
|
# Hosted
|
|
else()
|
|
set(BSP_PATH "bsp_hosted")
|
|
if(WIN32)
|
|
add_definitions(-DWIN32)
|
|
elseif(UNIX)
|
|
find_package(Threads REQUIRED)
|
|
add_definitions(-DUNIX -DLINUX)
|
|
endif()
|
|
endif()
|
|
|
|
# Cross-compile information
|
|
if(CMAKE_CROSSCOMPILING)
|
|
# set(CMAKE_VERBOSE TRUE)
|
|
|
|
message(STATUS "Cross-compiling for ${TGT_BSP} target")
|
|
message(STATUS "Cross-compile gcc: ${CMAKE_C_COMPILER}")
|
|
message(STATUS "Cross-compile g++: ${CMAKE_CXX_COMPILER}")
|
|
|
|
if(CMAKE_VERBOSE)
|
|
message(STATUS "Cross-compile linker: ${CMAKE_LINKER}")
|
|
message(STATUS "Cross-compile size utility: ${CMAKE_SIZE}")
|
|
message(STATUS "Cross-compile objcopy utility: ${CMAKE_OBJCOPY}")
|
|
message(STATUS "Cross-compile ranlib utility: ${CMAKE_RANLIB}")
|
|
message(STATUS "Cross-compile ar utility: ${CMAKE_AR}")
|
|
message(STATUS "Cross-compile nm utility: ${CMAKE_NM}")
|
|
message(STATUS "Cross-compile strip utility: ${CMAKE_STRIP}")
|
|
message(STATUS
|
|
"Cross-compile assembler: ${CMAKE_ASM_COMPILER} "
|
|
"-x assembler-with-cpp"
|
|
)
|
|
message(STATUS "ABI flags: ${ABI_FLAGS}")
|
|
message(STATUS "Custom linker script: ${LINKER_SCRIPT}")
|
|
endif()
|
|
|
|
set_property(CACHE TGT_BSP
|
|
PROPERTY STRINGS
|
|
"arm/q7s" "arm/raspberrypi" "arm/egse"
|
|
)
|
|
endif()
|
|
|
|
|
|
if(TGT_BSP)
|
|
if (TGT_BSP MATCHES "arm/raspberrypi" OR TGT_BSP MATCHES "arm/beagleboneblack")
|
|
set(BSP_PATH "bsp_linux_board")
|
|
elseif(TGT_BSP MATCHES "arm/q7s")
|
|
set(BSP_PATH "bsp_q7s")
|
|
elseif(TGT_BSP MATCHES "arm/egse")
|
|
set(BSP_PATH "bsp_egse")
|
|
elseif(TGT_BSP MATCHES "arm/te0720-1cfa")
|
|
set(BSP_PATH "bsp_te0720_1cfa")
|
|
else()
|
|
message(WARNING "CMake not configured for this target!")
|
|
message(FATAL_ERROR "Target: ${TGT_BSP}!")
|
|
endif()
|
|
else()
|
|
set(BSP_PATH "bsp_hosted")
|
|
endif()
|
|
|
|
set(BSP_PATH ${BSP_PATH} PARENT_SCOPE)
|
|
|
|
endfunction()
|
|
|
|
function(pre_project_config)
|
|
|
|
# Basic input sanitization
|
|
if(DEFINED TGT_BSP)
|
|
if(${TGT_BSP} MATCHES "arm/raspberrypi" AND NOT FSFW_OSAL MATCHES linux)
|
|
message(STATUS "FSFW OSAL invalid for specified target BSP ${TGT_BSP}!")
|
|
message(STATUS "Setting valid FSFW_OSAL: linux")
|
|
set(FSFW_OSAL "linux")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
# Disable compiler checks for cross-compiling.
|
|
if(FSFW_OSAL MATCHES linux AND TGT_BSP AND EIVE_HARDCODED_TOOLCHAIN_FILE)
|
|
if(TGT_BSP MATCHES "arm/q7s" OR TGT_BSP MATCHES "arm/te0720-1cfa")
|
|
set(CMAKE_TOOLCHAIN_FILE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/Zynq7020CrossCompileConfig.cmake"
|
|
PARENT_SCOPE
|
|
)
|
|
elseif(TGT_BSP MATCHES "arm/raspberrypi" OR TGT_BSP MATCHES "arm/egse")
|
|
if(NOT DEFINED ENV{LINUX_ROOTFS})
|
|
if(NOT DEFINED LINUX_ROOTFS)
|
|
message(WARNING "No LINUX_ROOTFS environmental or CMake variable set!")
|
|
set(ENV{LINUX_ROOTFS} "$ENV{HOME}/raspberrypi/rootfs")
|
|
else()
|
|
set(ENV{LINUX_ROOTFS} "${LINUX_ROOTFS}")
|
|
endif()
|
|
else()
|
|
message(STATUS
|
|
"LINUX_ROOTFS from environmental variables used: $ENV{LINUX_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()
|
|
|
|
set(CMAKE_TOOLCHAIN_FILE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/RPiCrossCompileConfig.cmake"
|
|
PARENT_SCOPE
|
|
)
|
|
elseif(${TGT_BSP} MATCHES "arm/beagleboneblack")
|
|
if(LINUX_CROSS_COMPILE)
|
|
set(CMAKE_TOOLCHAIN_FILE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/BBBCrossCompileConfig.cmake"
|
|
PARENT_SCOPE
|
|
)
|
|
endif()
|
|
else()
|
|
message(WARNING "Target BSP (TGT_BSP) ${TGT_BSP} unknown!")
|
|
endif()
|
|
endif()
|
|
|
|
endfunction() |