#!/bin/sh # This script registers the toolchain of a Buildroot project into the # Eclipse plugin. To do so, it adds a new line for the Buildroot # toolchain into the $HOME/.buildroot-eclipse.toolchains file, which # the Eclipse Buildroot plugin reads to discover automatically the # available Buildroot toolchains on the system. # # This script should typically not be called manually. Instead, one # should enable the BR2_ECLIPSE_REGISTER configuration option, which # will lead Buildroot to automatically call this script with the # appropriate arguments. # # Usage: # eclipse-register-toolchain project-directory toolchain-prefix architecture # # project-directory is the absolute path to the Buildroot project # output directory (which contains the host/, target/, build/, # images/, etc. subdirectories). It should be an absolute and # canonical path. # # toolchain-prefix is the prefix of the cross-compilation tools, i.e # 'arm-linux-' if the cross-compiler executable is 'arm-linux-gcc'. # # architecture is the lower-cased name of the architecture targetted # by the Buildroot project. if test $# -ne 3; then echo "Invalid number of arguments." echo "Usage: $0 project-directory toolchain-prefix architecture" exit 1 fi project_directory=$1 toolchain_prefix=$2 architecture=$3 if test ! -d ${project_directory} ; then echo "Non-existing project directory ${project_directory}" exit 1 fi if test ! -d ${project_directory}/host ; then echo "Your project directory does not look like a Buildroot output" exit 1 fi if test ! -e ${project_directory}/host/usr/bin/${toolchain_prefix}gcc ; then echo "Cannot find the cross-compiler in the project directory" exit 1 fi TOOLCHAIN_ECLIPSE_FILE=${HOME}/.buildroot-eclipse.toolchains # First, we remove all lines from the ${TOOLCHAIN_ECLISPE_FILE} that # correspond to toolchains that no longer exist. if test -f ${TOOLCHAIN_ECLIPSE_FILE} ; then mv ${TOOLCHAIN_ECLIPSE_FILE} ${TOOLCHAIN_ECLIPSE_FILE}.tmp cat ${TOOLCHAIN_ECLIPSE_FILE}.tmp | while read toolchain ; do path=$(echo ${toolchain} | cut -f1 -d ':') # Filter lines corresponding to still existing projects echo "Testing ${path} ..." if ! test -d ${path} ; then continue fi # .. and the current project if test ${path} = ${project_directory} ; then continue fi echo ${toolchain} >> ${TOOLCHAIN_ECLIPSE_FILE} done rm ${TOOLCHAIN_ECLIPSE_FILE}.tmp fi # Add the toolchain echo "${project_directory}:${toolchain_prefix}:${architecture}" >> ${TOOLCHAIN_ECLIPSE_FILE}