# cmake/Toolchain-armhf.cmake
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm) # or armv7
# Cross compilers
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
# Avoid try-run during checks
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
set(CMAKE_SYSROOT "/")
# Tell find_* and pkg-config to search the ARM sysroot first
set(CMAKE_FIND_ROOT_PATH "${CMAKE_SYSROOT}")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # build tools from host
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) # libraries from target
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # headers from target
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) # packages from target
# Use the host pkg-config binary but point it at the ARM pc files:
if(NOT DEFINED ENV{PKG_CONFIG_SYSROOT_DIR})
set(ENV{PKG_CONFIG_SYSROOT_DIR} "${CMAKE_SYSROOT}")
endif()
set(_pc_paths
"${CMAKE_SYSROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig"
"${CMAKE_SYSROOT}/usr/lib/pkgconfig"
"${CMAKE_SYSROOT}/usr/share/pkgconfig"
"${CMAKE_SYSROOT}/usr/lib/arm-linux-gnueabihf/glib-2.0/pkgconfig"
"${CMAKE_SYSROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig"
)
string(JOIN ":" _pc_joined ${_pc_paths})
set(ENV{PKG_CONFIG_LIBDIR} "${_pc_joined}")
find_program(CMAKE_AR arm-linux-gnueabihf-gcc-ar)
find_program(CMAKE_RANLIB arm-linux-gnueabihf-gcc-ranlib)
find_program(CMAKE_NM arm-linux-gnueabihf-gcc-nm)