diff --git a/buildsystem/cmake/HardwareOsPreConfig.cmake b/buildsystem/cmake/HardwareOsPreConfig.cmake index 39e52168..32080176 100644 --- a/buildsystem/cmake/HardwareOsPreConfig.cmake +++ b/buildsystem/cmake/HardwareOsPreConfig.cmake @@ -48,11 +48,11 @@ if(CMAKE_CROSSCOMPILING) set_property(CACHE TGT_BSP PROPERTY STRINGS - "arm/raspberrypi" + "arm/q7s" "arm/raspberrypi" ) endif() -if(${TGT_BSP} MATCHES "arm/raspberrypi") +if(${TGT_BSP} MATCHES "arm/raspberrypi" OR ${TGT_BSP} MATCHES "arm/q7s") set(BSP_PATH "bsp_linux") diff --git a/buildsystem/cmake/PreProjectConfig.cmake b/buildsystem/cmake/PreProjectConfig.cmake index cc9fe00a..ce18d89d 100644 --- a/buildsystem/cmake/PreProjectConfig.cmake +++ b/buildsystem/cmake/PreProjectConfig.cmake @@ -12,7 +12,12 @@ endif() # Disable compiler checks for cross-compiling. if(${OS_FSFW} STREQUAL linux AND TGT_BSP) - if(${TGT_BSP} MATCHES "arm/raspberrypi") + if(${TGT_BSP} MATCHES "arm/q7s") + set(CMAKE_TOOLCHAIN_FILE + "${CMAKE_SCRIPT_PATH}/Q7SCrossCompileConfig.cmake" + PARENT_SCOPE + ) + elseif (${TGT_BSP} MATCHES "arm/raspberrypi") if(NOT DEFINED ENV{RASPBIAN_ROOTFS}) if(NOT RASPBIAN_ROOTFS) set(ENV{RASPBIAN_ROOTFS} "$ENV{HOME}/raspberrypi/rootfs") diff --git a/buildsystem/cmake/Q7SCrossCompileConfig.cmake b/buildsystem/cmake/Q7SCrossCompileConfig.cmake new file mode 100644 index 00000000..665869f9 --- /dev/null +++ b/buildsystem/cmake/Q7SCrossCompileConfig.cmake @@ -0,0 +1,81 @@ +# CROSS_COMPILE also needs to be set accordingly or passed to the CMake command + +#if(NOT DEFINED ENV{Q7S_ROOTFS}) +# message(FATAL_ERROR +# "Define the Q7S_ROOTFS variable to " +# "point to the raspbian rootfs." +# ) +#else() +# set(SYSROOT_PATH "$ENV{Q7S_ROOTFS}") +#endif() + +if(NOT DEFINED ENV{CROSS_COMPILE}) + set(CROSS_COMPILE "arm-linux-gnueabihf") + message(STATUS + "No CROSS_COMPILE environmental variable set, using default ARM linux " + "cross compiler name ${CROSS_COMPILE}" + ) +else() + set(CROSS_COMPILE "$ENV{CROSS_COMPILE}") + message(STATUS + "Using environmental variable CROSS_COMPILE as cross-compiler: " + "$ENV{CROSS_COMPILE}" + ) +endif() + +# message(STATUS "Using sysroot path: ${SYSROOT_PATH}") + +set(CROSS_COMPILE_CC "${CROSS_COMPILE}-gcc") +set(CROSS_COMPILE_CXX "${CROSS_COMPILE}-g++") +set(CROSS_COMPILE_LD "${CROSS_COMPILE}-ld") +set(CROSS_COMPILE_AR "${CROSS_COMPILE}-ar") +set(CROSS_COMPILE_RANLIB "${CROSS_COMPILE}-ranlib") +set(CROSS_COMPILE_STRIP "${CROSS_COMPILE}-strip") +set(CROSS_COMPILE_NM "${CROSS_COMPILE}-nm") +set(CROSS_COMPILE_OBJCOPY "${CROSS_COMPILE}-objcopy") +set(CROSS_COMPILE_SIZE "${CROSS_COMPILE}-size") + +# At the very least, cross compile gcc and g++ have to be set! +find_program (CROSS_COMPILE_CC_FOUND ${CROSS_COMPILE_CC} REQUIRED) +find_program (CROSS_COMPILE_CXX_FOUND ${CROSS_COMPILE_CXX} REQUIRED) + +set(CMAKE_CROSSCOMPILING TRUE) +# set(CMAKE_SYSROOT "${SYSROOT_PATH}") + +# Define name of the target system +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_PROCESSOR "armv7") + +# Define the compiler +set(CMAKE_C_COMPILER ${CROSS_COMPILE_CC}) +set(CMAKE_CXX_COMPILER ${CROSS_COMPILE_CXX}) + +# List of library dirs where LD has to look. Pass them directly through gcc. +set(LIB_DIRS +) +# You can additionally check the linker paths if you add the +# flags ' -Xlinker --verbose' +foreach(LIB ${LIB_DIRS}) + set(COMMON_FLAGS "${COMMON_FLAGS} -L${LIB} -Wl,-rpath-link,${LIB}") +endforeach() + +set(CMAKE_PREFIX_PATH + "${CMAKE_PREFIX_PATH}" + # "${SYSROOT_PATH}/usr/lib/${CROSS_COMPILE}" +) + +set(CMAKE_C_FLAGS + "-mcpu=cortex-a9 -mfpu=neon-vfpv3 -mfloat-abi=hard ${COMMON_FLAGS}" + CACHE STRING "C flags for Q7S" +) +set(CMAKE_CXX_FLAGS + "${CMAKE_C_FLAGS}" + CACHE STRING "CPP flags for Q7S" +) + +# search for programs in the build host directories +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +# for libraries and headers in the target directories +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/buildsystem/cmake/RPiCrossCompileConfig.cmake b/buildsystem/cmake/RPiCrossCompileConfig.cmake index 26ca5781..e1b4cce3 100644 --- a/buildsystem/cmake/RPiCrossCompileConfig.cmake +++ b/buildsystem/cmake/RPiCrossCompileConfig.cmake @@ -101,35 +101,35 @@ set(CMAKE_PREFIX_PATH if(RASPBERRY_VERSION VERSION_GREATER 3) set(CMAKE_C_FLAGS "-mcpu=cortex-a72 -mfpu=neon-vfpv4 -mfloat-abi=hard ${COMMON_FLAGS}" - CACHE STRING "Flags for Raspberry PI 4" + CACHE STRING "CPP flags for Raspberry PI 4" ) set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" - CACHE STRING "Flags for Raspberry PI 4" + CACHE STRING "C flags for Raspberry PI 4" ) elseif(RASPBERRY_VERSION VERSION_GREATER 2) set(CMAKE_C_FLAGS "-mcpu=cortex-a53 -mfpu=neon-vfpv4 -mfloat-abi=hard ${COMMON_FLAGS}" - CACHE STRING "Flags for Raspberry PI 3" + CACHE STRING "C flags for Raspberry PI 3" ) set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" - CACHE STRING "Flags for Raspberry PI 3" + CACHE STRING "CPP flags for Raspberry PI 3" ) elseif(RASPBERRY_VERSION VERSION_GREATER 1) set(CMAKE_C_FLAGS "-mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard ${COMMON_FLAGS}" - CACHE STRING "Flags for Raspberry PI 2" + CACHE STRING "C flags for Raspberry PI 2" ) set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" - CACHE STRING "Flags for Raspberry PI 2" + CACHE STRING "CPP flags for Raspberry PI 2" ) else() set(CMAKE_C_FLAGS "-mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard ${COMMON_FLAGS}" - CACHE STRING "Flags for Raspberry PI 1 B+ Zero" + CACHE STRING "C flags for Raspberry PI 1 B+ Zero" ) set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" - CACHE STRING "Flags for Raspberry PI 1 B+ Zero" + CACHE STRING "CPP flags for Raspberry PI 1 B+ Zero" ) endif() diff --git a/buildsystem/cmake/scripts/Q7S/create_cmake_debug_cfg.sh b/buildsystem/cmake/scripts/Q7S/create_cmake_debug_cfg.sh new file mode 100644 index 00000000..7f6753ac --- /dev/null +++ b/buildsystem/cmake/scripts/Q7S/create_cmake_debug_cfg.sh @@ -0,0 +1,27 @@ +#!/bin/sh +counter=0 +while [ ${counter} -lt 5 ] +do + cd .. + if [ -f "cmake_build_config.py" ];then + break + fi + counter=$((counter=counter + 1)) +done + +if [ "${counter}" -ge 5 ];then + echo "cmake_build_config.py not found in upper directories!" + exit 1 +fi + +os_fsfw="linux" +tgt_bsp="arm/q7s" +build_generator="" +if [ "${OS}" = "Windows_NT" ]; then + build_generator="MinGW Makefiles" +# Could be other OS but this works for now. +else + build_generator="Unix Makefiles" +fi + +python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "debug" -t "${tgt_bsp}" diff --git a/buildsystem/cmake/scripts/Q7S/create_cmake_release_cfg.sh b/buildsystem/cmake/scripts/Q7S/create_cmake_release_cfg.sh new file mode 100644 index 00000000..6048a1c6 --- /dev/null +++ b/buildsystem/cmake/scripts/Q7S/create_cmake_release_cfg.sh @@ -0,0 +1,27 @@ +#!/bin/sh +counter=0 +while [ ${counter} -lt 5 ] +do + cd .. + if [ -f "cmake_build_config.py" ];then + break + fi + counter=$((counter=counter + 1)) +done + +if [ "${counter}" -ge 5 ];then + echo "cmake_build_config.py not found in upper directories!" + exit 1 +fi + +os_fsfw="linux" +tgt_bsp="arm/q7s" +build_generator="" +if [ "${OS}" = "Windows_NT" ]; then + build_generator="MinGW Makefiles" +# Could be other OS but this works for now. +else + build_generator="Unix Makefiles" +fi + +python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "release" -t "${tgt_bsp}" diff --git a/buildsystem/cmake/scripts/Q7S/create_cmake_relwithdeb_cfg.sh b/buildsystem/cmake/scripts/Q7S/create_cmake_relwithdeb_cfg.sh new file mode 100644 index 00000000..346067cd --- /dev/null +++ b/buildsystem/cmake/scripts/Q7S/create_cmake_relwithdeb_cfg.sh @@ -0,0 +1,27 @@ +#!/bin/sh +counter=0 +while [ ${counter} -lt 5 ] +do + cd .. + if [ -f "cmake_build_config.py" ];then + break + fi + counter=$((counter=counter + 1)) +done + +if [ "${counter}" -ge 5 ];then + echo "cmake_build_config.py not found in upper directories!" + exit 1 +fi + +os_fsfw="linux" +tgt_bsp="arm/q7s" +build_generator="" +if [ "${OS}" = "Windows_NT" ]; then + build_generator="MinGW Makefiles" +# Could be other OS but this works for now. +else + build_generator="Unix Makefiles" +fi + +python3 cmake_build_config.py -o "${os_fsfw}" -g "${build_generator}" -b "reldeb" -t "${tgt_bsp}"