Compile options Sitara projects
This commit is contained in:
parent
b82867ea12
commit
df4849db1e
23
compile/readme.txt
Normal file
23
compile/readme.txt
Normal 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"
|
||||||
|
]
|
||||||
|
|
||||||
10
compile/sitara_compile_flags.cmake
Normal file
10
compile/sitara_compile_flags.cmake
Normal 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
47
compile/toolchain.cmake
Normal 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)
|
||||||
30
compile/toolchain_am571x_idk.cmake
Normal file
30
compile/toolchain_am571x_idk.cmake
Normal 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)
|
||||||
32
compile/toolchain_beagle_bone.cmake
Normal file
32
compile/toolchain_beagle_bone.cmake
Normal 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)
|
||||||
Loading…
Reference in New Issue
Block a user