Compile options Sitara projects

This commit is contained in:
Andrey Romanina 2024-03-05 10:09:52 +03:00
parent b82867ea12
commit df4849db1e
5 changed files with 142 additions and 0 deletions

23
compile/readme.txt Normal file
View File

@ -0,0 +1,23 @@
cmake файлы предназначенные для компиляции под таргет idkAM571X
Для компиляции должен быть установлен комплект ti sdk linux.
Например такой: ti-processor-sdk-linux-am57xx-evm-08_02_01_00
После распаковки linux sdk запустить файл <linux_sdk_path>/setup.sh.
Если установка не начинается по причине версии Ubuntu больше чем 18.04, то в
файле <linux_sdk_path>/bin/setup-host-check.sh поменять имя версии Ubuntu:
if [ "$host" != "jammy" ]; then
Имя версии можно узнать командой:
lsb_release -a
Внутри toolchain.cmake актуализировать путь до sdk:
set (TI_SDK_PATH /home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00)
Для сборки ПО запускать cmake со следующим аргументом:
-DCMAKE_TOOLCHAIN_FILE=path_to_sitara_depot/compile/toolchain.cmake
Для vscode в папке ".vscode" создать файл settings.json со следующими параметрами:
"cmake.configureArgs": [
"-DCMAKE_TOOLCHAIN_FILE=path_to_sitara_depot/compile/toolchain.cmake"
]

View File

@ -0,0 +1,10 @@
if (DEFINED BOARD)
if (${BOARD} STREQUAL "am64xx-evm")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=cortex-a53")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}")
else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}")
endif()
endif()

47
compile/toolchain.cmake Normal file
View File

@ -0,0 +1,47 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
message("toolchain.cmake: Starting...")
if (NOT DEFINED ENV{ENV_TARGET_CROSS_COMPILE_PREFIX})
message(FATAL_ERROR "Environment variable ENV_TARGET_CROSS_COMPILE_PREFIX not defined!\n"
"It must be defined in CMakePresets.json file\n"
"ENV_TARGET_CROSS_COMPILE_PREFIX - C and CPP compiler prefix.\n"
"For example: /home/user/ti-processor-sdk-linux-am57xx-evm-08_02_01_00/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-none-linux-gnueabihf-")
endif()
if (NOT DEFINED ENV{ENV_TARGET_SYSTOOT_PATH})
message(FATAL_ERROR "Environment variable ENV_TARGET_SYSTOOT_PATH not defined!\n"
"It must be defined in CMakePresets.json file.\n"
"ENV_TARGET_SYSTOOT_PATH - path to system root\n"
"For example: /home/user/ti-processor-sdk-linux-am57xx-evm-08_02_01_00/linux-devkit/sysroots/armv7at2hf-neon-linux-gnueabi")
endif()
# Указываем положение SYSROOT
set(CMAKE_SYSROOT $ENV{ENV_TARGET_SYSTOOT_PATH})
# Подключаем системные инклуды(нужно для SYSROOT от BeagleBoneAI)
if (EXISTS $ENV{ENV_TARGET_SYSTOOT_PATH}/usr/include/arm-linux-gnueabihf)
include_directories($ENV{ENV_TARGET_SYSTOOT_PATH}/usr/include/arm-linux-gnueabihf)
endif()
# Указываем где искать packages(например boost) спомощью команды find(например find_package)
set(CMAKE_FIND_ROOT_PATH $ENV{ENV_TARGET_SYSTOOT_PATH})
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY_CMAKE_FIND_ROOT_PATH)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY_CMAKE_FIND_ROOT_PATH)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY_CMAKE_FIND_ROOT_PATH)
# Указываем компилятор
set(CMAKE_CXX_COMPILER $ENV{ENV_TARGET_CROSS_COMPILE_PREFIX}g++ CACHE FILEPATH "Target C++ compiler")
set(CMAKE_C_COMPILER $ENV{ENV_TARGET_CROSS_COMPILE_PREFIX}gcc CACHE FILEPATH "Target Linux C compiler")
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 11)
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT 14)
#set(CMAKE_C_COMPILER_FORCED TRUE)
#set(CMAKE_CXX_COMPILER_FORCED TRUE)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

View File

@ -0,0 +1,30 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
# Подумать над универсальностью этого пути. Папка пользователя мешает.
set (TI_SDK_PATH /home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00)
set (LINUX_DEVKIT_PATH ${TI_SDK_PATH}/linux-devkit)
set(CMAKE_SYSROOT ${TI_SDK_PATH}/linux-devkit/sysroots/armv7at2hf-neon-linux-gnueabi)
# Иформация для сборки берется из файла Rules.make, который лежит в папке ti-processor-sdk-linux-am57xx-evm-08_02_01_00
# Все создаваемые в этом файле cmake-переменные имеют то же имя, что и в Rules.make.
# Компилятор для arm
set (CROSS_COMPILE ${LINUX_DEVKIT_PATH}/sysroots/x86_64-arago-linux/usr/bin/arm-none-linux-gnueabihf-)
# Указываем компилятор
set(CMAKE_CXX_COMPILER ${CROSS_COMPILE}g++ CACHE FILEPATH "Sitara Linux C++ compiler")
set(CMAKE_C_COMPILER ${CROSS_COMPILE}gcc CACHE FILEPATH "Sitara Linux C compiler")
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 11)
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT 14)
#set(CMAKE_C_COMPILER_FORCED TRUE)
#set(CMAKE_CXX_COMPILER_FORCED TRUE)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

View File

@ -0,0 +1,32 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
# Подумать над универсальностью этого пути. Папка пользователя мешает.
set (TI_SDK_PATH /home/svad/ti/ti-processor-sdk-linux-am57xx-evm-08_02_01_00)
set (LINUX_DEVKIT_PATH ${TI_SDK_PATH}/linux-devkit)
set(CMAKE_SYSROOT /home/svad/armdev/beagle_board/sysroot)
include_directories(/home/svad/armdev/beagle_board/sysroot/usr/include/arm-linux-gnueabihf)
# Иформация для сборки берется из файла Rules.make, который лежит в папке ti-processor-sdk-linux-am57xx-evm-08_02_01_00
# Все создаваемые в этом файле cmake-переменные имеют то же имя, что и в Rules.make.
# Компилятор для arm
set (CROSS_COMPILE ${LINUX_DEVKIT_PATH}/sysroots/x86_64-arago-linux/usr/bin/arm-none-linux-gnueabihf-)
#set (CROSS_COMPILE /home/svad/armdev/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-)
# Указываем компилятор
set(CMAKE_CXX_COMPILER ${CROSS_COMPILE}g++ CACHE FILEPATH "Sitara Linux C++ compiler")
set(CMAKE_C_COMPILER ${CROSS_COMPILE}gcc CACHE FILEPATH "Sitara Linux C compiler")
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 11)
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT 14)
#set(CMAKE_C_COMPILER_FORCED TRUE)
#set(CMAKE_CXX_COMPILER_FORCED TRUE)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)