# CROSS_COMPILE also needs to be set accordingly or passed to the CMake command if(NOT DEFINED ENV{Q7S_SYSROOT}) # message(FATAL_ERROR # "Define the Q7S_ROOTFS variable to " # "point to the raspbian rootfs." # ) else() set(SYSROOT_PATH "$ENV{Q7S_SYSROOT}") 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)