diff --git a/compile/readme.txt b/compile/readme.txt new file mode 100644 index 0000000..115139f --- /dev/null +++ b/compile/readme.txt @@ -0,0 +1,23 @@ +cmake файлы предназначенные для компиляции под таргет idkAM571X + +Для компиляции должен быть установлен комплект ti sdk linux. +Например такой: ti-processor-sdk-linux-am57xx-evm-08_02_01_00 + +После распаковки linux sdk запустить файл /setup.sh. + +Если установка не начинается по причине версии Ubuntu больше чем 18.04, то в +файле /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" +] + diff --git a/compile/sitara_compile_flags.cmake b/compile/sitara_compile_flags.cmake new file mode 100644 index 0000000..bc386cc --- /dev/null +++ b/compile/sitara_compile_flags.cmake @@ -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() + diff --git a/compile/toolchain.cmake b/compile/toolchain.cmake new file mode 100644 index 0000000..255755f --- /dev/null +++ b/compile/toolchain.cmake @@ -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) diff --git a/compile/toolchain_am571x_idk.cmake b/compile/toolchain_am571x_idk.cmake new file mode 100644 index 0000000..09b7bef --- /dev/null +++ b/compile/toolchain_am571x_idk.cmake @@ -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) \ No newline at end of file diff --git a/compile/toolchain_beagle_bone.cmake b/compile/toolchain_beagle_bone.cmake new file mode 100644 index 0000000..97a60ea --- /dev/null +++ b/compile/toolchain_beagle_bone.cmake @@ -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)