# Pick GCC Version macro(pick_gcc_version gcc_root gcc_version) file(GLOB children RELATIVE "${gcc_root}" "${gcc_root}/*") set("${gcc_version}" "") foreach(child IN LISTS children) if(IS_DIRECTORY "${gcc_root}/${child}" AND ("${${gcc_version}}" STREQUAL "" OR "${child}" GREATER_EQUAL "${${gcc_version}}")) set("${gcc_version}" "${child}") endif() endforeach() if("${${gcc_version}}" STREQUAL "") message(FATAL_ERROR "Unable To Pick GCC Version") endif() endmacro() # Setup Toolchain macro(setup_toolchain target) # Use ARM Cross-Compiler set(CMAKE_C_COMPILER "clang") set(CMAKE_C_COMPILER_TARGET "${target}") set(CMAKE_CXX_COMPILER "clang++") set(CMAKE_CXX_COMPILER_TARGET "${target}") set(CMAKE_FIND_ROOT_PATH "/usr/${target}" "/usr/lib/${target}") # Include Directories pick_gcc_version("/usr/lib/gcc-cross/${target}" GCC_VERSION) string(CONCAT NEW_FLAGS "-nostdinc -nostdinc++ -Wno-unused-command-line-argument " "-isystem /usr/${target}/include/c++/${GCC_VERSION} " "-isystem /usr/${target}/include/c++/${GCC_VERSION}/${target} " "-isystem /usr/${target}/include/c++/${GCC_VERSION}/backward " "-isystem /usr/lib/gcc-cross/${target}/${GCC_VERSION}/include " "-isystem /usr/lib/gcc-cross/${target}/${GCC_VERSION}/include-fixed " "-isystem /usr/${target}/include" ) set(CMAKE_C_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} ${NEW_FLAGS}") set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} ${NEW_FLAGS}") # Extra set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) endmacro()